- écran de copie de contenu d'une langue vers uen autre
- masquer et effacer une langue
- nouveau système d'aide sous forme d'une popup générale : une par écran
This commit is contained in:
fredtempez 2020-12-06 17:45:37 +01:00
parent 7b286c7940
commit adaea91dbb
7 changed files with 191 additions and 19 deletions

View File

@ -456,4 +456,12 @@ $(document).ready(function(){
$(changeIcon).addClass('zwiico-menu'); $(changeIcon).addClass('zwiico-menu');
}; };
}); });
/**
* Active le système d'aide interne
*/
$(".helpDisplayButton").on("click",function() {
$(".helpDisplayContent").slideToggle();
});
}); });

View File

@ -1701,4 +1701,24 @@ th.col12 {
} }
#googTransLogo img { #googTransLogo img {
width: 60%; 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;
} }

View File

@ -16,15 +16,69 @@ class translate extends common {
public static $actions = [ public static $actions = [
/*'config' => self::GROUP_MODERATOR,*/ /*'config' => self::GROUP_MODERATOR,*/
'index' => self::GROUP_MODERATOR, 'index' => self::GROUP_ADMIN,
'advanced' => self::GROUP_ADMIN,
'language' => self::GROUP_VISITOR 'language' => self::GROUP_VISITOR
]; ];
public static $typeTranslate = [ public static $translateOptions = [];
'none' => 'Drapeau masqué',
'script' => 'Traduction automatique', // Liste des langues installées
'site' => 'Traduction rédigée' 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 * Configuration
@ -44,7 +98,7 @@ class translate extends common {
if ($keyi18n === 'fr') {continue;} if ($keyi18n === 'fr') {continue;}
// Effacement d'une langue installée // Effacement d'une langue installée
if ( is_dir( self::DATA_DIR . $keyi18n ) === true 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); $this->removeDir( self::DATA_DIR . $keyi18n);
} }
@ -97,6 +151,23 @@ class translate extends common {
'state' => true '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 // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'title' => 'Gestion des langues', '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() { public function language() {
// Transmettre le choix au noyau // Transmettre le choix au noyau
if ($this->getUrl(3) === 'script') { if ($this->getUrl(3) === 'script') {

View File

@ -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 <remi.jean@outlook.com>
* @copyright Copyright (C) 2008-2018, Rémi Jean
* @author Frédéric Tempez <frederic.tempez@outlook.com>
* @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
*/

View File

@ -0,0 +1,34 @@
<?php echo template::formOpen('translateFormAdvanced'); ?>
<div class="row">
<div class="col2">
<?php echo template::button('translateFormAdvancedBack', [
'class' => 'buttonGrey',
'href' => helper::baseUrl() . 'translate',
'ico' => 'left',
'value' => 'Retour'
]); ?>
</div>
<div class="col2 offset8">
<?php echo template::submit('translateFormAdvancedSubmit'); ?>
</div>
</div>
<div class="row">
<div class="col12">
<div class="block">
<h4>Copie de contenu</h4>
<div class="row">
<div class="col6">
<?php echo template::select('translateFormAdvancedSource', $module::$languagesInstalled, [
'label' => 'Copier les pages et les modules de'
]); ?>
</div>
<div class="col6">
<?php echo template::select('translateFormAdvancedTarget', $module::$languagesTarget, [
'label' => 'Vers'
]); ?>
</div>
</div>
</div>
</div>
</div>
<?php echo template::formClose(); ?>

View File

@ -14,7 +14,6 @@
*/ */
$(document).ready(function(){ $(document).ready(function(){
/* /*
* Active le script Google quand une langue est traduite automatiquement * Active le script Google quand une langue est traduite automatiquement
*/ */

View File

@ -8,14 +8,25 @@
'value' => 'Retour' 'value' => 'Retour'
]); ?> ]); ?>
</div> </div>
<div class="col2 offset8"> <div class="col2 offset6">
<?php echo template::button('configAdvancedButton', [
'href' => helper::baseUrl() . 'translate/advanced',
'value' => 'Avancée',
'ico' => 'cog-alt',
]); ?>
</div>
<div class="col2">
<?php echo template::submit('translateFormSubmit'); ?> <?php echo template::submit('translateFormSubmit'); ?>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col12"> <div class="col12">
<div class="block" id="flagsWrapper"> <div class="block" id="flagsWrapper">
<h4>Affichage des drapeaux et sélection du mode de traduction</h4> <h4>Mode de traduction et affichage des drapeaux
<span class="helpDisplayButton">
<?php echo template::ico('help', 'left');?>
</span>
</h4>
<div class="row"> <div class="row">
<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é'], [
@ -27,21 +38,21 @@
<div class="row"> <div class="row">
<div class="col6"> <div class="col6">
<div class="col8 offset2"> <div class="col8 offset2">
<?php echo template::select('translateDE', $module::$typeTranslate, [ <?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', 'translate' , 'de'])
]); ?> ]); ?>
</div> </div>
<div class="col8 offset2"> <div class="col8 offset2">
<?php echo template::select('translateEN', $module::$typeTranslate, [ <?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', 'translate' , 'en'])
]); ?> ]); ?>
</div> </div>
<div class="col8 offset2"> <div class="col8 offset2">
<?php echo template::select('translateES', $module::$typeTranslate, [ <?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', 'translate' , 'es'])
@ -50,21 +61,21 @@
</div> </div>
<div class="col6"> <div class="col6">
<div class="col8 offset2"> <div class="col8 offset2">
<?php echo template::select('translateIT', $module::$typeTranslate, [ <?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', 'translate' , 'it'])
]); ?> ]); ?>
</div> </div>
<div class="col8 offset2"> <div class="col8 offset2">
<?php echo template::select('translateNL', $module::$typeTranslate, [ <?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', 'translate' , 'nl'])
]); ?> ]); ?>
</div> </div>
<div class="col8 offset2"> <div class="col8 offset2">
<?php echo template::select('translatePT', $module::$typeTranslate, [ <?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', 'translate' , 'pt'])
@ -113,4 +124,11 @@
</div> </div>
</div> </div>
</div> </div>
<div class="col10 helpDisplayContent">
<p>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.</p>
<p>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.</p>
</div>
<?php echo template::formClose(); ?> <?php echo template::formClose(); ?>