From e45c240f3e98b9b9fd60928e22e731a155fc45ec Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Tue, 27 Dec 2022 17:59:04 +0100 Subject: [PATCH] 12010 Installation d'une langue depuis le store --- core/module/translate/translate.php | 88 ++++++++++--------- core/module/translate/view/index/index.js.php | 1 - core/module/translate/view/index/index.php | 10 +-- 3 files changed, 50 insertions(+), 49 deletions(-) diff --git a/core/module/translate/translate.php b/core/module/translate/translate.php index b98bafb9..440cc9d0 100644 --- a/core/module/translate/translate.php +++ b/core/module/translate/translate.php @@ -55,16 +55,37 @@ class translate extends common public static $i18nFiles = []; /** - * Met à jour les traduction du site + * Met à jour les traduction du site depuis le store */ public function update() { - $response = $this->copyDir('core/module/install/ressource/i18n', self::I18N_DIR); + // Jeton incorrect ou URl avec le code langue incorrecte + if ( + $this->getUrl(3) !== $_SESSION['csrf'] + ) { + // Valeurs en sortie + $this->addOutput([ + 'redirect' => helper::baseUrl() . 'translate', + 'state' => false, + 'notification' => helper::translate('Action interdite') + ]); + } + + // Upload et sauver le fichier de langue + $response = helper::getUrlContents(common::ZWII_UI_URL . $this->getUrl(2) . '.json'); + if ($response !== false) { + $response = file_put_contents(self::I18N_DIR . $this->getUrl(2) . '.json', $response); + // Régénère le descripteur + unlink(self::I18N_DIR . 'enum.json'); + $this->getUiLanguages(); + } + + // Valeurs en sortie $this->addOutput([ 'redirect' => helper::baseUrl() . 'translate', - 'notification' => $response ? helper::translate('Copie terminée avec succès') : 'Copie terminée avec des erreurs', - 'state' => $response + 'notification' => is_int($response) ? helper::translate('Copie terminée avec succès') : 'Copie terminée avec des erreurs', + 'state' => is_int($response) ]); } @@ -191,7 +212,7 @@ class translate extends common // Construction du tableau à partir des langues disponibles dans le store foreach ($storeUI as $file => $value) { // La langue est-elle référencée ? - if (array_key_exists(basename($file, '.json'), self::$languages)) { + if (array_key_exists(basename($file, '.json'), $installedUI)) { // La langue est déjà installée self::$languagesUiInstalled[$file] = [ template::flag($file, '20 %'), @@ -204,24 +225,39 @@ class translate extends common 'disabled' => 'fr_FR' === $file ]), template::button('translateContentLanguageUIDownload' . $file, [ - 'class' => 'translateDownloadUI', 'href' => helper::baseUrl() . $this->getUrl(0) . '/download/' . $file . '/' . $_SESSION['csrf'], 'value' => template::ico('download'), 'help' => 'Télécharger', ]), template::button('translateContentLanguageUIDownload' . $file, [ - 'class' => 'translateDownloadUI', + 'class' => version_compare($installedUI[$file]['version'], $storeUI[$file]['version']) < 0 ? 'buttonGreen' : '', 'href' => helper::baseUrl() . $this->getUrl(0) . '/update/' . $file . '/' . $_SESSION['csrf'], 'value' => template::ico('update'), - 'help' => 'Actualiser', + 'help' => 'Mettre à jour', ]), template::button('translateContentLanguageUIDelete' . $file, [ - 'class' => 'translateDeleteUI buttonRed' . (in_array($file, $usersUI) ? ' disabled' : ''), + 'class' => 'buttonRed' . (in_array($file, $usersUI) ? ' disabled' : ''), 'href' => helper::baseUrl() . $this->getUrl(0) . '/delete/ui/' . $file . '/' . $_SESSION['csrf'], 'value' => template::ico('trash'), 'help' => 'Supprimer', ]), ]; + } else { + // La langue n'est pas installée + self::$languagesUiInstalled[$file] = [ + template::flag($file, '20 %'), + self::$languages[$file], + self::$i18nUI === $file ? helper::translate('Interface') : '', + '', + '', + template::button('translateContentLanguageUIDownload' . $file, [ + 'class' => 'buttonGreen', + 'href' => helper::baseUrl() . $this->getUrl(0) . '/update/' . $file . '/' . $_SESSION['csrf'], + 'value' => template::ico('shopping-basket'), + 'help' => 'Installer', + ]), + '' + ]; } } @@ -276,40 +312,6 @@ class translate extends common ]); } - /*** - * Ajouter des langues de l'UI depuis le dépôt - */ - public function store() - { - - - - // Préparation du formulaire - - // Récupérer la liste des langues disponibles en ligne - $storeUI = helper::getUrlContents(common::ZWII_UI_URL . '/enum.json'); - - // Récupérer les langues installées - $installedUI = $this->getUiLanguages(); - - echo "
";
-		var_dump($storeUI);
-		var_dump($installedUI);
-		die();
-		// Parcourir le tableau des langues installées
-		foreach ($installedUI as $key => $value) {
-			// La langue est installée, la mise à jour détermine la couleur de l'icône
-			if (array_key_exists($key, $installedUI)) {
-				$update = $installedUI;
-				self::$languagesUiInstalled[$key] = [
-					template::flag($key, '20 %'),
-					self::$languages[$key],
-
-				];
-			}
-		}
-	}
-
 
 	/**
 	 * Edition des paramètres de la langue de contenu
diff --git a/core/module/translate/view/index/index.js.php b/core/module/translate/view/index/index.js.php
index 2c0ab163..cce8569f 100644
--- a/core/module/translate/view/index/index.js.php
+++ b/core/module/translate/view/index/index.js.php
@@ -24,7 +24,6 @@ $(document).ready(function() {
     $("#uiContainer").hide();
     $(".contentButtonContainer").hide();
     $("#" + translateLayout + "Container").show();
-    $("." + translateLayout + "ButtonContainer").show();
     $("#translate" + capitalizeFirstLetter(translateLayout) + "Button").addClass("activeButton");
 
 
diff --git a/core/module/translate/view/index/index.php b/core/module/translate/view/index/index.php
index 79e78aee..a685cce3 100644
--- a/core/module/translate/view/index/index.php
+++ b/core/module/translate/view/index/index.php
@@ -35,21 +35,21 @@
 
 
 
- 'Site', - 'class' => 'buttonTab' - ]); ?> 'Interface', 'class' => 'buttonTab' ]); ?> + 'Site', + 'class' => 'buttonTab' + ]); ?>
- +