parent
323b46be00
commit
33d2a4d8c4
12
CHANGES.md
12
CHANGES.md
@ -1,6 +1,18 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
|
||||||
|
## Version 11.0.00
|
||||||
|
- Modifications :
|
||||||
|
- Gestion multi-langues
|
||||||
|
- Traduction rédigée dans une langue européenne
|
||||||
|
- Traduction automatique dans une langue européenne
|
||||||
|
- Traduction selon la langue navigateur
|
||||||
|
- Configuration du site :
|
||||||
|
- Activation et désactivation de la déconnexion automatique empêchant plusieurs sessions avec le même compte.
|
||||||
|
- Suppression de l'option articles par pages.
|
||||||
|
- Suppression de l'option de backup individuel des fichiers de données, pour l'activer manuellement, créez un fichier vide .backup dans site/data
|
||||||
|
- Nouvelle option permettant de transférer les fichiers de sauvegarde automatiques dans le gestionnaire de fichiers.
|
||||||
|
|
||||||
## version 10.6.02
|
## version 10.6.02
|
||||||
Correction :
|
Correction :
|
||||||
- Bug lors du téléchargement des journaux.
|
- Bug lors du téléchargement des journaux.
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
|
|
||||||
|
|
||||||
# ZwiiCMS 10.6.02
|
# ZwiiCMS 10.6.02
|
||||||
|
|
||||||
Zwii est un CMS sans base de données (flat-file) qui permet de créer et gérer facilement un site web sans aucune connaissance en programmation.
|
Zwii est un CMS sans base de données (flat-file) qui permet de créer et gérer facilement un site web sans aucune connaissance en programmation.
|
||||||
|
223
core/core.php
223
core/core.php
@ -44,8 +44,8 @@ class common {
|
|||||||
const ACCESS_TIMER = 1800;
|
const ACCESS_TIMER = 1800;
|
||||||
|
|
||||||
// Numéro de version
|
// Numéro de version
|
||||||
const ZWII_VERSION = '10.6.02';
|
const ZWII_VERSION = '11.0.000';
|
||||||
const ZWII_UPDATE_CHANNEL = "v10";
|
const ZWII_UPDATE_CHANNEL = "v11";
|
||||||
|
|
||||||
public static $actions = [];
|
public static $actions = [];
|
||||||
public static $coreModuleIds = [
|
public static $coreModuleIds = [
|
||||||
@ -154,7 +154,7 @@ class common {
|
|||||||
'pt' => 'Portugais (pt)',
|
'pt' => 'Portugais (pt)',
|
||||||
];
|
];
|
||||||
// Langue courante
|
// Langue courante
|
||||||
public static $i18nCurrent = 'fr';
|
public static $i18n;
|
||||||
public static $timezone;
|
public static $timezone;
|
||||||
private $url = '';
|
private $url = '';
|
||||||
// Données de site
|
// Données de site
|
||||||
@ -193,6 +193,15 @@ class common {
|
|||||||
$this->input['_COOKIE'] = $_COOKIE;
|
$this->input['_COOKIE'] = $_COOKIE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Déterminer la langue sélectionnée pour le chargement des fichiers de données
|
||||||
|
if (isset($this->input['_COOKIE']['ZWII_I18N_SITE'])
|
||||||
|
) {
|
||||||
|
self::$i18n = $this->input['_COOKIE']['ZWII_I18N_SITE'];
|
||||||
|
setlocale (LC_TIME, self::$i18n . '_' . strtoupper (self::$i18n) );
|
||||||
|
|
||||||
|
} else {
|
||||||
|
self::$i18n = 'fr';
|
||||||
|
}
|
||||||
|
|
||||||
// Instanciation de la classe des entrées / sorties
|
// Instanciation de la classe des entrées / sorties
|
||||||
// Récupère les descripteurs
|
// Récupère les descripteurs
|
||||||
@ -200,7 +209,7 @@ class common {
|
|||||||
// Constructeur JsonDB
|
// Constructeur JsonDB
|
||||||
$this->dataFiles[$keys] = new \Prowebcraft\JsonDb([
|
$this->dataFiles[$keys] = new \Prowebcraft\JsonDb([
|
||||||
'name' => $keys . '.json',
|
'name' => $keys . '.json',
|
||||||
'dir' => $this->dataPath ($keys,self::$i18nCurrent),
|
'dir' => $this->dataPath ($keys,self::$i18n),
|
||||||
'backup' => file_exists('site/data/.backup')
|
'backup' => file_exists('site/data/.backup')
|
||||||
]);;
|
]);;
|
||||||
}
|
}
|
||||||
@ -221,9 +230,9 @@ class common {
|
|||||||
// Installation fraîche, initialisation des modules manquants
|
// Installation fraîche, initialisation des modules manquants
|
||||||
// La langue d'installation par défaut est fr
|
// La langue d'installation par défaut est fr
|
||||||
foreach ($this->dataFiles as $stageId => $item) {
|
foreach ($this->dataFiles as $stageId => $item) {
|
||||||
$folder = $this->dataPath ($stageId, self::$i18nCurrent);
|
$folder = $this->dataPath ($stageId, self::$i18n);
|
||||||
if (file_exists($folder . $stageId .'.json') === false) {
|
if (file_exists($folder . $stageId .'.json') === false) {
|
||||||
$this->initData($stageId,self::$i18nCurrent);
|
$this->initData($stageId,self::$i18n);
|
||||||
common::$coreNotices [] = $stageId ;
|
common::$coreNotices [] = $stageId ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -233,6 +242,30 @@ class common {
|
|||||||
$this->user = $this->getData(['user', $this->getInput('ZWII_USER_ID')]);
|
$this->user = $this->getData(['user', $this->getInput('ZWII_USER_ID')]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Traduction du site par script
|
||||||
|
* Traduction par clic sur le drapeau OU
|
||||||
|
* Traduction automatisée
|
||||||
|
* - Exclure la traduction manuelle
|
||||||
|
* - La mangue du navigateur est lisible
|
||||||
|
* - L'auto-détection est active
|
||||||
|
*/
|
||||||
|
|
||||||
|
if ( $this->getData(['config', 'i18n', 'enabled']) === true
|
||||||
|
AND $this->getData(['config', 'i18n','scriptGoogle']) === true
|
||||||
|
AND $this->getData(['config', 'i18n','autoDetect']) === true
|
||||||
|
AND $this->getInput('ZWII_I18N_SITE') !== ''
|
||||||
|
AND !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) )
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Le cookie est prioritaire sur le navigateur
|
||||||
|
* la traduction est celle de la langue du drapeau
|
||||||
|
* */
|
||||||
|
if ( $this->getInput('ZWII_I18N_SCRIPT') !== substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2 ) ) {
|
||||||
|
setrawcookie('googtrans', '/fr/'.substr( $_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2 ), time() + 3600, helper::baseUrl());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Construit la liste des pages parents/enfants
|
// Construit la liste des pages parents/enfants
|
||||||
if($this->hierarchy['all'] === []) {
|
if($this->hierarchy['all'] === []) {
|
||||||
$pages = helper::arrayCollumn($this->getData(['page']), 'position', 'SORT_ASC');
|
$pages = helper::arrayCollumn($this->getData(['page']), 'position', 'SORT_ASC');
|
||||||
@ -496,7 +529,7 @@ class common {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// La clef est une chaine
|
// La clef est une chaîne
|
||||||
else {
|
else {
|
||||||
foreach($this->input as $type => $values) {
|
foreach($this->input as $type => $values) {
|
||||||
// Champ obligatoire
|
// Champ obligatoire
|
||||||
@ -998,6 +1031,39 @@ class common {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copie récursive de dossiers
|
||||||
|
* @param string $src dossier source
|
||||||
|
* @param string $dst dossier destination
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function copyDir($src, $dst) {
|
||||||
|
// Ouvrir le dossier source
|
||||||
|
$dir = opendir($src);
|
||||||
|
// Créer le dossier de destination
|
||||||
|
if (!is_dir($dst))
|
||||||
|
$success = mkdir($dst, 0755, true);
|
||||||
|
else
|
||||||
|
$success = true;
|
||||||
|
|
||||||
|
// Boucler dans le dossier source en l'absence d'échec de lecture écriture
|
||||||
|
while( $success
|
||||||
|
AND $file = readdir($dir) ) {
|
||||||
|
if (( $file != '.' ) && ( $file != '..' )) {
|
||||||
|
if ( is_dir($src . '/' . $file) ){
|
||||||
|
// Appel récursif des sous-dossiers
|
||||||
|
$success = $this->copyDir($src . '/' . $file, $dst . '/' . $file);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$success = copy($src . '/' . $file, $dst . '/' . $file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
closedir($dir);
|
||||||
|
return $success;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Génère une archive d'un dossier et des sous-dossiers
|
* Génère une archive d'un dossier et des sous-dossiers
|
||||||
* @param string fileName path et nom de l'archive
|
* @param string fileName path et nom de l'archive
|
||||||
@ -1577,6 +1643,7 @@ class common {
|
|||||||
$this->setData(['core', 'dataVersion', 10400]);
|
$this->setData(['core', 'dataVersion', 10400]);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Version 10.5.02
|
// Version 10.5.02
|
||||||
if ($this->getData(['core', 'dataVersion']) < 10502) {
|
if ($this->getData(['core', 'dataVersion']) < 10502) {
|
||||||
// Forcer la régénération du thème
|
// Forcer la régénération du thème
|
||||||
@ -1614,11 +1681,41 @@ class common {
|
|||||||
}
|
}
|
||||||
// Suppression de l'option d'objets par page gérées par les modules
|
// Suppression de l'option d'objets par page gérées par les modules
|
||||||
$this->deleteData(['config','itemsperPage']);
|
$this->deleteData(['config','itemsperPage']);
|
||||||
// Valeur par défaut de la couleur du bouton Help
|
|
||||||
$this->setData(['admin', 'backgroundColorButtonHelp', 'rgba(255, 153, 0, 1)']);
|
|
||||||
|
|
||||||
$this->setData(['core', 'dataVersion', 10600]);
|
$this->setData(['core', 'dataVersion', 10600]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Version 11.0.00
|
||||||
|
if ($this->getData(['core', 'dataVersion']) < 11000) {
|
||||||
|
|
||||||
|
// Option de déconnexion auto activée
|
||||||
|
$this->setData(['config','autoDisconnect',true]);
|
||||||
|
|
||||||
|
// Mettre à jour les données de langue
|
||||||
|
$this->setData(['config', 'i18n','scriptGoogle', false ]);
|
||||||
|
$this->setData(['config', 'i18n','showCredits', false ]);
|
||||||
|
$this->setData(['config', 'i18n','autoDetect', false ]);
|
||||||
|
$this->setData(['config', 'i18n','admin', false ]);
|
||||||
|
$this->setData(['config', 'i18n','fr', false ]);
|
||||||
|
$this->setData(['config', 'i18n','de', false ]);
|
||||||
|
$this->setData(['config', 'i18n','en', false ]);
|
||||||
|
$this->setData(['config', 'i18n','es', false ]);
|
||||||
|
$this->setData(['config', 'i18n','it', false ]);
|
||||||
|
$this->setData(['config', 'i18n','nl', false ]);
|
||||||
|
$this->setData(['config', 'i18n','pt', false ]);
|
||||||
|
|
||||||
|
// Supprimer les fichiers de backup
|
||||||
|
if (file_exists('site/data/.backup')) unlink('site/data/.backup');
|
||||||
|
$path = realpath('site/data');
|
||||||
|
foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)) as $filename)
|
||||||
|
{
|
||||||
|
if (strpos($filename,'backup.json')) {
|
||||||
|
unlink($filename);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->setData(['core', 'dataVersion', 11000]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1936,7 +2033,9 @@ class core extends common {
|
|||||||
if (
|
if (
|
||||||
$this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
|
$this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
|
||||||
AND ( $this->getUser('group') === self::GROUP_BANNED
|
AND ( $this->getUser('group') === self::GROUP_BANNED
|
||||||
OR $_SESSION['csrf'] !== $this->getData(['user',$this->getUser('id'),'accessCsrf']) )
|
OR ( $_SESSION['csrf'] !== $this->getData(['user',$this->getUser('id'),'accessCsrf'])
|
||||||
|
AND $this->getData(['config','autoDisconnect']) === true)
|
||||||
|
)
|
||||||
) {
|
) {
|
||||||
$user = new user;
|
$user = new user;
|
||||||
$user->logout();
|
$user->logout();
|
||||||
@ -2036,7 +2135,6 @@ class core extends common {
|
|||||||
'</a> › '.
|
'</a> › '.
|
||||||
$this->getData(['page', $this->getUrl(0), 'title']);
|
$this->getData(['page', $this->getUrl(0), 'title']);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Importe la page
|
// Importe la page
|
||||||
if(
|
if(
|
||||||
$this->getData(['page', $this->getUrl(0)]) !== null
|
$this->getData(['page', $this->getUrl(0)]) !== null
|
||||||
@ -2055,6 +2153,7 @@ class core extends common {
|
|||||||
'contentLeft' => $this->getData(['page',$this->getData(['page',$this->getUrl(0),'barLeft']),'content']),
|
'contentLeft' => $this->getData(['page',$this->getData(['page',$this->getUrl(0),'barLeft']),'content']),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Importe le module
|
// Importe le module
|
||||||
else {
|
else {
|
||||||
// Id du module, et valeurs en sortie de la page si il s'agit d'un module de page
|
// Id du module, et valeurs en sortie de la page si il s'agit d'un module de page
|
||||||
@ -2084,6 +2183,7 @@ class core extends common {
|
|||||||
if(class_exists($moduleId)) {
|
if(class_exists($moduleId)) {
|
||||||
/** @var common $module */
|
/** @var common $module */
|
||||||
$module = new $moduleId;
|
$module = new $moduleId;
|
||||||
|
|
||||||
// Check l'existence de l'action
|
// Check l'existence de l'action
|
||||||
$action = '';
|
$action = '';
|
||||||
$ignore = true;
|
$ignore = true;
|
||||||
@ -2240,6 +2340,35 @@ class core extends common {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Chargement de la bibliothèque googtrans
|
||||||
|
|
||||||
|
// Le script de traduction est sélectionné
|
||||||
|
if ($this->getData(['config', 'i18n', 'enabled']) === true) {
|
||||||
|
if ( $this->getData(['config', 'i18n','scriptGoogle']) === true
|
||||||
|
// et la traduction de la langue courante est automatique
|
||||||
|
AND ( $this->getInput('ZWII_I18N_SCRIPT') !== ''
|
||||||
|
// Ou traduction automatique
|
||||||
|
OR $this->getData(['config', 'i18n','autoDetect']) === true
|
||||||
|
)
|
||||||
|
// Cas des pages d'administration
|
||||||
|
// Pas connecté
|
||||||
|
AND $this->getUser('password') !== $this->getInput('ZWII_USER_PASSWORD')
|
||||||
|
AND $this->getUrl(1) !== 'login'
|
||||||
|
// Ou connecté avec option active
|
||||||
|
OR ($this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD')
|
||||||
|
AND $this->getData(['config', 'i18n','admin']) === true
|
||||||
|
)
|
||||||
|
|
||||||
|
) {
|
||||||
|
// Paramètre du script
|
||||||
|
setrawcookie("googtrans", '/fr/'. $this->getInput('ZWII_I18N_SCRIPT') , time() + 3600, helper::baseUrl());
|
||||||
|
// Chargement de la librairie
|
||||||
|
$this->addOutput([
|
||||||
|
'vendor' => array_merge($this->output['vendor'], ['i18n'])
|
||||||
|
]);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
// Erreurs
|
// Erreurs
|
||||||
if($access === 'login') {
|
if($access === 'login') {
|
||||||
http_response_code(302);
|
http_response_code(302);
|
||||||
@ -2295,9 +2424,12 @@ class core extends common {
|
|||||||
$this->addOutput([
|
$this->addOutput([
|
||||||
'metaDescription' => $this->getData(['locale', 'metaDescription'])
|
'metaDescription' => $this->getData(['locale', 'metaDescription'])
|
||||||
]);
|
]);
|
||||||
}
|
};
|
||||||
|
|
||||||
switch($this->output['display']) {
|
switch($this->output['display']) {
|
||||||
|
// Layout brut
|
||||||
|
case self::DISPLAY_RAW:
|
||||||
|
echo $this->output['content'];
|
||||||
|
break;
|
||||||
// Layout vide
|
// Layout vide
|
||||||
case self::DISPLAY_LAYOUT_BLANK:
|
case self::DISPLAY_LAYOUT_BLANK:
|
||||||
require 'core/layout/blank.php';
|
require 'core/layout/blank.php';
|
||||||
@ -2320,13 +2452,8 @@ class core extends common {
|
|||||||
case self::DISPLAY_LAYOUT_MAIN:
|
case self::DISPLAY_LAYOUT_MAIN:
|
||||||
require 'core/layout/main.php';
|
require 'core/layout/main.php';
|
||||||
break;
|
break;
|
||||||
// Layout brut
|
|
||||||
case self::DISPLAY_RAW:
|
|
||||||
echo $this->output['content'];
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class layout extends common {
|
class layout extends common {
|
||||||
@ -2363,6 +2490,9 @@ class layout extends common {
|
|||||||
* @param Page par défaut
|
* @param Page par défaut
|
||||||
*/
|
*/
|
||||||
public function showContent() {
|
public function showContent() {
|
||||||
|
if ($this->getData(['config', 'i18n', 'enabled']) === true) {
|
||||||
|
echo $this->showi18n('Site');
|
||||||
|
}
|
||||||
if(
|
if(
|
||||||
$this->core->output['title']
|
$this->core->output['title']
|
||||||
AND (
|
AND (
|
||||||
@ -2376,6 +2506,23 @@ class layout extends common {
|
|||||||
|
|
||||||
echo $this->core->output['content'];
|
echo $this->core->output['content'];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Affiche les crédits, conditions requis :
|
||||||
|
* La traduction est active et le site n'est pas en français.
|
||||||
|
* La fonction est activée.
|
||||||
|
*/
|
||||||
|
if ( $this->getData(['config', 'i18n', 'enabled']) === true
|
||||||
|
AND $this->getData(['config', 'i18n','scriptGoogle']) === true
|
||||||
|
AND $this->getData(['config', 'i18n','showCredits']) === true
|
||||||
|
AND
|
||||||
|
// et la traduction n'est pas manuelle
|
||||||
|
( $this->getInput('ZWII_I18N_SCRIPT')
|
||||||
|
AND $this->getData(['config', 'i18n', $this->getInput('ZWII_I18N_SCRIPT')]) === 'script'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
echo '<div id="googTransLogo"><a href="//policies.google.com/terms#toc-content" data-lity><img src="core/module/translate/ressource/googtrans.png" /></a></div>';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2728,6 +2875,9 @@ class layout extends common {
|
|||||||
}
|
}
|
||||||
// Retourne les items du menu
|
// Retourne les items du menu
|
||||||
echo '<ul class="navMain" id="menuLeft">' . $itemsLeft . '</ul><ul class="navMain" id="menuRight">' . $itemsRight . '</ul>';
|
echo '<ul class="navMain" id="menuLeft">' . $itemsLeft . '</ul><ul class="navMain" id="menuRight">' . $itemsRight . '</ul>';
|
||||||
|
if ($this->getData(['config', 'i18n', 'enabled']) === true) {
|
||||||
|
echo $this->showi18n('Nav');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -2969,6 +3119,9 @@ class layout extends common {
|
|||||||
if($this->getUser('group') >= self::GROUP_ADMIN) {
|
if($this->getUser('group') >= self::GROUP_ADMIN) {
|
||||||
$rightItems .= '<li><a href="' . helper::baseUrl() . 'user" data-tippy-content="Configurer les utilisateurs">' . template::ico('users') . '</a></li>';
|
$rightItems .= '<li><a href="' . helper::baseUrl() . 'user" data-tippy-content="Configurer les utilisateurs">' . template::ico('users') . '</a></li>';
|
||||||
$rightItems .= '<li><a href="' . helper::baseUrl() . 'theme" data-tippy-content="Personnaliser les thèmes">' . template::ico('brush') . '</a></li>';
|
$rightItems .= '<li><a href="' . helper::baseUrl() . 'theme" data-tippy-content="Personnaliser les thèmes">' . template::ico('brush') . '</a></li>';
|
||||||
|
if ($this->getData(['config', 'i18n', 'enabled']) === true) {
|
||||||
|
$rightItems .= '<li><a href="' . helper::baseUrl() . 'translate" data-tippy-content="Gestion des langues">' . template::ico('flag') . '</a></li>';
|
||||||
|
}
|
||||||
$rightItems .= '<li><a href="' . helper::baseUrl() . 'addon" data-tippy-content="Gérer les modules">' . template::ico('puzzle') . '</a></li>';
|
$rightItems .= '<li><a href="' . helper::baseUrl() . 'addon" data-tippy-content="Gérer les modules">' . template::ico('puzzle') . '</a></li>';
|
||||||
$rightItems .= '<li><a href="' . helper::baseUrl() . 'config" data-tippy-content="Configurer le site">' . template::ico('cog-alt') . '</a></li>';
|
$rightItems .= '<li><a href="' . helper::baseUrl() . 'config" data-tippy-content="Configurer le site">' . template::ico('cog-alt') . '</a></li>';
|
||||||
// Mise à jour automatique
|
// Mise à jour automatique
|
||||||
@ -3055,7 +3208,7 @@ class layout extends common {
|
|||||||
foreach($vendorFiles as $vendorFile) {
|
foreach($vendorFiles as $vendorFile) {
|
||||||
switch(pathinfo($vendorFile, PATHINFO_EXTENSION)) {
|
switch(pathinfo($vendorFile, PATHINFO_EXTENSION)) {
|
||||||
case 'css':
|
case 'css':
|
||||||
// Force le rechargement lors d'une mise à jour² du jeu d'icônes
|
// Force le rechargement lors d'une mise à jour du jeu d'icônes
|
||||||
$reload = $vendorPath === 'core/vendor/zwiico/'
|
$reload = $vendorPath === 'core/vendor/zwiico/'
|
||||||
? '?' . md5_file('core/vendor/zwiico/css/zwiico-codes.css')
|
? '?' . md5_file('core/vendor/zwiico/css/zwiico-codes.css')
|
||||||
: '';
|
: '';
|
||||||
@ -3068,4 +3221,36 @@ class layout extends common {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Affiche le cadre avec les drapeaux sélectionnés
|
||||||
|
*/
|
||||||
|
public function showi18n($id) {
|
||||||
|
echo '<div id="i18nContainer' . $id . '"><ul>';
|
||||||
|
foreach (self::$i18nList as $key => $value) {
|
||||||
|
if ($this->getData(['config', 'i18n',$key]) === 'site'
|
||||||
|
OR (
|
||||||
|
$this->getData(['config', 'i18n','scriptGoogle']) === true
|
||||||
|
AND $this->getData(['config', 'i18n',$key]) === 'script'
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
if (
|
||||||
|
(isset($_COOKIE['ZWII_I18N_SITE'] )
|
||||||
|
AND $_COOKIE['ZWII_I18N_SITE'] === $key
|
||||||
|
)
|
||||||
|
OR
|
||||||
|
( isset($_COOKIE['ZWII_I18N_SCRIPT'])
|
||||||
|
AND $_COOKIE['ZWII_I18N_SCRIPT'] === $key
|
||||||
|
) ) {
|
||||||
|
$select = ' id="i18nFlagSelected" ';
|
||||||
|
} else {
|
||||||
|
$select = ' id="i18nFlag" ';
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '<li>';
|
||||||
|
echo '<a href="' . helper::baseUrl() . 'translate/language/' . $key . '/' . $this->getData(['config', 'i18n',$key]) . '"><img ' . $select . ' class="flag" src="' . helper::baseUrl(false) . 'core/vendor/i18n/png/' . $key . '.png" /></a>';
|
||||||
|
echo '</li>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
echo '</ul></div>';
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user