12010 Langues de l'UI en cours reste le store à actualiser
This commit is contained in:
parent
d208512b45
commit
1336c8c5db
@ -46,9 +46,13 @@ class common
|
||||
// Contrôle d'édition temps maxi en secondes avant déconnexion 30 minutes
|
||||
const ACCESS_TIMER = 1800;
|
||||
|
||||
// Numéro de version
|
||||
// URL autoupdate
|
||||
const ZWII_UPDATE_URL = 'https://forge.chapril.org/ZwiiCMS-Team/update/raw/branch/master/';
|
||||
|
||||
// URL langues de l'UI en ligne
|
||||
const ZWII_UI_URL = 'https://forge.chapril.org/ZwiiCMS-Team/zwiicms-translations/raw/branch/master/';
|
||||
|
||||
// Numéro de version et branche pour l'autoupdate
|
||||
const ZWII_VERSION = '12.0.10';
|
||||
const ZWII_UPDATE_CHANNEL = "v12";
|
||||
|
||||
|
@ -172,45 +172,55 @@ class translate extends common
|
||||
// Activation du bouton de copie
|
||||
self::$siteCopy = count(self::$languagesInstalled) > 1 ? false : true;
|
||||
|
||||
// --------------------------------------------------------------------------------------------------
|
||||
// Onglet des langues de l'interface
|
||||
if (is_dir(self::I18N_DIR)) {
|
||||
$dir = getcwd();
|
||||
chdir(self::I18N_DIR);
|
||||
$files = glob('*.json');
|
||||
chdir($dir);
|
||||
}
|
||||
|
||||
// Construit le tableau des langues de l'UI
|
||||
// Langues attachées à des utilisateurs non effaçables
|
||||
$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) {
|
||||
// Langues installées
|
||||
$installedUI = $this->getUiLanguages();
|
||||
|
||||
// Récupérer la liste des langues disponibles en ligne
|
||||
$storeUI = json_decode(helper::getUrlContents(common::ZWII_UI_URL . '/enum.json'), true);
|
||||
|
||||
// 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)) {
|
||||
|
||||
//self::$i18nFiles[basename($file, '.json')] = self::$languages[basename($file, '.json')];
|
||||
$selected = basename($file, '.json');
|
||||
// La langue est déjà installée
|
||||
self::$languagesUiInstalled[$file] = [
|
||||
template::flag($selected, '20 %'),
|
||||
self::$languages[$selected],
|
||||
self::$i18nUI === $selected ? helper::translate('Interface') : '',
|
||||
template::button('translateContentLanguageUIEdit' . basename($file, '.json'), [
|
||||
'href' => helper::baseUrl() . $this->getUrl(0) . '/ui/' . $selected,
|
||||
template::flag($file, '20 %'),
|
||||
self::$languages[$file],
|
||||
self::$i18nUI === $file ? helper::translate('Interface') : '',
|
||||
template::button('translateContentLanguageUIEdit' . $file, [
|
||||
'href' => helper::baseUrl() . $this->getUrl(0) . '/ui/' . $file,
|
||||
'value' => template::ico('pencil'),
|
||||
'help' => 'Éditer',
|
||||
'disabled' => 'fr_FR' === $selected
|
||||
'disabled' => 'fr_FR' === $file
|
||||
]),
|
||||
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'],
|
||||
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',
|
||||
'href' => helper::baseUrl() . $this->getUrl(0) . '/update/' . $file . '/' . $_SESSION['csrf'],
|
||||
'value' => template::ico('update'),
|
||||
'help' => 'Actualiser',
|
||||
]),
|
||||
template::button('translateContentLanguageUIDelete' . $file, [
|
||||
'class' => 'translateDeleteUI buttonRed' . (in_array($file, $usersUI) ? ' disabled' : ''),
|
||||
'href' => helper::baseUrl() . $this->getUrl(0) . '/delete/ui/' . $file . '/' . $_SESSION['csrf'],
|
||||
'value' => template::ico('trash'),
|
||||
'help' => 'Supprimer',
|
||||
])
|
||||
]),
|
||||
];
|
||||
}
|
||||
}
|
||||
@ -266,6 +276,41 @@ 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 "<pre>";
|
||||
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
|
||||
*/
|
||||
@ -488,10 +533,10 @@ class translate extends common
|
||||
]);
|
||||
break;
|
||||
|
||||
case 'ui' :
|
||||
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');
|
||||
$success = unlink(self::I18N_DIR . $lang . '.json');
|
||||
}
|
||||
// Valeurs en sortie
|
||||
$this->addOutput([
|
||||
@ -499,6 +544,8 @@ class translate extends common
|
||||
'notification' => $success ? helper::translate('Traduction supprimée') : helper::translate('Erreur inconnue'),
|
||||
'state' => $success
|
||||
]);
|
||||
unlink(self::I18N_DIR . 'enum.json');
|
||||
$this->getUiLanguages();
|
||||
break;
|
||||
default:
|
||||
# Do nothing
|
||||
@ -506,6 +553,7 @@ class translate extends common
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Traitement du changement de langue
|
||||
* Fonction utilisée par le noyau
|
||||
@ -527,4 +575,36 @@ class translate extends common
|
||||
'redirect' => helper::baseUrl() . $this->getData(['locale', $this->getUrl(2), 'homePageId'])
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Génère un fichier d'énumération des langues de l'UI
|
||||
*/
|
||||
private function getUiLanguages()
|
||||
{
|
||||
$enums = json_decode(helper::getUrlContents(self::I18N_DIR . '/enum.json'), true);
|
||||
|
||||
// Générer une énumération absente
|
||||
if (is_array($enums) === false) {
|
||||
if (is_dir(self::I18N_DIR) === false) {
|
||||
mkdir(self::I18N_DIR);
|
||||
}
|
||||
$dir = getcwd();
|
||||
chdir(self::I18N_DIR);
|
||||
$files = glob('*.json');
|
||||
chdir($dir);
|
||||
$enums = [];
|
||||
foreach ($files as $file => $value) {
|
||||
if (basename($value, '.json') === 'enum.json') {
|
||||
continue;
|
||||
}
|
||||
$enums[basename($value, '.json')] = [
|
||||
'version' => 1.0,
|
||||
'date' => 1672052400
|
||||
];
|
||||
}
|
||||
file_put_contents(self::I18N_DIR . 'enum.json', json_encode($enums));
|
||||
}
|
||||
|
||||
return ($enums);
|
||||
}
|
||||
}
|
||||
|
@ -21,7 +21,6 @@
|
||||
display: block;
|
||||
}
|
||||
|
||||
|
||||
.buttonNotice {
|
||||
border: 2px solid red !important;
|
||||
border-radius: 2px;
|
||||
|
@ -15,18 +15,18 @@
|
||||
$(document).ready(function() {
|
||||
var translateLayout = getCookie("translateLayout");
|
||||
if (translateLayout == null) {
|
||||
translateLayout = "ui";
|
||||
setCookie("translateLayout", "ui");
|
||||
translateLayout = "content";
|
||||
setCookie("translateLayout", "content");
|
||||
// Afficher les boutons liés au contenu
|
||||
$(".contentButtonContainer").show();
|
||||
}
|
||||
$("#contentContainer").hide();
|
||||
$("#uiContainer").hide();
|
||||
$(".contentButtonContainer").hide();
|
||||
$("#" + translateLayout + "Container").show();
|
||||
$("." + translateLayout + "ButtonContainer").show();
|
||||
$("#translate" + capitalizeFirstLetter(translateLayout) + "Button").addClass("activeButton");
|
||||
// Afficher les boutons liés au contenu
|
||||
$(".translateButtonAddContent").show();
|
||||
$(".translateButtonCopyContent").show();
|
||||
// Cacher le bouton de mise à jour
|
||||
$(".translateButtonUpdateContent").hide();
|
||||
|
||||
|
||||
});
|
||||
|
||||
@ -39,10 +39,7 @@ $("#translateUiButton").on("click", function() {
|
||||
$("#translateContentButton").removeClass("activeButton");
|
||||
setCookie("translateLayout", "ui");
|
||||
// Cacher les boutons liés au contenu
|
||||
$(".translateButtonAddContent").hide();
|
||||
$(".translateButtonCopyContent").hide();
|
||||
// Afficher le bouton de mise à jour
|
||||
$(".translateButtonUpdateContent").show();
|
||||
$(".contentButtonContainer").hide();
|
||||
|
||||
});
|
||||
$("#translateContentButton").on("click", function() {
|
||||
@ -52,10 +49,7 @@ $("#translateContentButton").on("click", function() {
|
||||
$("#translateUiButton").removeClass("activeButton");
|
||||
setCookie("translateLayout", "content");
|
||||
// Afficher les boutons liés au contenu
|
||||
$(".translateButtonAddContent").show();
|
||||
$(".translateButtonCopyContent").show();
|
||||
// Cacher le bouton de mise à jour
|
||||
$(".translateButtonUpdateContent").hide();
|
||||
$(".contentButtonContainer").show();
|
||||
});
|
||||
|
||||
/**
|
||||
|
@ -16,7 +16,7 @@
|
||||
'help' => 'Consulter l\'aide en ligne'
|
||||
]);*/ ?>
|
||||
</div>
|
||||
<div class="col1 offset8 translateButtonCopyContent">
|
||||
<div class="col1 offset8 contentButtonContainer">
|
||||
<?php echo template::button('translateButtonCopyContent', [
|
||||
'href' => helper::baseUrl() . 'translate/copy',
|
||||
'value' => template::ico('docs'),
|
||||
@ -24,7 +24,7 @@
|
||||
'help' => 'Copie de contenus localisés'
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col1 translateButtonAddContent">
|
||||
<div class="col1 contentButtonContainer">
|
||||
<?php echo template::button('translateButtonAddContent', [
|
||||
'href' => helper::baseUrl() . 'translate/add',
|
||||
'value' => template::ico('plus'),
|
||||
@ -32,13 +32,6 @@
|
||||
'help' => 'Nouveau contenu localisé'
|
||||
]); ?>
|
||||
</div>
|
||||
<div class="col1 offset9 translateButtonUpdateContent">
|
||||
<?php echo template::button('translateButtonUpdateContent', [
|
||||
'href' => helper::baseUrl() . 'translate/update',
|
||||
'value' => template::ico('update'),
|
||||
'help' => 'Mise à jour des langues de l\'interface'
|
||||
]); ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tab">
|
||||
@ -56,7 +49,7 @@
|
||||
<div class="row">
|
||||
<div class="col12">
|
||||
<?php if ($module::$languagesUiInstalled) : ?>
|
||||
<?php echo template::table([1, 4, 5, 1, 1], $module::$languagesUiInstalled, ['Langues', '', '', '', '']); ?>
|
||||
<?php echo template::table([1, 4, 4, 1, 1, 1, 1], $module::$languagesUiInstalled, ['Langues', '', '','', '', '', '']); ?>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
|
0
core/module/translate/view/store/store.php
Normal file
0
core/module/translate/view/store/store.php
Normal file
Loading…
Reference in New Issue
Block a user