dmstr/yii2-cookie-consent

Yii2 Cookie Consent Widget

Installs: 41 246

Dependents: 0

Suggesters: 0

Security: 0

Stars: 14

Watchers: 8

Forks: 3

Open Issues: 2

Type:yii2-extension

1.4.4 2020-04-24 10:39 UTC

This package is auto-updated.

Last update: 2024-10-24 22:07:40 UTC


README

solution to the EU Cookie Law

Getting started

Installation

composer require dmstr/yii2-cookie-consent

CookieConsentHelper Component

yii config

'components' => [
    'cookieConsentHelper' => [
        'class' => dmstr\cookieconsent\components\CookieConsentHelper::class
    ]
]

Usage with PHP

use dmstr\cookieconsent\widgets\CookieConsent;
<?= CookieConsent::widget([
    'name' => 'cookie_consent_status',
    'path' => '/',
    'domain' => '',
    'expiryDays' => 365,
    'message' => Yii::t('cookie-consent', 'We use cookies to ensure the proper functioning of our website. For an improved visit experience we use analysis products. These are used when you agree with "Statistics".'),
    'save' => Yii::t('cookie-consent', 'Save'),
    'acceptAll' => Yii::t('cookie-consent', 'Accept all'),
    'controlsOpen' => Yii::t('cookie-consent', 'Change'),
    'detailsOpen' => Yii::t('cookie-consent', 'Cookie Details'),
    'learnMore' => Yii::t('cookie-consent', 'Privacy statement'),
    'visibleControls' => true,
    'visibleDetails' => false,
    'link' => '#',
    'consent' => [
        'necessary' => [
            'label' => Yii::t('cookie-consent', 'Necessary'),
            'checked' => true,
            'disabled' => true
        ],
        'statistics' => [
            'label' => Yii::t('cookie-consent', 'Statistics'),
            'cookies' => [
                ['name' => '_ga'],
                ['name' => '_gat', 'domain' => '', 'path' => '/'],
                ['name' => '_gid', 'domain' => '', 'path' => '/']
            ],
            'details' => [
                [
                    'title' => Yii::t('cookie-consent', 'Google Analytics'),
                    'description' => Yii::t('cookie-consent', 'Create statistics data')

                ],
                [
                    'title' => Yii::t('cookie-consent', 'Goal'),
                    'description' => Yii::t('cookie-consent', '_ga, _gat, _gid, _gali')

                ]
            ]
        ]
    ]
]) ?>
<?php if (\Yii::$app->cookieConsentHelper->hasConsent('statistics')): ?>
    <!-- Google Analytics Script-->
<?php endif; ?>

Usage with TWIG

{{ use('dmstr/cookieconsent/widgets/CookieConsent') }}
{{ CookieConsent_widget({
    "name": "cookie_consent_status",
    "path": "/",
    "domain": "",
    "expiryDays": 365,
    "message": t("cookie-consent", "We use cookies to ensure the proper functioning of our website. For an improved visit experience we use analysis products. These are used when you agree with 'Statistics'."),
    "save": t("cookie-consent", "Save"),
    "acceptAll": t("cookie-consent", "Accept all"),
    "controlsOpen": t("cookie-consent", "Change"),
    "detailsOpen": t("cookie-consent", "Cookie Details"),
    "learnMore": t("cookie-consent", "Privacy statement"),
    "visibleControls": false,
    "visibleDetails": false,
    "link": "#",
    "consent": {
        "necessary": {
            "label": t("cookie-consent", "Necessary"),
            "checked": true,
            "disabled": true
        },
        "statistics": {
            "label": t("cookie-consent", "Statistics"),
            "cookies": [
                {"name": "_ga", "domain": "", "path": "/"},
                {"name": "_gat", "domain": "", "path": "/"},
                {"name": "_gid", "domain": "", "path": "/"},
                {"name": "_gali", "domain": "", "path": "/"}
            ],
            "details": [
                {
                    "title": t("cookie-consent", "Google Analytics"),
                    "description": t("cookie-consent", "Create statistics data")
                },
                {
                    "title": t("cookie-consent", "Goal"),
                    "description": t("cookie-consent", "_ga, _gat, _gid, _gali")
                
                }
            ]
        }
    }
}) }}
{% if app.cookieConsentHelper.hasConsent('statistics') %}
    {# Google Analytics Code #}
{% endif %}

Options

Toggle popup, controls and details

<button class="cookie-consent-open">open</button>
<button class="cookie-consent-close">close</button>
<button class="cookie-consent-toggle">toggle</button>
<button class="cookie-consent-controls-open">Open controls</button>
<button class="cookie-consent-controls-close">Close controls</button>
<button class="cookie-consent-controls-toggle">Toggle controls</button>
<button class="cookie-consent-details-open">Open Details</button>
<button class="cookie-consent-details-close">Close Details</button>
<button class="cookie-consent-details-toggle">Toggle details</button>

CSS Example

.cookie-consent-popup {
    animation-name: show;
    animation-duration: 1s;
    animation-timing-function: ease;
    display: none;
    position: fixed;
    bottom: 0;
    left: 0;
    width: 100%;
    z-index: 999999;
}

.cookie-consent-popup.open {
    display: block;
    opacity: 1;
    animation-name: show;
    animation-duration: 1s;
    animation-timing-function: ease;
}

.cookie-consent-controls {
    max-height: 0;
    overflow: hidden;
    -webkit-transition: max-height 0.5s ease-out;
    -moz-transition: max-height 0.5s ease-out;
    transition: max-height 0.5s ease-out;
}

.cookie-consent-controls.open {
    margin: 0 0 30px 0;
    max-height: 600px;
}

.cookie-consent-details {
    max-height: 0;
    overflow: hidden;
    -webkit-transition: max-height 0.5s ease-out;
    -moz-transition: max-height 0.5s ease-out;
    transition: max-height 0.5s ease-out;
}

.cookie-consent-details.open {
    max-height: 600px;
}

@keyframes show {
    from {opacity: 0;}
    to {opacity: 1;}
}

@keyframes hide {
    from {opacity: 1;}
    to {opacity: 0;}
}

Settings config example phemellc/yii2-settings

  • section: cookie-consent
  • key: config
  • type: object
{
  "name": "cookie_consent_status",
  "path": "/",
  "domain": "",
  "expiryDays": 365,
  "message": "We use cookies to ensure the proper functioning of our website. For an improved visit experience we use analysis products. These are used when you agree with 'Statistics'.",
  "save": "Speichern",
  "learnMore": "Datenschutzerklärung",
  "link": "#",
  "consent": {
    "necessary": {
        "label": "Necessary",
        "checked": true,
        "disabled": true
    },
    "statistics": {
      "label": "Statistics",
      "cookies": [
        {
          "name": "_ga"
        },
        {
          "name": "_gat",
          "domain": "",
          "path": "/"
        },
        {
          "name": "_gid",
          "domain": "",
          "path": "/"
        }
      ]
    },
    "0": "marketing",
    "1": "external-media"
  }
}
<?php
    $config = Yii::$app->settings->get('config', 'cookie-consent', []);
    $config = isset($config->scalar) ? $config->scalar : '{}';
    $config = json_decode($config, true);
?>

<?= CookieConsent::widget($config) ?>

Worth knowing

Widgets throws an yii\base\InvalidConfigException if you define an invalid cookie consent helper component