Translate édition des locales ok

This commit is contained in:
Fred Tempez 2022-09-27 11:25:05 +02:00
parent 8510eb2798
commit b357076a6f
4 changed files with 61 additions and 208 deletions

View File

@ -24,7 +24,7 @@ class translate extends common {
'i18n' => self::GROUP_VISITOR, 'i18n' => self::GROUP_VISITOR,
]; ];
// Language content // Language contents
public static $translateOptions = []; public static $translateOptions = [];
// Page pour la configuration dans la langue // Page pour la configuration dans la langue
public static $pagesList = []; public static $pagesList = [];
@ -35,6 +35,8 @@ class translate extends common {
public static $languagesTarget = []; public static $languagesTarget = [];
// Activation du bouton de copie // Activation du bouton de copie
public static $siteTranslate = true; public static $siteTranslate = true;
// Localisation en cours d'édition
public static $locales = [];
//UI //UI
// Fichiers des langues de l'interface // Fichiers des langues de l'interface
@ -264,6 +266,16 @@ class translate extends common {
public function edit() { public function edit() {
// Jeton incorrect
if ($this->getUrl(3) !== $_SESSION['csrf']) {
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'translate',
'state' => false,
'notification' => 'Action non autorisée'
]);
}
// Soumission du formulaire // Soumission du formulaire
if($this->isPost()) { if($this->isPost()) {
@ -322,6 +334,22 @@ class translate extends common {
// Préparation de l'affichage du formulaire // Préparation de l'affichage du formulaire
//----------------------------------------- //-----------------------------------------
// Récupération des locales de la langue sélectionnée
// Lire les locales sans passer par les méthodes
// Vérifier la conformité de l'URL
if (array_key_exists($this->getUrl(2), self::$languages) ) {
self::$locales [$this->getUrl(2)] = json_decode(file_get_contents(self::DATA_DIR . $this->getUrl(2) . '/locale.json'), true);
} else {
// Bidouillage de l'URL, on sort
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'translate',
'notification' => 'URL incorrecte',
'state' => false
]);
}
// Générer la liste des pages disponibles // Générer la liste des pages disponibles
self::$pagesList = $this->getData(['page']); self::$pagesList = $this->getData(['page']);
foreach(self::$pagesList as $page => $pageId) { foreach(self::$pagesList as $page => $pageId) {
@ -342,7 +370,7 @@ class translate extends common {
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'title' => 'Edition', 'title' => 'Paramètres de la localisation ' . self::$languages[$this->getUrl(2)],
'view' => 'edit' 'view' => 'edit'
]); ]);
} }

View File

