From cd69635448ca5bb60ad9ccb294944924ddfca6e9 Mon Sep 17 00:00:00 2001 From: F TEMPEZ Date: Tue, 13 Feb 2024 11:33:03 +0100 Subject: [PATCH 1/6] =?UTF-8?q?1.5.04=20Fix=20la=20derni=C3=A8re=20page=20?= =?UTF-8?q?vue=20a=20chang=C3=A9=20de=20nom,=20redirige=20vers=20l'accueil?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- core/core.php | 2 +- core/module/course/course.php | 9 ++++++++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 40814de..372208f 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ZwiiCampus 1.5.03 +# ZwiiCampus 1.5.04 ZwiiCampus (Learning Management System) est logiciel auteur destiné à mettre en ligne des tutoriels. Il dispose de plusieurs modalités d'ouverture et d'accès des contenus. Basé sur la version 13 du CMS Zwii, la structure logicielle est solide, le framework de Zwii est éprouvé. diff --git a/core/core.php b/core/core.php index 172be58..ebda73c 100644 --- a/core/core.php +++ b/core/core.php @@ -51,7 +51,7 @@ class common const ACCESS_TIMER = 1800; // Numéro de version - const ZWII_VERSION = '1.5.03'; + const ZWII_VERSION = '1.5.04'; // URL autoupdate const ZWII_UPDATE_URL = 'https://forge.chapril.org/ZwiiCMS-Team/campus-update/raw/branch/master/'; diff --git a/core/module/course/course.php b/core/module/course/course.php index cbdd71e..9d06d64 100644 --- a/core/module/course/course.php +++ b/core/module/course/course.php @@ -1063,6 +1063,11 @@ class course extends common $redirect = helper::baseUrl(); $state = true; + // Récupérer les pahes pour contrôler la dernière page vue + $p = json_decode(file_get_contents(self::DATA_DIR . $courseId . '/page.json'), true); + $pages = $p['page']; + + // Routage if ( // Sortir du contenu et afficher l'accueil $courseId === 'home' @@ -1076,7 +1081,9 @@ class course extends common && $this->courseIsAvailable($courseId) ) { // Récupérer la dernière page visitée par cet utilisateur si elle existe - $redirect = $this->getData(['enrolment', $courseId, $userId, 'lastPageView']) + $redirect = ( $this->getData(['enrolment', $courseId, $userId, 'lastPageView']) + && array_key_exists($this->getData(['enrolment', $courseId, $userId, 'lastPageView']), $pages) + ) ? helper::baseUrl() . $this->getData(['enrolment', $courseId, $userId, 'lastPageView']) : helper::baseUrl() . $pageId; /* From b5382fa5f2dd4fe873b28a03faad29c86f057a9e Mon Sep 17 00:00:00 2001 From: F TEMPEZ Date: Tue, 13 Feb 2024 12:06:13 +0100 Subject: [PATCH 2/6] 1.5.03 Erreur de version --- README.md | 2 +- core/core.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 372208f..40814de 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ZwiiCampus 1.5.04 +# ZwiiCampus 1.5.03 ZwiiCampus (Learning Management System) est logiciel auteur destiné à mettre en ligne des tutoriels. Il dispose de plusieurs modalités d'ouverture et d'accès des contenus. Basé sur la version 13 du CMS Zwii, la structure logicielle est solide, le framework de Zwii est éprouvé. diff --git a/core/core.php b/core/core.php index ebda73c..172be58 100644 --- a/core/core.php +++ b/core/core.php @@ -51,7 +51,7 @@ class common const ACCESS_TIMER = 1800; // Numéro de version - const ZWII_VERSION = '1.5.04'; + const ZWII_VERSION = '1.5.03'; // URL autoupdate const ZWII_UPDATE_URL = 'https://forge.chapril.org/ZwiiCMS-Team/campus-update/raw/branch/master/'; From d3675f62f442a50d70001609aa3885e903e3c4d5 Mon Sep 17 00:00:00 2001 From: F TEMPEZ Date: Wed, 14 Feb 2024 11:38:29 +0100 Subject: [PATCH 3/6] =?UTF-8?q?1.5.04=20Changement=20de=20nom=20d'une=20pa?= =?UTF-8?q?ge=20met=20=C3=A0=20jour=20les=20id=20dans=20les=20historiques?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- core/core.php | 2 +- core/module/course/course.php | 11 ++++++----- core/module/page/page.php | 34 +++++++++++++++++++++++++++------- 4 files changed, 35 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 40814de..372208f 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ZwiiCampus 1.5.03 +# ZwiiCampus 1.5.04 ZwiiCampus (Learning Management System) est logiciel auteur destiné à mettre en ligne des tutoriels. Il dispose de plusieurs modalités d'ouverture et d'accès des contenus. Basé sur la version 13 du CMS Zwii, la structure logicielle est solide, le framework de Zwii est éprouvé. diff --git a/core/core.php b/core/core.php index 172be58..ebda73c 100644 --- a/core/core.php +++ b/core/core.php @@ -51,7 +51,7 @@ class common const ACCESS_TIMER = 1800; // Numéro de version - const ZWII_VERSION = '1.5.03'; + const ZWII_VERSION = '1.5.04'; // URL autoupdate const ZWII_UPDATE_URL = 'https://forge.chapril.org/ZwiiCMS-Team/campus-update/raw/branch/master/'; diff --git a/core/module/course/course.php b/core/module/course/course.php index 9d06d64..6c495dc 100644 --- a/core/module/course/course.php +++ b/core/module/course/course.php @@ -1063,7 +1063,7 @@ class course extends common $redirect = helper::baseUrl(); $state = true; - // Récupérer les pahes pour contrôler la dernière page vue + // Récupérer les pages pour contrôler la dernière page vue $p = json_decode(file_get_contents(self::DATA_DIR . $courseId . '/page.json'), true); $pages = $p['page']; @@ -1079,14 +1079,15 @@ class course extends common elseif ( $this->courseIsUserEnroled($courseId) && $this->courseIsAvailable($courseId) - ) { + ) { // Récupérer la dernière page visitée par cet utilisateur si elle existe - $redirect = ( $this->getData(['enrolment', $courseId, $userId, 'lastPageView']) + $redirect = ( $this->getData(['enrolment', $courseId, $userId, 'lastPageView']) !== null && array_key_exists($this->getData(['enrolment', $courseId, $userId, 'lastPageView']), $pages) ) ? helper::baseUrl() . $this->getData(['enrolment', $courseId, $userId, 'lastPageView']) - : helper::baseUrl() . $pageId; - /* + : helper::baseUrl(); + + /* $essage = $this->getData(['enrolment', $courseId, $userId, 'datePageView']) ? $this->getData(['enrolment', $courseId, $userId, 'datePageView']) : ''; diff --git a/core/module/page/page.php b/core/module/page/page.php index 1974901..0dae711 100644 --- a/core/module/page/page.php +++ b/core/module/page/page.php @@ -68,10 +68,10 @@ class page extends common public static $userProfils = []; public static $navIconTemplate = [ - 'dir' => 'Petit triangle', - 'open' => 'Grand triangle', - 'big' => 'Flèche', - ]; + 'dir' => 'Petit triangle', + 'open' => 'Grand triangle', + 'big' => 'Flèche', + ]; public static $navIconPosition = [ 'none' => 'Masqué', @@ -357,6 +357,24 @@ class page extends common $this->setData(['module', $pageId, 'theme', 'style', $modulesData[$moduleId]['dataDirectory'] . $pageId]); } } + // Met à jour les historiques des utilisateurs + foreach ($this->getData(['enrolment', self::$siteContent]) as $userId => $userData) { + // Vérifier si l'utilisateur a un historique + if ( + isset($userData["history"]) + && isset($userData['history'][$this->getUrl(2)]) + ) { + // Remplacer l'ancienne ID par la nouvelle + $datas = $this->getData(['enrolment', self::$siteContent, $userId, 'history', $this->getUrl(2)]); + $this->setData(['enrolment', self::$siteContent, $userId, 'history', $pageId, $datas]); + $this->deleteData(['enrolment', self::$siteContent, $userId, 'history', $this->getUrl(2)]); + } + // Mettre à jour la dernière page vue si nécessaire + if ($this->getData(['enrolment', self::$siteContent, $userId, 'lastPageView']) === $this->getUrl(2)) { + $this->setData(['enrolment', self::$siteContent, $userId, 'lastPageView', $pageId]); + } + } + // Si la page correspond à la page d'accueil, change l'id dans la configuration du site if ($this->getData(['config', 'homePageId']) === $this->getUrl(2)) { $this->setData(['config', 'homePageId', $pageId]); @@ -538,7 +556,7 @@ class page extends common } } // Construction du formulaire - + // Met à jour le sitemap $this->updateSitemap(); @@ -602,7 +620,8 @@ class page extends common $css = $this->getInput('pageCssEditorContent', helper::FILTER_STRING_LONG) === null ? '' : $this->getInput('pageCssEditorContent', helper::FILTER_STRING_LONG); // Enregistre le CSS $this->setData([ - 'page', $this->getUrl(2), + 'page', + $this->getUrl(2), 'css', $css ]); @@ -636,7 +655,8 @@ class page extends common $js = $this->getInput('pageJsEditorContent', helper::FILTER_STRING_LONG) === null ? '' : $this->getInput('pageJsEditorContent', helper::FILTER_STRING_LONG); // Enregistre le JS $this->setData([ - 'page', $this->getUrl(2), + 'page', + $this->getUrl(2), 'js', $js ]); From 572f0206a88913116869a2071f1ae35eae76be70 Mon Sep 17 00:00:00 2001 From: F TEMPEZ Date: Wed, 14 Feb 2024 11:49:43 +0100 Subject: [PATCH 4/6] 1.5.04 Propagation du renommade de la homePage dans course --- core/module/page/page.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core/module/page/page.php b/core/module/page/page.php index 0dae711..ab37180 100644 --- a/core/module/page/page.php +++ b/core/module/page/page.php @@ -374,6 +374,10 @@ class page extends common $this->setData(['enrolment', self::$siteContent, $userId, 'lastPageView', $pageId]); } } + // Met à jour la homePage si nécessaire + if ($this->getUrl(2) === $this->getData(['course', self::$siteContent, 'homePageId'])) { + $this->setData(['course', self::$siteContent, 'homePageId', $pageId]); + } // Si la page correspond à la page d'accueil, change l'id dans la configuration du site if ($this->getData(['config', 'homePageId']) === $this->getUrl(2)) { From 3884573de9263873ff7fe75e1634b19e9b1b18cd Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Wed, 14 Feb 2024 18:25:06 +0100 Subject: [PATCH 5/6] =?UTF-8?q?1.5.04=20message=20suppression=20page=20d?= =?UTF-8?q?=C3=A9finie=20comme=20homePage=20Id?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/module/page/page.php | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/core/module/page/page.php b/core/module/page/page.php index ab37180..b0f18ae 100644 --- a/core/module/page/page.php +++ b/core/module/page/page.php @@ -214,8 +214,10 @@ class page extends common elseif ($page === $this->homePageId()) { // Valeurs en sortie $this->addOutput([ - 'redirect' => helper::baseUrl() . 'config', - 'notification' => helper::translate('Suppression interdite, page active dans la configuration de la langue du site') + 'redirect' => helper::baseUrl() . $this->homePageId(), + 'notification' => self::$siteContent === 'home' + ? helper::translate('Suppression interdite, cette page est définie comme page d\'accueil du site') + : helper::translate('Suppression interdite, cette page est définie comme page d\'accueil d\'un espace') ]); } // Impossible de supprimer la page affectée @@ -223,7 +225,7 @@ class page extends common // Valeurs en sortie $this->addOutput([ 'redirect' => helper::baseUrl() . 'config', - 'notification' => helper::translate('Suppression interdite, page active dans la configuration de la langue du site') + 'notification' => helper::translate('Suppression interdite, page active dans la configuration du site') ]); } // Impossible de supprimer la page affectée @@ -231,7 +233,7 @@ class page extends common // Valeurs en sortie $this->addOutput([ 'redirect' => helper::baseUrl() . 'config', - 'notification' => helper::translate('Suppression interdite, page active dans la configuration de la langue du site') + 'notification' => helper::translate('Suppression interdite, page active dans la configuration du site') ]); } // Impossible de supprimer la page affectée @@ -239,7 +241,7 @@ class page extends common // Valeurs en sortie $this->addOutput([ 'redirect' => helper::baseUrl() . 'config', - 'notification' => helper::translate('Suppression interdite, page active dans la configuration de la langue du site') + 'notification' => helper::translate('Suppression interdite, page active dans la configuration du site') ]); } // Impossible de supprimer la page affectée @@ -247,7 +249,7 @@ class page extends common // Valeurs en sortie $this->addOutput([ 'redirect' => helper::baseUrl() . 'config', - 'notification' => helper::translate('Suppression interdite, page active dans la configuration de la langue du site') + 'notification' => helper::translate('Suppression interdite, page active dans la configuration du site') ]); } // Impossible de supprimer la page affectée @@ -255,7 +257,7 @@ class page extends common // Valeurs en sortie $this->addOutput([ 'redirect' => helper::baseUrl() . 'config', - 'notification' => helper::translate('Suppression interdite, page active dans la configuration de la langue du site') + 'notification' => helper::translate('Suppression interdite, page active dans la configuration du site') ]); } // Impossible de supprimer une page contenant des enfants From 97a782eb4db7ee8f8bc0ec0f61e551bb0ff9bf5c Mon Sep 17 00:00:00 2001 From: fredtempez Date: Thu, 15 Feb 2024 14:35:37 +0100 Subject: [PATCH 6/6] Slider 6.4 --- module/slider/changes.md | 4 ++++ module/slider/slider.php | 39 +++++++++++++++++++++++++++------------ 2 files changed, 31 insertions(+), 12 deletions(-) diff --git a/module/slider/changes.md b/module/slider/changes.md index 4ed45c8..b40600d 100644 --- a/module/slider/changes.md +++ b/module/slider/changes.md @@ -1,3 +1,7 @@ +# Version 6.4 +- Corrige plussieurs bugs dans les fonctions de tri +# Version 6.3 +- Corrige un tri non fonctionnel. # Version 6.2 - Applique les profils # Version 6.1 diff --git a/module/slider/slider.php b/module/slider/slider.php index abcdf33..df1f6ed 100644 --- a/module/slider/slider.php +++ b/module/slider/slider.php @@ -27,7 +27,7 @@ class slider extends common 'index' => self::GROUP_VISITOR ]; - const VERSION = '6.2'; + const VERSION = '6.4'; const REALNAME = 'Carrousel'; const DELETE = true; const UPDATE = '0.0'; @@ -237,12 +237,12 @@ class slider extends common } } // Tri des images pour affichage de la liste dans la page d'édition - switch ($this->getData(['module', $this->getUrl(0), 'theme', 'tri'])) { + switch ($this->getData(['module', $this->getUrl(0), 'theme', 'sort'])) { case 'dsc': - krsort(self::$pictures, SORT_NATURAL | SORT_FLAG_CASE); + ksort(self::$pictures, SORT_NATURAL | SORT_FLAG_CASE); break; case 'asc': - ksort(self::$pictures, SORT_NATURAL | SORT_FLAG_CASE); + krsort(self::$pictures, SORT_NATURAL | SORT_FLAG_CASE); break; case 'rand': case 'none': @@ -385,16 +385,31 @@ class slider extends common } // Tri des images par ordre alphabétique, alphabétique inverse, aléatoire ou pas - switch ($this->getData(['module', $galleryId, 'config', 'tri'])) { - case 'SORT_DSC': - krsort(self::$pictures, SORT_NATURAL | SORT_FLAG_CASE); + switch ($this->getData(['module', $galleryId, 'theme', 'sort'])) { + case 'desc': + uksort(self::$pictures, function ($a, $b) { + return strcmp(basename($a), basename($b)); + }); break; - case 'SORT_ASC': - ksort(self::$pictures, SORT_NATURAL | SORT_FLAG_CASE); + case 'asc': + uksort(self::$pictures, function ($a, $b) { + return strcmp(basename($b), basename($a)); + }); break; - case 'RAND': + case 'rand': + // Récupérer les clés du tableau + $keys = array_keys(self::$pictures); + // Mélanger les clés + shuffle($keys); + // Créer un nouveau tableau avec les clés mélangées + $shuffledPictures = []; + foreach ($keys as $key) { + $shuffledPictures[$key] = self::$pictures[$key]; + } + // Mettre à jour le tableau initial avec le nouveau tableau mélangé + self::$pictures = $shuffledPictures; break; - case 'NONE': + case 'none': break; default: break; @@ -445,7 +460,7 @@ class slider extends common 'speed' => 1000, 'timeout' => 3000, 'namespace' => 'centered-btns', - 'tri' => 'RAND', + 'sort' => 'RAND', ], 'directory' => null, 'legends' => [],