oui_cookie
Introduction
Set, check, read, reset or delete cookies manually or through GET/POST parameters.
. According to the EU legislation, some cookies need the user consent before to be set.
Plugin requirements
oui_cookie’s minimum requirements:
- Textpattern CMS 4.6+.
Plugin management
Installation
From the admin interface
- Download the compiled plugin file or the source to compile a customized file.
- Paste the content of the compiled plugin file under the “Admin > Plugins”:?event=plugin tab and click the Upload button.
- Confirm the plugin install by clicking the Install button on the plugin preview page.
- Enable the plugin.
Via Composer
After installing Composer
- Target your project directory:
$ cd /path/to/your/textpattern/installation/dir
- If it’s not already done, lock your version of Txp:
$ composer require textpattern/lock:4.6.2
, where4.6.2
is the Txp version in use. - Install oui_cookie:
$ composer require oui/oui_cookie
Update
From the admin interface
- Follow the installation instruction above.
Via Composer
$ composer update oui/oui_cookie
Uninstall
From the admin interface
- Check the box on the left of the plugin row under the “Admin > Plugins”:?event=plugin.
- open the select list at the bottom of the plugins table and choose Delete.
- confirm the plugin deletion.
Via Composer
$ composer remove oui/oui_cookie
Tags
oui_cookie
<txp:oui_cookie name="…" />
or
<txp:oui_cookie name="…">
[…]
</txp:oui_cookie>
Attributes
Required
-
name
-
Value: string; none by default.
The cookie (and GET/POST parmater) name you want to use. If no other attibutes are defined, the tag will read and display the related value.
Manually set a cookie
-
value
-
Value: string; none by default.
A value to manually set the named cookie.
You can also set the cookie value by using a continer tag like you would for a variable.
GET/POST parameter
Set a cookie through a-
values
-
Value: comma separated list of strings; none by default.
A comma separated list of accepted values for the GET/POST parameter and its cookie. -
default
-
Value: string; none by default.
A default value.
If set, the plugin conditional tag will always be true if not check against a defined value. -
delete
-
Value: string; none by default.
An GET/POST parameter value used to delete the cookie.
Optional cookie settings
-
duration
-
Value: strtotime value,
+1 day
by default.
The duration of the cookie.
Delete a cookie
-
delete
-
Value:
0
or1
;0
by default.
If set to1
this attribute will delete the named cookie.
oui_if_cookie
<txp:oui_if_cookie name="…">
[…]
<txp:else />
[…]
</txp:oui_if_cookie>
This tag checks the status or the value of the cookie (and/or the related GET/POST parameter) defined by the name
attribute.
Attributes
Required
-
name
-
Value: string; none by default.
The cookie (and GET/POST parameter) name you want to use.
Optional
-
value
-
Value: string; none by default.
A value to check against the cookie (and/or the GET/POST parameter) value.
Examples
Front-end articles sorting
List the sort options you want to use:
<form action="#" method="post">
<select name="sort_by">
<option value="custom_1"<txp:oui_if_cookie name="sort_by" value="custom_1"> disabled selected</txp:oui_if_cookie>>Size</option>
<option value="custom_2"<txp:oui_if_cookie name="sort_by" value="custom_2"> disabled selected</txp:oui_if_cookie>>Weight</option>
</select>
<input type="submit" value="Sort">
</form>
Then, catch the GET/POST parameter sent by this list to store it (useful to keep the sort order pages after pages).
<txp:oui_cookie name="sort_by" values="custom_1, custom_2" default="custom_1" />
Now use the new value as the value of the sort
attribute of your article tag.
<txp:article sort='<txp:oui_cookie name="sort_by" />' />
Last viewed article
Store the current article id in a cookie:
<txp:if_individual_article>
<txp:oui_cookie name="last_article" value='<txp:article_id />' />
</txp:if_individual_article>
Now, use the following code anywhere you want to display the last viewed article.
<txp:if_cookie name="last_article">
<txp:article_custom id='<txp:oui_cookie name="last_article" />' />
</txp:if_cookie>
EU cookies Warning
<txp:oui_cookie name="accept_cookies" values="yes" />
<txp:oui_if_cookie name="accept_cookies"> <txp:else /> <div id="cookies-warning"> <p>This website uses cookies. <a id="accept_cookies" href="?accept_cookies=yes">I agree, remove this message!</a></p> </div> </txp:oui_if_cookie>
Now, you can add some progressive enhancement to avoid to refresh the page if javascript is on.
However, note that it wouldn’t instantaneously display a potential alternative content placed before the <txp:else />
tag if the cookie is not set/setting.
<script> (function() { // Get the link which should remove the warning. var accept = document.getElementById('accept_cookies');
// If it exists, listen it… if (accept) { accept.addEventListener('click', removeWarning); }
// It is clicked! function removeWarning(e){ document.cookie = 'accept_cookies=yes;path=/;expires=864e2'; // Set the cookie for the whole domain for 1 day. var warning = document.getElementById('cookies-warning'); // Get the warning message to remove. warning.remove(); // Remove the message. e.preventDefault(); // Do not follow the link; everything's already done! }; }()); </script>
Credits
Author
Nicolas Morand
Thank you to the Textpattern community and the core team.
License
This plugin is distributed under GPL v2.0.
oui_cookie version 1.0.0-BETA3, Copyright © 2018 Nicolas Morand
This Textpattern plugin comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it under certain conditions.
Changelog
- 1.0.0-beta3 (2018-07-06)
- Changed: OOP related code rework;
- Removed: Txp 4.5 support;
- Adds Composer support for textpattern/installer.
- 0.2.3 (2016-06-21)
- Code rewrite;
- manual cookie setting added;
display
attribute removed (setting and reading are now separated);- deletion process changed.
- 0.1.3 (2016-05-29)
- improves conditional tag results;
delete
attribute unset by default (but any none valid value for a defined GET/POST parameter will delete the related cookie).
- 0.1.2 (2016-05-26)