@ -1,188 +0,0 @@
<?php echo template::formOpen('translateForm'); ?>
<div class="row">
<div class="col12">
<div class="block">
<h4>Identité du site
<span id="localeHelpButton" class="helpDisplayButton" title="Cliquer pour consulter l'aide en ligne">
<a href="https://doc.zwiicms.fr/localisation-et-identite" target="_blank">
<?php echo template::ico('help', ['margin' => 'left']);?>
</a>
</span>
</h4>
<div class="row">
<div class="col12">
<?php echo template::text('localeTitle', [
'label' => 'Titre du site' ,
'value' => $this->getData(['locale', 'title']),
'help' => 'Il apparaît dans la barre de titre et les partages sur les réseaux sociaux.'
]); ?>
</div>
</div>
<div class="row">
<div class="col12">
<?php echo template::textarea('localeMetaDescription', [
'label' => 'Description du site',
'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.'
]); ?>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4>Assignation des pages spéciales
<span id="localeHelpButton" class="helpDisplayButton" title="Cliquer pour consulter l'aide en ligne">
<a href="https://doc.zwiicms.fr/localisation-et-identite" target="_blank">
<?php echo template::ico('help', ['margin' => 'left']);?>
</a>
</span>
</h4>
<div class="row">
<div class="col4">
<?php echo template::select('localeHomePageId', helper::arrayColumn($module::$pagesList, 'title', 'SORT_ASC'), [
'label' => 'Accueil du site',
'selected' =>$this->getData(['locale', 'homePageId']),
'help' => 'La première page que vos visiteurs verront.'
]); ?>
</div>
<div class="col4">
<?php echo template::select('localePage403', array_merge(['none' => 'Page par défaut'],helper::arrayColumn($module::$orphansList, 'title', 'SORT_ASC')), [
'label' => 'Accès interdit, erreur 403',
'selected' =>$this->getData(['locale', 'page403']),
'help' => 'Cette page ne doit pas apparaître dans l\'arborescence du menu. Créez une page orpheline.'
]); ?>
</div>
<div class="col4">
<?php echo template::select('localePage404', array_merge(['none' => 'Page par défaut'],helper::arrayColumn($module::$orphansList, 'title', 'SORT_ASC')), [
'label' => 'Page inexistante, erreur 404',
'selected' =>$this->getData(['locale', 'page404']),
'help' => 'Cette page ne doit pas apparaître dans l\'arborescence du menu. Créez une page orpheline.'
]); ?>
</div>
</div>
<div class="row">
<div class="col4">
<?php echo template::select('localeLegalPageId', array_merge(['none' => 'Aucune'] , helper::arrayColumn($module::$pagesList, 'title', 'SORT_ASC') ) , [
'label' => 'Mentions légales',
'selected' => $this->getData(['locale', 'legalPageId']),
'help' => 'Les mentions légales sont obligatoires en France. Une option du pied de page ajoute un lien discret vers cette page.'
]); ?>
</div>
<div class="col4">
<?php echo template::select('localeSearchPageId', array_merge(['none' => 'Aucune'] , helper::arrayColumn($module::$pagesList, 'title', 'SORT_ASC') ) , [
'label' => 'Recherche dans le site',
'selected' => $this->getData(['locale', 'searchPageId']),
'help' => 'Sélectionnez une page contenant le module \'Recherche\'. Une option du pied de page ajoute un lien discret vers cette page.'
]); ?>
</div>
<div class="col4">
<?php
echo template::select('localePage302', array_merge(['none' => 'Page par défaut'],helper::arrayColumn($module::$orphansList, 'title', 'SORT_ASC')), [
'label' => 'Site en maintenance',
'selected' =>$this->getData(['locale', 'page302']),
'help' => 'Cette page ne doit pas apparaître dans l\'arborescence du menu. Créez une page orpheline.'
]); ?>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4>Etiquettes des pages spéciales
<span id="labelHelpButton" class="helpDisplayButton" title="Cliquer pour consulter l'aide en ligne">
<a href="https://doc.zwiicms.fr/etiquettes-des-pages-speciales" target="_blank">
<?php echo template::ico('help', ['margin' => 'left']);?>
</a>
</span>
</h4>
<div class="row">
<div class="col6">
<?php echo template::text('localeLegalPageLabel', [
'label' => 'Mentions légales',
'placeholder' => 'Mentions légales',
'value' => $this->getData(['locale', 'legalPageLabel'])
]); ?>
</div>
<div class="col6">
<?php echo template::text('localeSearchPageLabel', [
'label' => 'Rechercher',
'placeholder' => 'Rechercher',
'value' => $this->getData(['locale', 'searchPageLabel'])
]); ?>
</div>
</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
<span id="specialeHelpButton" class="helpDisplayButton" title="Cliquer pour consulter l'aide en ligne">
<a href="https://doc.zwiicms.fr/cookies" target="_blank">
<?php echo template::ico('help', ['margin' => 'left']);?>
</a>
</span>
</h4>
<div class="row">
<div class="col6">
<?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', 'titleLabel']),
'placeHolder' => 'Gérer les cookies'
]); ?>
</div>
<div class="col6">
<?php echo template::text('localeCookiesButtonText', [
'label' => 'Bouton de validation',
'value' => $this->getData(['locale', 'cookies', 'buttonValidLabel']),
'placeHolder' => 'J\'ai compris'
]); ?>
</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', 'mainLabel']),
'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', 'linkLegalLabel']),
'placeHolder' => 'Consulter les mentions légales'
]); ?>
</div>
</div>
</div>
</div>
</div>
<?php echo template::formClose(); ?>

