diff --git a/core/core.php b/core/core.php index c87f1d26..f3381f5b 100644 --- a/core/core.php +++ b/core/core.php @@ -35,7 +35,7 @@ class common { const TEMP_DIR = 'site/tmp/'; // Numéro de version - const ZWII_VERSION = '10.0.09.dev'; + const ZWII_VERSION = '10.0.10.dev'; public static $actions = []; public static $coreModuleIds = [ @@ -817,14 +817,17 @@ class common { /** * Retourne la liste les langues installées * @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" * 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'] : []; $tempData = array_diff(scandir(self::DATA_DIR), array('..', '.')); foreach ($tempData as $item) { + // Exclure le fr + if ($noFr && $item === 'fr') {continue;} if (is_dir(self::DATA_DIR . $item) === true) { if (is_file(self::DATA_DIR . $item . '/' . 'page.json') === true && is_file(self::DATA_DIR . $item . '/' . 'module.json') === true ) { @@ -2426,7 +2429,7 @@ class layout extends common { if (sizeof($this->i18nInstalled()) > 1) { foreach ($this->i18nInstalled() as $itemKey => $item) { $items .= '
  • '; - $items .= ''; + $items .= ''; $items .= '
  • '; } } diff --git a/core/module/i18n/i18n.php b/core/module/i18n/i18n.php index cb27cd17..62852179 100644 --- a/core/module/i18n/i18n.php +++ b/core/module/i18n/i18n.php @@ -40,10 +40,14 @@ class i18n extends common { if (!empty ($create)) { // Mode création de langue // 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 . '/'; // 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 $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; @@ -53,19 +57,19 @@ class i18n extends common { } // Mode effacement if (!empty ($remove)) { - // La langue est celle par défaut : effacement bloqué // Une notification existe déjà, insérer un séparateur if ($notification) { $notification .= ' | '; } - if ( $remove !== $this->getData(['i18n','frontend'])) { + // Suppression impossible langue actuelle ou fr + if ( $remove !== $this->geti18n()) { // Le dossier existe ? if (is_dir(self::DATA_DIR . $remove) === true) { $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'] = (rmdir (self::DATA_DIR . $remove) === true && $success ['remove'] === true) ? true : false ;; - } + } // Valeurs en sortie $notification .= $success['remove'] === true ? self::$i18nList[$remove] .' effacée' : self::$i18nList[$remove] . ' n\'existe pas' ; } else { diff --git a/core/module/i18n/view/index/index.php b/core/module/i18n/view/index/index.php index 8211b786..1607e022 100644 --- a/core/module/i18n/view/index/index.php +++ b/core/module/i18n/view/index/index.php @@ -43,7 +43,7 @@

    Supprimer une localisation

    - i18nInstalled(true), [ + i18nInstalled(true, true), [ 'label' => 'Localisations installées', 'help' => 'La suppression d\'une langue entraîne l\'effacement des pages et des modules', 'selected' => -1