This commit is contained in:
Fred Tempez 2024-04-23 17:42:00 +02:00
parent b3e3ead5ac
commit c702c41fed
28 changed files with 111 additions and 49 deletions

View File

@ -1,5 +1,10 @@
# Changelog # Changelog
## Version 13.3.00
Cette modification évite les problèmes d'édition de langues différentes dans des onglets différents du même navigateur.
## Version 13.2.02 ## Version 13.2.02
Corrige un warning quand un module blog ou news ne contient pas d'article. Corrige un warning quand un module blog ou news ne contient pas d'article.

View File

@ -980,7 +980,7 @@ class layout extends common
// Bouton Ajouter une page // Bouton Ajouter une page
if ($this->getUser('permission', 'page', 'add')) { if ($this->getUser('permission', 'page', 'add')) {
$leftItems .= '<li>' . template::ico('plus', [ $leftItems .= '<li>' . template::ico('plus', [
'href' => helper::baseUrl() . 'page/add', 'href' => helper::baseUrl() . 'page/add/' . self::$siteContent,
'help' => 'Nouvelle page ou barre latérale' 'help' => 'Nouvelle page ou barre latérale'
]) . '</li>'; ]) . '</li>';
} }
@ -999,7 +999,7 @@ class layout extends common
// Bouton Editer une page // Bouton Editer une page
if ($this->getUser('permission', 'page', 'edit')) { if ($this->getUser('permission', 'page', 'edit')) {
$leftItems .= '<li>' . template::ico('pencil', [ $leftItems .= '<li>' . template::ico('pencil', [
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0), 'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0) . '/' . self::$siteContent,
'help' => 'Éditer la page' 'help' => 'Éditer la page'
]) . '</li>'; ]) . '</li>';
} }
@ -1018,7 +1018,7 @@ class layout extends common
$this->getUser('permission', 'page', 'duplicate') $this->getUser('permission', 'page', 'duplicate')
) { ) {
$leftItems .= '<li>' . template::ico('clone', [ $leftItems .= '<li>' . template::ico('clone', [
'href' => helper::baseUrl() . 'page/duplicate/' . $this->getUrl(0), 'href' => helper::baseUrl() . 'page/duplicate/' . $this->getUrl(0) . '/' . self::$siteContent,
'help' => 'Dupliquer la page' 'help' => 'Dupliquer la page'
]) ])
. '</li>'; . '</li>';
@ -1028,7 +1028,7 @@ class layout extends common
$this->getUser('permission', 'page', 'delete') $this->getUser('permission', 'page', 'delete')
) { ) {
$leftItems .= '<li>' . template::ico('trash', [ $leftItems .= '<li>' . template::ico('trash', [
'href' => helper::baseUrl() . 'page/delete/' . $this->getUrl(0), 'href' => helper::baseUrl() . 'page/delete/' . $this->getUrl(0) . '/' . self::$siteContent,
'help' => 'Supprimer la page', 'help' => 'Supprimer la page',
'id' => 'pageDelete' 'id' => 'pageDelete'
]) ])

View File

@ -444,26 +444,6 @@ class core extends common
exit(); exit();
} }
// Pour éviter une 404 sur une langue étrangère, bascule dans la langue correcte.
if (is_null($this->getData(['page', $this->getUrl(0)]))) {
foreach (common::$languages as $key => $value) {
if (
is_dir(common::DATA_DIR . $key) &&
file_exists(common::DATA_DIR . $key . '/page.json')
) {
$pagesId = json_decode(file_get_contents(common::DATA_DIR . $key . '/page.json'), true);
if (
is_array($pagesId['page']) &&
array_key_exists($this->getUrl(0), $pagesId['page'])
) {
$_SESSION['ZWII_CONTENT'] = $key;
header('Refresh:0; url=' . helper::baseUrl() . $this->getUrl(0));
exit();
}
}
}
}
// Check l'accès à la page // Check l'accès à la page
$access = null; $access = null;
if ($this->getData(['page', $this->getUrl(0)]) !== null) { if ($this->getData(['page', $this->getUrl(0)]) !== null) {
@ -813,6 +793,28 @@ class core extends common
} }
} elseif ($this->output['content'] === '') { } elseif ($this->output['content'] === '') {
http_response_code(404); http_response_code(404);
// Pour éviter une 404, bascule dans l'espace correct si la page existe dans cette langue.
// Parcourir les espaces
foreach (common::$languages as $langId => $value) {;
if (
// l'espace existe
is_dir(common::DATA_DIR . $langId) &&
file_exists(common::DATA_DIR . $langId . '/page.json')
) {
// Lire les données des pages
$pagesId = json_decode(file_get_contents(common::DATA_DIR . $langId . '/page.json'), true);
if (
// La page existe
is_array($pagesId['page']) &&
array_key_exists($this->getUrl(0), $pagesId['page'])
) {
// Basculer
$_SESSION['ZWII_SITE_CONTENT'] = $langId;
header('Refresh:0; url=' . helper::baseUrl() . $this->getUrl());
exit();
}
}
}
if ( if (
$this->getData(['locale', 'page404']) !== 'none' $this->getData(['locale', 'page404']) !== 'none'
and $this->getData(['page', $this->getData(['locale', 'page404'])]) and $this->getData(['page', $this->getData(['locale', 'page404'])])

View File

@ -51,7 +51,7 @@ class common
const ACCESS_TIMER = 1800; const ACCESS_TIMER = 1800;
// Numéro de version // Numéro de version
const ZWII_VERSION = '13.2.02'; const ZWII_VERSION = '13.3.00';
// URL autoupdate // URL autoupdate
const ZWII_UPDATE_URL = 'https://forge.chapril.org/ZwiiCMS-Team/cms-update/raw/branch/master/'; const ZWII_UPDATE_URL = 'https://forge.chapril.org/ZwiiCMS-Team/cms-update/raw/branch/master/';

View File

@ -85,8 +85,19 @@ class page extends common
*/ */
public function duplicate() public function duplicate()
{ {
// La session ne correspond pas au site ouvert dans cet onglet
if (
// Contrôle la présence de l'id de langue uniquement si l'id est fourni afin de ne pas bloquer les modules non mis à jour
$this->getUrl(3) && $this->getUrl(3) != self::$siteContent
) {
$_SESSION['ZWII_SITE_CONTENT'] = $this->getUrl(3);
header('Refresh:0; url=' . helper::baseUrl() . $this->getUrl());
exit();
}
// Adresse sans le token // Adresse sans le token
$page = $this->getUrl(2); $page = $this->getUrl(2);
// La page n'existe pas // La page n'existe pas
if ( if (
$this->getUser('permission', __CLASS__, __FUNCTION__) !== true || $this->getUser('permission', __CLASS__, __FUNCTION__) !== true ||
@ -118,7 +129,7 @@ class page extends common
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'redirect' => helper::baseUrl() . 'page/edit/' . $pageId, 'redirect' => helper::baseUrl() . 'page/edit/' . $pageId . '/' . self::$siteContent,
'notification' => $notification, 'notification' => $notification,
'state' => true 'state' => true
]); ]);
@ -131,6 +142,16 @@ class page extends common
*/ */
public function add() public function add()
{ {
// La session ne correspond pas au site ouvert dans cet onglet
if (
// Contrôle la présence de l'id de langue uniquement si l'id est fourni afin de ne pas bloquer les modules non mis à jour
$this->getUrl(3) && $this->getUrl(3) != self::$siteContent
) {
$_SESSION['ZWII_SITE_CONTENT'] = $this->getUrl(3);
header('Refresh:0; url=' . helper::baseUrl() . $this->getUrl());
exit();
}
if ($this->getUser('permission', __CLASS__, __FUNCTION__) !== true) { if ($this->getUser('permission', __CLASS__, __FUNCTION__) !== true) {
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
@ -198,6 +219,16 @@ class page extends common
*/ */
public function delete() public function delete()
{ {
// La session ne correspond pas au site ouvert dans cet onglet
if (
// Contrôle la présence de l'id de langue uniquement si l'id est fourni afin de ne pas bloquer les modules non mis à jour
$this->getUrl(3) && $this->getUrl(3) != self::$siteContent
) {
$_SESSION['ZWII_SITE_CONTENT'] = $this->getUrl(3);
header('Refresh:0; url=' . helper::baseUrl() . $this->getUrl());
exit();
}
// $url prend l'adresse sans le token // $url prend l'adresse sans le token
$page = $this->getUrl(2); $page = $this->getUrl(2);
// La page n'existe pas // La page n'existe pas
@ -262,7 +293,7 @@ class page extends common
elseif ($this->getHierarchy($page, null)) { elseif ($this->getHierarchy($page, null)) {
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'redirect' => helper::baseUrl() . 'page/edit/' . $page, 'redirect' => helper::baseUrl() . 'page/edit/' . $page . '/' . self::$siteContent,
'notification' => helper::translate('Impossible de supprimer une page contenant des pages enfants') 'notification' => helper::translate('Impossible de supprimer une page contenant des pages enfants')
]); ]);
} }
@ -302,6 +333,17 @@ class page extends common
*/ */
public function edit() public function edit()
{ {
// La session ne correspond pas au site ouvert dans cet onglet
if (
// Contrôle la présence de l'id de langue uniquement si l'id est fourni afin de ne pas bloquer les modules non mis à jour
$this->getUrl(3) && $this->getUrl(3) != self::$siteContent
) {
$_SESSION['ZWII_SITE_CONTENT'] = $this->getUrl(3);
header('Refresh:0; url=' . helper::baseUrl() . $this->getUrl());
exit();
}
// La page n'existe pas // La page n'existe pas
if ( if (
$this->getUser('permission', __CLASS__, __FUNCTION__) !== true || $this->getUser('permission', __CLASS__, __FUNCTION__) !== true ||
@ -610,7 +652,7 @@ class page extends common
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'notification' => helper::translate('Modifications enregistrées'), 'notification' => helper::translate('Modifications enregistrées'),
'redirect' => helper::baseUrl() . 'page/edit/' . $this->getUrl(2), 'redirect' => helper::baseUrl() . 'page/edit/' . $this->getUrl(2) . '/' . self::$siteContent,
'state' => true 'state' => true
]); ]);
} }
@ -645,7 +687,7 @@ class page extends common
// Valeurs en sortie // Valeurs en sortie
$this->addOutput([ $this->addOutput([
'notification' => helper::translate('Modifications enregistrées'), 'notification' => helper::translate('Modifications enregistrées'),
'redirect' => helper::baseUrl() . 'page/edit/' . $this->getUrl(2), 'redirect' => helper::baseUrl() . 'page/edit/' . $this->getUrl(2) . '/' . self::$siteContent,
'state' => true 'state' => true
]); ]);
} }
@ -661,7 +703,7 @@ class page extends common
/** /**
* Retourne les informations sur les pages en omettant les clés CSS et JS qui occasionnent des bugs d'affichage dans l'éditeur de page * Retourne les informations sur les pages en omettant les clés CSS et JS qui occasionnent des bugs d'affichage dans l'éditeur de page
* @return array tableau associatif des pages dans le menu * @return string tableau associatif des pages dans le menu
*/ */
public function getPageInfo() public function getPageInfo()
{ {
@ -671,6 +713,5 @@ class page extends common
return $d; return $d;
}, $p); }, $p);
return json_encode($d); return json_encode($d);
} }
} }

