[10.0.10.dev] petites corrections gestion des langues (bloquage supp fr ; détermination langue déjà installée)

This commit is contained in:
fredtempez 2019-08-29 11:43:49 +02:00
parent 8197cf4686
commit 4b3790fb39
3 changed files with 17 additions and 10 deletions

View File

@ -35,7 +35,7 @@ class common {
const TEMP_DIR = 'site/tmp/'; const TEMP_DIR = 'site/tmp/';
// Numéro de version // Numéro de version
const ZWII_VERSION = '10.0.09.dev'; const ZWII_VERSION = '10.0.10.dev';
public static $actions = []; public static $actions = [];
public static $coreModuleIds = [ public static $coreModuleIds = [
@ -817,14 +817,17 @@ class common {
/** /**
* Retourne la liste les langues installées * Retourne la liste les langues installées
* @return array liste de dossiers * @return array liste de dossiers
* @param bool true la première contient une indication de sélection - false la liste est neutre * @param bool $emptyline true la première contient une indication de sélection - false la liste est neutre
* @param bool $noFr true retourne une liste sans le français (pour l'effacement)
* @return array liste des pages installées sous la forme "fr" -> "Français" * @return array liste des pages installées sous la forme "fr" -> "Français"
* La fonction vérifie l'existence du dossier et des deux fichiers de configuration * La fonction vérifie l'existence du dossier et des deux fichiers de configuration
*/ */
public function i18nInstalled ($emptyLine = false) { public function i18nInstalled ($emptyLine = false, $noFr = false) {
$listLanguages = $emptyLine === true ? [''=>'Sélectionner'] : []; $listLanguages = $emptyLine === true ? [''=>'Sélectionner'] : [];
$tempData = array_diff(scandir(self::DATA_DIR), array('..', '.')); $tempData = array_diff(scandir(self::DATA_DIR), array('..', '.'));
foreach ($tempData as $item) { foreach ($tempData as $item) {
// Exclure le fr
if ($noFr && $item === 'fr') {continue;}
if (is_dir(self::DATA_DIR . $item) === true) { if (is_dir(self::DATA_DIR . $item) === true) {
if (is_file(self::DATA_DIR . $item . '/' . 'page.json') === true && if (is_file(self::DATA_DIR . $item . '/' . 'page.json') === true &&
is_file(self::DATA_DIR . $item . '/' . 'module.json') === true ) { is_file(self::DATA_DIR . $item . '/' . 'module.json') === true ) {
@ -2426,7 +2429,7 @@ class layout extends common {
if (sizeof($this->i18nInstalled()) > 1) { if (sizeof($this->i18nInstalled()) > 1) {
foreach ($this->i18nInstalled() as $itemKey => $item) { foreach ($this->i18nInstalled() as $itemKey => $item) {
$items .= '<li><form method="POST" action="' . helper::baseUrl() . 'i18n/lang" id="barFormSelectLanguage">'; $items .= '<li><form method="POST" action="' . helper::baseUrl() . 'i18n/lang" id="barFormSelectLanguage">';
$items .= '<input type="image" alt="'.$itemKey.'" class="flag" name="'.$itemKey.'" src="' . helper::baseUrl() .'core/vendor/icon-flags/svg/'. $itemKey .'.svg" data-tippy-content="'. $item .'" />'; $items .= '<input type="image" alt="'.$itemKey.'" class="flag" name="'.$itemKey.'" src="' . helper::baseUrl(false) .'core/vendor/icon-flags/svg/'. $itemKey .'.svg" data-tippy-content="'. $item .'" />';
$items .= '</form></li>'; $items .= '</form></li>';
} }
} }

View File

@ -40,10 +40,14 @@ class i18n extends common {
if (!empty ($create)) { if (!empty ($create)) {
// Mode création de langue // Mode création de langue
// La langue est déja créée ? // La langue est déja créée ?
if (is_dir(self::DATA_DIR . $create) === false) { if (in_array($create,$this->i18nInstalled()) === false) {
$copyFrom = $copyFrom === '' ? 'core/module/i18n/ressource/' : self::DATA_DIR . $copyFrom . '/'; $copyFrom = $copyFrom === '' ? 'core/module/i18n/ressource/' : self::DATA_DIR . $copyFrom . '/';
// Créer le dossier // Créer le dossier
$success ['create'] = mkdir (self::DATA_DIR . $create); if (is_dir(self::DATA_DIR . $create) === false ) {
$success ['create'] = mkdir (self::DATA_DIR . $create);
} else {
$success ['create'] = true;
}
// Copier les données par défaut // Copier les données par défaut
$success ['create'] = (copy ($copyFrom . 'module.json', self::DATA_DIR . $create . '/module.json') === true && $success ['create'] === true) ? true : false; $success ['create'] = (copy ($copyFrom . 'module.json', self::DATA_DIR . $create . '/module.json') === true && $success ['create'] === true) ? true : false;
$success ['create'] = (copy ($copyFrom . 'page.json', self::DATA_DIR . $create . '/page.json') === true && $success ['create'] === true) ? true : false; $success ['create'] = (copy ($copyFrom . 'page.json', self::DATA_DIR . $create . '/page.json') === true && $success ['create'] === true) ? true : false;
@ -53,19 +57,19 @@ class i18n extends common {
} }
// Mode effacement // Mode effacement
if (!empty ($remove)) { if (!empty ($remove)) {
// La langue est celle par défaut : effacement bloqué
// Une notification existe déjà, insérer un séparateur // Une notification existe déjà, insérer un séparateur
if ($notification) { if ($notification) {
$notification .= ' | '; $notification .= ' | ';
} }
if ( $remove !== $this->getData(['i18n','frontend'])) { // Suppression impossible langue actuelle ou fr
if ( $remove !== $this->geti18n()) {
// Le dossier existe ? // Le dossier existe ?
if (is_dir(self::DATA_DIR . $remove) === true) { if (is_dir(self::DATA_DIR . $remove) === true) {
$success ['remove'] = unlink (self::DATA_DIR . $remove . '/module.json'); $success ['remove'] = unlink (self::DATA_DIR . $remove . '/module.json');
$success ['remove'] = (unlink (self::DATA_DIR . $remove . '/page.json') && $success ['remove'] === true) ? true : false ; $success ['remove'] = (unlink (self::DATA_DIR . $remove . '/page.json') && $success ['remove'] === true) ? true : false ;
$success ['remove'] = (rmdir (self::DATA_DIR . $remove) === true && $success ['remove'] === true) ? true : false ;; $success ['remove'] = (rmdir (self::DATA_DIR . $remove) === true && $success ['remove'] === true) ? true : false ;;
} }
// Valeurs en sortie // Valeurs en sortie
$notification .= $success['remove'] === true ? self::$i18nList[$remove] .' effacée' : self::$i18nList[$remove] . ' n\'existe pas' ; $notification .= $success['remove'] === true ? self::$i18nList[$remove] .' effacée' : self::$i18nList[$remove] . ' n\'existe pas' ;
} else { } else {

View File

@ -43,7 +43,7 @@
<div class="block"> <div class="block">
<h4>Supprimer une localisation</h4> <h4>Supprimer une localisation</h4>
<div class="row"> <div class="row">
<?php echo template::select('i18nLanguageRemove', $this->i18nInstalled(true), [ <?php echo template::select('i18nLanguageRemove', $this->i18nInstalled(true, true), [
'label' => 'Localisations installées', 'label' => 'Localisations installées',
'help' => 'La suppression d\'une langue entraîne l\'effacement des pages et des modules', 'help' => 'La suppression d\'une langue entraîne l\'effacement des pages et des modules',
'selected' => -1 'selected' => -1