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
|
// Sélecteur de cours
|
||||||
if ($this->getUser('group') >= self::GROUP_TEACHER) {
|
if ($this->getUser('group') >= self::GROUP_TEACHER) {
|
||||||
$leftItems .= '<li><select id="barSelectCourse" >';
|
$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) {
|
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>';
|
$leftItems .= '</select></li>';
|
||||||
}
|
}
|
||||||
|
@ -83,13 +83,13 @@ class common
|
|||||||
'user'
|
'user'
|
||||||
];
|
];
|
||||||
/*
|
/*
|
||||||
Cette variable est supprimée du test dans le routeur.
|
Cette variable est supprimée du test dans le routeur.
|
||||||
public static $accessExclude = [
|
public static $accessExclude = [
|
||||||
'login',
|
'login',
|
||||||
'logout',
|
'logout',
|
||||||
'maintenance',
|
'maintenance',
|
||||||
];
|
];
|
||||||
*/
|
*/
|
||||||
private $data = [];
|
private $data = [];
|
||||||
private $hierarchy = [
|
private $hierarchy = [
|
||||||
'all' => [],
|
'all' => [],
|
||||||
@ -223,8 +223,6 @@ class common
|
|||||||
private $courseFiles = [
|
private $courseFiles = [
|
||||||
'page' => '',
|
'page' => '',
|
||||||
'module' => '',
|
'module' => '',
|
||||||
'course' => '',
|
|
||||||
'enrolment' => '',
|
|
||||||
];
|
];
|
||||||
|
|
||||||
public static $fontsWebSafe = [
|
public static $fontsWebSafe = [
|
||||||
@ -333,16 +331,12 @@ class common
|
|||||||
foreach ($this->configFiles as $module => $value) {
|
foreach ($this->configFiles as $module => $value) {
|
||||||
$this->initDB($module);
|
$this->initDB($module);
|
||||||
}
|
}
|
||||||
// Les fichiers de la page d'accueil
|
// Les fichiers des cours
|
||||||
if (self::$courseContent === 'home') {
|
foreach ($this->courseFiles as $module => $value) {
|
||||||
$this->initDB('page', self::$courseContent);
|
$this->initDB($module, self::$courseContent);
|
||||||
$this->initDB('module', self::$courseContent);
|
|
||||||
} else {
|
|
||||||
foreach ($this->courseFiles as $module => $value) {
|
|
||||||
$this->initDB($module, self::$courseContent);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Installation fraîche, initialisation de la configuration inexistante
|
// Installation fraîche, initialisation de la configuration inexistante
|
||||||
// Nécessaire pour le constructeur
|
// Nécessaire pour le constructeur
|
||||||
if ($this->user === []) {
|
if ($this->user === []) {
|
||||||
@ -353,15 +347,15 @@ class common
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Charge le site d'accueil
|
// Charge le site d'accueil
|
||||||
if (self::$courseContent === 'home') {
|
//if (self::$courseContent === 'home') {
|
||||||
foreach ($this->courseFiles as $stageId => $item) {
|
foreach ($this->courseFiles as $stageId => $item) {
|
||||||
if (
|
if (
|
||||||
file_exists(self::DATA_DIR . self::$courseContent . '/' . $stageId . '.json') === false
|
file_exists(self::DATA_DIR . self::$courseContent . '/' . $stageId . '.json') === false
|
||||||
) {
|
) {
|
||||||
$this->saveCourse($stageId, self::$courseContent);
|
$this->saveCourse($stageId);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Récupère un utilisateur connecté
|
// Récupère un utilisateur connecté
|
||||||
@ -627,35 +621,34 @@ class common
|
|||||||
* Données valides : page ou module
|
* 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
|
// Tableau avec les données vierges
|
||||||
require_once('core/module/install/ressource/defaultdata.php');
|
require_once('core/module/install/ressource/defaultdata.php');
|
||||||
|
|
||||||
// L'arborescence
|
// L'arborescence
|
||||||
if (!file_exists(self::DATA_DIR . $path)) {
|
if (!file_exists(self::DATA_DIR . self::$courseContent)) {
|
||||||
mkdir(self::DATA_DIR . $path, 0755);
|
mkdir(self::DATA_DIR . self::$courseContent, 0755);
|
||||||
}
|
}
|
||||||
if (!file_exists(self::DATA_DIR . $path . '/content')) {
|
if (!file_exists(self::DATA_DIR . self::$courseContent . '/content')) {
|
||||||
mkdir(self::DATA_DIR . $path . '/content', 0755);
|
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
|
||||||
// Création des pages
|
*/
|
||||||
|
$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') {
|
if ($module === 'page') {
|
||||||
foreach (init::$siteContent as $key => $value) {
|
$content = self::$courseContent === 'home' ? init::$siteContent : init::$courseContent;
|
||||||
$this->setPage($key, $value, $path);
|
foreach ($content as $key => $value) {
|
||||||
|
$this->setPage($key, $value, self::$courseContent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
common::$coreNotices[] = $module;
|
common::$coreNotices[] = $module;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -47,6 +47,9 @@ class course extends common
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ajoute un nouveau cours
|
||||||
|
*/
|
||||||
public function add()
|
public function add()
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -55,33 +58,42 @@ class course extends common
|
|||||||
$this->getUser('permission', __CLASS__, __FUNCTION__) === true &&
|
$this->getUser('permission', __CLASS__, __FUNCTION__) === true &&
|
||||||
$this->isPost()
|
$this->isPost()
|
||||||
) {
|
) {
|
||||||
|
$courseId = uniqid();
|
||||||
$this->setData([
|
$this->setData([
|
||||||
'course',
|
'course',
|
||||||
uniqid(),
|
$courseId,
|
||||||
[
|
[
|
||||||
'title' => $this->getInput('courseAddTitle',helper::FILTER_STRING_SHORT, true),
|
'title' => $this->getInput('courseAddTitle', helper::FILTER_STRING_SHORT, true),
|
||||||
'shortTitle' => $this->getInput('courseAddShortTitle',helper::FILTER_STRING_SHORT, true),
|
'shortTitle' => $this->getInput('courseAddShortTitle', helper::FILTER_STRING_SHORT, true),
|
||||||
'author' => $this->getInput('courseAddAuthor'),
|
'author' => $this->getInput('courseAddAuthor'),
|
||||||
'description' => $this->getInput('courseAddDescription', helper::FILTER_STRING_SHORT, true),
|
'description' => $this->getInput('courseAddDescription', helper::FILTER_STRING_SHORT, true),
|
||||||
'access' => $this->getInput('courseAddAccess'),
|
'access' => $this->getInput('courseAddAccess'),
|
||||||
'openingDate' => $this->getInput('courseOpeningDate', helper::FILTER_DATETIME),
|
'openingDate' => $this->getInput('courseOpeningDate', helper::FILTER_DATETIME),
|
||||||
'closingDate' => $this->getInput('courseClosingDate', helper::FILTER_DATETIME),
|
'closingDate' => $this->getInput('courseClosingDate', helper::FILTER_DATETIME),
|
||||||
'enrolment' => $this->getInput('courseAddEnrolment'),
|
'enrolment' => $this->getInput('courseAddEnrolment'),
|
||||||
'enrolmentKey' => $this->getInput('courseAddEnrolmentKey'),
|
'enrolmentKey' => $this->getInput('courseAddEnrolmentKey'),
|
||||||
]
|
]
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Valeurs en sortie
|
// Créer la structure de données
|
||||||
$this->addOutput([
|
mkdir(self::DATA_DIR . $courseId);
|
||||||
'redirect' => helper::baseUrl() . 'course',
|
// BDD des inscrits
|
||||||
'notification' => helper::translate('Cours créé'),
|
file_put_contents(self::DATA_DIR . $courseId . '/enrolment.json', json_encode(array()));
|
||||||
'state' => true
|
|
||||||
]);
|
|
||||||
|
|
||||||
|
// 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']);
|
$teachers = $this->getData(['user']);
|
||||||
foreach ($teachers as $teacherId => $teacherInfo) {
|
foreach ($teachers as $teacherId => $teacherInfo) {
|
||||||
if ( $teacherInfo["group"] >= 2 ) {
|
if ($teacherInfo["group"] >= 2) {
|
||||||
self::$courseTeachers[$teacherId] = $teacherInfo["firstname"] . ' ' . $teacherInfo["lastname"];
|
self::$courseTeachers[$teacherId] = $teacherInfo["firstname"] . ' ' . $teacherInfo["lastname"];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -93,27 +105,28 @@ class course extends common
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Traitement du changement de langue
|
* Traitement du changement de langue
|
||||||
* Fonction utilisée par le noyau
|
* Fonction utilisée par le noyau
|
||||||
*/
|
*/
|
||||||
public function swap()
|
public function swap()
|
||||||
{
|
{
|
||||||
// Cours sélectionnée
|
// Cours sélectionnée
|
||||||
$courseId = $this->getUrl(2);
|
$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 (
|
// Valeurs en sortie
|
||||||
is_dir(self::DATA_DIR . $courseId) &&
|
$this->addOutput([
|
||||||
$this->getData(['course', $courseId])
|
'redirect' => helper::baseUrl()
|
||||||
) {
|
]);
|
||||||
// Stocker la sélection
|
}
|
||||||
$_SESSION['ZWII_COURSE'] = $courseId;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Valeurs en sortie
|
|
||||||
$this->addOutput([
|
|
||||||
'redirect' => helper::baseUrl()
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
@ -666,9 +666,10 @@ class init extends common
|
|||||||
'permanent' => true,
|
'permanent' => true,
|
||||||
'comment' => 'Contrôle total',
|
'comment' => 'Contrôle total',
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
'course' => []
|
'course' => []
|
||||||
];
|
];
|
||||||
|
|
||||||
public static $siteTemplate = [
|
public static $siteTemplate = [
|
||||||
'page' => [
|
'page' => [
|
||||||
'accueil' => [
|
'accueil' => [
|
||||||
@ -693,6 +694,9 @@ class init extends common
|
|||||||
'block' => '12',
|
'block' => '12',
|
||||||
'barLeft' => '',
|
'barLeft' => '',
|
||||||
'barRight' => '',
|
'barRight' => '',
|
||||||
|
'navLeft' => 'none',
|
||||||
|
'navRight' => 'none',
|
||||||
|
'navTemplate' => 'dir',
|
||||||
'displayMenu' => 'none',
|
'displayMenu' => 'none',
|
||||||
'hideMenuSide' => false,
|
'hideMenuSide' => false,
|
||||||
'hideMenuChildren' => false,
|
'hideMenuChildren' => false,
|
||||||
@ -721,6 +725,9 @@ class init extends common
|
|||||||
'block' => '12',
|
'block' => '12',
|
||||||
'barLeft' => '',
|
'barLeft' => '',
|
||||||
'barRight' => '',
|
'barRight' => '',
|
||||||
|
'navLeft' => 'none',
|
||||||
|
'navRight' => 'none',
|
||||||
|
'navTemplate' => 'dir',
|
||||||
'displayMenu' => 'none',
|
'displayMenu' => 'none',
|
||||||
'hideMenuSide' => false,
|
'hideMenuSide' => false,
|
||||||
'hideMenuChildren' => false,
|
'hideMenuChildren' => false,
|
||||||
@ -749,6 +756,9 @@ class init extends common
|
|||||||
'block' => '12',
|
'block' => '12',
|
||||||
'barLeft' => '',
|
'barLeft' => '',
|
||||||
'barRight' => '',
|
'barRight' => '',
|
||||||
|
'navLeft' => 'none',
|
||||||
|
'navRight' => 'none',
|
||||||
|
'navTemplate' => 'dir',
|
||||||
'displayMenu' => 'none',
|
'displayMenu' => 'none',
|
||||||
'hideMenuSide' => false,
|
'hideMenuSide' => false,
|
||||||
'hideMenuHead' => false,
|
'hideMenuHead' => false,
|
||||||
@ -778,6 +788,9 @@ class init extends common
|
|||||||
'block' => '12',
|
'block' => '12',
|
||||||
'barLeft' => '',
|
'barLeft' => '',
|
||||||
'barRight' => '',
|
'barRight' => '',
|
||||||
|
'navLeft' => 'none',
|
||||||
|
'navRight' => 'none',
|
||||||
|
'navTemplate' => 'dir',
|
||||||
'displayMenu' => 'none',
|
'displayMenu' => 'none',
|
||||||
'hideMenuSide' => true,
|
'hideMenuSide' => true,
|
||||||
'hideMenuHead' => true,
|
'hideMenuHead' => true,
|
||||||
@ -807,6 +820,9 @@ class init extends common
|
|||||||
'block' => '12',
|
'block' => '12',
|
||||||
'barLeft' => '',
|
'barLeft' => '',
|
||||||
'barRight' => '',
|
'barRight' => '',
|
||||||
|
'navLeft' => 'none',
|
||||||
|
'navRight' => 'none',
|
||||||
|
'navTemplate' => 'dir',
|
||||||
'displayMenu' => 'none',
|
'displayMenu' => 'none',
|
||||||
'hideMenuSide' => false,
|
'hideMenuSide' => false,
|
||||||
'hideMenuChildren' => false,
|
'hideMenuChildren' => false,
|
||||||
@ -835,6 +851,9 @@ class init extends common
|
|||||||
'block' => '12',
|
'block' => '12',
|
||||||
'barLeft' => '',
|
'barLeft' => '',
|
||||||
'barRight' => '',
|
'barRight' => '',
|
||||||
|
'navLeft' => 'none',
|
||||||
|
'navRight' => 'none',
|
||||||
|
'navTemplate' => 'dir',
|
||||||
'displayMenu' => 'none',
|
'displayMenu' => 'none',
|
||||||
'hideMenuSide' => false,
|
'hideMenuSide' => false,
|
||||||
'hideMenuChildren' => 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 :
|
fichier plat contenant :
|
||||||
userid, page, TS début, TS fin
|
userid, page, TS début, TS fin
|
||||||
|
|
||||||
course/course.json
|
data/course.json
|
||||||
BDD contenant les informations sur le cours
|
BDD contenant les informations sur le cours
|
||||||
- courseId identifiant du cours
|
- courseId identifiant du cours
|
||||||
- title
|
- title
|
||||||
@ -22,7 +22,7 @@ BDD contenant les informations sur le cours
|
|||||||
- 3 manuel, le prof inscrits
|
- 3 manuel, le prof inscrits
|
||||||
- enrolmentKey clé d'inscription, si non vide
|
- enrolmentKey clé d'inscription, si non vide
|
||||||
|
|
||||||
course/enrolment.json
|
data/course/enrolment.json
|
||||||
Détermine la liste des inscrits
|
Détermine la liste des inscrits
|
||||||
- userid
|
- userid
|
||||||
- userGroup
|
- userGroup
|
||||||
|
Loading…
Reference in New Issue
Block a user