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) );
} else {
//setcookie('ZWII_I18N_SITE' , 'fr', time() + 3600, helper::baseUrl(false, false) , '', helper::isHttps(), true);
self::$i18n = 'fr';
}
@ -252,11 +251,12 @@ class common {
* - 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->getInput('ZWII_I18N_SITE') !== ''
AND !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) )
{
{
/**
* Le cookie est prioritaire sur le navigateur
* la traduction est celle de la langue du drapeau
@ -2129,7 +2129,7 @@ class core extends common {
'contentLeft' => $this->getData(['page',$this->getData(['page',$this->getUrl(0),'barLeft']),'content'])
]);
$pageContent = $this->getData(['page', $this->getUrl(0), 'content']);
}
}
else {
$moduleId = $this->getUrl(0);
$pageContent = '';
@ -2298,30 +2298,31 @@ class core extends common {
// Chargement de la bibliothèque googtrans
// Le script de traduction est sélectionné
if ( $this->getData(['config','translate','scriptGoogle']) === true
AND
// et la traduction de la langue courante est automatique
( $this->getInput('ZWII_I18N_SCRIPT') !== ''
// Ou traduction automatique
OR $this->getData(['config','translate','autoDetect']) === true
)
// Cas des pages d'administration
// Pas connecté
AND $this->getUser('password') !== $this->getInput('ZWII_USER_PASSWORD')
AND $this->getUrl(1) !== 'login'
// Ou connecté avec option active
OR ($this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
AND $this->getData(['config','translate','admin']) === true
)
if ($this->getData(['config', 'i18n', 'enabled']) === true) {
if ( $this->getData(['config','translate','scriptGoogle']) === true
// et la traduction de la langue courante est automatique
AND ( $this->getInput('ZWII_I18N_SCRIPT') !== ''
// Ou traduction automatique
OR $this->getData(['config','translate','autoDetect']) === true
)
// Cas des pages d'administration
// Pas connecté
AND $this->getUser('password') !== $this->getInput('ZWII_USER_PASSWORD')
AND $this->getUrl(1) !== 'login'
// Ou connecté avec option active
OR ($this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
AND $this->getData(['config','translate','admin']) === true
)
) {
// 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'])
]);
) {
// 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'])
]);
}
}
// Erreurs
if($access === 'login') {
@ -2444,7 +2445,9 @@ class layout extends common {
* @param Page par défaut
*/
public function showContent() {
echo $this->showi18n('Site');
if ($this->getData(['config', 'i18n', 'enabled']) === true) {
echo $this->showi18n('Site');
}
if(
$this->core->output['title']
AND (
@ -2463,7 +2466,8 @@ class layout extends common {
* La traduction est active et le site n'est pas en français.
* 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
// et la traduction n'est pas manuelle
@ -2826,7 +2830,9 @@ class layout extends common {
}
// Retourne les items du menu
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) {
$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() . '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() . 'config" data-tippy-content="Configurer le site">' . template::ico('cog-alt') . '</a></li>';
// Mise à jour automatique

View File

@ -396,9 +396,10 @@ class config extends common {
'legalPageId' => $legalPageId,
'searchPageId' => $searchPageId,
'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
$this->generateFiles();
// Valeurs en sortie

View File

@ -16,7 +16,7 @@
<div class="col12">
<div class="block">
<h4>Maintenance</h4>
<div class="col3">
<div class="col4">
<?php echo template::checkbox('configAdvancedMaintenance', true, 'Site en maintenance', [
'checked' => $this->getData(['config', 'maintenance'])
]); ?>
@ -28,7 +28,7 @@
'ico' => 'download'
]); ?>
</div>
<div class="col3 offset1">
<div class="col3">
<?php echo template::button('configManageButton', [
'href' => helper::baseUrl() . 'config/manage',
'value' => 'Restaurer',
@ -42,7 +42,6 @@
<div class="col12">
<div class="block">
<h4>Réglages</h4>
<?php $error = helper::urlGetContents('http://zwiicms.fr/update/' . common::ZWII_UPDATE_CHANNEL . '/version');?>
<div class="row">
<div class="col4">
<?php echo template::file('configAdvancedFavicon', [
@ -70,60 +69,68 @@
</div>
<div class="row">
<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']),
'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('rewrite', true, 'Réécriture d\'URL', [
<?php echo template::checkbox('rewrite', true, 'URL intelligentes', [
'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 class="row">
<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']),
'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 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'),
'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 class="row">
<div class="col6">
<?php echo template::checkbox('configAdvancedCaptchaStrong', true, 'Captcha renforcé', [
<?php echo template::checkbox('configAdvancedCaptchaStrong', true, 'Captcha complexe', [
'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 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']),
'help' => 'Déconnecte les sessions ouvertes précédemment sur d\'autres navigateurs ou terminaux. Activation recommandée.'
]); ?>
</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="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']),
'help' => 'Vérifie une fois par jour l\'existence d\'une mise à jour.',
'disabled' => !$error
'help' => 'La vérification est quotidienne. Option désactivée si la configuration du serveur ne le permet pas.',
'disabled' => !$updateError
]); ?>
</div>
<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']),
'help' => 'Lors d\'une mise à jour automatique, conserve le fichier htaccess de la racine du site.',
'disabled' => !$error
'disabled' => !$updateError
]); ?>
</div>
<div class="col4">
@ -132,7 +139,7 @@
'href' => helper::baseUrl() . 'install/update',
'value' => 'Mise à jour manuelle',
'class' => 'buttonRed',
'disabled' => !$error
'disabled' => !$updateError
]); ?>
</div>
</div>
@ -310,7 +317,7 @@
</div>
</div>
<div class="row">
<div class="col3">
<div class="col6">
<?php echo template::checkbox('configAdvancedConnectCaptcha', true, 'Captcha à la connexion', [
'checked' => $this->getData(['config', 'connect','captcha'])
]); ?>

View File

@ -8,10 +8,10 @@
'value' => 'Accueil'
]); ?>
</div>
<div class="col2 offset6">
<div class="col3 offset5">
<?php echo template::button('configAdvancedButton', [
'href' => helper::baseUrl() . 'config/advanced',
'value' => 'Avancée',
'value' => 'Configuration avancée',
'ico' => 'cog-alt',
]); ?>
</div>
@ -123,4 +123,20 @@
</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(); ?>

View File

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

View File

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