From adaea91dbb79904ecb40d829db09781dbaa0a6bc Mon Sep 17 00:00:00 2001 From: fredtempez Date: Sun, 6 Dec 2020 17:45:37 +0100 Subject: [PATCH] =?UTF-8?q?i18n=20:=20-=20=C3=A9cran=20de=20copie=20de=20c?= =?UTF-8?q?ontenu=20d'une=20langue=20vers=20uen=20autre=20-=20masquer=20et?= =?UTF-8?q?=20effacer=20une=20langue=20-=20nouveau=20syst=C3=A8me=20d'aide?= =?UTF-8?q?=20sous=20forme=20d'une=20popup=20g=C3=A9n=C3=A9rale=20:=20une?= =?UTF-8?q?=20par=20=C3=A9cran?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/core.js.php | 8 ++ core/layout/common.css | 20 ++++ core/module/translate/translate.php | 93 +++++++++++++++++-- .../translate/view/advanced/advanced.css | 20 ++++ .../translate/view/advanced/advanced.php | 34 +++++++ core/module/translate/view/index/index.js.php | 1 - core/module/translate/view/index/index.php | 34 +++++-- 7 files changed, 191 insertions(+), 19 deletions(-) create mode 100644 core/module/translate/view/advanced/advanced.css create mode 100644 core/module/translate/view/advanced/advanced.php diff --git a/core/core.js.php b/core/core.js.php index 8623d83f..e59e5c9f 100755 --- a/core/core.js.php +++ b/core/core.js.php @@ -456,4 +456,12 @@ $(document).ready(function(){ $(changeIcon).addClass('zwiico-menu'); }; }); + + /** + * Active le système d'aide interne + */ + $(".helpDisplayButton").on("click",function() { + $(".helpDisplayContent").slideToggle(); + }); + }); diff --git a/core/layout/common.css b/core/layout/common.css index 91da0a5e..d72acee4 100755 --- a/core/layout/common.css +++ b/core/layout/common.css @@ -1701,4 +1701,24 @@ th.col12 { } #googTransLogo img { width: 60%; +} + +/* Système d'aide */ + +.helpDisplayContent { + display: none; + -webkit-box-shadow: 5px 5px 11px 0px #222222; + box-shadow: 5px 5px 11px 0px #222222; + border-radius: 5px; + padding: 2px 10px; + background-color:#333; + color: white; + position: fixed; + z-index: 30; + bottom: 5px; + margin: +} + +.helpDisplayButton { + cursor: pointer; } \ No newline at end of file diff --git a/core/module/translate/translate.php b/core/module/translate/translate.php index ce6f53c7..d1d90d7b 100755 --- a/core/module/translate/translate.php +++ b/core/module/translate/translate.php @@ -16,15 +16,69 @@ class translate extends common { public static $actions = [ /*'config' => self::GROUP_MODERATOR,*/ - 'index' => self::GROUP_MODERATOR, + 'index' => self::GROUP_ADMIN, + 'advanced' => self::GROUP_ADMIN, 'language' => self::GROUP_VISITOR ]; - public static $typeTranslate = [ - 'none' => 'Drapeau masqué', - 'script' => 'Traduction automatique', - 'site' => 'Traduction rédigée' - ]; + public static $translateOptions = []; + + // Liste des langues installées + public static $languagesInstalled = []; + // Liste des langues cibles + public static $languagesTarget = []; + + /** + * Configuration avancée des langues + */ + public function advanced() { + + // Soumission du formulaire + if ($this->isPost()) { + // Initialisation + $success = false; + $copyFrom = $this->getInput('translateFormAdvancedSource'); + $toCreate = $this->getInput('translateFormAdvancedTarget'); + // Création du dossier + if (is_dir(self::DATA_DIR . $toCreate) === false ) { // Si le dossier est déjà créé + $success = mkdir (self::DATA_DIR . $toCreate); + } else { + $success = true; + } + // Copier les données par défaut avec gestion des erreurs + $success = (copy (self::DATA_DIR . $copyFrom . '/locale.json', self::DATA_DIR . $toCreate . '/locale.json') === true && $success === true) ? true : false; + $success = (copy (self::DATA_DIR . $copyFrom . '/module.json', self::DATA_DIR . $toCreate . '/module.json') === true && $success === true) ? true : false; + $success = (copy (self::DATA_DIR . $copyFrom . '/page.json', self::DATA_DIR . $toCreate . '/page.json') === true && $success === true) ? true : false; + // Enregistrer la langue + if ($success) { + $this->setData(['config', 'translate', $toCreate, 'site' ]); + $notification = 'Données ' . self::$i18nList[$copyFrom] . ' copiées vers ' . self::$i18nList[$toCreate]; + } else { + $notification = "Quelque chose n\'a pas foncitionné, vérifiez les permissions."; + } + // Valeurs en sortie + $this->addOutput([ + 'notification' => $notification, + 'title' => 'Gestion avancée', + 'view' => 'index', + 'state' => $success + ]); + } + // Tableau des langues installées + foreach (self::$i18nList as $key => $value) { + if ($this->getData(['config','translate',$key]) === 'site') { + self::$languagesInstalled[$key] = $value; + } + } + // Tableau des langues cibles + self::$languagesTarget = array_diff (self::$i18nList,self::$languagesInstalled); + + // Valeurs en sortie + $this->addOutput([ + 'title' => 'Gestion avancée', + 'view' => 'advanced' + ]); + } /** * Configuration @@ -44,7 +98,7 @@ class translate extends common { if ($keyi18n === 'fr') {continue;} // Effacement d'une langue installée if ( is_dir( self::DATA_DIR . $keyi18n ) === true - AND $this->getInput('translate' . strtoupper($keyi18n)) === 'none') + AND $this->getInput('translate' . strtoupper($keyi18n)) === 'delete') { $this->removeDir( self::DATA_DIR . $keyi18n); } @@ -97,6 +151,23 @@ class translate extends common { 'state' => true ]); } + // Modification de option de suppression de la langue installée. + foreach (self::$i18nList as $key => $value) { + if ($this->getData(['config','translate',$key]) === 'site') { + self::$translateOptions [$key] = [ + 'none' => 'Drapeau masqué', + 'script' => 'Traduction automatique', + 'site' => 'Traduction rédigée', + 'delete' => 'Supprimer la traduction' + ]; + } else { + self::$translateOptions [$key] = [ + 'none' => 'Drapeau masqué', + 'script' => 'Traduction automatique', + 'site' => 'Traduction rédigée' + ]; + } + } // Valeurs en sortie $this->addOutput([ 'title' => 'Gestion des langues', @@ -104,9 +175,11 @@ class translate extends common { ]); } - /* - * Traitement du changement de langues - */ + + /* + * Traitement du changement de langue + * Fonction utilisée par le noyau + */ public function language() { // Transmettre le choix au noyau if ($this->getUrl(3) === 'script') { diff --git a/core/module/translate/view/advanced/advanced.css b/core/module/translate/view/advanced/advanced.css new file mode 100644 index 00000000..51a18ec5 --- /dev/null +++ b/core/module/translate/view/advanced/advanced.css @@ -0,0 +1,20 @@ +/** + * This file is part of Zwii. + * + * For full copyright and license information, please see the LICENSE + * file that was distributed with this source code. + * + * @author Rémi Jean + * @copyright Copyright (C) 2008-2018, Rémi Jean + * @author Frédéric Tempez + * @copyright Copyright (C) 2018-2020, Frédéric Tempez + * @license GNU General Public License, version 3 + * @link http://zwiicms.fr/ + */ + + +/** @import url("site/data/admin.css"); */ + +/** NE PAS EFFACER +* admin.css +*/ \ No newline at end of file diff --git a/core/module/translate/view/advanced/advanced.php b/core/module/translate/view/advanced/advanced.php new file mode 100644 index 00000000..7dfca2fc --- /dev/null +++ b/core/module/translate/view/advanced/advanced.php @@ -0,0 +1,34 @@ + +
+
+ 'buttonGrey', + 'href' => helper::baseUrl() . 'translate', + 'ico' => 'left', + 'value' => 'Retour' + ]); ?> +
+
+ +
+
+
+
+
+

