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
|
// Contrôle d'édition temps maxi en secondes avant déconnexion 30 minutes
|
||||||
const ACCESS_TIMER = 1800;
|
const ACCESS_TIMER = 1800;
|
||||||
|
|
||||||
// Numéro de version
|
// URL autoupdate
|
||||||
const ZWII_UPDATE_URL = 'https://forge.chapril.org/ZwiiCMS-Team/update/raw/branch/master/';
|
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_VERSION = '12.0.10';
|
||||||
const ZWII_UPDATE_CHANNEL = "v12";
|
const ZWII_UPDATE_CHANNEL = "v12";
|
||||||
|
|
||||||
|
@ -172,45 +172,55 @@ class translate extends common
|
|||||||
// Activation du bouton de copie
|
// Activation du bouton de copie
|
||||||
self::$siteCopy = count(self::$languagesInstalled) > 1 ? false : true;
|
self::$siteCopy = count(self::$languagesInstalled) > 1 ? false : true;
|
||||||
|
|
||||||
|
// --------------------------------------------------------------------------------------------------
|
||||||
// Onglet des langues de l'interface
|
// 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 = [];
|
$usersUI = [];
|
||||||
$users = $this->getData(['user']);
|
$users = $this->getData(['user']);
|
||||||
foreach ($users as $key => $value) {
|
foreach ($users as $key => $value) {
|
||||||
array_push($usersUI, $this->getData(['user', $key, 'language']));
|
array_push($usersUI, $this->getData(['user', $key, 'language']));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Construction du tableau
|
// Langues installées
|
||||||
foreach ($files as $file) {
|
$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 ?
|
// 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)) {
|
||||||
|
// La langue est déjà installée
|
||||||
//self::$i18nFiles[basename($file, '.json')] = self::$languages[basename($file, '.json')];
|
|
||||||
$selected = basename($file, '.json');
|
|
||||||
self::$languagesUiInstalled[$file] = [
|
self::$languagesUiInstalled[$file] = [
|
||||||
template::flag($selected, '20 %'),
|
template::flag($file, '20 %'),
|
||||||
self::$languages[$selected],
|
self::$languages[$file],
|
||||||
self::$i18nUI === $selected ? helper::translate('Interface') : '',
|
self::$i18nUI === $file ? helper::translate('Interface') : '',
|
||||||
template::button('translateContentLanguageUIEdit' . basename($file, '.json'), [
|
template::button('translateContentLanguageUIEdit' . $file, [
|
||||||
'href' => helper::baseUrl() . $this->getUrl(0) . '/ui/' . $selected,
|
'href' => helper::baseUrl() . $this->getUrl(0) . '/ui/' . $file,
|
||||||
'value' => template::ico('pencil'),
|
'value' => template::ico('pencil'),
|
||||||
'help' => 'Éditer',
|
'help' => 'Éditer',
|
||||||
'disabled' => 'fr_FR' === $selected
|
'disabled' => 'fr_FR' === $file
|
||||||
]),
|
]),
|
||||||
template::button('translateContentLanguageUIDelete' . basename($file, '.json'), [
|
template::button('translateContentLanguageUIDownload' . $file, [
|
||||||
'class' => 'translateDeleteUI buttonRed' . (in_array(basename($file, '.json'), $usersUI) ? ' disabled' : ''),
|
'class' => 'translateDownloadUI',
|
||||||
'href' => helper::baseUrl() . $this->getUrl(0) . '/delete/ui/' . basename($file, '.json') . '/' . $_SESSION['csrf'],
|
'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'),
|
'value' => template::ico('trash'),
|
||||||
'help' => 'Supprimer',
|
'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
|
* Edition des paramètres de la langue de contenu
|
||||||
*/
|
*/
|
||||||
@ -488,10 +533,10 @@ class translate extends common
|
|||||||
]);
|
]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'ui' :
|
case 'ui':
|
||||||
// Effacement d'une langue de l'interface
|
// Effacement d'une langue de l'interface
|
||||||
if (file_exists(self::I18N_DIR . $lang . '.json') === true) {
|
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
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
@ -499,6 +544,8 @@ 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
|
||||||
]);
|
]);
|
||||||
|
unlink(self::I18N_DIR . 'enum.json');
|
||||||
|
$this->getUiLanguages();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
# Do nothing
|
# Do nothing
|
||||||
@ -506,6 +553,7 @@ class translate extends common
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Traitement du changement de langue
|
* Traitement du changement de langue
|
||||||
* Fonction utilisée par le noyau
|
* Fonction utilisée par le noyau
|
||||||
@ -527,4 +575,36 @@ class translate extends common
|
|||||||
'redirect' => helper::baseUrl() . $this->getData(['locale', $this->getUrl(2), 'homePageId'])
|
'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;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.buttonNotice {
|
.buttonNotice {
|
||||||
border: 2px solid red !important;
|
border: 2px solid red !important;
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
|
@ -15,18 +15,18 @@
|
|||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
var translateLayout = getCookie("translateLayout");
|
var translateLayout = getCookie("translateLayout");
|
||||||
if (translateLayout == null) {
|
if (translateLayout == null) {
|
||||||
translateLayout = "ui";
|
translateLayout = "content";
|
||||||
setCookie("translateLayout", "ui");
|
setCookie("translateLayout", "content");
|
||||||
|
// Afficher les boutons liés au contenu
|
||||||
|
$(".contentButtonContainer").show();
|
||||||
}
|
}
|
||||||
$("#contentContainer").hide();
|
$("#contentContainer").hide();
|
||||||
$("#uiContainer").hide();
|
$("#uiContainer").hide();
|
||||||
|
$(".contentButtonContainer").hide();
|
||||||
$("#" + translateLayout + "Container").show();
|
$("#" + translateLayout + "Container").show();
|
||||||
|
$("." + translateLayout + "ButtonContainer").show();
|
||||||
$("#translate" + capitalizeFirstLetter(translateLayout) + "Button").addClass("activeButton");
|
$("#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");
|
$("#translateContentButton").removeClass("activeButton");
|
||||||
setCookie("translateLayout", "ui");
|
setCookie("translateLayout", "ui");
|
||||||
// Cacher les boutons liés au contenu
|
// Cacher les boutons liés au contenu
|
||||||
$(".translateButtonAddContent").hide();
|
$(".contentButtonContainer").hide();
|
||||||
$(".translateButtonCopyContent").hide();
|
|
||||||
// Afficher le bouton de mise à jour
|
|
||||||
$(".translateButtonUpdateContent").show();
|
|
||||||
|
|
||||||
});
|
});
|
||||||
$("#translateContentButton").on("click", function() {
|
$("#translateContentButton").on("click", function() {
|
||||||
@ -52,10 +49,7 @@ $("#translateContentButton").on("click", function() {
|
|||||||
$("#translateUiButton").removeClass("activeButton");
|
$("#translateUiButton").removeClass("activeButton");
|
||||||
setCookie("translateLayout", "content");
|
setCookie("translateLayout", "content");
|
||||||
// Afficher les boutons liés au contenu
|
// Afficher les boutons liés au contenu
|
||||||
$(".translateButtonAddContent").show();
|
$(".contentButtonContainer").show();
|
||||||
$(".translateButtonCopyContent").show();
|
|
||||||
// Cacher le bouton de mise à jour
|
|
||||||
$(".translateButtonUpdateContent").hide();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
'help' => 'Consulter l\'aide en ligne'
|
'help' => 'Consulter l\'aide en ligne'
|
||||||
]);*/ ?>
|
]);*/ ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col1 offset8 translateButtonCopyContent">
|
<div class="col1 offset8 contentButtonContainer">
|
||||||
<?php echo template::button('translateButtonCopyContent', [
|
<?php echo template::button('translateButtonCopyContent', [
|
||||||
'href' => helper::baseUrl() . 'translate/copy',
|
'href' => helper::baseUrl() . 'translate/copy',
|
||||||
'value' => template::ico('docs'),
|
'value' => template::ico('docs'),
|
||||||
@ -24,7 +24,7 @@
|
|||||||
'help' => 'Copie de contenus localisés'
|
'help' => 'Copie de contenus localisés'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="col1 translateButtonAddContent">
|
<div class="col1 contentButtonContainer">
|
||||||
<?php echo template::button('translateButtonAddContent', [
|
<?php echo template::button('translateButtonAddContent', [
|
||||||
'href' => helper::baseUrl() . 'translate/add',
|
'href' => helper::baseUrl() . 'translate/add',
|
||||||
'value' => template::ico('plus'),
|
'value' => template::ico('plus'),
|
||||||
@ -32,13 +32,6 @@
|
|||||||
'help' => 'Nouveau contenu localisé'
|
'help' => 'Nouveau contenu localisé'
|
||||||
]); ?>
|
]); ?>
|
||||||
</div>
|
</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>
|
||||||
|
|
||||||
<div class="tab">
|
<div class="tab">
|
||||||
@ -56,7 +49,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([1, 4, 5, 1, 1], $module::$languagesUiInstalled, ['Langues', '', '', '', '']); ?>
|
<?php echo template::table([1, 4, 4, 1, 1, 1, 1], $module::$languagesUiInstalled, ['Langues', '', '','', '', '', '']); ?>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</div>
|
</div>
|
||||||
</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