Cookies 2022

Verze:

10. 02. 2022

Zodpovědná osoba:

Dominik Šlechta

Detailed description for adding cookies

(everything mentioned here is based on the project Dřevojas.cz and cykloanimal.cz)

  1. Detection - Detect modal type (remodal/bootstrap modal) if set, it must be set here. Find out what all the translations and settings will need to be handled somehow (go through the messages and find the ones where the scripts are located) accordingly decide where to get the data from (for remodal from drevojas and for bootstrap modal from cycloanimal)
  2. Cloning - Clone files (relative path from root folder):
    • resources/js/cookieSettings.js; app/utils/CookieSettings.php
    • app/model/CookieStatistics.php
    • resources/(less or scss)/front/components/cookies.less
    • app/presenters/Front/templates/Homepage/partials/cookies.latte
  3. Adding texts - add a line to app/router/RouterFactory.php that contains "Homepage:cookieStatisticCreate".

    Add @import "./components/cookies"; to resources/less/front/app.less

    Add the entire actionCookieStatisticCreate function to app/presenters/Front/HomepagePresenter.php.

    Add the handleUpdateCookies function to app/presenters/Front/BasePresenter.php and add the lines cookieVariant, cookieSettings and template->loadedCookies to the beforeRender function.
    V basePresenteru ještě přidáme inject $cookieStatistics a inject $iRequest.

    In config.neon add service: - App\Model\CookieStatistics.

    In app/model/Setting.php we can override (after comparing if possible) the config and translation functions.

    In webpack.mix.js web add
    .combine('resources/js/cookieSettings.js', 'www/assets/front/top.js')
    and compile
    and in gulpfile.js we add
    .scripts([
    'cookieSettings.js',
    ], 'www/assets/js/top.js')
    and compile

    To @layout.latte for front we add
    {default $cookieVariant = 'modal'}
    <script>
    	var cookieVariant = '{$cookieVariant|noescape}'
    	var user_id = {$user->getId()}
    	var lang = {$lang_id}
    	var updateCookiesLink = {link updateCookies!}
    </script>
    <script src="{$template->elixir('assets/js/top.js')}"></script>
  4. Edit - in cookieSettings.js set const MODAL_TYPE to one of the modals we found in the first step (Always specify a variable instead of text for universality
    Typ modalu
    in beforeRender we set in cookieVariant whether it is A/B testing (we add cookieRandomizer function) or whether we add a bar or modal (we add using the appropriate variables from CookiesSettings.php)
    in the Admin folder in templates/partials (it may be latte) find the tinymce.js file and add the text ,a[onclick|href|title|class|target|rel] to all properties extended_valid_elements
  5. Database - copy the translations with section "cookies" and add table "cookie_statistics"
    Translations:
    With section
    INSERT INTO `settings_translation` (`id`, `lang`, `name`, `section`, `value`, `type`) VALUES
    ('COOKIE_BOX_ANALYTICS_FUNCTIONS',	1,	'Cookie - box - analytické funkce',	'Cookie',	'Analytické cookies',	'input'),
    ('COOKIE_BOX_ANALYTICS_FUNCTIONS_LEAD',	1,	'Cookie - box - analytické funkce - text',	'Cookie',	'Pomáhají sledovat počet návštěvníků a také z jakého zdroje provoz pochází, což nám umožňuje zlepšovat výkon stránky. Můžeme s nimi určovat, které stránky jsou nejoblíbenější a které nejsou oblíbené, a také sledovat, jakým způsobem se návštěvníci na webu pohybují. Používáme pouze agregované údaje, ze kterých nepoznáme vaši identitu. Pokud používáme cookies třetích stran, může náš partner tyto informace propojit s jinými údaji, které o vás má třeba proto, že využíváte jejich služby. Pokud soubory cookie nepovolíte, nebudeme vědět, kdy jste navštívili naši stránku.',	'textarea'),
    ('COOKIE_BOX_BTN_NECESSARY_COOKIES',	1,	'Cookie - box - tlačítko - nezbytné cookies',	'Cookie',	'Pouze nezbytné cookies',	'input'),
    ('COOKIE_BOX_COMPANY_TEXT',	1,	'Cookie - box - společnost text',	'Cookie',	' ',	'textarea'),
    ('COOKIE_BOX_CONTROL_HEADING',	1,	'Cookie - box - řízení - nadpis',	'Cookie',	'Řízení předvoleb poskytování souhlasu',	'input'),
    ('COOKIE_BOX_FUNCS_AND_PREFS',	1,	'Cookie - box - funkce',	'Cookie',	'Funkční cookies',	'input'),
    ('COOKIE_BOX_FUNCS_AND_PREFS_LEAD',	1,	'Cookie - box - funkce - text',	'Cookie',	'Funkční cookies pomáhají naší stránce poskytnout vám pohodlnější zážitek z návštěvy. Můžeme je nastavovat my nebo poskytovatelé třetí strany, jejichž služby na stránkách používáme. Pokud soubory cookie nepovolíte, je možné, že některé nebo všechny tyto služby nebudou fungovat správně.',	'textarea'),
    ('COOKIE_BOX_MANAGE',	1,	'Cookie - box - spravovat',	'Cookie',	'Spravovat cookies',	'input'),
    ('COOKIE_BOX_NECESSARY_COOKIES',	1,	'Cookie - box - nezbytné cookies',	'Cookie',	'Nezbytné cookies',	'input'),
    ('COOKIE_BOX_NECESSARY_COOKIES_LEAD',	1,	'Cookie - box - nezbytné cookies - text',	'Cookie',	'Tyto cookies musíme uložit do vašeho prohlížeče, aby se vám naše stránka zobrazila správně a správně fungovala. Nezbytná cookies jsou vždy povolena.',	'textarea'),
    ('COOKIE_BOX_PERSONALIZED',	1,	'Cookie - box - personalizované nabídky',	'Cookie',	'Reklamní cookies',	'input'),
    ('COOKIE_BOX_PERSONALIZED_LEAD',	1,	'Cookie - box - personalizované nabídky - text',	'Cookie',	'Tyto soubory cookies mohou na naší stránce nastavovat partneři z reklamy. Mohou je používat na vytváření profilů o vašich zájmech a podle nich vám zobrazovat reklamy i na jiných stránkách. Neukládají ale vaše osobní informace přímo, nýbrž přes jedinečné identifikátory prohlížeče a internetového zařízení. Pokud je nepovolíte, bude se vám zobrazovat na stránkách méně cílená propagace.',	'textarea'),
    ('COOKIE_BOX_PRIVACY_CENTRE',	1,	'Cookie - box - centrum soukromí',	'Cookie',	'Nástroj pro výběr cookies',	'input'),
    ('COOKIE_BOX_PRIVACY_CENTRE_ALLOW_ALL',	1,	'Cookie - box - povolit vše',	'Cookie',	'Povolit vše',	'input'),
    ('COOKIE_BOX_PRIVACY_CENTRE_TEXT',	1,	'Cookie - box - centrum soukromí - text',	'Cookie',	'Při návštěvě naší webové stránky ukládáme do vašeho prohlížeče informace související s vaší návštěvou, většinou ve formě souborů cookie. Jde zejména o informace o vašich preferencích, zařízení, nebo o tom, co jste si prohlíželi. Zpravidla nesbíráme informace o vaší identitě. Informace z cookies používáme k tomu, abychom náš web vyladili k vaší spokojenosti, k vytváření relevantních marketingových kampaní a sdílení obsahu na sociálních sítích. Zde si můžete zvolit, jaké soubory cookies můžeme do vašeho prohlížeče uložit. <a href=\"/cs/m-673-zasady-zpracovani-souboru-cookies\">Podrobné informace</a>',	'textarea'),
    ('COOKIE_BOX_VALUE_PRIVACY_HEADING',	1,	'Cookie - box - nadpis - soukromí',	'Cookie',	'Vážíme si vašeho soukromí',	'input'),
    ('COOKIE_BOX_VALUE_PRIVACY_TEXT',	1,	'Cookie - box - text - soukromí',	'Cookie',	'K analýze návštěvnosti a funkcí webu, ukládání vašeho nastavení a personalizaci obsahu a reklam využíváme cookies. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy, kteří mohou být ze zemí mimo EU. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby. <a  href=\"/cs/m-673-zasady-zpracovani-souboru-cookies\">Podrobné informace</a>',	'textarea'),
    ('COOKIE_TEXT',	1,	'Cookie - text',	'Cookie',	'Tento web používá k poskytování služeb, personalizaci reklam a analýze návštěvnosti soubory cookie. <button class=\"btn btn-xs\">V pořádku</button> <a href=\"//www.google.com/intl/cs/policies/technologies/cookies/\">Další informace</a>',	'textarea'),
    ('JS_COOKIE_BOX_ACCEPT',	1,	'Cookie - box - přijmout vše',	'Cookie',	'Přijmout',	'input'),
    ('JS_COOKIE_BOX_ACCEPT_ALL',	1,	'Cookie - box - přijmout vše',	'Cookie',	'Přijmout vše',	'input');

    Without section
    INSERT INTO `settings_translation` (`id`, `lang`, `name`, `value`, `type`) VALUES
    ('COOKIE_BOX_ANALYTICS_FUNCTIONS',	1,	'Cookie - box - analytické funkce',	'Analytické cookies',	'input'),
    ('COOKIE_BOX_ANALYTICS_FUNCTIONS_LEAD',	1,	'Cookie - box - analytické funkce - text',	'Pomáhají sledovat počet návštěvníků a také z jakého zdroje provoz pochází, což nám umožňuje zlepšovat výkon stránky. Můžeme s nimi určovat, které stránky jsou nejoblíbenější a které nejsou oblíbené, a také sledovat, jakým způsobem se návštěvníci na webu pohybují. Používáme pouze agregované údaje, ze kterých nepoznáme vaši identitu. Pokud používáme cookies třetích stran, může náš partner tyto informace propojit s jinými údaji, které o vás má třeba proto, že využíváte jejich služby. Pokud soubory cookie nepovolíte, nebudeme vědět, kdy jste navštívili naši stránku.',	'textarea'),
    ('COOKIE_BOX_BTN_NECESSARY_COOKIES',	1,	'Cookie - box - tlačítko - nezbytné cookies',	'Pouze nezbytné cookies',	'input'),
    ('COOKIE_BOX_COMPANY_TEXT',	1,	'Cookie - box - společnost text',	' ',	'textarea'),
    ('COOKIE_BOX_CONTROL_HEADING',	1,	'Cookie - box - řízení - nadpis',	'Řízení předvoleb poskytování souhlasu',	'input'),
    ('COOKIE_BOX_FUNCS_AND_PREFS',	1,	'Cookie - box - funkce',	'Funkční cookies',	'input'),
    ('COOKIE_BOX_FUNCS_AND_PREFS_LEAD',	1,	'Cookie - box - funkce - text',	'Funkční cookies pomáhají naší stránce poskytnout vám pohodlnější zážitek z návštěvy. Můžeme je nastavovat my nebo poskytovatelé třetí strany, jejichž služby na stránkách používáme. Pokud soubory cookie nepovolíte, je možné, že některé nebo všechny tyto služby nebudou fungovat správně.',	'textarea'),
    ('COOKIE_BOX_MANAGE',	1,	'Cookie - box - spravovat',	'Spravovat cookies',	'input'),
    ('COOKIE_BOX_NECESSARY_COOKIES',	1,	'Cookie - box - nezbytné cookies',	'Nezbytné cookies',	'input'),
    ('COOKIE_BOX_NECESSARY_COOKIES_LEAD',	1,	'Cookie - box - nezbytné cookies - text',	'Tyto cookies musíme uložit do vašeho prohlížeče, aby se vám naše stránka zobrazila správně a správně fungovala. Nezbytná cookies jsou vždy povolena.',	'textarea'),
    ('COOKIE_BOX_PERSONALIZED',	1,	'Cookie - box - personalizované nabídky',	'Reklamní cookies',	'input'),
    ('COOKIE_BOX_PERSONALIZED_LEAD',	1,	'Cookie - box - personalizované nabídky - text',	'Tyto soubory cookies mohou na naší stránce nastavovat partneři z reklamy. Mohou je používat na vytváření profilů o vašich zájmech a podle nich vám zobrazovat reklamy i na jiných stránkách. Neukládají ale vaše osobní informace přímo, nýbrž přes jedinečné identifikátory prohlížeče a internetového zařízení. Pokud je nepovolíte, bude se vám zobrazovat na stránkách méně cílená propagace.',	'textarea'),
    ('COOKIE_BOX_PRIVACY_CENTRE',	1,	'Cookie - box - centrum soukromí',	'Nástroj pro výběr cookies',	'input'),
    ('COOKIE_BOX_PRIVACY_CENTRE_ALLOW_ALL',	1,	'Cookie - box - povolit vše',	'Povolit vše',	'input'),
    ('COOKIE_BOX_PRIVACY_CENTRE_TEXT',	1,	'Cookie - box - centrum soukromí - text',	'Při návštěvě naší webové stránky ukládáme do vašeho prohlížeče informace související s vaší návštěvou, většinou ve formě souborů cookie. Jde zejména o informace o vašich preferencích, zařízení, nebo o tom, co jste si prohlíželi. Zpravidla nesbíráme informace o vaší identitě. Informace z cookies používáme k tomu, abychom náš web vyladili k vaší spokojenosti, k vytváření relevantních marketingových kampaní a sdílení obsahu na sociálních sítích. Zde si můžete zvolit, jaké soubory cookies můžeme do vašeho prohlížeče uložit. <a href=\"/cs/m-673-zasady-zpracovani-souboru-cookies\">Podrobné informace</a>',	'textarea'),
    ('COOKIE_BOX_VALUE_PRIVACY_HEADING',	1,	'Cookie - box - nadpis - soukromí',	'Vážíme si vašeho soukromí',	'input'),
    ('COOKIE_BOX_VALUE_PRIVACY_TEXT',	1,	'Cookie - box - text - soukromí',	'K analýze návštěvnosti a funkcí webu, ukládání vašeho nastavení a personalizaci obsahu a reklam využíváme cookies. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy, kteří mohou být ze zemí mimo EU. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby. <a  href=\"/cs/m-673-zasady-zpracovani-souboru-cookies\">Podrobné informace</a>',	'textarea'),
    ('COOKIE_TEXT',	1,	'Cookie - text',	'Tento web používá k poskytování služeb, personalizaci reklam a analýze návštěvnosti soubory cookie. <button class=\"btn btn-xs\">V pořádku</button> <a href=\"//www.google.com/intl/cs/policies/technologies/cookies/\">Další informace</a>',	'textarea'),
    ('JS_COOKIE_BOX_ACCEPT',	1,	'Cookie - box - přijmout vše',	'Přijmout',	'input'),
    ('JS_COOKIE_BOX_ACCEPT_ALL',	1,	'Cookie - box - přijmout vše',	'Přijmout vše',	'input');

     

    Database creation

    SET NAMES utf8;
    SET time_zone = '+00:00';
    SET foreign_key_checks = 0;
    SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
    
    DROP TABLE IF EXISTS `cookie_statistics`;
    CREATE TABLE `cookie_statistics` (
      `user_id` int(11) DEFAULT NULL,
      `lang` int(11) NOT NULL DEFAULT 1,
      `variant` varchar(255) COLLATE utf8_czech_ci NOT NULL,
      `datetime` datetime NOT NULL DEFAULT current_timestamp(),
      `change` int(1) NOT NULL DEFAULT 0,
      `set_values` varchar(255) COLLATE utf8_czech_ci DEFAULT '',
      `all_set` int(11) NOT NULL DEFAULT 0
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;