[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/';
// 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 .= '<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>';
}
}

View File

@ -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 {

View File

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