View File

@ -3,7 +3,7 @@
<div class="col1"> <div class="col1">
<?php echo template::button('pageCssEditorBack', [ <?php echo template::button('pageCssEditorBack', [
'class' => 'buttonGrey', 'class' => 'buttonGrey',
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(2), 'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(2) . '/' . self::$siteContent,
'value' => template::ico('left') 'value' => template::ico('left')
]); ?> ]); ?>
</div> </div>

View File

@ -19,14 +19,14 @@
<div class="col1 offset6"> <div class="col1 offset6">
<?php echo template::button('pageEditDelete', [ <?php echo template::button('pageEditDelete', [
'class' => 'buttonRed', 'class' => 'buttonRed',
'href' => helper::baseUrl() . 'page/delete/' . $this->getUrl(2), 'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(2) . '/' . self::$siteContent,
'value' => template::ico('trash'), 'value' => template::ico('trash'),
'help' => 'Effacer la page' 'help' => 'Effacer la page'
]); ?> ]); ?>
</div> </div>
<div class="col1"> <div class="col1">
<?php echo template::button('pageEditDuplicate', [ <?php echo template::button('pageEditDuplicate', [
'href' => helper::baseUrl() . 'page/duplicate/' . $this->getUrl(2), 'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(2) . '/' . self::$siteContent,
'value' => template::ico('clone'), 'value' => template::ico('clone'),
'help' => 'Dupliquer la page' 'help' => 'Dupliquer la page'
]); ?> ]); ?>

