fix store unavailable
This commit is contained in:
parent
ee38c83414
commit
ada386a428
@ -26,10 +26,11 @@ class language extends common
|
|||||||
// Ajouter une langue de contenu
|
// Ajouter une langue de contenu
|
||||||
'edit' => self::GROUP_ADMIN,
|
'edit' => self::GROUP_ADMIN,
|
||||||
// Éditer une langue de l'UI
|
// Éditer une langue de l'UI
|
||||||
'config' => self::GROUP_ADMIN,
|
'locale' => self::GROUP_ADMIN,
|
||||||
// Éditer une langue de contenu
|
// Éditer une langue de contenu
|
||||||
'delete' => self::GROUP_ADMIN,
|
'delete' => self::GROUP_ADMIN,
|
||||||
// Effacer une langue de contenu ou de l'interface
|
// Effacer une langue de contenu ou de l'interface
|
||||||
|
'content' => self::GROUP_VISITOR,
|
||||||
'update' => self::GROUP_ADMIN,
|
'update' => self::GROUP_ADMIN,
|
||||||
'default' => self::GROUP_ADMIN
|
'default' => self::GROUP_ADMIN
|
||||||
];
|
];
|
||||||
@ -40,6 +41,8 @@ class language extends common
|
|||||||
public static $translateOptions = [];
|
public static $translateOptions = [];
|
||||||
|
|
||||||
// Page pour la configuration dans la langue
|
// Page pour la configuration dans la langue
|
||||||
|
public static $pagesList = [];
|
||||||
|
public static $orphansList = [];
|
||||||
public static $pages = '';
|
public static $pages = '';
|
||||||
|
|
||||||
// Liste des langues installées
|
// Liste des langues installées
|
||||||
@ -180,6 +183,52 @@ class language extends common
|
|||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
// --------------------------------------------------------------------------------------------------
|
||||||
|
// Langues du site
|
||||||
|
// --------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
foreach (self::$languages as $key => $value) {
|
||||||
|
// tableau des langues installées
|
||||||
|
if (is_dir(self::DATA_DIR . $key)) {
|
||||||
|
if (
|
||||||
|
file_exists(self::DATA_DIR . $key . '/page.json') &&
|
||||||
|
file_exists(self::DATA_DIR . $key . '/module.json') &&
|
||||||
|
file_exists(self::DATA_DIR . $key . '/locale.json')
|
||||||
|
) {
|
||||||
|
if (file_exists(self::DATA_DIR . $key . '/.default')) {
|
||||||
|
$messageLocale = helper::translate('Langue par défaut');
|
||||||
|
} elseif (isset($_SESSION['ZWII_CONTENT']) && $_SESSION['ZWII_CONTENT'] === $key) {
|
||||||
|
$messageLocale = helper::translate('Langue du site sélectionnée');
|
||||||
|
} else {
|
||||||
|
$messageLocale = '';
|
||||||
|
}
|
||||||
|
self::$languagesInstalled[] = [
|
||||||
|
template::flag($key, '20 %') . ' ' . $value . ' (' . $key . ')',
|
||||||
|
$messageLocale,
|
||||||
|
template::button('translateContentLanguageLocaleEdit' . $key, [
|
||||||
|
'class' => file_exists(self::DATA_DIR . $key . '/locale.json') ? '' : ' disabled',
|
||||||
|
'href' => helper::baseUrl() . $this->getUrl(0) . '/locale/' . $key,
|
||||||
|
'value' => template::ico('pencil'),
|
||||||
|
'help' => 'Éditer'
|
||||||
|
]),
|
||||||
|
template::button('translateContentLanguageLocaleDelete' . $key, [
|
||||||
|
'class' => 'translateDelete buttonRed' . ($messageLocale ? ' disabled' : ''),
|
||||||
|
'href' => helper::baseUrl() . $this->getUrl(0) . '/delete/locale/' . $key,
|
||||||
|
'value' => template::ico('trash'),
|
||||||
|
'help' => 'Supprimer',
|
||||||
|
])
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
// Activation du bouton de copie
|
||||||
|
self::$siteCopy = count(self::$languagesInstalled) > 1 ? false : true;
|
||||||
|
|
||||||
|
// --------------------------------------------------------------------------------------------------
|
||||||
|
// Langues de l'UI
|
||||||
|
// --------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
// Langues attachées à des utilisateurs non effaçables
|
// Langues attachées à des utilisateurs non effaçables
|
||||||
$usersUI = [];
|
$usersUI = [];
|
||||||
$users = $this->getData(['user']);
|
$users = $this->getData(['user']);
|
||||||
@ -196,7 +245,7 @@ class language extends common
|
|||||||
|
|
||||||
// Langues disponibles en ligne
|
// Langues disponibles en ligne
|
||||||
$storeUI = json_decode(helper::getUrlContents(self::ZWII_UI_URL . 'language.json'), true);
|
$storeUI = json_decode(helper::getUrlContents(self::ZWII_UI_URL . 'language.json'), true);
|
||||||
$storeUI = $storeUI['language'];
|
$storeUI = $storeUI ? $storeUI['language'] : null;
|
||||||
|
|
||||||
// Construction du tableau à partir des langues disponibles dans le store
|
// Construction du tableau à partir des langues disponibles dans le store
|
||||||
foreach ($installedUI as $file => $value) {
|
foreach ($installedUI as $file => $value) {
|
||||||
@ -206,7 +255,7 @@ class language extends common
|
|||||||
self::$languagesUiInstalled[$file] = [
|
self::$languagesUiInstalled[$file] = [
|
||||||
template::flag($file, '20 %') . ' ' . self::$languages[$file],
|
template::flag($file, '20 %') . ' ' . self::$languages[$file],
|
||||||
$value['version'],
|
$value['version'],
|
||||||
helper::dateUTF8('%d/%m/%Y', $value['date'], self::$i18nUI),
|
helper::dateUTF8('%d/%m/%Y', $value['date'], self::$i18nContent),
|
||||||
//self::$i18nUI === $file ? helper::translate('Interface') : '',
|
//self::$i18nUI === $file ? helper::translate('Interface') : '',
|
||||||
'',
|
'',
|
||||||
/*
|
/*
|
||||||
@ -219,7 +268,7 @@ class language extends common
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
template::button('translateContentLanguageUIDownload' . $file, [
|
template::button('translateContentLanguageUIDownload' . $file, [
|
||||||
'class' => version_compare($installedUI[$file]['version'], $storeUI[$file]['version']) < 0 ? 'buttonGreen' : '',
|
'class' => isset($storeUI[$file]['version']) && version_compare($installedUI[$file]['version'], $storeUI[$file]['version']) < 0 ? 'buttonGreen' : '',
|
||||||
'href' => helper::baseUrl() . $this->getUrl(0) . '/update/' . $file,
|
'href' => helper::baseUrl() . $this->getUrl(0) . '/update/' . $file,
|
||||||
'value' => template::ico('update'),
|
'value' => template::ico('update'),
|
||||||
'help' => 'Mettre à jour',
|
'help' => 'Mettre à jour',
|
||||||
@ -234,6 +283,7 @@ class language extends common
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Construction du tableau à partir des langues disponibles dans le store
|
// Construction du tableau à partir des langues disponibles dans le store
|
||||||
|
if ($storeUI) {
|
||||||
foreach ($storeUI as $file => $value) {
|
foreach ($storeUI as $file => $value) {
|
||||||
|
|
||||||
// La langue est-elle installée ?
|
// La langue est-elle installée ?
|
||||||
@ -241,7 +291,7 @@ class language extends common
|
|||||||
self::$languagesStore[$file] = [
|
self::$languagesStore[$file] = [
|
||||||
template::flag($file, '20 %') . ' ' . self::$languages[$file],
|
template::flag($file, '20 %') . ' ' . self::$languages[$file],
|
||||||
$value['version'],
|
$value['version'],
|
||||||
helper::dateUTF8('%d/%m/%Y', $value['date'], self::$i18nUI),
|
helper::dateUTF8('%d/%m/%Y', $value['date'], self::$i18nContent),
|
||||||
'',
|
'',
|
||||||
template::button('translateContentLanguageUIDownload' . $file, [
|
template::button('translateContentLanguageUIDownload' . $file, [
|
||||||
'class' => 'buttonGreen',
|
'class' => 'buttonGreen',
|
||||||
@ -252,11 +302,12 @@ class language extends common
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'title' => helper::translate('Langues de l\'interface'),
|
'title' => helper::translate('Langues'),
|
||||||
'view' => 'index'
|
'view' => 'index'
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
@ -283,7 +334,7 @@ class language extends common
|
|||||||
// Création du contenu
|
// Création du contenu
|
||||||
$this->initData('page', $lang);
|
$this->initData('page', $lang);
|
||||||
$this->initData('module', $lang);
|
$this->initData('module', $lang);
|
||||||
$this->initData('config', $lang);
|
$this->initData('locale', $lang);
|
||||||
|
|
||||||
|
|
||||||
// Valeurs en sortie
|
// Valeurs en sortie
|
||||||
@ -312,6 +363,113 @@ class language extends common
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Edition des paramètres de la langue de contenu
|
||||||
|
*/
|
||||||
|
public function locale()
|
||||||
|
{
|
||||||
|
// Action interdite ou URl avec le code langue incorrecte
|
||||||
|
$lang = $this->getUrl(2);
|
||||||
|
if (
|
||||||
|
array_key_exists($lang, self::$languages) === false
|
||||||
|
) {
|
||||||
|
// Valeurs en sortie
|
||||||
|
$this->addOutput([
|
||||||
|
'redirect' => helper::baseUrl() . 'language',
|
||||||
|
'state' => false,
|
||||||
|
'notification' => helper::translate('Action interdite')
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Soumission du formulaire
|
||||||
|
if (
|
||||||
|
$this->getUser('permission', __CLASS__, __FUNCTION__) === true &&
|
||||||
|
$this->isPost()
|
||||||
|
) {
|
||||||
|
|
||||||
|
// Sauvegarder les locales
|
||||||
|
$data = [
|
||||||
|
'locale' => [
|
||||||
|
'homePageId' => $this->getInput('localeHomePageId', helper::FILTER_ID, true),
|
||||||
|
'page404' => $this->getInput('localePage404'),
|
||||||
|
'page403' => $this->getInput('localePage403'),
|
||||||
|
'page302' => $this->getInput('localePage302'),
|
||||||
|
'legalPageId' => $this->getInput('localeLegalPageId'),
|
||||||
|
'searchPageId' => $this->getInput('localeSearchPageId'),
|
||||||
|
'poweredPageLabel' => empty($this->getInput('localePoweredPageLabel', helper::FILTER_STRING_SHORT)) ? 'Motorisé par' : $this->getInput('localePoweredPageLabel', helper::FILTER_STRING_SHORT),
|
||||||
|
'searchPageLabel' => empty($this->getInput('localeSearchPageLabel', helper::FILTER_STRING_SHORT)) ? 'Rechercher' : $this->getInput('localeSearchPageLabel', helper::FILTER_STRING_SHORT),
|
||||||
|
'legalPageLabel' => empty($this->getInput('localeLegalPageLabel', helper::FILTER_STRING_SHORT)) ? 'Mentions légales' : $this->getInput('localeLegalPageLabel', helper::FILTER_STRING_SHORT),
|
||||||
|
'sitemapPageLabel' => empty($this->getInput('localeSitemapPageLabel', helper::FILTER_STRING_SHORT)) ? 'Plan du site' : $this->getInput('localeSitemapPageLabel', helper::FILTER_STRING_SHORT),
|
||||||
|
'metaDescription' => $this->getInput('localeMetaDescription', helper::FILTER_STRING_LONG, true),
|
||||||
|
'title' => $this->getInput('localeTitle', helper::FILTER_STRING_SHORT, true),
|
||||||
|
'cookies' => [
|
||||||
|
// Les champs sont obligatoires si l'option consentement des cookies est active
|
||||||
|
'mainLabel' => $this->getInput('localeCookiesZwiiText', helper::FILTER_STRING_LONG, $this->getInput('configCookieConsent', helper::FILTER_BOOLEAN)),
|
||||||
|
'titleLabel' => $this->getInput('localeCookiesTitleText', helper::FILTER_STRING_SHORT, $this->getInput('configCookieConsent', helper::FILTER_BOOLEAN)),
|
||||||
|
'linkLegalLabel' => $this->getInput('localeCookiesLinkMlText', helper::FILTER_STRING_SHORT, $this->getInput('configCookieConsent', helper::FILTER_BOOLEAN)),
|
||||||
|
'cookiesFooterText' => $this->getInput('localeCookiesFooterText', helper::FILTER_STRING_SHORT, $this->getInput('configCookieConsent', helper::FILTER_BOOLEAN)),
|
||||||
|
'buttonValidLabel' => $this->getInput('localeCookiesButtonText', helper::FILTER_STRING_SHORT, $this->getInput('configCookieConsent', helper::FILTER_BOOLEAN))
|
||||||
|
]
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
// Sauvegarde hors méthodes si la langue n'est pas celle de l'UI
|
||||||
|
if ($lang === self::$i18nContent) {
|
||||||
|
// Enregistrer les données par lecture directe du formulaire
|
||||||
|
$this->setData(['locale', $data['locale']]);
|
||||||
|
} else {
|
||||||
|
// Sauver sur le disque
|
||||||
|
file_put_contents(self::DATA_DIR . $lang . '/locale.json', json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT), LOCK_EX);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Valeurs en sortie
|
||||||
|
$this->addOutput([
|
||||||
|
'redirect' => helper::baseUrl() . $this->getUrl(),
|
||||||
|
'notification' => helper::translate('Modifications enregistrées'),
|
||||||
|
'state' => true
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Préparation de l'affichage du formulaire
|
||||||
|
//-----------------------------------------
|
||||||
|
|
||||||
|
// La locale est-elle celle de la langue de l'UI ?
|
||||||
|
if ($lang === self::$i18nContent) {
|
||||||
|
self::$locales[$lang]['locale'] = $this->getData(['locale']);
|
||||||
|
} else {
|
||||||
|
// Lire les locales sans passer par les méthodes
|
||||||
|
self::$locales[$lang] = json_decode(file_get_contents(self::DATA_DIR . $lang . '/locale.json'), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Générer la liste des pages disponibles
|
||||||
|
self::$pagesList = $this->getData(['page']);
|
||||||
|
foreach (self::$pagesList as $page => $pageId) {
|
||||||
|
if (
|
||||||
|
$this->getData(['page', $page, 'block']) === 'bar' ||
|
||||||
|
$this->getData(['page', $page, 'disable']) === true
|
||||||
|
) {
|
||||||
|
unset(self::$pagesList[$page]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
self::$orphansList = $this->getData(['page']);
|
||||||
|
foreach (self::$orphansList as $page => $pageId) {
|
||||||
|
if (
|
||||||
|
$this->getData(['page', $page, 'block']) === 'bar' ||
|
||||||
|
$this->getData(['page', $page, 'disable']) === true ||
|
||||||
|
$this->getdata(['page', $page, 'position']) !== 0
|
||||||
|
) {
|
||||||
|
unset(self::$orphansList[$page]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Valeurs en sortie
|
||||||
|
$this->addOutput([
|
||||||
|
'title' => helper::translate('Paramètres de la localisation') . ' ' . template::flag($lang, '20 %'),
|
||||||
|
'view' => 'locale'
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Edition de la langue de l'interface
|
* Edition de la langue de l'interface
|
||||||
*/
|
*/
|
||||||
@ -432,7 +590,7 @@ class language extends common
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
switch ($target) {
|
switch ($target) {
|
||||||
case 'config':
|
case 'locale':
|
||||||
$success = false;
|
$success = false;
|
||||||
// Effacement d'une site dans une langue
|
// Effacement d'une site dans une langue
|
||||||
if (is_dir(self::DATA_DIR . $lang) === true) {
|
if (is_dir(self::DATA_DIR . $lang) === true) {
|
||||||
@ -510,6 +668,34 @@ class language extends common
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Traitement du changement de langue
|
||||||
|
* Fonction utilisée par le noyau
|
||||||
|
*/
|
||||||
|
public function content()
|
||||||
|
{
|
||||||
|
// Langue sélectionnée
|
||||||
|
$lang = $this->getUrl(2);
|
||||||
|
/**
|
||||||
|
* Changement de la langue si
|
||||||
|
* différe de la langue active
|
||||||
|
* déjà initialisée
|
||||||
|
* fait partie des langues installées
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (
|
||||||
|
is_dir(self::DATA_DIR . $lang) &&
|
||||||
|
array_key_exists($lang, self::$languages) === true
|
||||||
|
) {
|
||||||
|
|
||||||
|
// Stocker la sélection
|
||||||
|
$_SESSION['ZWII_CONTENT'] = $lang;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Valeurs en sortie
|
||||||
|
$this->addOutput([
|
||||||
|
'redirect' => helper::baseUrl()
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user