diff --git a/README.md b/README.md index 0b9eb67..1da8410 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ZwiiCampus 1.9.00 +# ZwiiCampus 1.10.00 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/class/layout.class.php b/core/class/layout.class.php index e970d5c..8c891b2 100644 --- a/core/class/layout.class.php +++ b/core/class/layout.class.php @@ -1001,7 +1001,7 @@ class layout extends common // Bouton Ajouter une page if ($this->getUser('permission', 'page', 'add')) { $leftItems .= '
  • ' . template::ico('plus', [ - 'href' => helper::baseUrl() . 'page/add', + 'href' => helper::baseUrl() . 'page/add/' . self::$siteContent, 'help' => 'Nouvelle page ou barre latérale' ]) . '
  • '; } @@ -1020,7 +1020,7 @@ class layout extends common // Bouton Editer une page if ($this->getUser('permission', 'page', 'edit')) { $leftItems .= '
  • ' . 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' ]) . '
  • '; } @@ -1039,7 +1039,7 @@ class layout extends common $this->getUser('permission', 'page', 'duplicate') ) { $leftItems .= '
  • ' . 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' ]) . '
  • '; @@ -1049,7 +1049,7 @@ class layout extends common $this->getUser('permission', 'page', 'delete') ) { $leftItems .= '
  • ' . 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', 'id' => 'pageDelete' ]) diff --git a/core/class/router.class.php b/core/class/router.class.php index 3d6e3ca..91a6513 100644 --- a/core/class/router.class.php +++ b/core/class/router.class.php @@ -15,12 +15,12 @@ class core extends common } // Fuseau horaire - self::$timezone = $this->getData(['config', 'timezone']); // Utile pour transmettre le timezone à la classe helper - date_default_timezone_set(self::$timezone); + common::$timezone = $this->getData(['config', 'timezone']); // Utile pour transmettre le timezone à la classe helper + date_default_timezone_set(common::$timezone); // Supprime les fichiers temporaires $lastClearTmp = mktime(0, 0, 0); if ($lastClearTmp > $this->getData(['core', 'lastClearTmp']) + 86400) { - $iterator = new DirectoryIterator(self::TEMP_DIR); + $iterator = new DirectoryIterator(common::TEMP_DIR); foreach ($iterator as $fileInfos) { if ( $fileInfos->isFile() && @@ -43,11 +43,11 @@ class core extends common and $this->getData(['user']) // Pas de backup pendant l'installation ) { // Copie des fichier de données - helper::autoBackup(self::BACKUP_DIR, ['backup', 'tmp', 'file']); + helper::autoBackup(common::BACKUP_DIR, ['backup', 'tmp', 'file']); // Date du dernier backup $this->setData(['core', 'lastBackup', $lastBackup]); // Supprime les backups de plus de 30 jours - $iterator = new DirectoryIterator(self::BACKUP_DIR); + $iterator = new DirectoryIterator(common::BACKUP_DIR); foreach ($iterator as $fileInfos) { if ( $fileInfos->isFile() @@ -60,23 +60,23 @@ class core extends common } // Crée le fichier de personnalisation avancée - if (file_exists(self::DATA_DIR . 'custom.css') === false) { - file_put_contents(self::DATA_DIR . 'custom.css', ('core/module/theme/resource/custom.css')); - chmod(self::DATA_DIR . 'custom.css', 0755); + if (file_exists(common::DATA_DIR . 'custom.css') === false) { + file_put_contents(common::DATA_DIR . 'custom.css', ('core/module/theme/resource/custom.css')); + chmod(common::DATA_DIR . 'custom.css', 0755); } // Crée le fichier de personnalisation - if (file_exists(self::DATA_DIR . self::$siteContent . '/theme.css') === false) { - file_put_contents(self::DATA_DIR . self::$siteContent . '/theme.css', ''); - chmod(self::DATA_DIR . self::$siteContent . '/theme.css', 0755); + if (file_exists(common::DATA_DIR . common::$siteContent . '/theme.css') === false) { + file_put_contents(common::DATA_DIR . common::$siteContent . '/theme.css', ''); + chmod(common::DATA_DIR . common::$siteContent . '/theme.css', 0755); } // Crée le fichier de personnalisation de l'administration - if (file_exists(self::DATA_DIR . 'admin.css') === false) { - file_put_contents(self::DATA_DIR . 'admin.css', ''); - chmod(self::DATA_DIR . 'admin.css', 0755); + if (file_exists(common::DATA_DIR . 'admin.css') === false) { + file_put_contents(common::DATA_DIR . 'admin.css', ''); + chmod(common::DATA_DIR . 'admin.css', 0755); } // Check la version rafraichissement du theme - $cssVersion = preg_split('/\*+/', file_get_contents(self::DATA_DIR . self::$siteContent . '/theme.css')); + $cssVersion = preg_split('/\*+/', file_get_contents(common::DATA_DIR . common::$siteContent . '/theme.css')); if (empty($cssVersion[1]) or $cssVersion[1] !== md5(json_encode($this->getData(['theme'])))) { // Version $css = '/*' . md5(json_encode($this->getData(['theme']))) . '*/'; @@ -92,7 +92,7 @@ class core extends common // Fonts disponibles $fontsAvailable['files'] = $this->getData(['font', 'files']); $fontsAvailable['imported'] = $this->getData(['font', 'imported']); - $fontsAvailable['websafe'] = self::$fontsWebSafe; + $fontsAvailable['websafe'] = common::$fontsWebSafe; // Fontes installées $fonts = [ @@ -273,7 +273,7 @@ class core extends common $css .= '#footerCopyright{text-align:' . $this->getData(['theme', 'footer', 'copyrightAlign']) . '}'; // Enregistre la personnalisation - file_put_contents(self::DATA_DIR . self::$siteContent . '/theme.css', $css); + file_put_contents(common::DATA_DIR . common::$siteContent . '/theme.css', $css); // Effacer le cache pour tenir compte de la couleur de fond TinyMCE header("Expires: Tue, 01 Jan 2000 00:00:00 GMT"); @@ -284,7 +284,7 @@ class core extends common } // Check la version rafraichissement du theme admin - $cssVersion = preg_split('/\*+/', file_get_contents(self::DATA_DIR . 'admin.css')); + $cssVersion = preg_split('/\*+/', file_get_contents(common::DATA_DIR . 'admin.css')); if (empty($cssVersion[1]) or $cssVersion[1] !== md5(json_encode($this->getData(['admin'])))) { // Version @@ -293,7 +293,7 @@ class core extends common // Fonts disponibles $fontsAvailable['files'] = $this->getData(['font', 'files']); $fontsAvailable['imported'] = $this->getData(['font', 'imported']); - $fontsAvailable['websafe'] = self::$fontsWebSafe; + $fontsAvailable['websafe'] = common::$fontsWebSafe; /** * Import des polices de caractères @@ -368,7 +368,7 @@ class core extends common // Bordure du contour TinyMCE $css .= '.mce-tinymce{border: 1px solid ' . $this->getData(['admin', 'borderBlockColor']) . '!important;}'; // Enregistre la personnalisation - file_put_contents(self::DATA_DIR . 'admin.css', $css); + file_put_contents(common::DATA_DIR . 'admin.css', $css); } } /** @@ -384,8 +384,8 @@ class core extends common require 'core/module/' . $classPath; } // Module - elseif (is_readable(self::MODULE_DIR . $classPath)) { - require self::MODULE_DIR . $classPath; + elseif (is_readable(common::MODULE_DIR . $classPath)) { + require common::MODULE_DIR . $classPath; } // Librairie elseif (is_readable('core/vendor/' . $classPath)) { @@ -414,28 +414,20 @@ class core extends common // Sauvegarde la dernière page visitée par l'utilisateur connecté et enregistre l'historique des consultations if ( $this->getUser('id') - && self::$siteContent !== 'home' + && common::$siteContent !== 'home' && in_array($this->getUrl(0), array_keys($this->getData(['page']))) // Le userId n'est pas celui d'un admis ni le prof du contenu && ( - $this->getUser('group') < self::GROUP_ADMIN - || $this->getUser('id') !== $this->getData(['course', self::$siteContent, 'author']) + $this->getUser('group') < common::GROUP_ADMIN + || $this->getUser('id') !== $this->getData(['course', common::$siteContent, 'author']) ) ) { - // Stocke l'historique des pages vues - /* - $data = is_array($this->getData(['enrolment', self::$siteContent, $this->getUser('id'), 'history', $this->getUrl(0)])) - ? array_merge([time()], $this->getData(['enrolment', self::$siteContent, $this->getUser('id'), 'history', $this->getUrl(0)])) - : [time()]; - - $this->setData(['enrolment', self::$siteContent, $this->getUser('id'), 'history', $this->getUrl(0), $data]); - */ // Stocke la dernière page vue et sa date de consultation - $this->setData(['enrolment', self::$siteContent, $this->getUser('id'), 'lastPageView', $this->getUrl(0)]); - $this->setData(['enrolment', self::$siteContent, $this->getUser('id'), 'datePageView', time()]); + $this->setData(['enrolment', common::$siteContent, $this->getUser('id'), 'lastPageView', $this->getUrl(0)]); + $this->setData(['enrolment', common::$siteContent, $this->getUser('id'), 'datePageView', time()]); // Stocke le rapport en CSV - $file = fopen(self::DATA_DIR . self::$siteContent . '/report.csv', 'a+'); + $file = fopen(common::DATA_DIR . common::$siteContent . '/report.csv', 'a+'); fputcsv($file, [ $this->getUser('id'), $this->getUrl(0) ,time()], ';'); fclose($file); @@ -447,7 +439,7 @@ class core extends common // Force la déconnexion des membres bannis ou d'une seconde session if ( $this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD') - and ($this->getUser('group') === self::GROUP_BANNED + and ($this->getUser('group') === common::GROUP_BANNED or ($_SESSION['csrf'] !== $this->getData(['user', $this->getUser('id'), 'accessCsrf']) and $this->getData(['config', 'connect', 'autoDisconnect']) === true) ) @@ -462,7 +454,7 @@ class core extends common and $this->getUrl(1) !== 'login' and ($this->getUser('password') !== $this->getInput('ZWII_USER_PASSWORD') or ($this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD') - and $this->getUser('group') < self::GROUP_ADMIN + and $this->getUser('group') < common::GROUP_ADMIN ) ) ) { @@ -475,31 +467,11 @@ class core extends common 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 ($this->getData(['course']) as $key => $value) {; - if ( - is_dir(self::DATA_DIR . $key) && - file_exists(self::DATA_DIR . $key . '/page.json') - ) { - $pagesId = json_decode(file_get_contents(self::DATA_DIR . $key . '/page.json'), true); - if ( - is_array($pagesId['page']) && - array_key_exists($this->getUrl(0), $pagesId['page']) - ) { - //$_SESSION['ZWII_SITE_CONTENT'] = $key; - header('Refresh:0; url=' . helper::baseUrl() . 'course/swap/' . $key . '/' . $this->getUrl(0)); - exit(); - } - } - } - } - // Check l'accès à la page $access = null; if ($this->getData(['page', $this->getUrl(0)]) !== null) { if ( - $this->getData(['page', $this->getUrl(0), 'group']) === self::GROUP_VISITOR + $this->getData(['page', $this->getUrl(0), 'group']) === common::GROUP_VISITOR or ($this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD') // and $this->getUser('group') >= $this->getData(['page', $this->getUrl(0), 'group']) // Modification qui tient compte du profil de la page @@ -520,7 +492,7 @@ class core extends common and $this->getUser('password') !== $this->getInput('ZWII_USER_PASSWORD') ) or ($this->getData(['page', $this->getUrl(0), 'disable']) === true and $this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD') - and $this->getUser('group') < self::GROUP_EDITOR + and $this->getUser('group') < common::GROUP_EDITOR ) ) { $access = false; @@ -546,9 +518,9 @@ class core extends common $this->getUser('id') && $userId !== $this->getUser('id') && $this->getData(['user', $userId, 'accessUrl']) === $this->getUrl() && - array_intersect($t, self::$concurrentAccess) && - //array_intersect($t, self::$accessExclude) !== false && - time() < $this->getData(['user', $userId, 'accessTimer']) + self::ACCESS_TIMER + array_intersect($t, common::$concurrentAccess) && + //array_intersect($t, common::$accessExclude) !== false && + time() < $this->getData(['user', $userId, 'accessTimer']) + common::ACCESS_TIMER ) { $access = false; $accessInfo['userName'] = $this->getData(['user', $userId, 'lastname']) . ' ' . $this->getData(['user', $userId, 'firstname']); @@ -585,10 +557,10 @@ class core extends common $inlineScript[] = $this->getData(['page', $this->getUrl(0), 'js']) === null ? '' : $this->getData(['page', $this->getUrl(0), 'js']); // Importe le contenu, le CSS et le script des barres - $contentRight = $this->getData(['page', $this->getUrl(0), 'barRight']) ? $this->getPage($this->getData(['page', $this->getUrl(0), 'barRight']), self::$siteContent) : ''; + $contentRight = $this->getData(['page', $this->getUrl(0), 'barRight']) ? $this->getPage($this->getData(['page', $this->getUrl(0), 'barRight']), common::$siteContent) : ''; $inlineStyle[] = $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barRight']), 'css']) === null ? '' : $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barRight']), 'css']); $inlineScript[] = $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barRight']), 'js']) === null ? '' : $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barRight']), 'js']); - $contentLeft = $this->getData(['page', $this->getUrl(0), 'barLeft']) ? $this->getPage($this->getData(['page', $this->getUrl(0), 'barLeft']), self::$siteContent) : ''; + $contentLeft = $this->getData(['page', $this->getUrl(0), 'barLeft']) ? $this->getPage($this->getData(['page', $this->getUrl(0), 'barLeft']), common::$siteContent) : ''; $inlineStyle[] = $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barLeft']), 'css']) === null ? '' : $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barLeft']), 'css']); $inlineScript[] = $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barLeft']), 'js']) === null ? '' : $this->getData(['page', $this->getData(['page', $this->getUrl(0), 'barLeft']), 'js']); @@ -606,7 +578,7 @@ class core extends common $this->addOutput([ 'title' => $title, - 'content' => $this->getPage($this->getUrl(0), self::$siteContent), + 'content' => $this->getPage($this->getUrl(0), common::$siteContent), 'metaDescription' => $this->getData(['page', $this->getUrl(0), 'metaDescription']), 'metaTitle' => $this->getData(['page', $this->getUrl(0), 'metaTitle']), 'typeMenu' => $this->getData(['page', $this->getUrl(0), 'typeMenu']), @@ -632,7 +604,7 @@ class core extends common : $this->getData(['page', $this->getUrl(0), 'metaDescription']); // Importe le CSS de la page principale - $pageContent = $this->getPage($this->getUrl(0), self::$siteContent); + $pageContent = $this->getPage($this->getUrl(0), common::$siteContent); $this->addOutput([ 'title' => $title, @@ -677,7 +649,7 @@ class core extends common $output = $module->output; // Check le groupe de l'utilisateur if ( - ($module::$actions[$action] === self::GROUP_VISITOR + ($module::$actions[$action] === common::GROUP_VISITOR or ($this->getUser('password') === $this->getInput('ZWII_USER_PASSWORD') and $this->getUser('group') >= $module::$actions[$action] and $this->getUser('permission', $moduleId, $action) @@ -690,10 +662,10 @@ class core extends common foreach ($_POST as $postId => $postValue) { if (is_array($postValue)) { foreach ($postValue as $subPostId => $subPostValue) { - self::$inputBefore[$postId . '_' . $subPostId] = $subPostValue; + common::$inputBefore[$postId . '_' . $subPostId] = $subPostValue; } } else { - self::$inputBefore[$postId] = $postValue; + common::$inputBefore[$postId] = $postValue; } } } @@ -733,9 +705,9 @@ class core extends common // Contenu par vue elseif ($output['view']) { // Chemin en fonction d'un module du coeur ou d'un module - $modulePath = in_array($moduleId, self::$coreModuleIds) ? 'core/' : ''; + $modulePath = in_array($moduleId, common::$coreModuleIds) ? 'core/' : ''; // CSS - $stylePath = $modulePath . self::MODULE_DIR . $moduleId . '/view/' . $output['view'] . '/' . $output['view'] . '.css'; + $stylePath = $modulePath . common::MODULE_DIR . $moduleId . '/view/' . $output['view'] . '/' . $output['view'] . '.css'; if (file_exists($stylePath)) { $this->addOutput([ 'style' => file_get_contents($stylePath) @@ -748,7 +720,7 @@ class core extends common } // JS - $scriptPath = $modulePath . self::MODULE_DIR . $moduleId . '/view/' . $output['view'] . '/' . $output['view'] . '.js.php'; + $scriptPath = $modulePath . common::MODULE_DIR . $moduleId . '/view/' . $output['view'] . '/' . $output['view'] . '.js.php'; if (file_exists($scriptPath)) { ob_start(); include $scriptPath; @@ -757,7 +729,7 @@ class core extends common ]); } // Vue - $viewPath = $modulePath . self::MODULE_DIR . $moduleId . '/view/' . $output['view'] . '/' . $output['view'] . '.php'; + $viewPath = $modulePath . common::MODULE_DIR . $moduleId . '/view/' . $output['view'] . '/' . $output['view'] . '.php'; if (file_exists($viewPath)) { ob_start(); include $viewPath; @@ -843,14 +815,40 @@ class core extends common } } } elseif ($this->output['content'] === '') { + + // Pour éviter une 404, bascule dans l'espace correct si la page existe dans cet espace. + // Parcourir les espaces y compris l'accueil + foreach (array_merge(['home'=> []], $this->getData(['course'])) as $courseId => $value) {; + if ( + // l'espace existe + is_dir(common::DATA_DIR . $courseId) && + file_exists(common::DATA_DIR . $courseId . '/page.json') + ) { + // Lire les données des pages + $pagesId = json_decode(file_get_contents(common::DATA_DIR . $courseId . '/page.json'), true); + if ( + // La page existe + is_array($pagesId['page']) && + array_key_exists($this->getUrl(0), $pagesId['page']) + ) { + // Basculer + $_SESSION['ZWII_SITE_CONTENT'] = $courseId; + header('Refresh:0; url=' . helper::baseUrl() . $this->getUrl()); + exit(); + } + } + } + // La page n'existe pas dans les esapces, on génére une erreur 404 http_response_code(404); if ( + // une page est définie dans la configuration mais dans home $this->getData(['config', 'page404']) !== 'none' - //and $this->getData(['page', $this->getData(['config', 'page404'])]) ) { + // Bascule sur l'acccueil et rediriger $_SESSION['ZWII_SITE_CONTENT'] = 'home'; header('Location:' . helper::baseUrl() . $this->getData(['config', 'page404'])); } else { + // Page par défaut $this->addOutput([ 'title' => 'Page indisponible', 'content' => template::speech('

    ' . helper::translate('La page demandée n\'existe pas ou est introuvable (erreur 404)') . '

    '. helper::translate('Retour') . '

    ') @@ -876,25 +874,25 @@ class core extends common } switch ($this->output['display']) { // Layout brut - case self::DISPLAY_RAW: + case common::DISPLAY_RAW: echo $this->output['content']; break; // Layout vide - case self::DISPLAY_LAYOUT_BLANK: + case common::DISPLAY_LAYOUT_BLANK: require 'core/layout/blank.php'; break; // Affichage en JSON - case self::DISPLAY_JSON: + case common::DISPLAY_JSON: header('Content-Type: application/json'); echo json_encode($this->output['content']); break; // RSS feed - case self::DISPLAY_RSS: + case common::DISPLAY_RSS: header('Content-type: application/rss+xml; charset=UTF-8'); echo $this->output['content']; break; // Layout allégé - case self::DISPLAY_LAYOUT_LIGHT: + case common::DISPLAY_LAYOUT_LIGHT: ob_start(); require 'core/layout/light.php'; $content = ob_get_clean(); @@ -905,7 +903,7 @@ class core extends common echo $content; break; // Layout principal - case self::DISPLAY_LAYOUT_MAIN: + case common::DISPLAY_LAYOUT_MAIN: ob_start(); require 'core/layout/main.php'; $content = ob_get_clean(); diff --git a/core/core.php b/core/core.php index c6b5b32..f06ee2a 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.9.01'; + const ZWII_VERSION = '1.10.00'; // URL autoupdate const ZWII_UPDATE_URL = 'https://forge.chapril.org/ZwiiCMS-Team/campus-update/raw/branch/master/'; @@ -1105,8 +1105,9 @@ class common } // Articles du blog if ( - $this->getData(['page', $parentPageId, 'moduleId']) === 'blog' && - !empty($this->getData(['module', $parentPageId])) + $this->getData(['page', $parentPageId, 'moduleId']) === 'blog' + && !empty($this->getData(['module', $parentPageId])) + && $this->getData(['module', $parentPageId, 'posts']) ) { foreach ($this->getData(['module', $parentPageId, 'posts']) as $articleId => $article) { if ($this->getData(['module', $parentPageId, 'posts', $articleId, 'state']) === true) { diff --git a/core/module/course/course.php b/core/module/course/course.php index 742caa8..e51b9f6 100644 --- a/core/module/course/course.php +++ b/core/module/course/course.php @@ -111,13 +111,20 @@ class course extends common self::$courseAccess[$this->getData(['course', $courseId, 'access'])], self::$courseEnrolment[$this->getData(['course', $courseId, 'enrolment'])] ); + if ($this->getUser('permission', 'course', 'users') === true) { + $users = template::button('categoryUser' . $this->getUrl(2), [ + 'href' => helper::baseUrl() . 'course/users/' . $courseId, + 'value' => template::ico('users'), + ]); + } self::$courses[] = [ $info, $this->getData(['course', $courseId, 'description']), $enrolment, + $users, template::button('categoryUser' . $courseId, [ 'href' => helper::baseUrl() . 'course/manage/' . $courseId, - 'value' => template::ico('eye'), + 'value' => template::ico('sliders'), 'help' => 'Gérer' ]) ]; diff --git a/core/module/course/view/index/index.js.php b/core/module/course/view/index/index.js.php index e2a14a3..3a24fb7 100644 --- a/core/module/course/view/index/index.js.php +++ b/core/module/course/view/index/index.js.php @@ -23,6 +23,16 @@ $(document).ready(function () { target: 2, orderable: false, searchable: false + }, + { + target: 3, + orderable: false, + searchable: false + }, + { + target: 4, + orderable: false, + searchable: false } ] }); diff --git a/core/module/course/view/index/index.php b/core/module/course/view/index/index.php index 6310c29..a374468 100644 --- a/core/module/course/view/index/index.php +++ b/core/module/course/view/index/index.php @@ -37,7 +37,7 @@ - 'dataTables']); ?> + 'dataTables']); ?> \ No newline at end of file diff --git a/core/module/course/view/manage/manage.php b/core/module/course/view/manage/manage.php index 3a910f8..2a8a8ec 100644 --- a/core/module/course/view/manage/manage.php +++ b/core/module/course/view/manage/manage.php @@ -55,15 +55,6 @@ ]); ?> - getUser('permission', 'course', 'users') === true): ?> -
    - getUrl(2), [ - 'href' => helper::baseUrl() . 'course/users/' . $this->getUrl(2), - 'value' => 'Participants', - 'ico' => 'users' - ]); ?> -
    -
    diff --git a/core/module/course/view/users/users.php b/core/module/course/view/users/users.php index 1409955..ae6b5f7 100644 --- a/core/module/course/view/users/users.php +++ b/core/module/course/view/users/users.php @@ -2,7 +2,7 @@
    'buttonGrey', - 'href' => helper::baseUrl() . 'course/manage/' . $this->getUrl(2), + 'href' => helper::baseUrl() . 'course/' . $this->getUrl(2), 'value' => template::ico('left') ]); ?>
    diff --git a/core/module/page/page.php b/core/module/page/page.php index b0f18ae..a7361e2 100644 --- a/core/module/page/page.php +++ b/core/module/page/page.php @@ -85,12 +85,23 @@ class page extends common */ public function duplicate() { + // La session ne correspond pas au site ouvert dans cet onglet + if ( + // Contrôle la présence de l'id d'espace 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 $page = $this->getUrl(2); + // La page n'existe pas if ( - $this->getUser('permission', __CLASS__, __FUNCTION__) !== true || - $this->getData(['page', $page]) === null + $this->getUser('permission', __CLASS__, __FUNCTION__) !== true + || $this->getData(['page', $page]) === null ) { // Valeurs en sortie $this->addOutput([ @@ -118,7 +129,7 @@ class page extends common // Valeurs en sortie $this->addOutput([ - 'redirect' => helper::baseUrl() . 'page/edit/' . $pageId, + 'redirect' => helper::baseUrl() . 'page/edit/' . $pageId . '/' . self::$siteContent, 'notification' => $notification, 'state' => true ]); @@ -131,7 +142,19 @@ class page extends common */ public function add() { - if ($this->getUser('permission', __CLASS__, __FUNCTION__) !== true) { + // La session ne correspond pas au site ouvert dans cet onglet + if ( + // Contrôle la présence de l'id d'espace 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 + ) { // Valeurs en sortie $this->addOutput([ 'access' => false @@ -198,12 +221,24 @@ class page extends common */ public function delete() { + + // La session ne correspond pas au site ouvert dans cet onglet + if ( + // Contrôle la présence de l'id d'espace 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 $page = $this->getUrl(2); + // La page n'existe pas if ( - $this->getUser('permission', __CLASS__, __FUNCTION__) !== true || - $this->getData(['page', $page]) === null + $this->getUser('permission', __CLASS__, __FUNCTION__) !== true + || $this->getData(['page', $page]) === null ) { // Valeurs en sortie $this->addOutput([ @@ -215,9 +250,9 @@ class page extends common // Valeurs en sortie $this->addOutput([ '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') + '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 @@ -264,7 +299,7 @@ class page extends common elseif ($this->getHierarchy($page, null)) { // Valeurs en sortie $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') ]); } @@ -304,10 +339,24 @@ class page extends common */ public function edit() { + // La session ne correspond pas au site ouvert dans cet onglet + if ( + // Contrôle la présence de l'id d'espace 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 if ( - $this->getUser('permission', __CLASS__, __FUNCTION__) !== true || - $this->getData(['page', $this->getUrl(2)]) === null + $this->getUser('permission', __CLASS__, __FUNCTION__) !== true + || $this->getData(['page', $this->getUrl(2)]) === null + // Contrôle la présence de l'id d'espace uniquement si l'id est fourni afin de ne pas bloquer les modules non mis à jour + || ( + $this->getUrl(3) + && $this->getUrl(3) != self::$siteContent + ) ) { // Valeurs en sortie $this->addOutput([ @@ -634,7 +683,7 @@ class page extends common // Valeurs en sortie $this->addOutput([ '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 ]); } @@ -669,7 +718,7 @@ class page extends common // Valeurs en sortie $this->addOutput([ '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 ]); } @@ -685,16 +734,16 @@ 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 - * @return array tableau associatif des pages dans le menu + * @return string tableau associatif des pages dans le menu */ public function getPageInfo() { $p = $this->getData(['page']); $d = array_map(function ($d) { - unset($d["css"], $d["js"]); + unset ($d["css"], $d["js"]); return $d; }, $p); return json_encode($d); - } + } \ No newline at end of file diff --git a/core/module/page/view/cssEditor/cssEditor.php b/core/module/page/view/cssEditor/cssEditor.php index b9c62ae..a468bd3 100644 --- a/core/module/page/view/cssEditor/cssEditor.php +++ b/core/module/page/view/cssEditor/cssEditor.php @@ -3,7 +3,7 @@
    'buttonGrey', - 'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(2), + 'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(2) . '/' . self::$siteContent, 'value' => template::ico('left') ]); ?>
    diff --git a/core/module/page/view/edit/edit.php b/core/module/page/view/edit/edit.php index 21cd9ac..05bd890 100644 --- a/core/module/page/view/edit/edit.php +++ b/core/module/page/view/edit/edit.php @@ -19,14 +19,14 @@
    'buttonRed', - 'href' => helper::baseUrl() . 'page/delete/' . $this->getUrl(2), + 'href' => helper::baseUrl() . 'page/delete/' . $this->getUrl(2) . '/' . self::$siteContent, 'value' => template::ico('trash'), 'help' => 'Effacer la page' ]); ?>
    helper::baseUrl() . 'page/duplicate/' . $this->getUrl(2), + 'href' => helper::baseUrl() . 'page/duplicate/' . $this->getUrl(2) . '/' . self::$siteContent, 'value' => template::ico('clone'), 'help' => 'Dupliquer la page' ]); ?> diff --git a/core/module/page/view/jsEditor/jsEditor.php b/core/module/page/view/jsEditor/jsEditor.php index a14f269..a7dcf43 100644 --- a/core/module/page/view/jsEditor/jsEditor.php +++ b/core/module/page/view/jsEditor/jsEditor.php @@ -3,7 +3,7 @@
    'buttonGrey', - 'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(2), + 'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(2) . '/' . self::$siteContent, 'value' => template::ico('left') ]); ?>
    diff --git a/module/blog/view/config/config.php b/module/blog/view/config/config.php index 3be3f75..d87cfea 100644 --- a/module/blog/view/config/config.php +++ b/module/blog/view/config/config.php @@ -3,7 +3,7 @@
    'buttonGrey', - 'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0), 'posts', + 'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0) . '/' . self::$siteContent, 'value' => template::ico('left') ]); ?>
    diff --git a/module/form/view/config/config.php b/module/form/view/config/config.php index 08865dd..dc3520f 100644 --- a/module/form/view/config/config.php +++ b/module/form/view/config/config.php @@ -53,7 +53,7 @@
    'buttonGrey', - 'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0), + 'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0) . '/' . self::$siteContent, 'value' => template::ico('left') ]); ?>
    diff --git a/module/gallery/view/config/config.php b/module/gallery/view/config/config.php index a1f4ac2..58e89ff 100644 --- a/module/gallery/view/config/config.php +++ b/module/gallery/view/config/config.php @@ -3,7 +3,7 @@
    'buttonGrey', - 'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0), + 'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0) . '/' . self::$siteContent, 'value' => template::ico('left') ]); ?>
    diff --git a/module/news/view/config/config.php b/module/news/view/config/config.php index 92f7e4b..3866ccf 100644 --- a/module/news/view/config/config.php +++ b/module/news/view/config/config.php @@ -3,7 +3,7 @@
    'buttonGrey', - 'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0),'posts', + 'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0). '/' . self::$siteContent, 'value' => template::ico('left') ]); ?>
    diff --git a/module/redirection/view/config/config.php b/module/redirection/view/config/config.php index 9309fb0..911398f 100644 --- a/module/redirection/view/config/config.php +++ b/module/redirection/view/config/config.php @@ -3,7 +3,7 @@
    'buttonGrey', - 'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0), + 'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0) . '/' . self::$siteContent, 'value' => template::ico('left') ]); ?>
    diff --git a/module/redirection/view/index/index.js.php b/module/redirection/view/index/index.js.php index fe572c5..061da9c 100644 --- a/module/redirection/view/index/index.js.php +++ b/module/redirection/view/index/index.js.php @@ -19,7 +19,7 @@ core.confirm( message, function() { - $(location).attr("href", "page/edit/getUrl(0); ?>"); + $(location).attr("href", "page/edit/getUrl(0) . '/' . self::$siteContent; ?>"); }, function() { $(location).attr("href", "getUrl(); ?>/force"); diff --git a/module/search/view/config/config.php b/module/search/view/config/config.php index 0f515f1..09c698f 100644 --- a/module/search/view/config/config.php +++ b/module/search/view/config/config.php @@ -3,7 +3,7 @@
    'buttonGrey', - 'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0), + 'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0) . '/' . self::$siteContent, 'value' => template::ico('left') ]); ?>
    diff --git a/module/slider/view/config/config.php b/module/slider/view/config/config.php index f3ef50c..6a445f2 100644 --- a/module/slider/view/config/config.php +++ b/module/slider/view/config/config.php @@ -3,7 +3,7 @@
    'buttonGrey', - 'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0), + 'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0) . '/' . self::$siteContent, 'value' => template::ico('left') ]); ?>
    diff --git a/module/suscribe/view/config/config.php b/module/suscribe/view/config/config.php index 5aa2f41..3d11892 100755 --- a/module/suscribe/view/config/config.php +++ b/module/suscribe/view/config/config.php @@ -4,7 +4,7 @@
    '', - 'href' => helper::baseUrl() .'page/edit/' . $this->getUrl(0) , + 'href' => helper::baseUrl() .'page/edit/' . $this->getUrl(0) . '/' . self::$siteContent, 'ico' => 'left', 'value' => 'Retour' ]); ?> diff --git a/module/workshop/view/config/config.php b/module/workshop/view/config/config.php index c25c655..91b2444 100644 --- a/module/workshop/view/config/config.php +++ b/module/workshop/view/config/config.php @@ -3,7 +3,7 @@
    'buttonGrey', - 'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0), + 'href' => helper::baseUrl() . 'page/edit/' . $this->getUrl(0) . '/' . self::$siteContent, 'value' => template::ico('left') ]); ?>