forked from ZwiiCMS-Team/ZwiiCampus
Structure améliorée d'un nouveau cours
This commit is contained in:
parent
d2e2de164f
commit
e640fefa80
@ -896,9 +896,9 @@ class layout extends common
|
||||
// Sélecteur de cours
|
||||
if ($this->getUser('group') >= self::GROUP_TEACHER) {
|
||||
$leftItems .= '<li><select id="barSelectCourse" >';
|
||||
$leftItems .= '<option name="' . helper::translate('Accueil') . '" value="' . helper::baseUrl() . 'course/swap/home" ' . ('home' === self::$courseContent ? 'selected' : '') . '>' . helper::translate('Accueil') . '</option>';
|
||||
$leftItems .= '<option name="' . helper::translate('Accueil') . '" value="' . helper::baseUrl(true) . 'course/swap/home" ' . ('home' === self::$courseContent ? 'selected' : '') . '>' . helper::translate('Accueil') . '</option>';
|
||||
foreach ($this->getData(['course']) as $key => $value) {
|
||||
$leftItems .= '<option name="' . $value['shortTitle'] . '" value="' . helper::baseUrl() . 'course/swap/' . $key . '" ' . ($key === self::$courseContent ? 'selected' : '') . '>' . $value['shortTitle'] . '</option>';
|
||||
$leftItems .= '<option name="' . $value['shortTitle'] . '" value="' . helper::baseUrl(true) . 'course/swap/' . $key . '" ' . ($key === self::$courseContent ? 'selected' : '') . '>' . $value['shortTitle'] . '</option>';
|
||||
}
|
||||
$leftItems .= '</select></li>';
|
||||
}
|
||||
|
@ -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]]);
|
||||
|
||||
/*
|
||||
* 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;
|
||||
|
||||
}
|
||||
|
@ -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()
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
@ -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' => '<h2>Bienvenue sur votre nouveau Cours !</h2>'
|
||||
],
|
||||
];
|
||||
|
||||
}
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user