Modif cookies WIP

This commit is contained in:
fredtempez 2021-01-16 18:13:00 +01:00
parent 36e4cd8253
commit efc324c3db
3 changed files with 43 additions and 46 deletions

View File

@ -153,7 +153,7 @@ class common {
'pt' => 'Portugais (pt)', 'pt' => 'Portugais (pt)',
]; ];
// Langue courante // Langue courante
public static $i18nSite; public static $i18n;
public static $timezone; public static $timezone;
private $url = ''; private $url = '';
// Données de site // Données de site
@ -192,13 +192,15 @@ class common {
$this->input['_COOKIE'] = $_COOKIE; $this->input['_COOKIE'] = $_COOKIE;
} }
// Déterminer la langue sélectionnée si traduction manuelle ('site') // Déterminer la langue sélectionnée pour le chargement des fichiers de données
if (isset($this->input['_COOKIE']['ZWII_I18N_SITE']) if (isset($this->input['_COOKIE']['ZWII_I18N_SITE'])
) { ) {
self::$i18nSite = $this->input['_COOKIE']['ZWII_I18N_SITE']; self::$i18n = $this->input['_COOKIE']['ZWII_I18N_SITE'];
setlocale (LC_TIME, self::$i18nSite . '_' . strtoupper (self::$i18nSite) ); setlocale (LC_TIME, self::$i18n . '_' . strtoupper (self::$i18n) );
} else { } else {
self::$i18nSite = 'fr'; //setcookie('ZWII_I18N_SITE' , 'fr', time() + 3600, helper::baseUrl(false, false) , '', helper::isHttps(), true);
self::$i18n = 'fr';
} }
// Instanciation de la classe des entrées / sorties // Instanciation de la classe des entrées / sorties
@ -207,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::$i18nSite), 'dir' => $this->dataPath ($keys,self::$i18n),
'backup' => file_exists('site/data/.backup') 'backup' => file_exists('site/data/.backup')
]);; ]);;
} }
@ -228,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::$i18nSite); $folder = $this->dataPath ($stageId, self::$i18n);
if (file_exists($folder . $stageId .'.json') === false) { if (file_exists($folder . $stageId .'.json') === false) {
$this->initData($stageId,self::$i18nSite); $this->initData($stageId,self::$i18n);
common::$coreNotices [] = $stageId ; common::$coreNotices [] = $stageId ;
} }
} }
@ -258,10 +260,9 @@ class common {
* Le cookie est prioritaire sur le navigateur * Le cookie est prioritaire sur le navigateur
* la traduction est celle de la langue du drapeau * la traduction est celle de la langue du drapeau
* */ * */
if ($this->getInput('ZWII_I18N_SCRIPT')
if (isset($_COOKIE['googtrans']) AND $this->getInput('ZWII_I18N_SCRIPT') !== substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2 ) ) {
AND substr($_COOKIE['googtrans'],4,2) !== substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2 ) ) { setrawcookie('googtrans', '/fr/'.$this->getInput('ZWII_I18N_SCRIPT'), time() + 3600, helper::baseUrl());
setrawcookie('googtrans', '/fr/'.substr($_COOKIE['googtrans'],4,2), time() + 3600, helper::baseUrl());
} else { } else {
setrawcookie('googtrans', '/fr/'.substr( $_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2 ), time() + 3600, helper::baseUrl()); setrawcookie('googtrans', '/fr/'.substr( $_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2 ), time() + 3600, helper::baseUrl());
} }
@ -530,7 +531,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
@ -2213,14 +2214,13 @@ class core extends common {
// Chargement de la bibliothèque googtrans // Chargement de la bibliothèque googtrans
// Le multi langue est sélectionné // Le script de traduction est sélectionné
if ( $this->getData(['config','translate','scriptGoogle']) === true if ( $this->getData(['config','translate','scriptGoogle']) === true
AND AND
// et la traduction de la langue courante est automatique // et la traduction de la langue courante est automatique
( isset($_COOKIE['googtrans']) ( $this->getInput('ZWII_I18N_SCRIPT') !== ''
AND ( $this->getData(['config','translate', substr($_COOKIE['googtrans'],4,2)]) === 'script' // Ou traduction automatique
// Ou traduction automatique OR $this->getData(['config','translate','autoDetect']) === true
OR $this->getData(['config','translate','autoDetect']) === true )
) )
// Cas des pages d'administration // Cas des pages d'administration
// Pas connecté // Pas connecté
@ -2232,6 +2232,9 @@ class core extends common {
) )
) { ) {
// Paramètre du script
setrawcookie("googtrans", '/fr/'. $this->getInput('ZWII_I18N_SCRIPT') , time() + 3600, helper::baseUrl());
// Chargement de la librairie
$this->addOutput([ $this->addOutput([
'vendor' => array_merge($this->output['vendor'], ['i18n']) 'vendor' => array_merge($this->output['vendor'], ['i18n'])
]); ]);
@ -2382,8 +2385,8 @@ class layout extends common {
AND $this->getData(['config','translate','showCredits']) === true AND $this->getData(['config','translate','showCredits']) === true
AND AND
// et la traduction n'est pas manuelle // et la traduction n'est pas manuelle
( isset($_COOKIE['googtrans']) ( $this->getInput('ZWII_I18N_SCRIPT')
AND $this->getData(['config','translate', substr($_COOKIE['googtrans'],4,2)]) === 'script' AND $this->getData(['config','translate', $this->getInput('ZWII_I18N_SCRIPT')]) === 'script'
) )
) )
{ {
@ -3091,12 +3094,12 @@ class layout extends common {
) )
) { ) {
if ( if (
(isset($_COOKIE['googtrans'] ) (isset($_COOKIE['ZWII_I18N_SITE'] )
AND substr($_COOKIE['googtrans'],4,2) === $key AND $_COOKIE['ZWII_I18N_SITE'] === $key
) )
OR OR
( isset($_COOKIE['ZWII_I18N_SITE']) ( isset($_COOKIE['ZWII_I18N_SCRIPT'])
AND $_COOKIE['ZWII_I18N_SITE'] === $key AND $_COOKIE['ZWII_I18N_SCRIPT'] === $key
) ) { ) ) {
$select = ' id="i18nFlagSelected" '; $select = ' id="i18nFlagSelected" ';
} else { } else {

View File

@ -732,7 +732,7 @@ li .menuSideChild {
} }
#i18nFlagSelected { #i18nFlagSelected {
width: 90%; width: 100%;
} }

View File

@ -48,7 +48,7 @@ class translate extends common {
// Copier les données par défaut avec gestion des erreurs // Copier les données par défaut avec gestion des erreurs
$success = (copy (self::DATA_DIR . $copyFrom . '/locale.json', self::DATA_DIR . $toCreate . '/locale.json') === true && $success === true) ? true : false; $success = (copy (self::DATA_DIR . $copyFrom . '/locale.json', self::DATA_DIR . $toCreate . '/locale.json') === true && $success === true) ? true : false;
$success = (copy (self::DATA_DIR . $copyFrom . '/module.json', self::DATA_DIR . $toCreate . '/module.json') === true && $success === true) ? true : false; $success = (copy (self::DATA_DIR . $copyFrom . '/module.json', self::DATA_DIR . $toCreate . '/module.json') === true && $success === true) ? true : false;
$success = (copy (self::DATA_DIR . $copyFrom . '/page.json', self::DATA_DIR . $toCreate . '/page.json') === true && $success === true) ? true : false; $success = (copy (self::DATA_DIR . $copyFrom . '/page.json', self::DATA_DIR . $toCreate . '/page.json') === true && $success === true) ? true : false;
// Enregistrer la langue // Enregistrer la langue
if ($success) { if ($success) {
$this->setData(['config', 'translate', $toCreate, 'site' ]); $this->setData(['config', 'translate', $toCreate, 'site' ]);
@ -70,7 +70,7 @@ class translate extends common {
self::$languagesTarget[$key] = $value; self::$languagesTarget[$key] = $value;
} }
} }
// Langues cibles fr en plus // Langues cibles fr en plus
self::$languagesInstalled = array_merge(['fr' => 'Français (fr)'],self::$languagesTarget); self::$languagesInstalled = array_merge(['fr' => 'Français (fr)'],self::$languagesTarget);
// Valeurs en sortie // Valeurs en sortie
@ -89,7 +89,7 @@ class translate extends common {
if($this->isPost()) { if($this->isPost()) {
// Désactivation du script Google // Désactivation du script Google
if ($this->getInput('translateScriptGoogle', helper::FILTER_BOOLEAN) === false) { if ($this->getInput('translateScriptGoogle', helper::FILTER_BOOLEAN) === false) {
setrawcookie('googtrans', '/fr/fr', time() + 3600, helper::baseUrl()); setrawcookie('googtrans', '/fr/fr', time() + 3600, helper::baseUrl(false,false));
$_SESSION['googtrans'] = '/fr/fr'; $_SESSION['googtrans'] = '/fr/fr';
} }
$script = $this->getInput('translateScriptGoogle', helper::FILTER_BOOLEAN); $script = $this->getInput('translateScriptGoogle', helper::FILTER_BOOLEAN);
@ -182,26 +182,20 @@ class translate extends common {
* Fonction utilisée par le noyau * Fonction utilisée par le noyau
*/ */
public function language() { public function language() {
// Sélection et désélection de la langue active
if ( $this->getUrl(2) !== substr($_COOKIE['googtrans'],4,2)) // Activation du drapeau
{ if ( $this->getInput('ZWII_I18N_' . strtoupper($this->getUrl(3))) !== $this->getUrl(2) ) {
// Transmettre le choix au noyau // Nettoyer et stocker le choix de l'utilisateur
if ($this->getUrl(3) === 'script') {
setrawcookie("googtrans", '/fr/'. $this->getUrl(2), time() + 3600, helper::baseUrl());
helper::deleteCookie('ZWII_I18N_SITE');
} elseif ($this->getUrl(3) === 'site') {
setcookie('ZWII_I18N_SITE', $this->getUrl(2), time() + 3600, helper::baseUrl(false, false) , '', helper::isHttps(), true);
setrawcookie("googtrans", '/fr/fr', time() + 3600, helper::baseUrl());
}
} else {
// Langue du navigateur par défaut si dispo
helper::deleteCookie('ZWII_I18N_SITE'); helper::deleteCookie('ZWII_I18N_SITE');
if (!empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) ) { helper::deleteCookie('ZWII_I18N_SCRIPT');
setrawcookie("googtrans", '/fr/'. substr( $_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2 ), time() + 3600, helper::baseUrl()); // Sélectionner
} else { setcookie('ZWII_I18N_' . strtoupper($this->getUrl(3)) , $this->getUrl(2), time() + 3600, helper::baseUrl(false, false) , '', helper::isHttps(), true);
setrawcookie("googtrans", '/fr/fr', time() + 3600, helper::baseUrl()); // Désactivation du drapeau, langue FR par défaut
} } else {
setcookie('ZWII_I18N_SITE' , 'fr', time() + 3600, helper::baseUrl(false, false) , '', helper::isHttps(), true);
helper::deleteCookie('ZWII_I18N_SCRIPT');
} }
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'redirect' => helper::baseUrl() 'redirect' => helper::baseUrl()