[10.0.10.dev] petites corrections gestion des langues (bloquage supp fr ; détermination langue déjà installée)
This commit is contained in:
parent
8197cf4686
commit
4b3790fb39
@ -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>';
|
||||
}
|
||||
}
|
||||
|
@ -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 {
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user