From e640fefa808e69623fee4fd0a5dbf1a4045e8573 Mon Sep 17 00:00:00 2001 From: Fred Tempez Date: Mon, 11 Sep 2023 22:39:19 +0200 Subject: [PATCH] =?UTF-8?q?Structure=20am=C3=A9lior=C3=A9e=20d'un=20nouvea?= =?UTF-8?q?u=20cours?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/class/layout.class.php | 4 +- core/core.php | 77 ++++++++---------- core/module/course/course.php | 81 +++++++++++-------- core/module/install/ressource/defaultdata.php | 65 ++++++++++++++- notes.txt | 4 +- 5 files changed, 150 insertions(+), 81 deletions(-) diff --git a/core/class/layout.class.php b/core/class/layout.class.php index 278df8a..6b5b4c3 100644 --- a/core/class/layout.class.php +++ b/core/class/layout.class.php @@ -896,9 +896,9 @@ class layout extends common // Sélecteur de cours if ($this->getUser('group') >= self::GROUP_TEACHER) { $leftItems .= '
  • '; } diff --git a/core/core.php b/core/core.php index b74b453..de781ec 100644 --- a/core/core.php +++ b/core/core.php @@ -83,13 +83,13 @@ class common 'user' ]; /* - Cette variable est supprimée du test dans le routeur. - public static $accessExclude = [ - 'login', - 'logout', - 'maintenance', - ]; - */ + Cette variable est supprimée du test dans le routeur. + public static $accessExclude = [ + 'login', + 'logout', + 'maintenance', + ]; + */ private $data = []; private $hierarchy = [ 'all' => [], @@ -223,8 +223,6 @@ class common private $courseFiles = [ 'page' => '', 'module' => '', - 'course' => '', - 'enrolment' => '', ]; public static $fontsWebSafe = [ @@ -333,16 +331,12 @@ class common foreach ($this->configFiles as $module => $value) { $this->initDB($module); } - // Les fichiers de la page d'accueil - if (self::$courseContent === 'home') { - $this->initDB('page', self::$courseContent); - $this->initDB('module', self::$courseContent); - } else { - foreach ($this->courseFiles as $module => $value) { - $this->initDB($module, self::$courseContent); - } + // Les fichiers des cours + foreach ($this->courseFiles as $module => $value) { + $this->initDB($module, self::$courseContent); } + // Installation fraîche, initialisation de la configuration inexistante // Nécessaire pour le constructeur if ($this->user === []) { @@ -353,15 +347,15 @@ class common } } // Charge le site d'accueil - if (self::$courseContent === 'home') { - foreach ($this->courseFiles as $stageId => $item) { - if ( - file_exists(self::DATA_DIR . self::$courseContent . '/' . $stageId . '.json') === false - ) { - $this->saveCourse($stageId, self::$courseContent); - } + //if (self::$courseContent === 'home') { + foreach ($this->courseFiles as $stageId => $item) { + if ( + file_exists(self::DATA_DIR . self::$courseContent . '/' . $stageId . '.json') === false + ) { + $this->saveCourse($stageId); } } + //} } // Récupère un utilisateur connecté @@ -627,35 +621,34 @@ class common * Données valides : page ou module */ - public function saveCourse($module, $path) + public function saveCourse($module) { - // Pas d'initialsiation des données de cours pour l'accueil - if ( - $path === 'home' && - ($module === 'enrolment' || $module === 'course') - ) { - return; - } // Tableau avec les données vierges require_once('core/module/install/ressource/defaultdata.php'); // L'arborescence - if (!file_exists(self::DATA_DIR . $path)) { - mkdir(self::DATA_DIR . $path, 0755); + if (!file_exists(self::DATA_DIR . self::$courseContent)) { + mkdir(self::DATA_DIR . self::$courseContent, 0755); } - if (!file_exists(self::DATA_DIR . $path . '/content')) { - mkdir(self::DATA_DIR . $path . '/content', 0755); + if (!file_exists(self::DATA_DIR . self::$courseContent . '/content')) { + mkdir(self::DATA_DIR . self::$courseContent . '/content', 0755); } - // Les données par défaut - $this->setData([$module, init::$siteTemplate[$module]]); - - // Création des pages + + /* + * Le site d'accueil, home ne dispose pas des mêmes modèles + */ + $template = self::$courseContent === 'home' ? init::$siteTemplate :init:: $courseDefault; + // Création de page ou de module + $this->setData([$module, $template[$module]]); + // Création des pages if ($module === 'page') { - foreach (init::$siteContent as $key => $value) { - $this->setPage($key, $value, $path); + $content = self::$courseContent === 'home' ? init::$siteContent : init::$courseContent; + foreach ($content as $key => $value) { + $this->setPage($key, $value, self::$courseContent); } } + common::$coreNotices[] = $module; } diff --git a/core/module/course/course.php b/core/module/course/course.php index 1825cb8..6b6eabf 100644 --- a/core/module/course/course.php +++ b/core/module/course/course.php @@ -47,6 +47,9 @@ class course extends common ]); } + /** + * Ajoute un nouveau cours + */ public function add() { @@ -55,33 +58,42 @@ class course extends common $this->getUser('permission', __CLASS__, __FUNCTION__) === true && $this->isPost() ) { + $courseId = uniqid(); $this->setData([ 'course', - uniqid(), + $courseId, [ - 'title' => $this->getInput('courseAddTitle',helper::FILTER_STRING_SHORT, true), - 'shortTitle' => $this->getInput('courseAddShortTitle',helper::FILTER_STRING_SHORT, true), + 'title' => $this->getInput('courseAddTitle', helper::FILTER_STRING_SHORT, true), + 'shortTitle' => $this->getInput('courseAddShortTitle', helper::FILTER_STRING_SHORT, true), 'author' => $this->getInput('courseAddAuthor'), 'description' => $this->getInput('courseAddDescription', helper::FILTER_STRING_SHORT, true), - 'access' => $this->getInput('courseAddAccess'), - 'openingDate' => $this->getInput('courseOpeningDate', helper::FILTER_DATETIME), - 'closingDate' => $this->getInput('courseClosingDate', helper::FILTER_DATETIME), + 'access' => $this->getInput('courseAddAccess'), + 'openingDate' => $this->getInput('courseOpeningDate', helper::FILTER_DATETIME), + 'closingDate' => $this->getInput('courseClosingDate', helper::FILTER_DATETIME), 'enrolment' => $this->getInput('courseAddEnrolment'), 'enrolmentKey' => $this->getInput('courseAddEnrolmentKey'), ] ]); - // Valeurs en sortie - $this->addOutput([ - 'redirect' => helper::baseUrl() . 'course', - 'notification' => helper::translate('Cours créé'), - 'state' => true - ]); + // Créer la structure de données + mkdir(self::DATA_DIR . $courseId); + // BDD des inscrits + file_put_contents(self::DATA_DIR . $courseId . '/enrolment.json', json_encode(array())); + + + + // Valeurs en sortie + $this->addOutput([ + 'redirect' => helper::baseUrl() . 'course', + 'notification' => helper::translate('Cours créé'), + 'state' => true + ]); } + // Liste des enseignants pour le sélecteur d'auteurs $teachers = $this->getData(['user']); foreach ($teachers as $teacherId => $teacherInfo) { - if ( $teacherInfo["group"] >= 2 ) { + if ($teacherInfo["group"] >= 2) { self::$courseTeachers[$teacherId] = $teacherInfo["firstname"] . ' ' . $teacherInfo["lastname"]; } } @@ -93,27 +105,28 @@ class course extends common ]); } - /* - * Traitement du changement de langue - * Fonction utilisée par le noyau - */ - public function swap() - { - // Cours sélectionnée - $courseId = $this->getUrl(2); + /* + * Traitement du changement de langue + * Fonction utilisée par le noyau + */ + public function swap() + { + // Cours sélectionnée + $courseId = $this->getUrl(2); + if ( + // home n'est pas présent dans la base de donénes des cours + $courseId === 'home' || + ( is_dir(self::DATA_DIR . $courseId) && + $this->getData(['course', $courseId])) + ) { + // Stocker la sélection + $_SESSION['ZWII_COURSE'] = $courseId; + } - if ( - is_dir(self::DATA_DIR . $courseId) && - $this->getData(['course', $courseId]) - ) { - // Stocker la sélection - $_SESSION['ZWII_COURSE'] = $courseId; - } - - // Valeurs en sortie - $this->addOutput([ - 'redirect' => helper::baseUrl() - ]); - } + // Valeurs en sortie + $this->addOutput([ + 'redirect' => helper::baseUrl() + ]); + } } \ No newline at end of file diff --git a/core/module/install/ressource/defaultdata.php b/core/module/install/ressource/defaultdata.php index 541070b..ff7920c 100644 --- a/core/module/install/ressource/defaultdata.php +++ b/core/module/install/ressource/defaultdata.php @@ -666,9 +666,10 @@ class init extends common 'permanent' => true, 'comment' => 'Contrôle total', ] - ], + ], 'course' => [] ]; + public static $siteTemplate = [ 'page' => [ 'accueil' => [ @@ -693,6 +694,9 @@ class init extends common 'block' => '12', 'barLeft' => '', 'barRight' => '', + 'navLeft' => 'none', + 'navRight' => 'none', + 'navTemplate' => 'dir', 'displayMenu' => 'none', 'hideMenuSide' => false, 'hideMenuChildren' => false, @@ -721,6 +725,9 @@ class init extends common 'block' => '12', 'barLeft' => '', 'barRight' => '', + 'navLeft' => 'none', + 'navRight' => 'none', + 'navTemplate' => 'dir', 'displayMenu' => 'none', 'hideMenuSide' => false, 'hideMenuChildren' => false, @@ -749,6 +756,9 @@ class init extends common 'block' => '12', 'barLeft' => '', 'barRight' => '', + 'navLeft' => 'none', + 'navRight' => 'none', + 'navTemplate' => 'dir', 'displayMenu' => 'none', 'hideMenuSide' => false, 'hideMenuHead' => false, @@ -778,6 +788,9 @@ class init extends common 'block' => '12', 'barLeft' => '', 'barRight' => '', + 'navLeft' => 'none', + 'navRight' => 'none', + 'navTemplate' => 'dir', 'displayMenu' => 'none', 'hideMenuSide' => true, 'hideMenuHead' => true, @@ -807,6 +820,9 @@ class init extends common 'block' => '12', 'barLeft' => '', 'barRight' => '', + 'navLeft' => 'none', + 'navRight' => 'none', + 'navTemplate' => 'dir', 'displayMenu' => 'none', 'hideMenuSide' => false, 'hideMenuChildren' => false, @@ -835,6 +851,9 @@ class init extends common 'block' => '12', 'barLeft' => '', 'barRight' => '', + 'navLeft' => 'none', + 'navRight' => 'none', + 'navTemplate' => 'dir', 'displayMenu' => 'none', 'hideMenuSide' => false, 'hideMenuChildren' => false, @@ -953,4 +972,48 @@ class init extends common ] ]; + public static $courseDefault = [ + 'page' => [ + 'accueil' => [ + 'typeMenu' => 'text', + 'iconUrl' => '', + 'disable' => false, + 'content' => 'accueil.html', + 'hideTitle' => false, + 'homePageId' => true, + 'breadCrumb' => false, + 'metaDescription' => '', + 'metaTitle' => '', + 'moduleId' => '', + 'modulePosition' => 'bottom', + 'parentPageId' => '', + 'position' => 1, + 'group' => self::GROUP_VISITOR, + 'profil' => 0, + 'targetBlank' => false, + 'title' => 'Accueil', + 'shortTitle' => 'Accueil', + 'block' => '12', + 'barLeft' => '', + 'barRight' => '', + 'navLeft' => 'none', + 'navRight' => 'none', + 'navTemplate' => 'dir', + 'displayMenu' => 'none', + 'hideMenuSide' => false, + 'hideMenuChildren' => false, + 'extraPosition' => false, + 'css' => '', + 'js' => '' + ], + ], + 'module' => [] + ]; + + public static $courseContent = [ + 'accueil' => [ + 'content' => '

    Bienvenue sur votre nouveau Cours !

    ' + ], + ]; + } \ No newline at end of file diff --git a/notes.txt b/notes.txt index c5696b3..8f36440 100644 --- a/notes.txt +++ b/notes.txt @@ -2,7 +2,7 @@ course/id/tracking.json fichier plat contenant : userid, page, TS début, TS fin -course/course.json +data/course.json BDD contenant les informations sur le cours - courseId identifiant du cours - title @@ -22,7 +22,7 @@ BDD contenant les informations sur le cours - 3 manuel, le prof inscrits - enrolmentKey clé d'inscription, si non vide -course/enrolment.json +data/course/enrolment.json Détermine la liste des inscrits - userid - userGroup