12010 effacement d'une traduction du site

This commit is contained in:
Fred Tempez 2022-12-26 12:05:01 +01:00
parent e9ca38b9ab
commit 51dacd7c27
2 changed files with 60 additions and 26 deletions

View File

@ -22,7 +22,7 @@ class translate extends common
'add' => self::GROUP_ADMIN, // Ajouter une langue de contenu 'add' => self::GROUP_ADMIN, // Ajouter une langue de contenu
'ui' => self::GROUP_ADMIN, // Éditer une langue de l'UI 'ui' => self::GROUP_ADMIN, // Éditer une langue de l'UI
'locale' => self::GROUP_ADMIN, // Éditer une langue de contenu 'locale' => self::GROUP_ADMIN, // Éditer une langue de contenu
'delete' => self::GROUP_ADMIN, // Effacer une langue de contenu 'delete' => self::GROUP_ADMIN, // Effacer une langue de contenu ou de l'interface
'content' => self::GROUP_VISITOR, 'content' => self::GROUP_VISITOR,
'update' => self::GROUP_ADMIN, 'update' => self::GROUP_ADMIN,
]; ];
@ -66,7 +66,6 @@ class translate extends common
'notification' => $response ? helper::translate('Copie terminée avec succès') : 'Copie terminée avec des erreurs', 'notification' => $response ? helper::translate('Copie terminée avec succès') : 'Copie terminée avec des erreurs',
'state' => $response 'state' => $response
]); ]);
} }
/** /**
@ -146,24 +145,24 @@ class translate extends common
// tableau des langues installées // tableau des langues installées
if (is_dir(self::DATA_DIR . $key)) { if (is_dir(self::DATA_DIR . $key)) {
if (self::$i18nUI === $key) { if (self::$i18nUI === $key) {
$message = helper::translate('Langue par défaut'); $messageLocale = helper::translate('Langue par défaut');
} elseif (isset($_COOKIE['ZWII_CONTENT']) && $_COOKIE['ZWII_CONTENT'] === $key) { } elseif (isset($_COOKIE['ZWII_CONTENT']) && $_COOKIE['ZWII_CONTENT'] === $key) {
$message = helper::translate('Langue du site sélectionnée'); $messageLocale = helper::translate('Langue du site sélectionnée');
} else { } else {
$message = ''; $messageLocale = '';
} }
self::$languagesInstalled[] = [ self::$languagesInstalled[] = [
template::flag($key, '20 %'), template::flag($key, '20 %'),
$value . ' (' . $key . ')', $value . ' (' . $key . ')',
$message, $messageLocale,
template::button('translateContentLanguageEdit' . $key, [ template::button('translateContentLanguageLocaleEdit' . $key, [
'href' => helper::baseUrl() . $this->getUrl(0) . '/locale/' . $key, 'href' => helper::baseUrl() . $this->getUrl(0) . '/locale/' . $key,
'value' => template::ico('pencil'), 'value' => template::ico('pencil'),
'help' => 'Éditer' 'help' => 'Éditer'
]), ]),
template::button('translateContentLanguageDelete' . $key, [ template::button('translateContentLanguageLocaleDelete' . $key, [
'class' => 'translateDelete buttonRed' . ($message ? ' disabled' : ''), 'class' => 'translateDeleteLocale buttonRed' . ($messageLocale ? ' disabled' : ''),
'href' => helper::baseUrl() . $this->getUrl(0) . '/delete/' . $key . '/' . $_SESSION['csrf'], 'href' => helper::baseUrl() . $this->getUrl(0) . '/delete/locale/' . $key . '/' . $_SESSION['csrf'],
'value' => template::ico('trash'), 'value' => template::ico('trash'),
'help' => 'Supprimer', 'help' => 'Supprimer',
]) ])
@ -182,21 +181,35 @@ class translate extends common
} }
// Construit le tableau des langues de l'UI // Construit le tableau des langues de l'UI
$usersUI = [];
$users = $this->getData(['user']);
foreach ($users as $key => $value) {
array_push($usersUI, $this->getData(['user', $key, 'language']));
}
// Construction du tableau
foreach ($files as $file) { foreach ($files as $file) {
// La langue est-elle référencée ? // La langue est-elle référencée ?
if (array_key_exists(basename($file, '.json'), self::$languages)) { if (array_key_exists(basename($file, '.json'), self::$languages)) {
//self::$i18nFiles[basename($file, '.json')] = self::$languages[basename($file, '.json')]; //self::$i18nFiles[basename($file, '.json')] = self::$languages[basename($file, '.json')];
$selected = basename($file, '.json'); $selected = basename($file, '.json');
self::$languagesUiInstalled[$file] = [ self::$languagesUiInstalled[$file] = [
self::$languages[$selected],
template::flag($selected, '20 %'), template::flag($selected, '20 %'),
self::$languages[$selected],
self::$i18nUI === $selected ? helper::translate('Interface') : '', self::$i18nUI === $selected ? helper::translate('Interface') : '',
'', template::button('translateContentLanguageUIEdit' . basename($file, '.json'), [
template::button('translateContentLanguageEdit' . $file, [
'href' => helper::baseUrl() . $this->getUrl(0) . '/ui/' . $selected, 'href' => helper::baseUrl() . $this->getUrl(0) . '/ui/' . $selected,
'value' => template::ico('pencil'), 'value' => template::ico('pencil'),
'help' => 'Éditer', 'help' => 'Éditer',
'disabled' => 'fr_FR' === $selected 'disabled' => 'fr_FR' === $selected
]),
template::button('translateContentLanguageUIDelete' . basename($file, '.json'), [
'class' => 'translateDeleteUI buttonRed' . (in_array(basename($file, '.json'), $usersUI) ? ' disabled' : ''),
'href' => helper::baseUrl() . $this->getUrl(0) . '/delete/ui/' . basename($file, '.json') . '/' . $_SESSION['csrf'],
'value' => template::ico('trash'),
'help' => 'Supprimer',
]) ])
]; ];
} }
@ -448,9 +461,10 @@ class translate extends common
public function delete() public function delete()
{ {
// Jeton incorrect ou URl avec le code langue incorrecte // Jeton incorrect ou URl avec le code langue incorrecte
$lang = $this->getUrl(2); $target = $this->getUrl(2);
$lang = $this->getUrl(3);
if ( if (
$this->getUrl(3) !== $_SESSION['csrf'] $this->getUrl(4) !== $_SESSION['csrf']
|| !array_key_exists($lang, self::$languages) || !array_key_exists($lang, self::$languages)
) { ) {
// Valeurs en sortie // Valeurs en sortie
@ -460,7 +474,9 @@ class translate extends common
'notification' => helper::translate('Action interdite') 'notification' => helper::translate('Action interdite')
]); ]);
} }
// Effacement d'une langue installée switch ($target) {
case 'locale':
// Effacement d'une site dans une langue
if (is_dir(self::DATA_DIR . $lang) === true) { if (is_dir(self::DATA_DIR . $lang) === true) {
$success = $this->removeDir(self::DATA_DIR . $lang); $success = $this->removeDir(self::DATA_DIR . $lang);
} }
@ -470,6 +486,24 @@ class translate extends common
'notification' => $success ? helper::translate('Traduction supprimée') : helper::translate('Erreur inconnue'), 'notification' => $success ? helper::translate('Traduction supprimée') : helper::translate('Erreur inconnue'),
'state' => $success 'state' => $success
]); ]);
break;
case 'ui' :
// Effacement d'une langue de l'interface
if (file_exists(self::I18N_DIR . $lang . '.json') === true) {
$success =unlink(self::I18N_DIR . $lang . '.json');
}
// Valeurs en sortie
$this->addOutput([
'redirect' => helper::baseUrl() . 'translate',
'notification' => $success ? helper::translate('Traduction supprimée') : helper::translate('Erreur inconnue'),
'state' => $success
]);
break;
default:
# Do nothing
break;
}
} }
/* /*

View File

@ -56,7 +56,7 @@
<div class="row"> <div class="row">
<div class="col12"> <div class="col12">
<?php if ($module::$languagesUiInstalled) : ?> <?php if ($module::$languagesUiInstalled) : ?>
<?php echo template::table([3, 1, 1, 6, 1], $module::$languagesUiInstalled, ['Langues', '', '', '', '']); ?> <?php echo template::table([1, 4, 5, 1, 1], $module::$languagesUiInstalled, ['Langues', '', '', '', '']); ?>
<?php endif; ?> <?php endif; ?>
</div> </div>
</div> </div>
@ -65,7 +65,7 @@
<div class="row"> <div class="row">
<div class="col12"> <div class="col12">
<?php if ($module::$languagesInstalled) : ?> <?php if ($module::$languagesInstalled) : ?>
<?php echo template::table([1, 3, 6, 1, 1], $module::$languagesInstalled, ['Langues', '', '', '', '']); ?> <?php echo template::table([1, 4, 5, 1, 1], $module::$languagesInstalled, ['Langues', '', '', '', '']); ?>
<?php endif; ?> <?php endif; ?>
</div> </div>
</div> </div>