View File

@ -1,5 +1,18 @@
<?php echo template::formOpen('translateForm'); ?> <?php echo template::formOpen('translateLocaleForm'); ?>
<div class="row">
<div class="col1">
<?php echo template::button('translateFormBack', [
'class' => 'buttonGrey',
'href' => helper::baseUrl() . 'translate',
'value' => template::ico('left')
]); ?>
</div>
<div class="col2 offset9">
<?php echo template::submit('translateFormSubmit'); ?>
</div>
</div>
<div class="row"> <div class="row">
<div class="col12"> <div class="col12">
<div class="block"> <div class="block">
@ -14,7 +27,7 @@
<div class="col12"> <div class="col12">
<?php echo template::text('localeTitle', [ <?php echo template::text('localeTitle', [
'label' => 'Titre du site' , 'label' => 'Titre du site' ,
'value' => $this->getData(['locale', 'title']), 'value' => $module::$locales[$this->getUrl(2)]['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.'
]); ?> ]); ?>
</div> </div>
@ -23,7 +36,7 @@
<div class="col12"> <div class="col12">
<?php echo template::textarea('localeMetaDescription', [ <?php echo template::textarea('localeMetaDescription', [
'label' => 'Description du site', 'label' => 'Description du site',
'value' => $this->getData(['locale', 'metaDescription']), 'value' => $module::$locales[$this->getUrl(2)]['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.'
]); ?> ]); ?>
</div> </div>
@ -45,21 +58,21 @@
<div class="col4"> <div class="col4">
<?php echo template::select('localeHomePageId', helper::arrayColumn($module::$pagesList, 'title', 'SORT_ASC'), [ <?php echo template::select('localeHomePageId', helper::arrayColumn($module::$pagesList, 'title', 'SORT_ASC'), [
'label' => 'Accueil du site', 'label' => 'Accueil du site',
'selected' =>$this->getData(['locale', 'homePageId']), 'selected' =>$module::$locales[$this->getUrl(2)]['locale'][ 'homePageId'],
'help' => 'La première page que vos visiteurs verront.' 'help' => 'La première page que vos visiteurs verront.'
]); ?> ]); ?>
</div> </div>
<div class="col4"> <div class="col4">
<?php echo template::select('localePage403', array_merge(['none' => 'Page par défaut'],helper::arrayColumn($module::$orphansList, 'title', 'SORT_ASC')), [ <?php echo template::select('localePage403', array_merge(['none' => 'Page par défaut'],helper::arrayColumn($module::$orphansList, 'title', 'SORT_ASC')), [
'label' => 'Accès interdit, erreur 403', 'label' => 'Accès interdit, erreur 403',
'selected' =>$this->getData(['locale', 'page403']), 'selected' =>$module::$locales[$this->getUrl(2)]['locale']['page403'],
'help' => 'Cette page ne doit pas apparaître dans l\'arborescence du menu. Créez une page orpheline.' 'help' => 'Cette page ne doit pas apparaître dans l\'arborescence du menu. Créez une page orpheline.'
]); ?> ]); ?>
</div> </div>
<div class="col4"> <div class="col4">
<?php echo template::select('localePage404', array_merge(['none' => 'Page par défaut'],helper::arrayColumn($module::$orphansList, 'title', 'SORT_ASC')), [ <?php echo template::select('localePage404', array_merge(['none' => 'Page par défaut'],helper::arrayColumn($module::$orphansList, 'title', 'SORT_ASC')), [
'label' => 'Page inexistante, erreur 404', 'label' => 'Page inexistante, erreur 404',
'selected' =>$this->getData(['locale', 'page404']), 'selected' =>$module::$locales[$this->getUrl(2)]['locale']['page404'],
'help' => 'Cette page ne doit pas apparaître dans l\'arborescence du menu. Créez une page orpheline.' 'help' => 'Cette page ne doit pas apparaître dans l\'arborescence du menu. Créez une page orpheline.'
]); ?> ]); ?>
</div> </div>
@ -68,14 +81,14 @@
<div class="col4"> <div class="col4">
<?php echo template::select('localeLegalPageId', array_merge(['none' => 'Aucune'] , helper::arrayColumn($module::$pagesList, 'title', 'SORT_ASC') ) , [ <?php echo template::select('localeLegalPageId', array_merge(['none' => 'Aucune'] , helper::arrayColumn($module::$pagesList, 'title', 'SORT_ASC') ) , [
'label' => 'Mentions légales', 'label' => 'Mentions légales',
'selected' => $this->getData(['locale', 'legalPageId']), 'selected' => $module::$locales[$this->getUrl(2)]['locale']['legalPageId'],
'help' => 'Les mentions légales sont obligatoires en France. Une option du pied de page ajoute un lien discret vers cette page.' 'help' => 'Les mentions légales sont obligatoires en France. Une option du pied de page ajoute un lien discret vers cette page.'
]); ?> ]); ?>
</div> </div>
<div class="col4"> <div class="col4">
<?php echo template::select('localeSearchPageId', array_merge(['none' => 'Aucune'] , helper::arrayColumn($module::$pagesList, 'title', 'SORT_ASC') ) , [ <?php echo template::select('localeSearchPageId', array_merge(['none' => 'Aucune'] , helper::arrayColumn($module::$pagesList, 'title', 'SORT_ASC') ) , [
'label' => 'Recherche dans le site', 'label' => 'Recherche dans le site',
'selected' => $this->getData(['locale', 'searchPageId']), 'selected' => $module::$locales[$this->getUrl(2)]['locale']['searchPageId'],
'help' => 'Sélectionnez une page contenant le module \'Recherche\'. Une option du pied de page ajoute un lien discret vers cette page.' 'help' => 'Sélectionnez une page contenant le module \'Recherche\'. Une option du pied de page ajoute un lien discret vers cette page.'
]); ?> ]); ?>
</div> </div>
@ -83,7 +96,7 @@
<?php <?php
echo template::select('localePage302', array_merge(['none' => 'Page par défaut'],helper::arrayColumn($module::$orphansList, 'title', 'SORT_ASC')), [ echo template::select('localePage302', array_merge(['none' => 'Page par défaut'],helper::arrayColumn($module::$orphansList, 'title', 'SORT_ASC')), [
'label' => 'Site en maintenance', 'label' => 'Site en maintenance',
'selected' =>$this->getData(['locale', 'page302']), 'selected' =>$module::$locales[$this->getUrl(2)]['locale']['page302'],
'help' => 'Cette page ne doit pas apparaître dans l\'arborescence du menu. Créez une page orpheline.' 'help' => 'Cette page ne doit pas apparaître dans l\'arborescence du menu. Créez une page orpheline.'
]); ?> ]); ?>
</div> </div>
@ -106,14 +119,14 @@
<?php echo template::text('localeLegalPageLabel', [ <?php echo template::text('localeLegalPageLabel', [
'label' => 'Mentions légales', 'label' => 'Mentions légales',
'placeholder' => 'Mentions légales', 'placeholder' => 'Mentions légales',
'value' => $this->getData(['locale', 'legalPageLabel']) 'value' => $module::$locales[$this->getUrl(2)]['locale']['legalPageLabel']
]); ?> ]); ?>
</div> </div>
<div class="col6"> <div class="col6">
<?php echo template::text('localeSearchPageLabel', [ <?php echo template::text('localeSearchPageLabel', [
'label' => 'Rechercher', 'label' => 'Rechercher',
'placeholder' => 'Rechercher', 'placeholder' => 'Rechercher',
'value' => $this->getData(['locale', 'searchPageLabel']) 'value' => $module::$locales[$this->getUrl(2)]['locale']['searchPageLabel']
]); ?> ]); ?>
</div> </div>
</div> </div>
@ -122,13 +135,13 @@
<?php echo template::text('localeSitemapPageLabel', [ <?php echo template::text('localeSitemapPageLabel', [
'label' => 'Plan du site', 'label' => 'Plan du site',
'placeholder' => 'Plan du site', 'placeholder' => 'Plan du site',
'value' => $this->getData(['locale', 'sitemapPageLabel']), 'value' => $module::$locales[$this->getUrl(2)]['locale']['sitemapPageLabel'],
]); ?> ]); ?>
</div> </div>
<div class="col6"> <div class="col6">
<?php echo template::text('localeCookiesFooterText', [ <?php echo template::text('localeCookiesFooterText', [
'label' => 'Cookies', 'label' => 'Cookies',
'value' => $this->getData(['locale', 'cookies', 'cookiesFooterText']), 'value' => $module::$locales[$this->getUrl(2)]['locale']['cookies']['cookiesFooterText'],
'placeHolder' => 'Cookies' 'placeHolder' => 'Cookies'
]); ?> ]); ?>
</div> </div>
@ -151,14 +164,14 @@
<?php echo template::text('localeCookiesTitleText', [ <?php echo template::text('localeCookiesTitleText', [
'help' => 'Saisissez le titre de la fenêtre de gestion des cookies.', 'help' => 'Saisissez le titre de la fenêtre de gestion des cookies.',
'label' => 'Titre de la fenêtre', 'label' => 'Titre de la fenêtre',
'value' => $this->getData(['locale', 'cookies', 'titleLabel']), 'value' => $module::$locales[$this->getUrl(2)]['locale']['cookies']['titleLabel'],
'placeHolder' => 'Gérer les cookies' 'placeHolder' => 'Gérer les cookies'
]); ?> ]); ?>
</div> </div>
<div class="col6"> <div class="col6">
<?php echo template::text('localeCookiesButtonText', [ <?php echo template::text('localeCookiesButtonText', [
'label' => 'Bouton de validation', 'label' => 'Bouton de validation',
'value' => $this->getData(['locale', 'cookies', 'buttonValidLabel']), 'value' => $module::$locales[$this->getUrl(2)]['locale']['cookies']['buttonValidLabel'],
'placeHolder' => 'J\'ai compris' 'placeHolder' => 'J\'ai compris'
]); ?> ]); ?>
</div> </div>
@ -168,7 +181,7 @@
<?php echo template::textarea('localeCookiesZwiiText', [ <?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.', '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', 'label' => 'Cookies Zwii',
'value' => $this->getData(['locale', 'cookies', 'mainLabel']), 'value' => $module::$locales[$this->getUrl(2)]['locale']['cookies']['mainLabel'],
'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.' '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>
@ -177,7 +190,7 @@
<?php echo template::text('localeCookiesLinkMlText', [ <?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.', '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.', 'label' => 'Lien page des mentions légales.',
'value' => $this->getData(['locale', 'cookies', 'linkLegalLabel']), 'value' => $module::$locales[$this->getUrl(2)]['locale']['cookies']['linkLegalLabel'],
'placeHolder' => 'Consulter les mentions légales' 'placeHolder' => 'Consulter les mentions légales'
]); ?> ]); ?>
</div> </div>

View File

@ -26,7 +26,7 @@
</div> </div>
<div class="col1"> <div class="col1">
<?php echo template::button('translateButton', [ <?php echo template::button('translateButton', [
'href' => helper::baseUrl() . 'translate/copy', 'href' => helper::baseUrl() . 'translate/add',
'value' => template::ico('plus'), 'value' => template::ico('plus'),
'class' => 'buttonGreen', 'class' => 'buttonGreen',
'help' => 'Ajouter une langue de contenu' 'help' => 'Ajouter une langue de contenu'