Merge branch '11200' into 11200_vendors

This commit is contained in:
Fred Tempez 2021-12-01 15:42:21 +01:00
commit 272de57267
15 changed files with 260 additions and 171 deletions

View File

@ -9,7 +9,12 @@ Mises à jour :
- Configuration, restauration d'une archive du site :
- la validation du formulaire sans avoir sélectionné de fichier de sauvegarde provoque le crash du site.
- la conversion des URL des ressources ne fonctionnait plus depuis l'externalisation du contenu des pages dans des fichiers séparés.
- Multi-langues :
- Bug auto détection du navigateur.
- Modifications :
- Gestion des cookies :
- Options de personnalisation du message d'acceptation des cookies, acceptation ou refus du cookie Google Analytics, affichage de la page des mentions légales.
- Etiquette dans le footer permettant d'afficher la popup des cookies.
- Thème :
- Disposition des options de configuration du site.
- Bannière : le contenu peut être personnalisé à l'aide d'un éditeur. La bannière au-dessus du site peut s'étendre sur la largeur de la page.

View File

@ -206,18 +206,6 @@ core.start = function() {
$("#notification").fadeOut();
$("#notificationProgress").stop();
});
/**
* Affiche / Cache le menu en mode responsive
*/
var menuDOM = $("#menu");
$("#toggle").on("click", function() {
menuDOM.slideToggle();
});
$(window).on("resize", function() {
if($(window).width() > 768) {
menuDOM.css("display", "");
}
});
/**
* Traitement du formulaire cookies
@ -236,20 +224,51 @@ core.start = function() {
// Crée le cookie d'acceptation Google Analytics si l'ID a été saisie
var analytics = "<?php echo $this->getData(['config', 'seo', 'analyticsId']);?>";
// l'Id GA est défini dans la configuration, afficher la checkbox d'acceptation
if( analytics.length > 0){
document.cookie = "ZWII_COOKIE_GA_CONSENT=" + $("#googleAnalytics").prop("checked") + "<?php echo $_SERVER['PHP_SELF']; ?>" +";" + domain + ";" + path + ";" + samesite + ";" + expires;
// Traitement du retour de la checkbox
if ($("#googleAnalytics").is(":checked")) {
// L'URL du serveur faut TRUE
document.cookie = "ZWII_COOKIE_GA_CONSENT=" + "<?php echo $_SERVER['PHP_SELF']; ?>" + ";" + domain + ";" + path + ";" + samesite + ";" + expires;
} else {
document.cookie = "ZWII_COOKIE_GA_CONSENT=false;" + domain + ";" + path + ";" + samesite + ";" + expires;
}
// Stocke lz cookie d'acceptation
}
// Stocke le cookie d'acceptation
document.cookie = "ZWII_COOKIE_CONSENT=<?php echo $_SERVER['PHP_SELF']; ?>;" + domain + ";" + path + ";" + samesite + ";" + expires;
});
/**
* Fermeture de la popup des cookies
*/
$("#cookieConsent .cookieClose").on("click", function() {
$(this).parents("#cookieConsent").fadeOut();
$('#cookieConsent').fadeOut();
});
/**
* Commande de gestion des cookies dans le footer
*/
$("#footerLinkCookie").on("click", function() {
$("#cookieConsent").removeClass("displayNone");
});
/**
* Affiche / Cache le menu en mode responsive
*/
var menuDOM = $("#menu");
$("#toggle").on("click", function() {
menuDOM.slideToggle();
});
$(window).on("resize", function() {
if($(window).width() > 768) {
menuDOM.css("display", "");
}
});
/**
* Choix de page dans la barre de membre
*/

View File

