Commit d914fac2 authored by Robert Lyon's avatar Robert Lyon Committed by Gerrit Code Review
Browse files

Merge "Integration of Cookie Consent solution (Bug #1258130)"

parents 3e76e2f1 f00c7778
<?php
/**
*
* @package mahara
* @subpackge admin
* @author Gregor Anzelj
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL version 3 or later
* @copyright For copyright information on Mahara, please see the README file distributed with this software.
* @copyright (C) 2013 Gregor Anzelj <gregor.anzelj@gmail.com>
*
*/
define('INTERNAL', 1);
define('ADMIN', 1);
define('MENUITEM', 'configsite/cookieconsent');
define('SECTION_PLUGINTYPE', 'core');
define('SECTION_PLUGINNAME', 'admin');
define('SECTION_PAGE', 'cookieconsent');
require(dirname(dirname(dirname(__FILE__))).'/init.php');
require_once('pieforms/pieform.php');
define('TITLE', get_string('cookieconsent', 'cookieconsent'));
define('DEFAULTPAGE', 'home');
$enabled = get_config('cookieconsent_enabled');
$configdata = unserialize(get_config('cookieconsent_settings'));
$cookietypes = (!empty($configdata['cookietypes']) ? $configdata['cookietypes'] : array());
$form = pieform(array(
'name' => 'cookieconsent',
'renderer' => 'table',
'plugintype' => 'core',
'pluginname' => 'admin',
'elements' => array(
'enabled' => array(
'type' => 'checkbox',
'title' => get_string('cookieconsentenable','cookieconsent'),
'defaultvalue' => $enabled,
),
'generaloptions' => array(
'type' => 'fieldset',
'collapsible' => true,
'collapsed' => ($enabled ? false : true),
'legend' => get_string('generaloptions', 'cookieconsent'),
'elements' => array(
'cookietypes' => array(
'type' => 'checkboxes',
'title' => get_string('cookietypes','cookieconsent'),
'description' => get_string('cookietypesdesc','cookieconsent'),
'labelwidth' => 20,
'elements' => array(
'social' => array(
'title' => get_string('cookietypessocial','cookieconsent'),
'value' => 'social',
'defaultvalue' => (in_array('social', $cookietypes) ? 1 : 0),
),
'analytics' => array(
'title' => get_string('cookietypesanalytics','cookieconsent'),
'value' => 'analytics',
'defaultvalue' => (in_array('analytics', $cookietypes) ? 1 : 0),
),
'advertising' => array(
'title' => get_string('cookietypesadvertising','cookieconsent'),
'value' => 'advertising',
'defaultvalue' => (in_array('advertising', $cookietypes) ? 1 : 0),
),
'necessary' => array(
'title' => get_string('cookietypesnecessary','cookieconsent'),
'value' => 'necessary',
'defaultvalue' => 1,
'disabled' => true,
),
),
'separator' => '<br />',
),
'consentmode' => array(
'type' => 'radio',
'title' => get_string('consentmode','cookieconsent'),
'description' => get_string('consentmodedesc','cookieconsent') . '<br />'
. get_string('consentmodedesc2','cookieconsent'),
'defaultvalue' => (!empty($configdata['consentmode']) ? hsc($configdata['consentmode']) : 'explicit'),
'options' => array(
'explicit' => get_string('consentmodeexplicit','cookieconsent'),
'implicit' => get_string('consentmodeimplicit','cookieconsent'),
),
'separator' => '<br />',
),
),
),
'stylingoptions' => array(
'type' => 'fieldset',
'collapsible' => true,
'collapsed' => ($enabled ? false : true),
'legend' => get_string('stylingoptions', 'cookieconsent'),
'elements' => array(
'pluginstyle' => array(
'type' => 'select',
'title' => get_string('pluginstyle','cookieconsent'),
'description' => get_string('pluginstyledesc','cookieconsent'),
'defaultvalue' => (!empty($configdata['pluginstyle']) ? hsc($configdata['pluginstyle']) : 'dark'),
'options' => array(
'dark' => get_string('pluginstyledark','cookieconsent'),
'light' => get_string('pluginstylelight','cookieconsent'),
),
),
'bannerposition' => array(
'type' => 'select',
'title' => get_string('bannerposition','cookieconsent'),
'description' => get_string('bannerpositiondesc','cookieconsent'),
'defaultvalue' => (!empty($configdata['bannerposition']) ? hsc($configdata['bannerposition']) : 'bottom'),
'options' => array(
'top' => get_string('bannerpositiontop','cookieconsent'),
'push' => get_string('bannerpositionpush','cookieconsent'),
'bottom' => get_string('bannerpositionbottom','cookieconsent'),
),
),
'tabposition' => array(
'type' => 'select',
'title' => get_string('tabposition','cookieconsent'),
'description' => get_string('tabpositiondesc','cookieconsent'),
'defaultvalue' => (!empty($configdata['tabposition']) ? hsc($configdata['tabposition']) : 'bottom-right'),
'options' => array(
'bottom-right' => get_string('tabpositionbottomright','cookieconsent'),
'bottom-left' => get_string('tabpositionbottomleft','cookieconsent'),
'vertical-left' => get_string('tabpositionverticalleft','cookieconsent'),
'vertical-right' => get_string('tabpositionverticalright','cookieconsent'),
),
),
'hideprivacytab' => array(
'type' => 'checkbox',
'title' => get_string('hideprivacytab','cookieconsent'),
'description' => get_string('hideprivacytabdesc','cookieconsent'),
'defaultvalue' => (!empty($configdata['hideprivacytab']) ? hsc($configdata['hideprivacytab']) : false),
),
),
),
'featureoptions' => array(
'type' => 'fieldset',
'collapsible' => true,
'collapsed' => ($enabled ? false : true),
'legend' => get_string('featureoptions', 'cookieconsent'),
'elements' => array(
'refreshonconsent' => array(
'type' => 'checkbox',
'title' => get_string('pagerefresh','cookieconsent'),
'description' => get_string('pagerefreshdesc','cookieconsent'),
'defaultvalue' => (!empty($configdata['refreshonconsent']) ? hsc($configdata['refreshonconsent']) : false),
),
'ignoredonottrack' => array(
'type' => 'checkbox',
'title' => get_string('ignoredonottrack','cookieconsent'),
'description' => get_string('ignoredonottrackdesc','cookieconsent'),
'defaultvalue' => (!empty($configdata['ignoredonottrack']) ? hsc($configdata['ignoredonottrack']) : false),
),
'usessl' => array(
'type' => 'checkbox',
'title' => get_string('usessl','cookieconsent'),
'description' => get_string('usessldesc','cookieconsent'),
'defaultvalue' => (!empty($configdata['usessl']) ? hsc($configdata['usessl']) : false),
),
),
),
'submit' => array(
'type' => 'submit',
'value' => get_string('savechanges', 'admin')
),
)
));
function cookieconsent_submit(Pieform $form, $values) {
global $SESSION;
// Save whether the Cookie Consent plugin is enabled
$enabled = $values['enabled'];
set_config('cookieconsent_enabled', $enabled);
// Remove unused values and save Cookie Consent settings
unset($values['enabled']);
unset($values['submit']);
unset($values['sesskey']);
// Disabled checkbox isn't send through HTTP POST request, so
$values['cookietypes'] = array_merge($values['cookietypes'], array('necessary'));
// Save Cookie Consent plugin settings
set_config('cookieconsent_settings', serialize($values));
// Redirect to further installation instructions
if ($enabled) {
$SESSION->add_ok_msg(get_string('cookieconsentenabled', 'cookieconsent'));
redirect(get_config('wwwroot') . 'admin/site/cookieconsent2.php');
}
else {
$SESSION->add_ok_msg(get_string('cookieconsentdisabled', 'cookieconsent'));
redirect(get_config('wwwroot') . 'admin/index.php');
}
}
$js = <<<EOF
jQuery(document).ready(function() {
var j = jQuery.noConflict();
j(".expandable-body").hide();
j(".toggle").addClass('expandable');
j(".expandable-head").click(function(event) {
j(this).next('.expandable-body').toggle();
j(this).children(".toggle.expandable").toggleClass('expanded');
});
j('#cookieconsent input[name=enabled]').click(function() {
if (this.checked) {
// Expand collapsible fieldsets
j('#cookieconsent fieldset').attr('class', 'pieform-fieldset collapsible');
}
else {
// Collapse collapsible fieldsets
j('#cookieconsent fieldset').attr('class', 'pieform-fieldset collapsible collapsed');
}
});
});
EOF;
$smarty = smarty();
$smarty->assign('form', $form);
$smarty->assign('introtext1', get_string('cookieconsentintro1', 'cookieconsent'));
$smarty->assign('introtext2', get_string('cookieconsentintro2', 'cookieconsent'));
$smarty->assign('introtext3', get_string('cookieconsentintro3', 'cookieconsent'));
$smarty->assign('introtext4', get_string('cookieconsentintro4', 'cookieconsent'));
$smarty->assign('introtext5', get_string('cookieconsentintro5', 'cookieconsent', '<a href="http://sitebeam.net/cookieconsent/" target="_blank">', '</a>'));
// Official EU languages
$smarty->assign('languages', array('BG','CS','DA','DE','EL','EN','ES','ET','FI','FR','HU','IT','LT','LV','MT','NL','PL','PT','RO','SK','SL','SV'));
$smarty->assign('PAGEHEADING', TITLE);
$smarty->assign('INLINEJAVASCRIPT', $js);
$smarty->display('admin/site/cookieconsent.tpl');
<?php
/**
*
* @package mahara
* @subpackge admin
* @author Gregor Anzelj
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL version 3 or later
* @copyright For copyright information on Mahara, please see the README file distributed with this software.
* @copyright (C) 2013 Gregor Anzelj <gregor.anzelj@gmail.com>
*
*/
define('INTERNAL', 1);
define('ADMIN', 1);
define('MENUITEM', 'configsite/cookieconsent');
define('SECTION_PLUGINTYPE', 'core');
define('SECTION_PLUGINNAME', 'admin');
define('SECTION_PAGE', 'cookieconsent2');
require(dirname(dirname(dirname(__FILE__))).'/init.php');
require_once('pieforms/pieform.php');
define('TITLE', get_string('cookieconsent2', 'cookieconsent'));
define('DEFAULTPAGE', 'home');
$examplesocialbefore = <<<CODE
<pre>
&lt;div id="fb-root"&gt;&lt;/div&gt;
&lt;script type="text/javascript"&gt;(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1&appId=000000000000000";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));&lt;/script&gt;
</pre>
CODE;
$examplesocialafter = <<<CODE
<pre>
&lt;div id="fb-root"&gt;&lt;/div&gt;
&lt;script type="<b>text/plain</b>" class="<b>cc-onconsent-social</b>"&gt;(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1&appId=000000000000000";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));&lt;/script&gt;
</pre>
CODE;
$exampleanalyticsbefore = <<<CODE
<pre>
&lt;script type="text/javascript"&gt;
// &lt;![CDATA[
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-00000000-1']);
_gaq.push(['_setAllowLinker', true]);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
// ]]&gt;
&lt;/script&gt;
</pre>
CODE;
$exampleanalyticsafter = <<<CODE
<pre>
&lt;script type="<b>text/plain</b>" class="<b>cc-onconsent-analytics</b>"&gt;
// &lt;![CDATA[
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-00000000-1']);
_gaq.push(['_setAllowLinker', true]);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
// ]]&gt;
&lt;/script&gt;
</pre>
CODE;
$exampleadvertisingbefore = <<<CODE
<pre>
&lt;script type="text/javascript"&gt;
&lt;!--
google_ad_client = "ca-pub-0000000000000000";
/* test */
google_ad_slot = "0000000000";
google_ad_width = 728;
google_ad_height = 90;
//-->
&lt;/script&gt;
&lt;script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;
</pre>
CODE;
$exampleadvertisingafter = <<<CODE
<pre>
&lt;script type="<b>text/plain</b>" class="<b>cc-onconsent-advertising</b>"&gt;
&lt;!--
google_ad_client = "ca-pub-0000000000000000";
/* test */
google_ad_slot = "0000000000";
google_ad_width = 728;
google_ad_height = 90;
//-->
&lt;/script&gt;
&lt;script type="<b>text/plain</b>" class="<b>cc-onconsent-advertising</b>" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;
</pre>
CODE;
$examplenecessarybefore = <<<CODE
<pre>
&lt;script type="text/javascript"&gt;
&lt;!--
google_ad_client = "ca-pub-0000000000000000";
/* test */
google_ad_slot = "0000000000";
google_ad_width = 728;
google_ad_height = 90;
//-->
&lt;/script&gt;
&lt;script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;
</pre>
CODE;
$examplenecessaryafter = <<<CODE
<pre>
&lt;script type="<b>text/plain</b>" class="<b>cc-onconsent-necessary</b>"&gt;
&lt;!--
google_ad_client = "ca-pub-0000000000000000";
/* test */
google_ad_slot = "0000000000";
google_ad_width = 728;
google_ad_height = 90;
//-->
&lt;/script&gt;
&lt;script type="<b>text/plain</b>" class="<b>cc-onconsent-necessary</b>" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;
</pre>
CODE;
$data = array(
'social' => array(
'title' => get_string('cookietypessocial', 'cookieconsent'),
'item1' => get_string('instructiontext1', 'cookieconsent', get_string('cookietypessocial','cookieconsent'), get_string('example1social','cookieconsent')),
'item2' => get_string('instructiontext2', 'cookieconsent'),
'item3' => get_string('instructiontext3', 'cookieconsent', 'cc-onconsent-social'),
'code1' => $examplesocialbefore,
'code2' => $examplesocialafter,
'help1' => get_string('itdidntwork1', 'cookieconsent', 'cc-onconsent-social', 'cc-onconsent-inline-social'),
'help2' => get_string('itdidntwork2', 'cookieconsent', '<a href="http://sitebeam.net/cookieconsent/documentation/code-examples#examples-social" target="_blank">', '</a>', '<a href="http://www.linkedin.com/groups/Cookie-Consent-developers-4980594?trk=groups_management_submission_queue-h-dsc" target="_blank">', '</a>')
),
'analytics' => array(
'title' => get_string('cookietypesanalytics', 'cookieconsent'),
'item1' => get_string('instructiontext1', 'cookieconsent', get_string('cookietypesanalytics','cookieconsent'), get_string('example1analytics','cookieconsent')),
'item2' => get_string('instructiontext2', 'cookieconsent'),
'item3' => get_string('instructiontext3', 'cookieconsent', 'cc-onconsent-analytics'),
'code1' => $exampleanalyticsbefore,
'code2' => $exampleanalyticsafter,
'help1' => get_string('itdidntwork1', 'cookieconsent', 'cc-onconsent-analytics', 'cc-onconsent-inline-analytics'),
'help2' => get_string('itdidntwork2', 'cookieconsent', '<a href="http://sitebeam.net/cookieconsent/documentation/code-examples#examples-analytics" target="_blank">', '</a>', '<a href="http://www.linkedin.com/groups/Cookie-Consent-developers-4980594?trk=groups_management_submission_queue-h-dsc" target="_blank">', '</a>')
),
'advertising' => array(
'title' => get_string('cookietypesadvertising', 'cookieconsent'),
'item1' => get_string('instructiontext1', 'cookieconsent', get_string('cookietypesadvertising','cookieconsent'), get_string('example1advertising','cookieconsent')),
'item2' => get_string('instructiontext2', 'cookieconsent'),
'item3' => get_string('instructiontext3', 'cookieconsent', 'cc-onconsent-advertising'),
'code1' => $exampleadvertisingbefore,
'code2' => $exampleadvertisingafter,
'help1' => get_string('itdidntwork1', 'cookieconsent', 'cc-onconsent-advertising', 'cc-onconsent-inline-advertising'),
'help2' => get_string('itdidntwork2', 'cookieconsent', '<a href="http://sitebeam.net/cookieconsent/documentation/code-examples#examples-advertising" target="_blank">', '</a>', '<a href="http://www.linkedin.com/groups/Cookie-Consent-developers-4980594?trk=groups_management_submission_queue-h-dsc" target="_blank">', '</a>')
),
'necessary' => array(
'title' => get_string('cookietypesnecessary', 'cookieconsent'),
'item1' => get_string('instructiontext1', 'cookieconsent', get_string('cookietypesnecessary','cookieconsent'), get_string('example1necessary','cookieconsent')),
'item2' => get_string('instructiontext2', 'cookieconsent'),
'item3' => get_string('instructiontext3', 'cookieconsent', 'cc-onconsent-necessary'),
'code1' => $examplenecessarybefore,
'code2' => $examplenecessaryafter,
'help1' => get_string('itdidntwork1', 'cookieconsent', 'cc-onconsent-necessary', 'cc-onconsent-inline-necessary'),
'help2' => get_string('itdidntwork2', 'cookieconsent', '<a href="http://sitebeam.net/cookieconsent/documentation/code-examples#examples-necessary" target="_blank">', '</a>', '<a href="http://www.linkedin.com/groups/Cookie-Consent-developers-4980594?trk=groups_management_submission_queue-h-dsc" target="_blank">', '</a>')
)
);
$js = <<<EOF
jQuery(document).ready(function() {
var j = jQuery.noConflict();
j(".expandable-body").hide();
j(".toggle").addClass('expandable');
j(".expandable-head").click(function(event) {
j(this).next('.expandable-body').toggle();
j(this).children(".toggle.expandable").toggleClass('expanded');
});
});
EOF;
$smarty = smarty();
$smarty->assign('modifications', get_string('additionalmodifications','cookieconsent'));
$smarty->assign('data', $data);
$smarty->assign('PAGEHEADING', TITLE);
$smarty->assign('INLINEJAVASCRIPT', $js);
$smarty->display('admin/site/cookieconsent2.tpl');
CookieConsent
=============
Name : Cookie Consent
Website: http://sitebeam.net/cookieconsent/
Author : (C) 2013 Silktide Ltd.
Source : http://sitebeam.net/cookieconsent/documentation/changelog/
Version: 1.0.10
Licence: CookieConsent is GPLv3 licensed (see: http://sitebeam.net/cookieconsent/documentation/licence/)
Modifications:
- changed 'plugin.js' line 1525 from 'Open+Sans:400,600:latin' to 'Open+Sans:400,600:latin,latin-ext' to avoid UTF-8 character display issues
- renamed 'style.css' to 'cookieconsent.css' and copied/moved it to htdocs/raw/static/style
- decrease all font-size properties in 'cookieconsent.css' for smaller text (all changes marked with: /*changed*/)
- changed some height and max-height properties in 'cookieconsent.css' (all changes marked with: /*changed*/)
This diff is collapsed.
......@@ -306,7 +306,9 @@
}
function writeCookieContentEditorCollapsed(isCollapsed) {
document.cookie=cookieName+"="+ (isCollapsed ? '1': '0') +"; expires=Wednesday, 01-Aug-2040 08:00:00 GMT";
if (!config['cc_enabled'] || (config['cc_enabled'] && document.cookie.indexOf("cc_necessary") >= 0)) {
document.cookie=cookieName+"="+ (isCollapsed ? '1': '0') +"; expires=Wednesday, 01-Aug-2040 08:00:00 GMT";
}
}
function toggleContentEditorFold() {
......
<?php
/**
*
* @package mahara
* @subpackge admin
* @author Gregor Anzelj
* @author Silktide Ltd.
* @author URI http://sitebeam.net/cookieconsent/
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL version 3 or later
* @license http://sitebeam.net/cookieconsent/documentation/licence/
* @copyright For copyright information on Mahara, please see the README file distributed with this software.
* @copyright (C) 2013 Gregor Anzelj <gregor.anzelj@gmail.com>
* @copyright (C) 2013 Silktide Ltd.
*
*
* This file incorporates work covered by the following copyright and
* permission notice:
*
* License for Cookie Consent plugin
* Copyright (C) 2013 Silktide Ltd.
*
* This program is free software: you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software Foundation, either
* version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*
*/
defined('INTERNAL') || die();
$string['cookieconsent'] = 'Cookie Consent';
$string['cookieconsentintro1'] = 'Directive 2009/136/EC of the European Parliament and of the Council, which is also known as the "Cookie Directive" or "Cookie Law", is the instrument that defines the requirements for consent for cookies across the EU. This is basically an amendment of earlier directive: Directive 2002/58/EC, and is broadly concerned with the protection of data and privacy on the web and in other forms of electronic communication.';
$string['cookieconsentintro2'] = 'The new directive came into effect on 25 May 2011. The text of the directive is about 26 pages long, but the most important paragraph about cookies can be found on page 20, which changes the Article 5(3) of the earlier Directive 2002/58/EC:';
$string['cookieconsentintro3'] = '"Member States shall ensure that the storing of information, or the gaining of access to information already stored, in the terminal equipment of a subscriber or user is only allowed on condition that the subscriber or user concerned has given his or her consent, having been provided with clear and comprehensive information, in accordance with Directive 95/46/EC, inter alia, about the purposes of the processing. This shall not prevent any technical storage or access for the sole purpose of carrying out the transmission of a communication over an electronic communications network, or as strictly necessary in order for the provider of an information society service explicitly requested by the subscriber or user to provide the service."';
$string['readfulltext'] = 'Read full text of the new directive';
$string['directive2009136'] = 'Directive 2009/136/EC';
$string['readdirectiveBG'] = 'Read Directive 2009/136/EC in Bulgarian';
$string['readdirectiveCS'] = 'Read Directive 2009/136/EC in Czech';
$string['readdirectiveDA'] = 'Read Directive 2009/136/EC in Danish';
$string['readdirectiveDE'] = 'Read Directive 2009/136/EC in German';
$string['readdirectiveEL'] = 'Read Directive 2009/136/EC in Greek';
$string['readdirectiveEN'] = 'Read Directive 2009/136/EC in English';
$string['readdirectiveES'] = 'Read Directive 2009/136/EC in Spanish';
$string['readdirectiveET'] = 'Read Directive 2009/136/EC in Estonian';
$string['readdirectiveFI'] = 'Read Directive 2009/136/EC in Finnish';
$string['readdirectiveFR'] = 'Read Directive 2009/136/EC in French';
$string['readdirectiveHU'] = 'Read Directive 2009/136/EC in Hungarian';
$string['readdirectiveIT'] = 'Read Directive 2009/136/EC in Italian';
$string['readdirectiveLT'] = 'Read Directive 2009/136/EC in Lithuanian';
$string['readdirectiveLV'] = 'Read Directive 2009/136/EC in Latvian';
$string['readdirectiveMT'] = 'Read Directive 2009/136/EC in Maltese';
$string['readdirectiveNL'] = 'Read Directive 2009/136/EC in Dutch';
$string['readdirectivePL'] = 'Read Directive 2009/136/EC in Polish';
$string['readdirectivePT'] = 'Read Directive 2009/136/EC in Portuguese';
$string['readdirectiveRO'] = 'Read Directive 2009/136/EC in Romanian';
$string['readdirectiveSK'] = 'Read Directive 2009/136/EC in Slovak';
$string['readdirectiveSL'] = 'Read Directive 2009/136/EC in Slovene';
$string['readdirectiveSV'] = 'Read Directive 2009/136/EC in Swedish';
$string['cookieconsentintro4'] = 'In short this means before somebody can store or retrieve any information from a computer, mobile phone or other device, the user must give informed consent to do so. The intention is to increase the privacy of the end user and prevent organisations from obtaining information about people without them knowing about it.';
$string['cookieconsentintro5'] = 'First enable the %sCookie Consent plugin by Silktide%s integrated into Mahara, then set the desired options and save changes. You will be redirected to another page with detailed instructions what to modify or how to update your theme header files or <tt>$cfg->additionalhtmlhead</tt> config setting for Cookie Control to take full effect.';
$string['cookieconsentenable'] = 'Enable Cookie Consent?';
$string['cookieconsentenabled'] = 'Cookie Consent enabled and the settings saved';
$string['cookieconsentdisabled'] = 'Cookie Consent disabled';
$string['cookieconsent2'] = 'Additional site modifications';
$string['additionalmodifications'] = 'If you want Cookie Control to take full effect you will have to modify or update your theme header files or <tt>$cfg->additionalhtmlhead</tt> config setting.';
$string['instructiontext1'] = 'Find any Javascript elements that set %s cookies. Examples might include %s.';
$string['instructiontext2'] = 'Modify the <tt>&lt;script&gt;</tt> tag so that the type attribute is "text/plain" rather than "text/javascript"';
$string['instructiontext3'] = 'Add a class of "%s" to the <tt>&lt;script&gt;</tt> tag';
$string['example1social'] = 'Facebook buttons and Twitter widgets';
$string['example1analytics'] = 'Google Analytics and StatCounter';
$string['example1advertising'] = 'Google AdSense and other targeted advertising plugins';
$string['example1necessary'] = 'Google AdSense and other targeted advertising plugins';
$string['example'] = 'Example';
$string['examplebefore'] = 'Before:';
$string['exampleafter'] = 'After (changes are in bold):';
$string['itdidntwork'] = 'It didn\'t work!';
$string['itdidntwork1'] = 'First, try substituting <b>%s</b> for <b>%s</b>. This fixes some Javascript plugins which use <tt>document.write()</tt>.';
$string['itdidntwork2'] = 'If this doesn\'t help, %scheck out Cookie Consent code examples page%s or ask for help in the %sCookie Consent LinkedIn group%s.';
$string['generaloptions'] = 'General options';
$string['cookietypes'] = 'Types of cookies';
$string['cookietypesdesc'] = 'Select which types of cookies are in use on your site.';
$string['cookietypessocial'] = 'Social media';
$string['cookietypesanalytics'] = 'Analytics';
$string['cookietypesadvertising'] = 'Advertising';
$string['cookietypesnecessary'] = 'Strictly necessary';
$string['consentmode'] = 'Consent mode';
$string['consentmodedesc'] = 'Cookie Consent will always use explicit mode when a browser\'s "do not track" setting is enabled (unless overridden in Feature options below).';
$string['consentmodedesc2'] = 'The "do not track" setting is enabled by default in the latest versions of Internet Explorer.';
$string['consentmodeexplicit'] = 'Explicit - no cookies will be set until a visitor consents';
$string['consentmodeimplicit'] = 'Implied - set cookies and allow visitors to opt out';
$string['stylingoptions'] = 'Styling options';
$string['pluginstyle'] = 'Style';
$string['pluginstyledesc'] = 'Change the look of Cookie Consent.';
$string['pluginstyledark'] = 'Dark';
$string['pluginstylelight'] = 'Light';
$string['bannerposition'] = 'Banner position';
$string['bannerpositiondesc'] = 'Choose whether the consent banner appears at the top or bottom of the screen.';
$string['bannerpositiontop'] = 'Top';
$string['bannerpositionpush'] = 'Push from top (experimental)';
$string['bannerpositionbottom'] = 'Bottom';
$string['tabposition'] = 'Tab position';
$string['tabpositiondesc'] = 'Choose where the privacy settings tab appears.';
$string['tabpositionbottomright'] = 'Bottom right';
$string['tabpositionbottomleft'] = 'Bottom left';
$string['tabpositionverticalleft'] = 'Left side';
$string['tabpositionverticalright'] = 'Right side';
$string['hideprivacytab'] = 'Hide privacy settings tab';
$string['hideprivacytabdesc'] = 'If you plan to use your own privacy settings link in-line (e.g. in your theme\'s template), you may wish to disable the standard privacy settings tab.';
$string['featureoptions'] = 'Feature options';
$string['pagerefresh'] = 'Page refresh';
$string['pagerefreshdesc'] = 'If you use have a server side application that needs to be aware of the consent to cookies, selecting this option will cause the page to be reloaded after consent has been gained.';