https://github.com/dmstr/yii2-cookie-consent
https://github.com/dmstr/yii2-cookie-consent
Last synced: 12 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/dmstr/yii2-cookie-consent
- Owner: dmstr
- Created: 2018-09-27T09:28:47.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2020-04-24T11:50:26.000Z (about 6 years ago)
- Last Synced: 2025-05-02T18:02:48.414Z (about 1 year ago)
- Language: PHP
- Size: 58.6 KB
- Stars: 14
- Watchers: 7
- Forks: 3
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
Awesome Lists containing this project
README
# yii2-cookie-consent
solution to the EU Cookie Law
## Getting started
### Installation
```
composer require dmstr/yii2-cookie-consent
```
## CookieConsentHelper Component
yii config
```php
'components' => [
'cookieConsentHelper' => [
'class' => dmstr\cookieconsent\components\CookieConsentHelper::class
]
]
```
### Usage with PHP
```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
cookieConsentHelper->hasConsent('statistics')): ?>
```
### Usage with TWIG
```php
{{ 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")
}
]
}
}
}) }}
```
```php
{% if app.cookieConsentHelper.hasConsent('statistics') %}
{# Google Analytics Code #}
{% endif %}
```
## Options
option
description
default
type
name
Defines the cookie name that Cookie Consent will use to store the status of the consent. Default is cookie conset helper's cookie name
""
STRING
path
Defines the cookie path
"/"
STRING
domain
Defines the cookie domain
""
STRING
expiryDays
Defines the cookie exipration days
365
INT
message
The message in the popup
"This website uses cookies to ensure you get the best experience on our website."
STRING
save
The save button text
"Save"
STRING
acceptAll
The accept all button text
"Accept all"
STRING
controlsOpen
The open controls button text
"Change"
STRING
detailsOpen
The open details button text
"Details"
STRING
learnMore
The link text
"More info"
STRING
visibleControls
If the controls panel should start open
false
BOOLEAN
visibleDetails
If the details panel should start open
false
BOOLEAN
link
The link pointing to your privacy policy page
"#"
STRING
consent
A configuration array that will tell the cookie consent what it should do. Keys are the consent values that will be stored in the consent cookie. Labels are the checkbos labes. If no label is set the key will be used instead. The cookies array are a list of cookies names that can be deleted (when possible) when the corresponding consent value is revoked. See the above example "Usage with PHP". Also is possible to start the checkbox checked or disabled
[]
ARRAY
## Toggle popup, controls and details
```html
open
close
toggle
Open controls
Close controls
Toggle controls
Open Details
Close Details
Toggle details
```
### CSS Example
```css
.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](https://github.com/phemellc/yii2-settings)
* section: cookie-consent
* key: config
* type: object
```json
{
"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
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