@ -45,7 +45,7 @@ class common {
// Numéro de version
const ZWII_UPDATE_URL = 'https://forge.chapril.org/ZwiiCMS-Team/update/raw/branch/master/';
const ZWII_VERSION = '11.2.00.9';
const ZWII_VERSION = '11.2.00.12';
const ZWII_UPDATE_CHANNEL = "test";
public static $actions = [];
@ -264,7 +264,13 @@ class common {
* la traduction est celle de la langue du drapeau
* */
if ( $this->getInput('ZWII_I18N_SCRIPT') !== substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2 ) ) {
setrawcookie('googtrans', '/fr/'.substr( $_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2 ), time() + 3600, helper::baseUrl());
setrawcookie('googtrans', '/fr/'.substr( $_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2 ), time() + 3600, helper::baseUrl(false, false));
} else {
// Langue du drapeau si elle est définie
if ( $this->getInput('ZWII_I18N_SCRIPT') !== '' ) {
// Paramètre du script
setrawcookie("googtrans", '/fr/'. $this->getInput('ZWII_I18N_SCRIPT') , time() + 3600, helper::baseUrl(false,false));
}
}
}
@ -1174,7 +1180,7 @@ class common {
*/
public function showAnalytics() {
if( !empty($code = $this->getData(['config', 'seo', 'analyticsId'])) &&
$this->getInput('ZWII_COOKIE_GA_CONSENT') === 'true'.$_SERVER['PHP_SELF']) {
$this->getInput('ZWII_COOKIE_GA_CONSENT') === $_SERVER['PHP_SELF'] ) {
echo '<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id='. $code .'"></script>
<script>
@ -1191,30 +1197,38 @@ class common {
*/
public function showCookies() {
if( $this->getInput('ZWII_COOKIE_CONSENT') !== $_SERVER['PHP_SELF'] AND
$this->getData(['config', 'cookies', 'cookieConsent']) === true
){
$analytics = $this->getData(['config', 'seo', 'analyticsId']);
$legalPage = $this->getData(['locale','legalPageId']) ==='none'? 'mentions-legales' : $this->getData(['locale','legalPageId']);
$item = '<div id="cookieConsent">';
// Gestion des cookies intégrée
if ($this->getData(['config', 'cookieConsent']) === true )
{
// Détermine si le bloc doit être affiché selon la validité du cookie
// L'URL du serveur faut TRUE
$item = '<div id="cookieConsent"';
$item .= $this->getInput('ZWII_COOKIE_CONSENT') !== $_SERVER['PHP_SELF'] ? '>' : ' class="displayNone">';
// Bouton de fermeture
$item .= '<div class="cookieClose">';
$item .= template::ico('cancel');
$item .= '</div>';
$item .= '<h3>'. $this->getData(['config', 'cookies', 'cookiesTitleText']) . '</h3>';
$item .= '<p>' . $this->getData(['config', 'cookies', 'cookiesZwiiText']) . '</p>';
$item .= '<p><a href="' . helper::baseUrl() . $legalPage . '">' . $this->getData(['config', 'cookies', 'cookiesLinkMlText']) . '</a></p>';
if( $analytics !== null AND $analytics !=='' ){
$item .= '<p>' . $this->getData(['config', 'cookies', 'cookiesGaText']) . '</p>';
}
// Texte de la popup
$item .= '<h3>'. $this->getData(['locale', 'cookies', 'cookiesTitleText']) . '</h3>';
$item .= '<p>' . $this->getData(['locale', 'cookies', 'cookiesZwiiText']) . '</p>';
// Formulaire de réponse
$item .= '<form method="POST" action="" id="cookieForm">';
$analytics = $this->getData(['config', 'seo', 'analyticsId']);
$stateCookieGA = $this->getInput('ZWII_COOKIE_GA_CONSENT') === $_SERVER['PHP_SELF'] ? 'checked="checked"' : '';
if( $analytics !== null AND $analytics !== '' ) {
$item .= '<input type="checkbox" id="googleAnalytics" name="googleAnalytics" value="GA">';
$item .= '<label for="googleAnalytics">' . $this->getData(['config', 'cookies', 'cookiesCheckboxGaText']) . '</label>';
$item .= '<p>' . $this->getData(['locale', 'cookies', 'cookiesGaText']) . '</p>';
$item .= '<input type="checkbox" id="googleAnalytics" name="googleAnalytics" value="GA" ' . $stateCookieGA . '>';
$item .= '<label for="googleAnalytics">' . $this->getData(['locale', 'cookies', 'cookiesCheckboxGaText']) . '</label>';
}
$item .= '<br><br>';
$item .= '<input type="submit" id="cookieConsentConfirm" value="Valider">';
$item .= '</form></div>';
$item .= '<input type="submit" id="cookieConsentConfirm" value="' . $this->getData(['locale', 'cookies', 'cookiesButtonText']) . '">';
$item .= '</form>';
// mentions légales si la page est définie
$legalPage = $this->getData(['locale', 'legalPageId']);
if ($legalPage !== 'none') {
$item .= '<p><a href="' . helper::baseUrl() . $legalPage . '">' . $this->getData(['locale', 'cookies', 'cookiesLinkMlText']) . '</a></p>';
}
$item .= '</div>';
echo $item;
}
@ -1469,7 +1483,7 @@ class common {
$items .= $this->getData(['theme','footer','displaySearch']) === false ? ' class="displayNone" >' : '>';
$label = empty($this->getData(['locale','searchPageLabel'])) ? 'Rechercher' : $this->getData(['locale','searchPageLabel']);
if ($this->getData(['locale','searchPageId']) !== 'none') {
$items .= '<wbr>&nbsp;|&nbsp;<a href="' . helper::baseUrl() . $this->getData(['locale','searchPageId']) . '" data-tippy-content="' . $label . '" >' . $label .'</a>';
$items .= '<wbr>&nbsp;|&nbsp;<a href="' . helper::baseUrl() . $this->getData(['locale','searchPageId']) . '" data-tippy-content="Rechercher dans le site >' . $label .'</a>';
}
$items .= '</span>';
// Affichage des mentions légales
@ -1477,9 +1491,15 @@ class common {
$items .= $this->getData(['theme','footer','displayLegal']) === false ? ' class="displayNone" >' : '>';
$label = empty($this->getData(['locale','legalPageLabel'])) ? 'Mentions Légales' : $this->getData(['locale','legalPageLabel']);
if ($this->getData(['locale','legalPageId']) !== 'none') {
$items .= '<wbr>&nbsp;|&nbsp;<a href="' . helper::baseUrl() . $this->getData(['locale','legalPageId']) . '" data-tippy-content="' . $label . '">' . $label .'</a>';
$items .= '<wbr>&nbsp;|&nbsp;<a href="' . helper::baseUrl() . $this->getData(['locale','legalPageId']) . '" data-tippy-content="Page des mentions légales" >' . $label .'</a>';
}
$items .= '</span>';
// Affichage de la gestion des cookies
$items .= '<span id="footerDisplayCookie"';
$items .= ($this->getData(['config', 'cookieConsent']) === true && $this->getData(['theme', 'footer', 'displayCookie']) === true) ? '>' : ' class="displayNone" >';
$label = empty($this->getData(['locale', 'cookies', 'cookiesFooterText'])) ? 'Cookies' : $this->getData(['locale', 'cookies', 'cookiesFooterText']) ;
$items .= '<wbr>&nbsp;|&nbsp;<a href="javascript:void(0)" id="footerLinkCookie" data-tippy-content="Message d\'information relatif aux cookies">'. $label .'</a>';
$items .= '</span>';
// Affichage du lien de connexion
if(
(
@ -2116,7 +2136,7 @@ class common {
}
echo '<li>';
echo '<a href="' . helper::baseUrl() . 'translate/language/' . $key . '/' . $this->getData(['config', 'i18n',$key]) . '/' . $this->getUrl(0) . '"><img ' . $select . ' class="flag" alt="' . $value . '" src="' . helper::baseUrl(false) . 'core/vendor/i18n/png/' . $key . '.png"/></a>';
echo '<a href="' . helper::baseUrl() . 'translate/i18n/' . $key . '/' . $this->getData(['config', 'i18n',$key]) . '/' . $this->getUrl(0) . '"><img ' . $select . ' class="flag" alt="' . $value . '" src="' . helper::baseUrl(false) . 'core/vendor/i18n/png/' . $key . '.png"/></a>';
echo '</li>';
}
}
@ -2269,6 +2289,8 @@ class core extends common {
$css .= '.mce-tinymce {border: 1px solid ' . $this->getdata(['theme','block','borderColor']) .' !important;}';
// Bannière
// Eléments communs
if($this->getData(['theme', 'header', 'margin'])) {
if($this->getData(['theme', 'menu', 'position']) === 'site-first') {
$css .= 'header{margin:0 20px}';
@ -2277,8 +2299,11 @@ class core extends common {
$css .= 'header{margin:20px 20px 0 20px}';
}
}
if ($this->getData(['theme','header','feature']) === 'wallpaper' ) {
$colors = helper::colorVariants($this->getData(['theme', 'header', 'backgroundColor']));
$css .= 'header{background-color:' . $colors['normal'] . ';}';
// Bannière de type papier peint
if ($this->getData(['theme','header','feature']) === 'wallpaper' ) {
$css .= 'header{background-size:' . $this->getData(['theme','header','imageContainer']).'}';
$css .= 'header{background-color:' . $colors['normal'];
@ -2292,9 +2317,12 @@ class core extends common {
$colors = helper::colorVariants($this->getData(['theme', 'header', 'textColor']));
$css .= 'header span{color:' . $colors['normal'] . ';font-family:"' . str_replace('+', ' ', $this->getData(['theme', 'header', 'font'])) . '",sans-serif;font-weight:' . $this->getData(['theme', 'header', 'fontWeight']) . ';font-size:' . $this->getData(['theme', 'header', 'fontSize']) . ';text-transform:' . $this->getData(['theme', 'header', 'textTransform']) . '}';
}
// Bannière au contenu personnalisé
if ($this->getData(['theme','header','feature']) === 'feature' ) {
// Hauteur de la taille du contenu perso
$css .= 'header #featureContent{height:' . $this->getData(['theme', 'header', 'height']) . '; }';
$css .= 'header {height:'. $this->getData(['theme', 'header', 'height']) . '; min-height:' . $this->getData(['theme', 'header', 'height']) . ';overflow: hidden;}';
//$css .= '.bannerDisplay img { width: auto;max-height:' . $this->getData(['theme', 'header', 'height']) . ';}';
}
@ -2789,8 +2817,7 @@ class core extends common {
)
) {
// Paramètre du script
setrawcookie("googtrans", '/fr/'. $this->getInput('ZWII_I18N_SCRIPT') , time() + 3600, helper::baseUrl());
// Chargement de la librairie
$this->addOutput([
'vendor' => array_merge($this->output['vendor'], ['i18n'])

View File

@ -698,15 +698,16 @@ if ($this->getData(['core', 'dataVersion']) < 11200) {
$this->setData(['theme', 'header', 'featureContent', '<p>Bannière vide</p>']);
$this->setData(['theme', 'header', 'container', 'container']);
$this->setData(['theme', 'menu', 'container', 'container']);
// Option des cookies dans le footer
$this->setData(['theme', 'footer', 'displayCookie', false]);
// Acceptation et paramétres des cookies RGPD
$this->setData(['config', 'cookies', 'cookieConsent', $this->getData(['config', 'cookieConsent']) ]);
$this->deleteData(['config', 'cookieConsent' ]);
$this->setData(['config', 'cookies', 'cookiesZwiiText', 'Ce site utilise des cookies nécessaires à son fonctionnement, ils permettent de fluidifier son fonctionnement par exemple en mémorisant les données de connexion, la langue que vous avez choisie ou la validation de ce message.']);
$this->setData(['config', 'cookies', 'cookiesGaText', 'Il utilise également des cookies permettant de réaliser des statistiques de visites pour améliorer votre expérience utilisateur, ces cookies déposés par Google Analytics ont besoin de votre consentement.']);
$this->setData(['config', 'cookies', 'cookiesTitleText', 'Gérer les cookies']);
$this->setData(['config', 'cookies', 'cookiesLinkMlText', 'Voir les mentions légales']);
$this->setData(['config', 'cookies', 'cookiesCheckboxGaText', 'Autorisation des cookies Google Analytics']);
$this->setData(['locale', 'cookies', 'cookieZwiiText', 'Ce site utilise des cookies nécessaires à son fonctionnement, ils permettent de fluidifier son fonctionnement par exemple en mémorisant les données de connexion, la langue que vous avez choisie ou la validation de ce message.']);
$this->setData(['locale', 'cookies', 'cookieGaText', 'Il utilise également des cookies permettant de réaliser des statistiques de visites pour améliorer votre expérience utilisateur, ces cookies déposés par Google Analytics ont besoin de votre consentement.']);
$this->setData(['locale', 'cookies', 'cookieTitleText', 'Gérer les cookies']);
$this->setData(['locale', 'cookies', 'cookieLinkMlText', 'Consulter les mentions légales']);
$this->setData(['locale', 'cookies', 'cookieCheckboxGaText', 'Autorisation des cookies Google Analytics']);
$this->setData(['locale', 'cookies', 'cookiesButtonText', 'J\'ai compris']);
// Mise à jour
$this->setData(['core', 'dataVersion', 11200]);

View File

@ -838,6 +838,7 @@ footer #footerbody>div {
#footerDisplayVersion,
#footerDisplaySiteMap,
#footerDisplayLegal,
#footerDisplayCookie,
#footerDisplaySearch,
#footerZwiiCMS {
font-size: inherit;
@ -985,9 +986,9 @@ footer #footerSocials .zwiico-github:hover {
/* Message sur les cookies */
#cookieConsent {
width: 80%;
width: 60%;
margin: auto;
opacity: .9;
opacity: .95;
background: #212223;
position: fixed;
right: 0;
@ -1000,23 +1001,26 @@ footer #footerSocials .zwiico-github:hover {
font-size: 1em;
}
#cookieConsentConfirm {
background-color: green;
}
#cookieConsentConfirm {
cursor: pointer;
margin-left: 10px;
background: #666;
padding: 4px 8px;
display: inline-block;
transition: background .3s ease-out;
}
#cookieConsentConfirm:hover {
background: #777;
filter: grayscale(50%);
}
#cookieConsent .cookieClose {
position: absolute;
right: 5px;
top: 0px;
right: 10px;
top: 10px;
font-size: 1.5em;
cursor: pointer;
}

View File

@ -437,7 +437,17 @@ class config extends common {
'legalPageLabel' => empty($this->getInput('localeLegalPageLabel', helper::FILTER_STRING_SHORT)) ? 'Mentions légales' : $this->getInput('localeLegalPageLabel', helper::FILTER_STRING_SHORT),
'sitemapPageLabel' => empty($this->getInput('localeSitemapPageLabel', helper::FILTER_STRING_SHORT)) ? 'Plan du site' : $this->getInput('localeSitemapPageLabel', helper::FILTER_STRING_SHORT),
'metaDescription' => $this->getInput('localeMetaDescription', helper::FILTER_STRING_LONG, true),
'title' => $this->getInput('localeTitle', helper::FILTER_STRING_SHORT, true)
'title' => $this->getInput('localeTitle', helper::FILTER_STRING_SHORT, true),
'cookies' => [
// Les champs sont obligatoires si l'option consentement des cookies est active
'cookiesZwiiText' => $this->getInput('localeCookiesZwiiText', helper::FILTER_STRING_LONG, $this->getData(['config', 'cookieConsent'])),
'cookiesGaText' => $this->getInput('localeCookiesGaText', helper::FILTER_STRING_LONG, $this->getData(['config', 'cookieConsent'])),
'cookiesTitleText' => $this->getInput('localeCookiesTitleText', helper::FILTER_STRING_SHORT, $this->getData(['config', 'cookieConsent'])),
'cookiesLinkMlText' => $this->getInput('localeCookiesLinkMlText', helper::FILTER_STRING_SHORT, $this->getData(['config', 'cookieConsent'])),
'cookiesCheckboxGaText' => $this->getInput('localeCookiesCheckboxGaText', helper::FILTER_STRING_SHORT, $this->getData(['config', 'cookieConsent'])),
'cookiesFooterText' => $this->getInput('localeCookiesFooterText', helper::FILTER_STRING_SHORT, $this->getData(['config', 'cookieConsent'])),
'cookiesButtonText' =>$this->getInput('localeCookiesButtonText', helper::FILTER_STRING_SHORT, $this->getData(['config', 'cookieConsent']))
]
]
]);
@ -452,6 +462,7 @@ class config extends common {
'autoUpdateHtaccess' => $this->getInput('configAutoUpdateHtaccess', helper::FILTER_BOOLEAN),
'autoBackup' => $this->getInput('configAutoBackup', helper::FILTER_BOOLEAN),
'maintenance' => $this->getInput('configMaintenance', helper::FILTER_BOOLEAN),
'cookieConsent' => $this->getInput('configCookieConsent', helper::FILTER_BOOLEAN),
'proxyType' => $this->getInput('configProxyType'),
'proxyUrl' => $this->getInput('configProxyUrl'),
'proxyPort' => $this->getInput('configProxyPort',helper::FILTER_INT),
@ -502,14 +513,6 @@ class config extends common {
'it' => $this->getData(['config', 'i18n', 'it']),
'nl' => $this->getData(['config', 'i18n', 'nl']),
'pt' => $this->getData(['config', 'i18n', 'pt'])
],
'cookies' => [
'cookieConsent' => $this->getInput('configCookieConsent', helper::FILTER_BOOLEAN),
'cookiesZwiiText' => $this->getInput('connectCookiesZwiiText', helper::FILTER_STRING_LONG),
'cookiesGaText' => $this->getInput('connectCookiesGaText', helper::FILTER_STRING_LONG),
'cookiesTitleText' => $this->getInput('connectCookiesTitleText', helper::FILTER_STRING_SHORT),
'cookiesLinkMlText' => $this->getInput('connectCookiesLinkMlText', helper::FILTER_STRING_SHORT),
'cookiesCheckboxGaText' => $this->getInput('connectCookiesCheckboxGaText', helper::FILTER_STRING_SHORT)
]
]
]);

View File

@ -114,70 +114,4 @@
</div>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4>Cookies
<span id="specialeHelpButton" class="helpDisplayButton">
<a href="https://doc.zwiicms.fr/cookies" target="_blank">
<?php echo template::ico('help', 'left');?>
</a>
</span>
</h4>
<div class="row">
<div class="col6">
<?php echo template::checkbox('configCookieConsent', true, 'Message de consentement aux cookies', [
'checked' => $this->getData(['config', 'cookies', 'cookieConsent']),
'help' => 'Activation obligatoire selon les lois françaises sauf si vous utilisez votre propre système de consentement.'
]); ?>
</div>
</div>
<div id="cookieContainer">
<div class="row">
<div class="col12">
<?php echo template::textarea('connectCookiesZwiiText', [
'help' => 'Saisissez le message pour les cookies déposés par ZwiiCMS, nécessaires au fonctionnement et qui ne nécessitent pas de consentement.',
'label' => 'Cookies Zwii',
'value' => $this->getData(['config', 'cookies', 'cookiesZwiiText'])
]); ?>
</div>
</div>
<div class="row">
<div class="col12">
<?php echo template::textarea('connectCookiesGaText', [
'help' => 'Saisissez le message pour les cookies déposés par Google Analytics, le consentement est requis.',
'label' => 'Cookies Google Analytics',
'value' => $this->getData(['config', 'cookies', 'cookiesGaText'])
]); ?>
</div>
</div>
<div class="row">
<div class="col12">
<?php echo template::text('connectCookiesTitleText', [
'help' => 'Saisissez le titre de la fenêtre de gestion des cookies.',
'label' => 'Titre de la fenêtre',
'value' => $this->getData(['config', 'cookies', 'cookiesTitleText'])
]); ?>
</div>
</div>
<div class="row">
<div class="col6">
<?php echo template::text('connectCookiesLinkMlText', [
'help' => 'Saisissez le texte du lien vers les mentions légales.',
'label' => 'Lien vers mentions légales',
'value' => $this->getData(['config', 'cookies', 'cookiesLinkMlText'])
]); ?>
</div>
<div class="col6">
<?php echo template::text('connectCookiesCheckboxGaText', [
'help' => 'Saisissez le texte de la case à cocher Google Analytics.',
'label' => 'Checkbox Google Analytics',
'value' => $this->getData(['config', 'cookies', 'cookiesCheckboxGaText'])
]); ?>
</div>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -41,12 +41,13 @@ $( document).ready(function() {
/**
* Cookie
*/
/*
if ($("input[name=configCookieConsent]").is(':checked')) {
$("#cookieContainer").slideDown();
} else {
$("#cookieContainer").slideUp();
}
*/
// Gestion des événements
//---------------------------------------------------------------------------------------------------------------------
@ -189,7 +190,7 @@ $( document).ready(function() {
/**
* Options des cookies
*/
/*
$("input[name=configCookieConsent]").on("change", function() {
if ($("input[name=configCookieConsent]").is(':checked')) {
$("#cookieContainer").slideDown();
@ -197,7 +198,7 @@ $( document).ready(function() {
$("#cookieContainer").slideUp();
}
});
*/
var configLayout = getCookie("configLayout");
if (configLayout == null) {

View File

@ -55,9 +55,9 @@
<div class="row">
<div class="col12">
<div class="block">
<h4>Assignation des pages spéciales
<span id="specialeHelpButton" class="helpDisplayButton">
<a href="https://doc.zwiicms.fr/assignation-des-pages-speciales" target="_blank">
<h4>Assignation des pages spéciales <?php echo template::flag('site', '20px');?>
<span id="localeHelpButton" class="helpDisplayButton">
<a href="https://doc.zwiicms.fr/localisation-et-identite" target="_blank">
<?php echo template::ico('help', 'left');?>
</a>
</span>
@ -123,27 +123,106 @@
</span>
</h4>
<div class="row">
<div class="col4">
<div class="col6">
<?php echo template::text('localeLegalPageLabel', [
'label' => 'Mentions légales',
'placeholder' => 'Mentions légales',
'value' => $this->getData(['locale', 'legalPageLabel'])
]); ?>
</div>
<div class="col4">
<div class="col6">
<?php echo template::text('localeSearchPageLabel', [
'label' => 'Rechercher',
'placeholder' => 'Rechercher',
'value' => $this->getData(['locale', 'searchPageLabel'])
]); ?>
</div>
<div class="col4">
</div>
<div class="row">
<div class="col6">
<?php echo template::text('localeSitemapPageLabel', [
'label' => 'Plan du site',
'placeholder' => 'Plan du site',
'value' => $this->getData(['locale', 'sitemapPageLabel']),
]); ?>
</div>
<div class="col6">
<?php echo template::text('localeCookiesFooterText', [
'label' => 'Cookies',
'value' => $this->getData(['locale', 'cookies', 'cookiesFooterText']),
'placeHolder' => 'Cookies'
]); ?>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4>Message d'acceptation des Cookies <?php echo template::flag('site', '20px');?>
<span id="specialeHelpButton" class="helpDisplayButton">
<a href="https://doc.zwiicms.fr/cookies" target="_blank">
<?php echo template::ico('help', 'left');?>
</a>
</span>
</h4>
<div class="row">
<div class="col12">
<?php echo template::text('localeCookiesTitleText', [
'help' => 'Saisissez le titre de la fenêtre de gestion des cookies.',
'label' => 'Titre de la fenêtre',
'value' => $this->getData(['locale', 'cookies', 'cookiesTitleText']),
'placeHolder' => 'Gérer les cookies'
]); ?>
</div>
</div>
<div class="row">
<div class="col8">
<?php echo template::textarea('localeCookiesZwiiText', [
'help' => 'Saisissez le message pour les cookies déposés par ZwiiCMS, nécessaires au fonctionnement et qui ne nécessitent pas de consentement.',
'label' => 'Cookies Zwii',
'value' => $this->getData(['locale', 'cookies', 'cookiesZwiiText']),
'placeHolder' => 'Ce site utilise des cookies nécessaires à son fonctionnement, ils permettent de fluidifier son fonctionnement par exemple en mémorisant les données de connexion, la langue que vous avez choisie ou la validation de ce message.'
]); ?>
</div>
<div class="col4">
<?php echo template::text('localeCookiesLinkMlText', [
'help' => 'Saisissez le texte du lien vers les mentions légales,la page doit être définie dans la configuration du site.',
'label' => 'Lien page des mentions légales.',
'value' => $this->getData(['locale', 'cookies', 'cookiesLinkMlText']),
'placeHolder' => 'Consulter les mentions légales'
]); ?>
</div>
</div>
<div class="row">
<div class="col8">
<?php echo template::textarea('localeCookiesGaText', [
'help' => 'Saisissez le message pour les cookies déposés par Google Analytics, le consentement est requis.',
'label' => 'Cookies Google Analytics',
'value' => $this->getData(['locale', 'cookies', 'cookiesGaText']),
'placeHolder' => 'Il utilise également des cookies permettant de réaliser des statistiques de visites pour améliorer votre expérience utilisateur, ces cookies déposés par Google Analytics ont besoin de votre consentement.'
]); ?>
</div>
<div class="col4">
<?php echo template::text('localeCookiesCheckboxGaText', [
'help' => 'Saisissez le texte de la case à cocher Google Analytics.',
'label' => 'Checkbox Google Analytics',
'value' => $this->getData(['locale', 'cookies', 'cookiesCheckboxGaText']),
'placeHolder' => 'Autorisation des cookies Google Analytics'
]); ?>
</div>
</div>
<div class="row">
<div class="col4 offset4">
<?php echo template::text('localeCookiesButtonText', [
'label' => 'Bouton de validation',
'value' => $this->getData(['locale', 'cookies', 'cookiesButtonText']),
'placeHolder' => 'J\'ai compris'
]); ?>
</div>
</div>
</div>
</div>

View File

@ -35,6 +35,12 @@
</div>
</div>
<div class="row">
<div class="col6">
<?php echo template::checkbox('configCookieConsent', true, 'Message de consentement aux cookies', [
'checked' => $this->getData(['config', 'cookieConsent']),
'help' => 'Activation obligatoire selon les lois françaises sauf si vous utilisez votre propre système de consentement.'
]); ?>
</div>
<div class="col6">
<?php echo template::checkbox('configRewrite', true, 'URL intelligentes', [
'checked' => helper::checkRewrite(),

View File

@ -9,6 +9,7 @@ class init extends common {
'favicon' => 'favicon.ico',
'faviconDark' => 'faviconDark.ico',
'maintenance' => false,
'cookieConsent' => true,
'social' => [
'facebookId' => 'facebook',
'instagramId' => '',
@ -51,14 +52,6 @@ class init extends common {
'it'=> 'none',
'nl'=> 'none',
'pt'=> 'none'
],
'cookies' => [
'cookieConsent' => true,
'cookiesZwiiText' => 'Ce site utilise des cookies nécessaires à son fonctionnement, ils permettent de fluidifier son fonctionnement par exemple en mémorisant les données de connexion, la langue que vous avez choisie ou la validation de ce message.',
'cookiesGaText' => 'Il utilise également des cookies permettant de réaliser des statistiques de visites pour améliorer votre expérience utilisateur, ces cookies déposés par Google Analytics ont besoin de votre consentement.',
'cookiesTitleText' => 'Gérer les cookies',
'cookiesLinkMlText' => 'Voir les mentions légales',
'cookiesCheckboxGaText' => 'Autorisation des cookies Google Analytics'
]
],
'core' => [
@ -80,7 +73,16 @@ class init extends common {
'sitemapPageLabel' => 'Plan du site',
'legalPageLabel' => 'Mentions légales',
'metaDescription' => 'Zwii est un CMS sans base de données qui permet de créer et gérer facilement un site web sans aucune connaissance en programmation.',
'title' => 'Votre site en quelques clics !'
'title' => 'Votre site en quelques clics !',
'cookies' => [
'cookiesZwiiText' => 'Ce site utilise des cookies nécessaires à son fonctionnement, ils permettent de fluidifier son fonctionnement par exemple en mémorisant les données de connexion, la langue que vous avez choisie ou la validation de ce message.',
'cookiesGaText' => 'Il utilise également des cookies permettant de réaliser des statistiques de visites pour améliorer votre expérience utilisateur, ces cookies déposés par Google Analytics ont besoin de votre consentement.',
'cookiesTitleText' => 'Gérer les cookies',
'cookiesLinkMlText' => 'Consulter les mentions légales',
'cookiesCheckboxGaText' => 'Autorisation des cookies Google Analytics',
'cookiesFooterText' => 'Cookies',
'cookiesButtonText' => 'J\'ai compris'
]
],
'page' => [
'accueil' => [
@ -143,6 +145,7 @@ class init extends common {
'displayVersion' => true,
'displaySiteMap' => true,
'displayCopyright' => false,
'displayCookie' => false,
'displayLegal' => false,
'displaySearch' => false,
'displayMemberBar' => false,
@ -169,7 +172,7 @@ class init extends common {
'feature' => 'feature',
'featureContent' => '<div class="row" style="vertical-align: middle;">
<p class="col10 textAlignCenter"><strong><span style="font-size: 30pt; color: #003f86;"><span style="font-size: 24pt;">Zwii, le <em>CMS&nbsp;</em>pour bien d&eacute;buter</span><br /><span style="font-size: 18pt;"><span style="font-size: 14pt;">Installation facile :<br />Aucune base de donn&eacute;es &agrave; configurer.<br /><br /></span><br /><br /></span></span></strong></p>
<div class="col2"><p><img src="/ZwiiCMS/site/file/source/zwii-logosocial-2022.png" width="512" height="512" alt="" /></p></div></div>',
<div class="col2"><p><img src="./site/file/source/zwii-logosocial-2022.png" width="512" height="512" alt="" /></p></div></div>',
'width' => 'container'
],
'menu' => [

View File

@ -391,6 +391,7 @@ class theme extends common {
'displayVersion' => $this->getInput('themefooterDisplayVersion', helper::FILTER_BOOLEAN),
'displaySiteMap' => $this->getInput('themefooterDisplaySiteMap', helper::FILTER_BOOLEAN),
'displayCopyright' => $this->getInput('themefooterDisplayCopyright', helper::FILTER_BOOLEAN),
'displayCookie' => $this->getInput('themefooterDisplayCookie', helper::FILTER_BOOLEAN),
'displayLegal' => $this->getInput('themeFooterDisplayLegal', helper::FILTER_BOOLEAN),
'displaySearch' => $this->getInput('themeFooterDisplaySearch', helper::FILTER_BOOLEAN),
'displayMemberBar'=> $this->getInput('themeFooterDisplayMemberBar', helper::FILTER_BOOLEAN),

View File

@ -71,32 +71,39 @@
<div class="block">
<h4>Contenu</h4>
<div class="row">
<div class="col4">
<div class="col3">
<?php echo template::checkbox('themefooterDisplayCopyright', true, 'Motorisé par', [
'checked' => $this->getData(['theme', 'footer','displayCopyright']),
'help' => 'Affiche cette mention devant ZwiiCMS'
]); ?>
</div>
<div class="col4">
<div class="col3">
<?php echo template::checkbox('themefooterDisplayVersion', true, 'Version', [
'checked' => $this->getData(['theme', 'footer','displayVersion']),
'help' => 'Affiche le numéro de version après ZwiiCMS'
]); ?>
</div>
<div class="col4">
<div class="col3">
<?php echo template::checkbox('themefooterDisplaySiteMap', true, 'Plan du site', [
'checked' => $this->getData(['theme', 'footer', 'displaySiteMap'])
]); ?>
</div>
<div class="col3">
<?php echo template::checkbox('themefooterDisplayCookie', true, 'Cookies', [
'checked' => $this->getData(['config', 'cookieConsent']) === true ? $this->getData(['theme', 'footer', 'displayCookie']) : false,
'help' => 'Message d\'information relatif aux cookies, disponible si l\'acceptation des cookies est activé.',
'disabled' => !$this->getData(['config', 'cookieConsent'])
]); ?>
</div>
</div>
<div class="row">
<div class="col4">
<div class="col3">
<?php echo template::checkbox('themeFooterLoginLink', true, 'Lien de connexion', [
'checked' => $this->getData(['theme', 'footer', 'loginLink']),
'help' => 'Pour limiter les tentatives de piratage, enregistrez la page de connexion en favori et désactivez cette option.'
]); ?>
</div>
<div class="col4">
<div class="col3">
<?php echo template::checkbox('themeFooterDisplayMemberBar', true, 'Barre du membre', [
'checked' => $this->getData(['theme', 'footer', 'displayMemberBar']),
'help' => 'Affiche les icônes de gestion du compte et de déconnexion des membres simples connectés, ne s\'applique pas aux éditeurs et administrateurs.'
@ -104,29 +111,28 @@
</div>
</div>
<div class="row">
<div class="col4">
<div class="col3">
<?php echo template::checkbox('themeFooterDisplayLegal', true, 'Mentions légales', [
'checked' => $this->getData(['locale', 'legalPageId']) === 'none' ? false : $this->getData(['theme', 'footer', 'displayLegal']),
'disabled' => $this->getData(['locale', 'legalPageId']) === 'none' ? true : false,
'help' => 'Option active si une page a été sélectionnée.'
]); ?>
</div>
<div class="col4">
<div class="col3">
<?php echo template::select('configLegalPageId', array_merge(['none' => 'Aucune'] , helper::arrayCollumn($module::$pagesList, 'title', 'SORT_ASC') ) , [
'label' => 'Page "Mentions légales" ' . template::flag('site', '20px'),
'selected' => $this->getData(['locale', 'legalPageId'])
]); ?>
</div>
</div>
<div class="row">
<div class="col4">
<div class="col3">
<?php echo template::checkbox('themeFooterDisplaySearch', true, 'Rechercher', [
'checked' => $this->getData(['locale', 'searchPageId']) === 'none' ? false : $this->getData(['theme', 'footer', 'displaySearch']),
'disabled' => $this->getData(['locale', 'searchPageId']) === 'none' ? true : false,
'help' => 'Option active si une page a été sélectionnée.'
]); ?>
</div>
<div class="col4">
<div class="col3">
<?php echo template::select('configSearchPageId', array_merge(['none' => 'Aucune'] , helper::arrayCollumn($module::$pagesList, 'title', 'SORT_ASC') ) , [
'label' => 'Page "Rechercher" ' . template::flag('site', '20px'),
'selected' => $this->getData(['locale', 'searchPageId']),

View File

@ -27,7 +27,7 @@ $("input, select").on("change", function() {
// Contenu perso
if ($("#themeHeaderFeature").val() == "feature") {
css = "header{height:" + $("#themeHeaderHeight").val() + "; overflow:hidden; background-position:top; background-repeat: no-repeat; line-height:1.15; background-color:unset; background-image:unset; text-align:unset;}";
css = "header{min-height: " + $("#themeHeaderHeight").val() + ";height:" + $("#themeHeaderHeight").val() + "; overflow:hidden; background-position:top; background-repeat: no-repeat; line-height:1.15; background-color:unset; background-image:unset; text-align:unset;}";
$("#featureContent").appendTo("header").show();
$("#themeHeaderTitle").hide();

View File

@ -19,7 +19,7 @@ class translate extends common {
/*'config' => self::GROUP_MODERATOR,*/
'index' => self::GROUP_ADMIN,
'copy' => self::GROUP_ADMIN,
'language' => self::GROUP_VISITOR
'i18n' => self::GROUP_VISITOR
];
public static $translateOptions = [];
@ -177,7 +177,7 @@ class translate extends common {
* Traitement du changement de langue
* Fonction utilisée par le noyau
*/
public function language() {
public function i18n() {
// Activation du drapeau
if ( $this->getInput('ZWII_I18N_' . strtoupper($this->getUrl(3))) !== $this->getUrl(2) ) {