config adaptée + activation gestion des langues

This commit is contained in:
Fred Tempez 2021-05-04 17:59:15 +02:00
parent 96514f092a
commit bd0062ecd2
6 changed files with 93 additions and 60 deletions

View File

@ -200,7 +200,6 @@ class common {
setlocale (LC_TIME, self::$i18n . '_' . strtoupper (self::$i18n) ); setlocale (LC_TIME, self::$i18n . '_' . strtoupper (self::$i18n) );
} else { } else {
//setcookie('ZWII_I18N_SITE' , 'fr', time() + 3600, helper::baseUrl(false, false) , '', helper::isHttps(), true);
self::$i18n = 'fr'; self::$i18n = 'fr';
} }
@ -252,7 +251,8 @@ class common {
* - L'auto-détection est active * - L'auto-détection est active
*/ */
if ( $this->getData(['config','translate','scriptGoogle']) === true if ( $this->getData(['config', 'i18n', 'enabled']) === true
AND $this->getData(['config','translate','scriptGoogle']) === true
AND $this->getData(['config','translate','autoDetect']) === true AND $this->getData(['config','translate','autoDetect']) === true
AND $this->getInput('ZWII_I18N_SITE') !== '' AND $this->getInput('ZWII_I18N_SITE') !== ''
AND !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) ) AND !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) )
@ -2298,30 +2298,31 @@ class core extends common {
// Chargement de la bibliothèque googtrans // Chargement de la bibliothèque googtrans
// Le script de traduction est sélectionné // Le script de traduction est sélectionné
if ( $this->getData(['config','translate','scriptGoogle']) === true if ($this->getData(['config', 'i18n', 'enabled']) === true) {
AND if ( $this->getData(['config','translate','scriptGoogle']) === true
// et la traduction de la langue courante est automatique // et la traduction de la langue courante est automatique
( $this->getInput('ZWII_I18N_SCRIPT') !== '' AND ( $this->getInput('ZWII_I18N_SCRIPT') !== ''
// Ou traduction automatique // Ou traduction automatique
OR $this->getData(['config','translate','autoDetect']) === true OR $this->getData(['config','translate','autoDetect']) === true
) )
// Cas des pages d'administration // Cas des pages d'administration
// Pas connecté // Pas connecté
AND $this->getUser('password') !== $this->getInput('ZWII_USER_PASSWORD') AND $this->getUser('password') !== $this->getInput('ZWII_USER_PASSWORD')
AND $this->getUrl(1) !== 'login' AND $this->getUrl(1) !== 'login'
// Ou connecté avec option active // Ou connecté avec option active
OR ($this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD') OR ($this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
AND $this->getData(['config','translate','admin']) === true AND $this->getData(['config','translate','admin']) === true
) )
) { ) {
// Paramètre du script // Paramètre du script
setrawcookie("googtrans", '/fr/'. $this->getInput('ZWII_I18N_SCRIPT') , time() + 3600, helper::baseUrl()); setrawcookie("googtrans", '/fr/'. $this->getInput('ZWII_I18N_SCRIPT') , time() + 3600, helper::baseUrl());
// Chargement de la librairie // Chargement de la librairie
$this->addOutput([ $this->addOutput([
'vendor' => array_merge($this->output['vendor'], ['i18n']) 'vendor' => array_merge($this->output['vendor'], ['i18n'])
]); ]);
}
} }
// Erreurs // Erreurs
if($access === 'login') { if($access === 'login') {
@ -2444,7 +2445,9 @@ class layout extends common {
* @param Page par défaut * @param Page par défaut
*/ */
public function showContent() { public function showContent() {
echo $this->showi18n('Site'); if ($this->getData(['config', 'i18n', 'enabled']) === true) {
echo $this->showi18n('Site');
}
if( if(
$this->core->output['title'] $this->core->output['title']
AND ( AND (
@ -2463,7 +2466,8 @@ class layout extends common {
* La traduction est active et le site n'est pas en français. * La traduction est active et le site n'est pas en français.
* La fonction est activée. * La fonction est activée.
*/ */
if ( $this->getData(['config','translate','scriptGoogle']) === true if ( $this->getData(['config', 'i18n', 'enabled']) === true
AND $this->getData(['config','translate','scriptGoogle']) === true
AND $this->getData(['config','translate','showCredits']) === true AND $this->getData(['config','translate','showCredits']) === true
AND AND
// et la traduction n'est pas manuelle // et la traduction n'est pas manuelle
@ -2826,7 +2830,9 @@ class layout extends common {
} }
// Retourne les items du menu // Retourne les items du menu
echo '<ul class="navMain" id="menuLeft">' . $itemsLeft . '</ul><ul class="navMain" id="menuRight">' . $itemsRight . '</ul>'; echo '<ul class="navMain" id="menuLeft">' . $itemsLeft . '</ul><ul class="navMain" id="menuRight">' . $itemsRight . '</ul>';
echo $this->showi18n('Nav'); if ($this->getData(['config', 'i18n', 'enabled']) === true) {
echo $this->showi18n('Nav');
}
} }
/** /**
@ -3068,7 +3074,9 @@ class layout extends common {
if($this->getUser('group') >= self::GROUP_ADMIN) { if($this->getUser('group') >= self::GROUP_ADMIN) {
$rightItems .= '<li><a href="' . helper::baseUrl() . 'user" data-tippy-content="Configurer les utilisateurs">' . template::ico('users') . '</a></li>'; $rightItems .= '<li><a href="' . helper::baseUrl() . 'user" data-tippy-content="Configurer les utilisateurs">' . template::ico('users') . '</a></li>';
$rightItems .= '<li><a href="' . helper::baseUrl() . 'theme" data-tippy-content="Personnaliser les thèmes">' . template::ico('brush') . '</a></li>'; $rightItems .= '<li><a href="' . helper::baseUrl() . 'theme" data-tippy-content="Personnaliser les thèmes">' . template::ico('brush') . '</a></li>';
$rightItems .= '<li><a href="' . helper::baseUrl() . 'translate" data-tippy-content="Gestion des langues">' . template::ico('flag') . '</a></li>'; if ($this->getData(['config', 'i18n', 'enabled']) === true) {
$rightItems .= '<li><a href="' . helper::baseUrl() . 'translate" data-tippy-content="Gestion des langues">' . template::ico('flag') . '</a></li>';
}
$rightItems .= '<li><a href="' . helper::baseUrl() . 'addon" data-tippy-content="Gérer les modules">' . template::ico('puzzle') . '</a></li>'; $rightItems .= '<li><a href="' . helper::baseUrl() . 'addon" data-tippy-content="Gérer les modules">' . template::ico('puzzle') . '</a></li>';
$rightItems .= '<li><a href="' . helper::baseUrl() . 'config" data-tippy-content="Configurer le site">' . template::ico('cog-alt') . '</a></li>'; $rightItems .= '<li><a href="' . helper::baseUrl() . 'config" data-tippy-content="Configurer le site">' . template::ico('cog-alt') . '</a></li>';
// Mise à jour automatique // Mise à jour automatique

View File

@ -396,9 +396,10 @@ class config extends common {
'legalPageId' => $legalPageId, 'legalPageId' => $legalPageId,
'searchPageId' => $searchPageId, 'searchPageId' => $searchPageId,
'metaDescription' => $this->getInput('configMetaDescription', helper::FILTER_STRING_LONG, true), 'metaDescription' => $this->getInput('configMetaDescription', helper::FILTER_STRING_LONG, true),
'title' => $this->getInput('configTitle', helper::FILTER_STRING_SHORT, true) 'title' => $this->getInput('configTitle', helper::FILTER_STRING_SHORT, true),
] ]
]); ]);
$this->setData(['config', 'i18n', 'enabled', $this->getInput('configI18n',helper::FILTER_BOOLEAN) ]);
// Générer robots.txt et sitemap // Générer robots.txt et sitemap
$this->generateFiles(); $this->generateFiles();
// Valeurs en sortie // Valeurs en sortie

View File

@ -16,7 +16,7 @@
<div class="col12"> <div class="col12">
<div class="block"> <div class="block">
<h4>Maintenance</h4> <h4>Maintenance</h4>
<div class="col3"> <div class="col4">
<?php echo template::checkbox('configAdvancedMaintenance', true, 'Site en maintenance', [ <?php echo template::checkbox('configAdvancedMaintenance', true, 'Site en maintenance', [
'checked' => $this->getData(['config', 'maintenance']) 'checked' => $this->getData(['config', 'maintenance'])
]); ?> ]); ?>
@ -28,7 +28,7 @@
'ico' => 'download' 'ico' => 'download'
]); ?> ]); ?>
</div> </div>
<div class="col3 offset1"> <div class="col3">
<?php echo template::button('configManageButton', [ <?php echo template::button('configManageButton', [
'href' => helper::baseUrl() . 'config/manage', 'href' => helper::baseUrl() . 'config/manage',
'value' => 'Restaurer', 'value' => 'Restaurer',
@ -42,7 +42,6 @@
<div class="col12"> <div class="col12">
<div class="block"> <div class="block">
<h4>Réglages</h4> <h4>Réglages</h4>
<?php $error = helper::urlGetContents('http://zwiicms.fr/update/' . common::ZWII_UPDATE_CHANNEL . '/version');?>
<div class="row"> <div class="row">
<div class="col4"> <div class="col4">
<?php echo template::file('configAdvancedFavicon', [ <?php echo template::file('configAdvancedFavicon', [
@ -70,60 +69,68 @@
</div> </div>
<div class="row"> <div class="row">
<div class="col6"> <div class="col6">
<?php echo template::checkbox('configAdvancedCookieConsent', true, 'Consentement aux cookies', [ <?php echo template::checkbox('configAdvancedCookieConsent', true, 'Message de consentement aux cookies', [
'checked' => $this->getData(['config', 'cookieConsent']), 'checked' => $this->getData(['config', 'cookieConsent']),
'help' => 'Activation obligatoire selon les lois françaises sauf si vous utilisez votre propre système de consentement.' 'help' => 'Activation obligatoire selon les lois françaises sauf si vous utilisez votre propre système de consentement.'
]); ?> ]); ?>
</div> </div>
<div class="col6"> <div class="col6">
<?php echo template::checkbox('rewrite', true, 'Réécriture d\'URL', [ <?php echo template::checkbox('rewrite', true, 'URL intelligentes', [
'checked' => helper::checkRewrite(), 'checked' => helper::checkRewrite(),
'help' => 'Vérifiez d\'abord que votre serveur l\'autorise : ce n\'est pas le cas chez Free.' 'help' => 'Vérifiez d\'abord que votre serveur autorise l\'URL rewriting (ce qui n\'est pas le cas chez Free).'
]); ?> ]); ?>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col6"> <div class="col6">
<?php echo template::checkbox('configAdvancedAutoBackup', true, 'Sauvegarde quotidienne', [ <?php echo template::checkbox('configAdvancedAutoBackup', true, 'Sauvegarde automatique quotidienne du site', [
'checked' => $this->getData(['config', 'autoBackup']), 'checked' => $this->getData(['config', 'autoBackup']),
'help' => 'Une archive contenant le dossier /site/data est copiée dans le dossier \'site/backup\'. La sauvegarde est conservée pendant 30 jours.</p><p>Les fichiers du site ne sont pas sauvegardés automatiquement. Activation recommandée.' 'help' => 'Une archive contenant le dossier /site/data est copiée dans le dossier \'site/backup\'. La sauvegarde est conservée pendant 30 jours.</p><p>Les fichiers du site ne sont pas sauvegardés automatiquement. Activation recommandée.'
]); ?> ]); ?>
</div> </div>
<div class="col6"> <div class="col6">
<?php echo template::checkbox('configAdvancedFileBackup', true, 'Copie de sauvegarde', [ <?php echo template::checkbox('configAdvancedFileBackup', true, 'Créer un backup des données json', [
'checked' => file_exists('site/data/.backup'), 'checked' => file_exists('site/data/.backup'),
'help' => 'Un fichier .backup.json est généré à chaque édition ou effacement d\'une donnée. La désactivation entraîne la suppression de ces fichiers. Activation recommandée.' 'help' => 'Un fichier .backup.json est généré à chaque édition ou effacement d\'une donnée. La désactivation entraîne la suppression de ces fichiers.'
]); ?> ]); ?>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col6"> <div class="col6">
<?php echo template::checkbox('configAdvancedCaptchaStrong', true, 'Captcha renforcé', [ <?php echo template::checkbox('configAdvancedCaptchaStrong', true, 'Captcha complexe', [
'checked' => $this->getData(['config','captchaStrong']), 'checked' => $this->getData(['config','captchaStrong']),
'help' => 'Option recommandée pour sécuriser la connexion. S\'applique à tous les captchas du site. Le captcha simple se limite à une addition de nombres de 0 à 10. Le captcha renforcé utilise quatre opérations de nombres de 0 à 20. Activation recommandée.' 'help' => 'Option recommandée pour sécuriser la connexion. S\'applique à tous les captchas du site. Le captcha simple se limite à une addition de nombres de 0 à 10. Le captcha complexe utilise quatre opérations de nombres de 0 à 20. Activation recommandée.'
]); ?> ]); ?>
</div> </div>
<div class="col6"> <div class="col6">
<?php echo template::checkbox('configAdvancedAutoDisconnect', true, 'Déconnexion automatique', [ <?php echo template::checkbox('configAdvancedAutoDisconnect', true, 'Déconnexion automatique de la session', [
'checked' => $this->getData(['config','autoDisconnect']), 'checked' => $this->getData(['config','autoDisconnect']),
'help' => 'Déconnecte les sessions ouvertes précédemment sur d\'autres navigateurs ou terminaux. Activation recommandée.' 'help' => 'Déconnecte les sessions ouvertes précédemment sur d\'autres navigateurs ou terminaux. Activation recommandée.'
]); ?> ]); ?>
</div> </div>
</div> </div>
</div>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4>Mises à jour automatisée</h4>
<?php $updateError = helper::urlGetContents('http://zwiicms.fr/update/' . common::ZWII_UPDATE_CHANNEL . '/version');?>
<div class="row"> <div class="row">
<div class="col4"> <div class="col4">
<?php echo template::checkbox('configAdvancedAutoUpdate', true, 'Mise à jour en ligne', [ <?php echo template::checkbox('configAdvancedAutoUpdate', true, 'Rechercher une mise à jour en ligne', [
'checked' => $this->getData(['config', 'autoUpdate']), 'checked' => $this->getData(['config', 'autoUpdate']),
'help' => 'Vérifie une fois par jour l\'existence d\'une mise à jour.', 'help' => 'La vérification est quotidienne. Option désactivée si la configuration du serveur ne le permet pas.',
'disabled' => !$error 'disabled' => !$updateError
]); ?> ]); ?>
</div> </div>
<div class="col4"> <div class="col4">
<?php echo template::checkbox('configAdvancedAutoUpdateHtaccess', true, 'Préserver htaccess', [ <?php echo template::checkbox('configAdvancedAutoUpdateHtaccess', true, 'Préserver le fichier htaccess racine', [
'checked' => $this->getData(['config', 'autoUpdateHtaccess']), 'checked' => $this->getData(['config', 'autoUpdateHtaccess']),
'help' => 'Lors d\'une mise à jour automatique, conserve le fichier htaccess de la racine du site.', 'help' => 'Lors d\'une mise à jour automatique, conserve le fichier htaccess de la racine du site.',
'disabled' => !$error 'disabled' => !$updateError
]); ?> ]); ?>
</div> </div>
<div class="col4"> <div class="col4">
@ -132,7 +139,7 @@
'href' => helper::baseUrl() . 'install/update', 'href' => helper::baseUrl() . 'install/update',
'value' => 'Mise à jour manuelle', 'value' => 'Mise à jour manuelle',
'class' => 'buttonRed', 'class' => 'buttonRed',
'disabled' => !$error 'disabled' => !$updateError
]); ?> ]); ?>
</div> </div>
</div> </div>
@ -310,7 +317,7 @@
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col3"> <div class="col6">
<?php echo template::checkbox('configAdvancedConnectCaptcha', true, 'Captcha à la connexion', [ <?php echo template::checkbox('configAdvancedConnectCaptcha', true, 'Captcha à la connexion', [
'checked' => $this->getData(['config', 'connect','captcha']) 'checked' => $this->getData(['config', 'connect','captcha'])
]); ?> ]); ?>

View File

@ -8,10 +8,10 @@
'value' => 'Accueil' 'value' => 'Accueil'
]); ?> ]); ?>
</div> </div>
<div class="col2 offset6"> <div class="col3 offset5">
<?php echo template::button('configAdvancedButton', [ <?php echo template::button('configAdvancedButton', [
'href' => helper::baseUrl() . 'config/advanced', 'href' => helper::baseUrl() . 'config/advanced',
'value' => 'Avancée', 'value' => 'Configuration avancée',
'ico' => 'cog-alt', 'ico' => 'cog-alt',
]); ?> ]); ?>
</div> </div>
@ -123,4 +123,20 @@
</div> </div>
</div> </div>
</div> </div>
<div class="row">
<div class="col12">
<div class="block">
<h4>Langues étrangères</h4>
<div class="row">
<div class="col12">
<?php echo template::checkbox('configI18n', true, 'Activer la gestion des langues étrangères', [
'checked' => $this->getData(['config', 'i18n', 'enabled']),
'help'=> 'Une nouvelle icône apparaîtra dans la barre d\'administration. Consultez l\'aide de la page concernée pour en apprendre plus.'
]); ?>
</div>
</div>
</div>
</div>
</div>
</div>
<?php echo template::formClose(); ?> <?php echo template::formClose(); ?>

View File

@ -33,7 +33,8 @@ class init extends common {
'log' => false, 'log' => false,
'captcha' => true 'captcha' => true
], ],
'translate' => [ 'i18n' => [
'enabled' => false,
'scriptGoogle' => false, 'scriptGoogle' => false,
'showCredits' => false, 'showCredits' => false,
'autoDetect' => false, 'autoDetect' => false,

View File

@ -69,7 +69,7 @@
<div class="col4 offset4"> <div class="col4 offset4">
<?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' => 'Français',
'selected' => $this->getData(['config', 'translate' , 'fr']) 'selected' => $this->getData(['config', 'i18n' , 'fr'])
]); ?> ]); ?>
</div> </div>
</div> </div>
@ -79,21 +79,21 @@
<?php echo template::select('translateDE', $module::$translateOptions['de'], [ <?php echo template::select('translateDE', $module::$translateOptions['de'], [
'label' => 'Allemand', 'label' => 'Allemand',
'class' => 'translateFlagSelect', 'class' => 'translateFlagSelect',
'selected' => $this->getData(['config', 'translate' , 'de']) 'selected' => $this->getData(['config', 'i18n' , 'de'])
]); ?> ]); ?>
</div> </div>
<div class="col8 offset2"> <div class="col8 offset2">
<?php echo template::select('translateEN', $module::$translateOptions['en'], [ <?php echo template::select('translateEN', $module::$translateOptions['en'], [
'label' => 'Anglais', 'label' => 'Anglais',
'class' => 'translateFlagSelect', 'class' => 'translateFlagSelect',
'selected' => $this->getData(['config', 'translate' , 'en']) 'selected' => $this->getData(['config', 'i18n' , 'en'])
]); ?> ]); ?>
</div> </div>
<div class="col8 offset2"> <div class="col8 offset2">
<?php echo template::select('translateES', $module::$translateOptions['es'], [ <?php echo template::select('translateES', $module::$translateOptions['es'], [
'label' => 'Espagnol', 'label' => 'Espagnol',
'class' => 'translateFlagSelect', 'class' => 'translateFlagSelect',
'selected' => $this->getData(['config', 'translate' , 'es']) 'selected' => $this->getData(['config', 'i18n' , 'es'])
]); ?> ]); ?>
</div> </div>
</div> </div>
@ -102,21 +102,21 @@
<?php echo template::select('translateIT', $module::$translateOptions['it'], [ <?php echo template::select('translateIT', $module::$translateOptions['it'], [
'label' => 'Italien', 'label' => 'Italien',
'class' => 'translateFlagSelect', 'class' => 'translateFlagSelect',
'selected' => $this->getData(['config', 'translate' , 'it']) 'selected' => $this->getData(['config', 'i18n' , 'it'])
]); ?> ]); ?>
</div> </div>
<div class="col8 offset2"> <div class="col8 offset2">
<?php echo template::select('translateNL', $module::$translateOptions['nl'], [ <?php echo template::select('translateNL', $module::$translateOptions['nl'], [
'label' => 'Néerlandais', 'label' => 'Néerlandais',
'class' => 'translateFlagSelect', 'class' => 'translateFlagSelect',
'selected' => $this->getData(['config', 'translate' , 'nl']) 'selected' => $this->getData(['config', 'i18n' , 'nl'])
]); ?> ]); ?>
</div> </div>
<div class="col8 offset2"> <div class="col8 offset2">
<?php echo template::select('translatePT', $module::$translateOptions['pt'], [ <?php echo template::select('translatePT', $module::$translateOptions['pt'], [
'label' => 'Portugais', 'label' => 'Portugais',
'class' => 'translateFlagSelect', 'class' => 'translateFlagSelect',
'selected' => $this->getData(['config', 'translate' , 'pt']) 'selected' => $this->getData(['config', 'i18n' , 'pt'])
]); ?> ]); ?>
</div> </div>
</div> </div>