Copie de contenu

+
+
+ 'Copier les pages et les modules de' + ]); ?> +
+
+ 'Vers' + ]); ?> +
+
+
+
+
+ \ No newline at end of file diff --git a/core/module/translate/view/index/index.js.php b/core/module/translate/view/index/index.js.php index 31e8d92c..f7dab324 100644 --- a/core/module/translate/view/index/index.js.php +++ b/core/module/translate/view/index/index.js.php @@ -14,7 +14,6 @@ */ $(document).ready(function(){ - /* * Active le script Google quand une langue est traduite automatiquement */ diff --git a/core/module/translate/view/index/index.php b/core/module/translate/view/index/index.php index 71db622c..6a9d1bb3 100755 --- a/core/module/translate/view/index/index.php +++ b/core/module/translate/view/index/index.php @@ -8,14 +8,25 @@ 'value' => 'Retour' ]); ?> -
+
+ helper::baseUrl() . 'translate/advanced', + 'value' => 'Avancée', + 'ico' => 'cog-alt', + ]); ?> +
+
-

Affichage des drapeaux et sélection du mode de traduction

+

Mode de traduction et affichage des drapeaux + + + +

'Drapeau masqué','site'=>'Drapeau affiché'], [ @@ -27,21 +38,21 @@
- 'Allemand', 'class' => 'translateFlagSelect', 'selected' => $this->getData(['config', 'translate' , 'de']) ]); ?>
- 'Anglais', 'class' => 'translateFlagSelect', 'selected' => $this->getData(['config', 'translate' , 'en']) ]); ?>
- 'Espagnol', 'class' => 'translateFlagSelect', 'selected' => $this->getData(['config', 'translate' , 'es']) @@ -50,21 +61,21 @@
- 'Italien', 'class' => 'translateFlagSelect', 'selected' => $this->getData(['config', 'translate' , 'it']) ]); ?>
- 'Néerlandais', 'class' => 'translateFlagSelect', 'selected' => $this->getData(['config', 'translate' , 'nl']) ]); ?>
- 'Portugais', 'class' => 'translateFlagSelect', 'selected' => $this->getData(['config', 'translate' , 'pt']) @@ -113,4 +124,11 @@
+
+

Vous avez le choix entre une traduction automatique réalisée avec le script Google Traduction ou une traduction rédigée. + Si vous sélectionnez la traduction rédigée, seule la page d'accueil est générée, à vous de rédiger le site dans la langue sélectionnée. + Il est possible de copier les pages et les modules d'une langue vers une autre en cliquant sur le bouton de gestion avancée.

+

Une traduction peut être cachée en masquant le drapeau, la suppression d'une traduction rédigée est définitive, pensez à sauvegarder. + Afficher le drapeau fraçais afin de revenir à la langue d'origine du site.

+
\ No newline at end of file