View File

@ -3,7 +3,7 @@
<div class="col1"> <div class="col1">
<?php echo template::button('pageJsEditorBack', [ <?php echo template::button('pageJsEditorBack', [
'class' => 'buttonGrey', 'class' => 'buttonGrey',
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(2), 'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(2) . '/' . self::$siteContent,
'value' => template::ico('left') 'value' => template::ico('left')
]); ?> ]); ?>
</div> </div>

View File

@ -16,7 +16,7 @@
class blog extends common class blog extends common
{ {
const VERSION = '7.6'; const VERSION = '7.7';
const REALNAME = 'Blog'; const REALNAME = 'Blog';
const DELETE = true; const DELETE = true;
const UPDATE = '0.0'; const UPDATE = '0.0';

View File

@ -1,3 +1,5 @@
# Version 7.7
- Contrôle de la variable de session liée au contenu. Evite des erreurs lorsque plusieurs onglets sont ouverts.
# Version 7.6 # Version 7.6
- Mise à jour RSS Feed - Mise à jour RSS Feed
# Version 7.5 # Version 7.5

View File

@ -3,7 +3,7 @@
<div class="col1"> <div class="col1">
<?php echo template::button('blogConfigBack', [ <?php echo template::button('blogConfigBack', [
'class' => 'buttonGrey', 'class' => 'buttonGrey',
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0), 'posts', 'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0) . '/' . self::$siteContent,
'value' => template::ico('left') 'value' => template::ico('left')
]); ?> ]); ?>
</div> </div>

View File

@ -1,3 +1,5 @@
# Version 4.3
- Contrôle de la variable de session liée au contenu. Evite des erreurs lorsque plusieurs onglets sont ouverts.
# Version 4.2 # Version 4.2
- Termes des commandes de profils - Termes des commandes de profils
# Version 4.1 # Version 4.1

View File

@ -17,7 +17,7 @@
class form extends common class form extends common
{ {
const VERSION = '4.2'; const VERSION = '4.3';
const REALNAME = 'Formulaire'; const REALNAME = 'Formulaire';
const DATADIRECTORY = ''; // Contenu localisé inclus par défaut (page.json et module.json) const DATADIRECTORY = ''; // Contenu localisé inclus par défaut (page.json et module.json)

View File

@ -53,7 +53,7 @@
<div class="col1"> <div class="col1">
<?php echo template::button('formConfigBack', [ <?php echo template::button('formConfigBack', [
'class' => 'buttonGrey', 'class' => 'buttonGrey',
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0), 'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0) . '/' . self::$siteContent,
'value' => template::ico('left') 'value' => template::ico('left')
]); ?> ]); ?>
</div> </div>

View File

@ -1,3 +1,5 @@
# Version 4.2
- Contrôle de la variable de session liée au contenu. Evite des erreurs lorsque plusieurs onglets sont ouverts.
# Version 4.1 # Version 4.1
- Termes des commandes de profils - Termes des commandes de profils
# Version 4.0 # Version 4.0

View File

@ -18,7 +18,7 @@ class gallery extends common
{ {
const VERSION = '4.1'; const VERSION = '4.2';
const REALNAME = 'Galerie'; const REALNAME = 'Galerie';
const DATADIRECTORY = self::DATA_DIR . 'gallery/'; const DATADIRECTORY = self::DATA_DIR . 'gallery/';

View File

@ -3,7 +3,7 @@
<div class="col1"> <div class="col1">
<?php echo template::button('galleryConfigBack', [ <?php echo template::button('galleryConfigBack', [
'class' => 'buttonGrey', 'class' => 'buttonGrey',
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0), 'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0) . '/' . self::$siteContent,
'value' => template::ico('left') 'value' => template::ico('left')
]); ?> ]); ?>
</div> </div>

View File

@ -1,3 +1,5 @@
# Version 5.6
- Contrôle de la variable de session liée au contenu. Evite des erreurs lorsque plusieurs onglets sont ouverts.
# Version 5.5 # Version 5.5
- Mise à jour RSS Feed - Mise à jour RSS Feed
# Version 5.4 # Version 5.4

View File

@ -16,7 +16,7 @@
class news extends common class news extends common
{ {
const VERSION = '5.5'; const VERSION = '5.6';
const REALNAME = 'News'; const REALNAME = 'News';
const DATADIRECTORY = self::DATA_DIR . 'news/'; const DATADIRECTORY = self::DATA_DIR . 'news/';

View File

@ -3,7 +3,7 @@
<div class="col1"> <div class="col1">
<?php echo template::button('newsConfigBack', [ <?php echo template::button('newsConfigBack', [
'class' => 'buttonGrey', 'class' => 'buttonGrey',
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0),'posts', 'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0) . '/' . self::$siteContent,
'value' => template::ico('left') 'value' => template::ico('left')
]); ?> ]); ?>
</div> </div>

View File

@ -1,3 +1,5 @@
# Version 2.2
- Contrôle de la variable de session liée au contenu. Evite des erreurs lorsque plusieurs onglets sont ouverts.
# Version 2.1 # Version 2.1
- Edition du module ou de la page impossible. - Edition du module ou de la page impossible.
# Version 2.0 # Version 2.0

View File

@ -16,7 +16,7 @@
class redirection extends common class redirection extends common
{ {
const VERSION = '2.1'; const VERSION = '2.2';
const REALNAME = 'Redirection'; const REALNAME = 'Redirection';
const DATADIRECTORY = ''; // Contenu localisé inclus par défaut (page.json et module.json) const DATADIRECTORY = ''; // Contenu localisé inclus par défaut (page.json et module.json)

View File

@ -3,7 +3,7 @@
<div class="col1"> <div class="col1">
<?php echo template::button('redirectionConfigBack', [ <?php echo template::button('redirectionConfigBack', [
'class' => 'buttonGrey', 'class' => 'buttonGrey',
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0), 'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0) . '/' . self::$siteContent,
'value' => template::ico('left') 'value' => template::ico('left')
]); ?> ]); ?>
</div> </div>

View File

@ -1,3 +1,5 @@
# Version 3.2
- Contrôle de la variable de session liée au contenu. Evite des erreurs lorsque plusieurs onglets sont ouverts.
# Version 3.1 # Version 3.1
- Initialise un module installé dans une page sans avoir ouvert la page de configuration sans lancer de mise à jour. - Initialise un module installé dans une page sans avoir ouvert la page de configuration sans lancer de mise à jour.
# Version 3.0 # Version 3.0

View File

@ -20,7 +20,7 @@
class search extends common class search extends common
{ {
const VERSION = '3.1'; const VERSION = '3.2';
const REALNAME = 'Recherche'; const REALNAME = 'Recherche';
const DATADIRECTORY = self::DATA_DIR . 'search/'; const DATADIRECTORY = self::DATA_DIR . 'search/';

View File

@ -3,7 +3,7 @@
<div class="col1"> <div class="col1">
<?php echo template::button('searchConfigBack', [ <?php echo template::button('searchConfigBack', [
'class' => 'buttonGrey', 'class' => 'buttonGrey',
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0), 'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0) . '/' . self::$siteContent,
'value' => template::ico('left') 'value' => template::ico('left')
]); ?> ]); ?>
</div> </div>

View File

@ -1,3 +1,5 @@
# Version 6.5
- Contrôle de la variable de session liée au contenu. Evite des erreurs lorsque plusieurs onglets sont ouverts.
# Version 6.4 # Version 6.4
- Corrige plusieurs bugs dans les fonctions de tri - Corrige plusieurs bugs dans les fonctions de tri
# Version 6.3 # Version 6.3

View File

@ -3,7 +3,7 @@
<div class="col1"> <div class="col1">
<?php echo template::button('galleryConfigBack', [ <?php echo template::button('galleryConfigBack', [
'class' => 'buttonGrey', 'class' => 'buttonGrey',
'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0), 'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0) . '/' . self::$siteContent,
'value' => template::ico('left') 'value' => template::ico('left')
]); ?> ]); ?>
</div> </div>