Amélioration des liens dans le footer + gestion des drapeaux + masque de traduction

This commit is contained in:
Fred Tempez 2021-10-03 17:26:05 +02:00
parent ca067121f9
commit 3cabadc501
6 changed files with 130 additions and 91 deletions

View File

@ -425,19 +425,31 @@ class template {
/** /**
* Crée un drapeau du site courante * Crée un drapeau du site courante
* @param string $langId Id de la langue à affiche ou site pour la langue traduite courante
* @param string $margin Ajoute un margin autour de l'icône (choix : left, right, all) * @param string $margin Ajoute un margin autour de l'icône (choix : left, right, all)
* @param string $size Taille en pixels (default = auto)
* @return string * @return string
*/ */
public static function flag( $size = 'auto') { public static function flag($langId, $size = 'auto') {
if ( isset($_COOKIE['ZWII_I18N_SITE']) switch ($langId) {
) { case '':
$lang = $_COOKIE['ZWII_I18N_SITE']; $lang = 'fr';
return '<img class="flag" src="' . helper::baseUrl(false) . 'core/vendor/i18n/png/' . $lang . '.png" break;
width="' . $size .'" case in_array($langId,['fr', 'de', 'en', 'es', 'it', 'nl', 'pt']):
height="' . $size .'" $lang = $langId;
alt="(' . $lang . ')"/>'; break;
case 'site':
if ( isset($_COOKIE['ZWII_I18N_SITE'])
) {
$lang = $_COOKIE['ZWII_I18N_SITE'];
} else {
$lang = 'fr';
}
} }
return '<img class="flag" src="' . helper::baseUrl(false) . 'core/vendor/i18n/png/' . $lang . '.png"
width="' . $size .'"
height="' . $size .'"
title="' . $lang .'"
alt="(' . $lang . ')"/>';
} }
/** /**

View File

@ -48,11 +48,11 @@
<div class="row"> <div class="row">
<div class="col12"> <div class="col12">
<div class="block"> <div class="block">
<h4>Identité du site</h4> <h4>Identité du site <?php echo template::flag('site', '20px');?></h4>
<div class="row"> <div class="row">
<div class="col9"> <div class="col9">
<?php echo template::text('configTitle', [ <?php echo template::text('configTitle', [
'label' => 'Titre du site '. template::flag('20px') , 'label' => 'Titre du site' ,
'value' => $this->getData(['locale', 'title']), 'value' => $this->getData(['locale', 'title']),
'help' => 'Il apparaît dans la barre de titre et les partages sur les réseaux sociaux.' 'help' => 'Il apparaît dans la barre de titre et les partages sur les réseaux sociaux.'
]); ?> ]); ?>
@ -68,7 +68,7 @@
<div class="row"> <div class="row">
<div class="col12"> <div class="col12">
<?php echo template::textarea('configMetaDescription', [ <?php echo template::textarea('configMetaDescription', [
'label' => 'Description du site ' . template::flag('20px'), 'label' => 'Description du site',
'value' => $this->getData(['locale', 'metaDescription']), 'value' => $this->getData(['locale', 'metaDescription']),
'help' => 'La description d\'une page participe à son référencement, chaque page doit disposer d\'une description différente.' 'help' => 'La description d\'une page participe à son référencement, chaque page doit disposer d\'une description différente.'
]); ?> ]); ?>
@ -154,25 +154,25 @@
<div class="row"> <div class="row">
<div class="col12"> <div class="col12">
<div class="block"> <div class="block">
<h4>Etiquettes des pages spéciales dans le pied de page</h4> <h4>Etiquettes des pages spéciales dans le pied de page <?php echo template::flag('site', '20px');?></h4>
<div class="row"> <div class="row">
<div class="col4"> <div class="col4">
<?php echo template::text('configLegalPageLabel', [ <?php echo template::text('configLegalPageLabel', [
'label' => 'Mentions légales ' . template::flag('20px'), 'label' => 'Mentions légales',
'placeholder' => 'Mentions légales', 'placeholder' => 'Mentions légales',
'value' => $this->getData(['locale', 'legalPageLabel']), 'value' => $this->getData(['locale', 'legalPageLabel'])
]); ?> ]); ?>
</div> </div>
<div class="col4"> <div class="col4">
<?php echo template::text('configSearchPageLabel', [ <?php echo template::text('configSearchPageLabel', [
'label' => 'Rechercher ' . template::flag('20px'), 'label' => 'Rechercher',
'placeholder' => 'Rechercher', 'placeholder' => 'Rechercher',
'value' => $this->getData(['locale', 'searchPageLabel']), 'value' => $this->getData(['locale', 'searchPageLabel'])
]); ?> ]); ?>
</div> </div>
<div class="col4"> <div class="col4">
<?php echo template::text('configSitemapPageLabel', [ <?php echo template::text('configSitemapPageLabel', [
'label' => 'Plan du site ' . template::flag('20px'), 'label' => 'Plan du site',
'placeholder' => 'Plan du site', 'placeholder' => 'Plan du site',
'value' => $this->getData(['locale', 'sitemapPageLabel']), 'value' => $this->getData(['locale', 'sitemapPageLabel']),
]); ?> ]); ?>

View File

@ -240,6 +240,10 @@ class theme extends common {
'4' => 'Trois lignes superposées' '4' => 'Trois lignes superposées'
]; ];
// Variables pour construire la liste des pages du site
public static $pages = [];
public static $orphans = [];
/** /**
* Thème des écrans d'administration * Thème des écrans d'administration
*/ */

View File

@ -271,6 +271,40 @@ $("#themeFooterDisplaySearch").on("change", function() {
} }
}).trigger("change"); }).trigger("change");
// Mentions légales
$("#themeFooterDisplayLegal").on("change", function() {
if($(this).is(":checked")) {
$("#footerDisplayLegal").show();
}
else {
$("#footerDisplayLegal").hide();
}
}).trigger("change");
// Pages spéciales : activation si une page est sélectionnée
$("#configLegalPageId").on("change", function() {
console.log($("#configLegalPageId option:selected").text());
if ( $("#configLegalPageId option:selected").text() === 'Aucune') {
$("#themeFooterDisplayLegal").prop('checked', false);
$("#themeFooterDisplayLegal").prop( "disabled", true );
$("#footerDisplayLegal").hide();
} else {
$("#themeFooterDisplayLegal").prop( "disabled", false );
}
}).trigger("change");
$("#configSearchPageId").on("change", function() {
console.log($("#configSearchPageId option:selected").text());
if ( $("#configSearchPageId option:selected").text() === 'Aucune') {
$("#themeFooterDisplaySearch").prop('checked', false);
$("#themeFooterDisplaySearch").prop( "disabled", true );
$("#footerDisplaySearch").hide();
} else {
$("#themeFooterDisplaySearch").prop( "disabled", false );
}
}).trigger("change");
/* /*
// Affiche / Cache les options de la position // Affiche / Cache les options de la position
$("#themeFooterPosition").on("change", function() { $("#themeFooterPosition").on("change", function() {

View File

@ -37,7 +37,7 @@
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col7"> <div class="col12">
<div class="block"> <div class="block">
<h4>Informations</h4> <h4>Informations</h4>
<div class="row"> <div class="row">
@ -76,7 +76,8 @@
</div> </div>
</div> </div>
</div> </div>
<div class="col5"> <div class="row">
<div class="col12">
<div class="block"> <div class="block">
<h4>Pages spéciales</h4> <h4>Pages spéciales</h4>
<?php <?php
@ -87,46 +88,34 @@
unset($pages[$page]); unset($pages[$page]);
} }
} }
$orphans = $this->getData(['page']);
foreach($orphans as $page => $pageId) {
if ($this->getData(['page',$page,'block']) === 'bar' ||
$this->getData(['page',$page,'disable']) === true ||
$this->getdata(['page',$page, 'position']) !== 0) {
unset($orphans[$page]);
}
}
?> ?>
<div class="row"> <div class="row">
<div class="col6"> <div class="col3 textAlignRight">
<?php echo template::checkbox('themeFooterDisplayLegal', true, 'Mentions légales', [ <?php echo template::checkbox('themeFooterDisplayLegal', true, 'Mentions légales', [
'checked' => $this->getData(['locale', 'legalPageId']) === 'none' ? false : $this->getData(['theme', 'footer', 'displayLegal']), 'checked' => $this->getData(['locale', 'legalPageId']) === 'none' ? false : $this->getData(['theme', 'footer', 'displayLegal']),
'disabled' => $this->getData(['locale', 'legalPageId']) === 'none' ? true : false, 'disabled' => $this->getData(['locale', 'legalPageId']) === 'none' ? true : false,
'help' => $this->getData(['locale', 'legalPageId']) === 'none' ? 'Une page contenant les mentions légales n\'est pas définie dans la configuration du site / pages spéciales.' : '' 'help' => $this->getData(['locale', 'legalPageId']) === 'none' ? 'Une page contenant les mentions légales n\'est pas définie dans la configuration du site / pages spéciales.' : ''
]); ?> ]); ?>
</div> </div>
<div class="col6"> <div class="col3">
<?php echo template::select('configLegalPageId', array_merge(['none' => 'Aucune'] , helper::arrayCollumn($pages, 'title', 'SORT_ASC') ) , [
'label' => 'Page Mentions légales ' . template::flag('site', '20px'),
'selected' => $this->getData(['locale', 'legalPageId'])
]); ?>
</div>
<div class="col3 textAlignRight">
<?php echo template::checkbox('themeFooterDisplaySearch', true, 'Rechercher', [ <?php echo template::checkbox('themeFooterDisplaySearch', true, 'Rechercher', [
'checked' => $this->getData(['locale', 'searchPageId']) === 'none' ? false : $this->getData(['theme', 'footer', 'displaySearch']), 'checked' => $this->getData(['locale', 'searchPageId']) === 'none' ? false : $this->getData(['theme', 'footer', 'displaySearch']),
'disabled' => $this->getData(['locale', 'searchPageId']) === 'none' ? true : false, 'disabled' => $this->getData(['locale', 'searchPageId']) === 'none' ? true : false,
'help' => $this->getData(['locale', 'searchPageId']) === 'none' ? 'Une page contenant un module de recherche n\'est pas définie dans la configuration du site / pages spéciales.' : '' 'help' => $this->getData(['locale', 'searchPageId']) === 'none' ? 'Une page contenant un module de recherche n\'est pas définie dans la configuration du site / pages spéciales.' : ''
]); ?> ]); ?>
</div> </div>
</div> <div class="col3">
<div class="row">
<div class="col6">
<?php echo template::select('configLegalPageId', array_merge(['none' => 'Aucune'] , helper::arrayCollumn($pages, 'title', 'SORT_ASC') ) , [
'label' => 'Page Mentions légales ' . template::flag('20px'),
'selected' => $this->getData(['locale', 'legalPageId']),
'help' => 'Options identique à la configuration du site',
'disabled' => true
]); ?>
</div>
<div class="col6">
<?php echo template::select('configSearchPageId', array_merge(['none' => 'Aucune'] , helper::arrayCollumn($pages, 'title', 'SORT_ASC') ) , [ <?php echo template::select('configSearchPageId', array_merge(['none' => 'Aucune'] , helper::arrayCollumn($pages, 'title', 'SORT_ASC') ) , [
'label' => 'Page Rechercher ' . template::flag('20px'), 'label' => 'Page Rechercher ' . template::flag('site', '20px'),
'selected' => $this->getData(['locale', 'searchPageId']), 'selected' => $this->getData(['locale', 'searchPageId']),
'help' => 'Options identique à la configuration du site', 'help' => 'Options identique à la configuration du site',
'disabled' => true
]); ?> ]); ?>
</div> </div>
</div> </div>

View File

@ -78,55 +78,55 @@
<div class="block" id="flagsWrapper"> <div class="block" id="flagsWrapper">
<h4>Mode de traduction et affichage des drapeaux</h4> <h4>Mode de traduction et affichage des drapeaux</h4>
<div class="row"> <div class="row">
<div class="col4 offset4"> <div class="col3">
<?php echo template::select('translateFR', ['none'=>'Drapeau masqué','site'=>'Drapeau affiché'], [ <?php echo template::select('translateFR', ['none'=>'Drapeau masqué','site'=>'Drapeau affiché'], [
'label' => 'Français', 'label' => template::flag('', '30px'),
'selected' => $this->getData(['config', 'i18n' , 'fr']) 'selected' => $this->getData(['config', 'i18n' , 'fr']),
]); ?> ]); ?>
</div> </div>
</div> <div class="col3">
<div class="row"> <div class="col12">
<div class="col6">
<div class="col8 offset2">
<?php echo template::select('translateDE', $module::$translateOptions['de'], [ <?php echo template::select('translateDE', $module::$translateOptions['de'], [
'label' => 'Allemand', 'label' => template::flag('de', '30px'),
'class' => 'translateFlagSelect', 'class' => 'translateFlagSelect',
'selected' => $this->getData(['config', 'i18n' , 'de']) 'selected' => $this->getData(['config', 'i18n' , 'de'])
]); ?> ]); ?>
</div> </div>
<div class="col8 offset2"> <div class="col12">
<?php echo template::select('translateEN', $module::$translateOptions['en'], [ <?php echo template::select('translateEN', $module::$translateOptions['en'], [
'label' => 'Anglais', 'label' => template::flag('en', '30px'),
'class' => 'translateFlagSelect', 'class' => 'translateFlagSelect',
'selected' => $this->getData(['config', 'i18n' , 'en']) 'selected' => $this->getData(['config', 'i18n' , 'en'])
]); ?> ]); ?>
</div> </div>
<div class="col8 offset2"> </div>
<div class="col3">
<div class="col12">
<?php echo template::select('translateES', $module::$translateOptions['es'], [ <?php echo template::select('translateES', $module::$translateOptions['es'], [
'label' => 'Espagnol', 'label' => template::flag('es', '30px'),
'class' => 'translateFlagSelect', 'class' => 'translateFlagSelect',
'selected' => $this->getData(['config', 'i18n' , 'es']) 'selected' => $this->getData(['config', 'i18n' , 'es'])
]); ?> ]); ?>
</div> </div>
</div> <div class="col12">
<div class="col6">
<div class="col8 offset2">
<?php echo template::select('translateIT', $module::$translateOptions['it'], [ <?php echo template::select('translateIT', $module::$translateOptions['it'], [
'label' => 'Italien', 'label' => template::flag('it', '30px'),
'class' => 'translateFlagSelect', 'class' => 'translateFlagSelect',
'selected' => $this->getData(['config', 'i18n' , 'it']) 'selected' => $this->getData(['config', 'i18n' , 'it'])
]); ?> ]); ?>
</div> </div>
<div class="col8 offset2"> </div>
<div class="col3">
<div class="col12">
<?php echo template::select('translateNL', $module::$translateOptions['nl'], [ <?php echo template::select('translateNL', $module::$translateOptions['nl'], [
'label' => 'Néerlandais', 'label' => template::flag('nl', '30px'),
'class' => 'translateFlagSelect', 'class' => 'translateFlagSelect',
'selected' => $this->getData(['config', 'i18n' , 'nl']) 'selected' => $this->getData(['config', 'i18n' , 'nl'])
]); ?> ]); ?>
</div> </div>
<div class="col8 offset2"> <div class="col12">
<?php echo template::select('translatePT', $module::$translateOptions['pt'], [ <?php echo template::select('translatePT', $module::$translateOptions['pt'], [
'label' => 'Portugais', 'label' => template::flag('pt', '30px'),
'class' => 'translateFlagSelect', 'class' => 'translateFlagSelect',
'selected' => $this->getData(['config', 'i18n' , 'pt']) 'selected' => $this->getData(['config', 'i18n' , 'pt'])
]); ?> ]); ?>