An open API service indexing awesome lists of open source software.

https://github.com/dmstr/yii2-cookie-consent


https://github.com/dmstr/yii2-cookie-consent

Last synced: 12 months ago
JSON representation

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