Skip to content

Commit

Permalink
Possibilité d'afficher un message invitant les visiteurs à accepter l…
Browse files Browse the repository at this point in the history
…es cookies du Gepi
  • Loading branch information
crob27 committed Aug 10, 2017
1 parent 69ed1a6 commit 85c1fc9
Show file tree
Hide file tree
Showing 7 changed files with 356 additions and 16 deletions.
7 changes: 7 additions & 0 deletions changelog.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ Absences 2:
dernière période en limitant l'extraction du début de la période jusqu'à la
date du conseil de classe déclaré en scolarité dans Verrouillage des classes.

Cahiers de textes:
- Possibilité d'ouvrir les CDT à l'usage exclusif des professeurs
(pour proposer un CDT personnel aux professeurs, indépendamment d'un autre CDT
éventuellement rempli par les professeurs sur un ENT pour les élèves,...).

LSUN:
- Possibilité de n'extraire qu'une ou certaines périodes.

Expand All @@ -25,6 +30,8 @@ Général:
(conditionné par un droit à donner dans Gestion générale/Droits d'accès).
- Possibilité de saisir/corriger les numéros de téléphone et mail en compte cpe et scolarité.
(conditionné pour les CPE par un droit à donner dans Gestion générale/Droits d'accès).
- Possibilité d'afficher un message invitant les visiteurs à accepter les cookies du Gepi
(paramétrable en administrateur dans Gestion générale/Options de connexion).

Gepi-1.7.1 (30/03/2017)
===========================
Expand Down
58 changes: 43 additions & 15 deletions gestion/info_vie_privee.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

/*
*
* Copyright 2001-2012 Thomas Belliard, Laurent Delineau, Edouard Hue, Eric Lebrun
* Copyright 2001-2017 Thomas Belliard, Laurent Delineau, Edouard Hue, Eric Lebrun
*
* This file is part of GEPI.
*
Expand Down Expand Up @@ -47,19 +47,46 @@

}

echo "<H2>1/ Cookies</H2>";

echo "A chacune de vos visites GEPI tente de générer un cookie de session. L'acceptation de ce cookie par votre navigateur est obligatoire pour accéder au site. Ce cookie de session est un cookie temporaire exigé pour des
raisons de sécurité. Ce type de cookie n'enregistre pas d'information sur votre ordinateur, il vous attribue un numéro de session
qu'il communique au serveur pour pouvoir suivre votre session en toute sécurité. Il est mis temporairement dans la mémoire de
votre ordinateur et est exploitable uniquement durant le temps de connexion. Il est ensuite détruit lorsque vous vous déconnectez ou
lorsque vous fermez toutes les fenêtres de votre navigateur.";


echo "<a name='cookies'></a><H2>1/ Cookies</H2>";

echo "A chacune de vos visites GEPI tente de générer un cookie de session. L'acceptation de ce cookie par votre navigateur est obligatoire pour accéder au site. Ce cookie de session est un cookie temporaire exigé pour des raisons de sécurité. Ce type de cookie n'enregistre pas d'information sur votre ordinateur, il vous attribue un numéro de session qu'il communique au serveur pour pouvoir suivre votre session en toute sécurité. Il est mis temporairement dans la mémoire de votre ordinateur et est exploitable uniquement durant le temps de connexion. Il est ensuite détruit lorsque vous vous déconnectez ou lorsque vous fermez toutes les fenêtres de votre navigateur.";

echo "<div class='fieldset_opacite50' style='margin:1em; margin-left:3em; width:70em;'>";
if((isset($_COOKIE))&&(count($_COOKIE)>0)) {
echo "<p style='margin-left:3em; text-indent:-3em;'>Le ou les cookies actuellement définis sont&nbsp;:<br />";
foreach($_COOKIE as $key => $value) {
if(is_array($value)) {
echo "<strong>$key&nbsp;:</strong><br />";
echo "<pre>";
print_r($value);
echo "</pre>";
}
else {
echo "<strong>$key&nbsp;:</strong> $value";
if($key=="GEPI_start_session") {
echo " <em>(soit le ".strftime("%d/%m/%Y à %H:%M:%S").")</em>";
}
elseif($key=="GEPI") {
echo " <em>(identifiant aléatoire de session, sans signification)</em>";
}
elseif($key=="RNE") {
echo " <em>(identifiant RNE/UAJ de l'établissement utilisé dans le cas d'une installation multisite de Gepi)</em>";
}
elseif($key=="displayCookieConsent") {
echo " <em>(indique que vous avez accepté les COOKIES du site)</em>";
}
echo "<br />";
}
}
echo "</p>";
}
else {
echo "Aucun cookie n'est défini.";
}
echo "</div>
<p>Lorsqu'il en est déclaré, les cookies propres à Gepi sont GEPI, GEPI_start_session et RNE.<br />
Si d'autres cookies apparaissent, ils correspondent à des services supplémentaires, éventuellement mis en place par l'administrateur du site.</p>";
//debug_var();

echo "<H2>2/ Informations transmises</H2>";

Expand Down Expand Up @@ -111,7 +138,8 @@

}

echo "Pour des raisons de sécurité, ces informations sont conservées pendant <b>".$duree."</b> à partir de leur enregistrement.";
echo "Pour des raisons de sécurité, ces informations sont conservées pendant <b>".$duree."</b> à partir de leur enregistrement.<br />
<em>(la durée de conservation peut être modifiée en administrateur dans la rubrique Gestion générale/Options de connexion)</em>";



Expand Down
98 changes: 98 additions & 0 deletions gestion/options_connect.php
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,32 @@
}
}

if(isset($_POST['form_cookie'])) {
check_token();
if(isset($_POST['cookie_afficher_acceptation'])) {
$valeur="y";
}
else {
$valeur="n";
}
if(!saveSetting('cookie_afficher_acceptation', $valeur)) {
$msg.="Erreur lors de l'enregistrement de 'cookie_afficher_acceptation' à la valeur '$valeur'.<br />";
}
else {
$msg.="Enregistrement de 'cookie_afficher_acceptation' à la valeur '$valeur'.<br />";
}

if(isset($_POST['cookie_url_explication'])) {
if(!saveSetting('cookie_url_explication', $_POST['cookie_url_explication'])) {
$msg.="Erreur lors de l'enregistrement de 'cookie_url_explication' à la valeur '".$_POST['cookie_url_explication']."'.<br />";
}
else {
$msg.="Enregistrement de 'cookie_url_explication' à la valeur '".$_POST['cookie_url_explication']."'.<br />";
}
}

}

if(isset($_POST['afficher_liaison_ent'])) {
check_token();
saveSetting('afficher_liaison_ent', $_POST['afficher_liaison_ent']);
Expand Down Expand Up @@ -979,6 +1005,78 @@
<hr class=\"header\" style=\"margin-top: 32px; margin-bottom: 24px;\" />\n";


//===========================================================

//
// COOKIES
//

$checked_cookies="";
if(getSettingAOui('cookie_afficher_acceptation')) {
$checked_cookies=" checked";
}


echo "<a name='afficher_acceptation_cookie'></a>\n";
echo "<h3 class='gepi'>COOKIES</h3>\n";
echo "<form action=\"options_connect.php\" name=\"form_ent\" method=\"post\">
<fieldset id='fieldset_cookies' class='fieldset_opacite50'>
<legend style='border: 1px solid grey; background-color: white;'>COOKIES</legend>
".add_token_field()."
A chacune de vos visites GEPI tente de générer un cookie de session. L'acceptation de ce cookie par votre navigateur est obligatoire pour accéder au site. Ce cookie de session est un cookie temporaire exigé pour des raisons de sécurité. Ce type de cookie n'enregistre pas d'information sur votre ordinateur, il vous attribue un numéro de session qu'il communique au serveur pour pouvoir suivre votre session en toute sécurité. Il est mis temporairement dans la mémoire de votre ordinateur et est exploitable uniquement durant le temps de connexion. Il est ensuite détruit lorsque vous vous déconnectez ou lorsque vous fermez toutes les fenêtres de votre navigateur.";

echo "<div class='fieldset_opacite50' style='margin:1em; margin-left:3em; width:70em;'>";
if((isset($_COOKIE))&&(count($_COOKIE)>0)) {
echo "<p style='margin-left:3em; text-indent:-3em;'>Le ou les cookies actuellement définis sont&nbsp;:<br />";
foreach($_COOKIE as $key => $value) {
if(is_array($value)) {
echo "<strong>$key&nbsp;:</strong><br />";
echo "<pre>";
print_r($value);
echo "</pre>";
}
else {
echo "<strong>$key&nbsp;:</strong> $value";
if($key=="GEPI_start_session") {
echo " <em>(soit le ".strftime("%d/%m/%Y à %H:%M:%S").")</em>";
}
elseif($key=="GEPI") {
echo " <em>(identifiant aléatoire de session, sans signification)</em>";
}
elseif($key=="RNE") {
echo " <em>(identifiant RNE/UAJ de l'établissement utilisé dans le cas d'une installation multisite de Gepi)</em>";
}
elseif($key=="displayCookieConsent") {
echo " <em>(indique que vous avez accepté les COOKIES du site)</em>";
}
echo "<br />";
}
}
echo "</p>";
}
else {
echo "Aucun cookie n'est défini.";
}
echo "</div>
<p>Si vous utilisez d'autres COOKIES que GEPI, GEPI_start_session et RNE <em>(par exemple si vous avez mis en place un compteur de visites,...)</em>, vous devriez afficher à vos visiteurs une demande d'acceptation des cookies.</p>
<p><input type=\"checkbox\" name=\"cookie_afficher_acceptation\" id=\"cookie_afficher_acceptation\" value=\"y\"$checked_cookies /><label for='cookie_afficher_acceptation'>Afficher la demande d'acceptation des cookies</label>.<br />
Le dispositif propose d'accepter les cookies, ou de consulter une page pour en savoir plus.<br />
La page est par défaut celle du lien <a href='$gepiPath/gestion/info_vie_privee.php#cookies' target='_blank'>Vie privée</a>.<br />
Si vous souhaitez utiliser une autre page, précisez-en l'adresse ici&nbsp;:
<input type='text' name='cookie_url_explication' value=\"".getSettingValue("cookie_url_explication")."\" /><br />
<input type=\"submit\" name=\"Valider\" value=\"Enregistrer\" />
<input type='hidden' name='mode_navig' value='$mode_navig' />
<input type='hidden' name='form_cookie' value='y' />
</fieldset>
</form>
<hr class=\"header\" style=\"margin-top: 32px; margin-bottom: 24px;\" />\n";

//===========================================================


Expand Down
174 changes: 174 additions & 0 deletions lib/cookiechoices.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,174 @@
/*
Copyright 2014 Google Inc. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

(function(window) {

if (!!window.cookieChoices) {
return window.cookieChoices;
}

var document = window.document;
// IE8 does not support textContent, so we should fallback to innerText.
var supportsTextContent = 'textContent' in document.body;

var cookieChoices = (function() {

var cookieName = 'displayCookieConsent';
var cookieConsentId = 'cookieChoiceInfo';
var dismissLinkId = 'cookieChoiceDismiss';

function _createHeaderElement(cookieText, dismissText, linkText, linkHref) {
var butterBarStyles = 'position:fixed;width:100%;background-color:#19003B;color:#FFFFFF;' +
'margin:0; left:0; bottom:0; padding:4px;z-index:1000;text-align:center;';

var cookieConsentElement = document.createElement('div');
cookieConsentElement.id = cookieConsentId;
cookieConsentElement.style.cssText = butterBarStyles;
cookieConsentElement.appendChild(_createConsentText(cookieText));

if (!!linkText && !!linkHref) {
cookieConsentElement.appendChild(_createInformationLink(linkText, linkHref));
}
cookieConsentElement.appendChild(_createDismissLink(dismissText));

return cookieConsentElement;
}

function _createDialogElement(cookieText, dismissText, linkText, linkHref) {
var glassStyle = 'position:fixed;width:100%;height:100%;z-index:999;' +
'top:0;left:0;opacity:0.5;filter:alpha(opacity=50);' +
'background-color:#ccc;';
var dialogStyle = 'z-index:1000;position:fixed;left:50%;top:50%';
var contentStyle = 'position:relative;left:-50%;margin-top:-25%;' +
'background-color:#fff;padding:20px;box-shadow:4px 4px 25px #888;';

var cookieConsentElement = document.createElement('div');
cookieConsentElement.id = cookieConsentId;

var glassPanel = document.createElement('div');
glassPanel.style.cssText = glassStyle;

var content = document.createElement('div');
content.style.cssText = contentStyle;

var dialog = document.createElement('div');
dialog.style.cssText = dialogStyle;

var dismissLink = _createDismissLink(dismissText);
dismissLink.style.display = 'block';
dismissLink.style.textAlign = 'right';
dismissLink.style.marginTop = '8px';

content.appendChild(_createConsentText(cookieText));
if (!!linkText && !!linkHref) {
content.appendChild(_createInformationLink(linkText, linkHref));
}
content.appendChild(dismissLink);
dialog.appendChild(content);
cookieConsentElement.appendChild(glassPanel);
cookieConsentElement.appendChild(dialog);
return cookieConsentElement;
}

function _setElementText(element, text) {
if (supportsTextContent) {
element.textContent = text;
} else {
element.innerText = text;
}
}

function _createConsentText(cookieText) {
var consentText = document.createElement('span');
_setElementText(consentText, cookieText);
return consentText;
}

function _createDismissLink(dismissText) {
var dismissLink = document.createElement('a');
_setElementText(dismissLink, dismissText);
dismissLink.id = dismissLinkId;
dismissLink.href = '#';
dismissLink.style.marginLeft = '15px';
dismissLink.style.color = '#FFFFFF';
return dismissLink;
}

function _createInformationLink(linkText, linkHref) {
var infoLink = document.createElement('a');
_setElementText(infoLink, linkText);
infoLink.href = linkHref;
infoLink.target = '_blank';
infoLink.style.marginLeft = '15px';
infoLink.style.color = '#FFFFFF';
return infoLink;
}

function _dismissLinkClick() {
_saveUserPreference();
_removeCookieConsent();
return false;
}

function _showCookieConsent(cookieText, dismissText, linkText, linkHref, isDialog) {
if (_shouldDisplayConsent()) {
_removeCookieConsent();
var consentElement = (isDialog) ?
_createDialogElement(cookieText, dismissText, linkText, linkHref) :
_createHeaderElement(cookieText, dismissText, linkText, linkHref);
var fragment = document.createDocumentFragment();
fragment.appendChild(consentElement);
document.body.appendChild(fragment.cloneNode(true));
document.getElementById(dismissLinkId).onclick = _dismissLinkClick;
}
}

function showCookieConsentBar(cookieText, dismissText, linkText, linkHref) {
_showCookieConsent(cookieText, dismissText, linkText, linkHref, false);
}

function showCookieConsentDialog(cookieText, dismissText, linkText, linkHref) {
_showCookieConsent(cookieText, dismissText, linkText, linkHref, true);
}

function _removeCookieConsent() {
var cookieChoiceElement = document.getElementById(cookieConsentId);
if (cookieChoiceElement != null) {
cookieChoiceElement.parentNode.removeChild(cookieChoiceElement);
}
}

function _saveUserPreference() {
// Set the cookie expiry to one year after today.
var expiryDate = new Date();
expiryDate.setFullYear(expiryDate.getFullYear() + 1);
document.cookie = cookieName + '=y; path=/; expires=' + expiryDate.toGMTString();
}

function _shouldDisplayConsent() {
// Display the header only if the cookie has not been set.
return !document.cookie.match(new RegExp(cookieName + '=([^;]+)'));
}

var exports = {};
exports.showCookieConsentBar = showCookieConsentBar;
exports.showCookieConsentDialog = showCookieConsentDialog;
return exports;
})();

window.cookieChoices = cookieChoices;
return cookieChoices;
})(this);
Loading

0 comments on commit 85c1fc9

Please sign in to comment.