diff --git a/core/module/course/course.php b/core/module/course/course.php index 527e15f..b2f9398 100644 --- a/core/module/course/course.php +++ b/core/module/course/course.php @@ -24,8 +24,8 @@ class course extends common 'edit' => self::GROUP_EDITOR, // Fait 'manage' => self::GROUP_EDITOR, // Fait 'users' => self::GROUP_EDITOR, // fait - 'usersAdd' => self::GROUP_EDITOR,//Fait - 'usersDelete' => self::GROUP_EDITOR,//Fait + 'usersAdd' => self::GROUP_EDITOR, //Fait + 'usersDelete' => self::GROUP_EDITOR, //Fait 'usersHistoryExport' => self::GROUP_EDITOR, //fait 'userDelete' => self::GROUP_EDITOR, //Fait 'userHistory' => self::GROUP_EDITOR, //Fait @@ -33,7 +33,7 @@ class course extends common 'backup' => self::GROUP_EDITOR, // Fait 'restore' => self::GROUP_EDITOR, //Fait 'clone' => self::GROUP_ADMIN, - 'add' => self::GROUP_ADMIN, + 'add' => self::GROUP_ADMIN, 'delete' => self::GROUP_ADMIN, 'category' => self::GROUP_ADMIN, 'categoryAdd' => self::GROUP_ADMIN, @@ -1212,7 +1212,7 @@ class course extends common self::$userGraph[] = [ helper::dateUTF8('%Y-%m-%d %H:%M:%S', $time), $diff, - html_entity_decode($pages[$pageId]['title']) . ' ('. helper::dateUTF8('%M\'%S"', $diff) . ')' + html_entity_decode($pages[$pageId]['title']) . ' (' . helper::dateUTF8('%M\'%S"', $diff) . ')' ]; } $lastView = $time; @@ -1769,19 +1769,27 @@ class course extends common * Admin : tous les droits * Editor : Inscrits dans le cours ou propriétaire */ - public function permissionControl($funtion, $courseId) + public function permissionControl($function, $courseId) { switch ($this->getUser('group')) { case self::GROUP_ADMIN: return true; case self::GROUP_EDITOR: return ( - $this->getUser('group') === self::$actions[$funtion] + $this->getUser('permission', __CLASS__, $function) && - ($this->getData(['enrolment', $courseId]) && ($this->getUser('id') === $this->getData(['course', $courseId, 'author'])) - || (// permission de gérer tous les espaces dans lesquels l'éditeur est inscrit. - $this->getUser('permission', __CLASS__, 'index') === true && - array_key_exists($this->getUser('id'), $this->getData(['enrolment', $courseId]))) ) + $this->getUser('group') === self::$actions[$function] + && + // Permission d'accèder aux espaces dans lesquels le membre auteur + ( + $this->getData(['enrolment', $courseId]) && ($this->getUser('id') === $this->getData(['course', $courseId, 'author'])) + ) + || + ( // Permission d'accèder aux esapces dans lesquels le membre est inscrits avec les + $this->getData(['enrolment', $courseId]) + && $this->getUser('permission', __CLASS__, 'author') === true + && array_key_exists($this->getUser('id'), $this->getData(['enrolment', $courseId])) + ) ); default: return false; diff --git a/core/module/course/view/index/index.php b/core/module/course/view/index/index.php index 85bc779..6310c29 100644 --- a/core/module/course/view/index/index.php +++ b/core/module/course/view/index/index.php @@ -6,41 +6,38 @@ 'value' => template::ico('home') ]); ?> - getUser('group') === self::GROUP_ADMIN): ?> -
- helper::baseUrl() . 'course/restore/', - 'value' => template::ico('upload-cloud'), - 'help' => 'Restaurer' - ]); ?> -
-
- helper::baseUrl() . 'course/category', - 'value' => template::ico('table'), - 'help' => 'Catégories' - ]); ?> -
-
+
+ getUser('permission', 'course', 'add') === true): ?> 'buttonGreen', 'href' => helper::baseUrl() . 'course/add', 'value' => template::ico('plus'), 'help' => 'Ajouter un espace' ]); ?> -
- -
+ +
+
+ getUser('permission', 'course', 'category') === true): ?> + helper::baseUrl() . 'course/category', + 'value' => template::ico('table'), + 'help' => 'Catégories des espaces' + ]); ?> + +
+
+ getUser('permission', 'course', 'restore') === true): ?> helper::baseUrl() . 'course/restore/', 'value' => template::ico('upload-cloud'), - 'help' => 'Restaurer depuis le dossier de l\'espace ' . self::$siteContent + 'help' => 'Restaurer un espace' ]); ?> -
- + + +
- 'dataTables']); ?> + 'dataTables']); ?> \ No newline at end of file diff --git a/core/module/user/user.php b/core/module/user/user.php index 8731801..f90038c 100644 --- a/core/module/user/user.php +++ b/core/module/user/user.php @@ -707,8 +707,15 @@ class user extends common 'edit' => $this->getInput('profilEditUserEdit', helper::FILTER_BOOLEAN), ], 'course' => [ - 'index' => $this->getInput('profilEditCourseIndex', helper::FILTER_BOOLEAN), - 'manage' => $this->getInput('profilEditCourseIndex', helper::FILTER_BOOLEAN), // Les deux fonctions sont groupées + /** + * author vaut false lorsque l'éditeur a les droits de modifier uniquement ses espaces. + * author vaut true lorsque l'éditeur a les droits de modifier uniquement TOUS les espaces. + */ + 'author' => $this->getInput('profilEditCourseAuthor', helper::FILTER_BOOLEAN), + // On autorise l'accès à ces deux pages + 'index' => $this->getInput('profilEditCourseIndex', helper::FILTER_BOOLEAN) && $this->getInput('profilEditCourseAuthor', helper::FILTER_BOOLEAN), + 'manage' => $this->getInput('profilEditCourseIndex', helper::FILTER_BOOLEAN) && $this->getInput('profilEditCourseAuthor', helper::FILTER_BOOLEAN), // Les deux fonctions sont groupées + // La suite 'users' => $this->getInput('profilEditCourseUsers', helper::FILTER_BOOLEAN), 'userHistory' => $this->getInput('profilEditCourseUserHistory', helper::FILTER_BOOLEAN), 'userHistoryExport' => $this->getInput('profilEditCourseUserExport', helper::FILTER_BOOLEAN), diff --git a/core/module/user/view/profilEdit/profilEdit.js.php b/core/module/user/view/profilEdit/profilEdit.js.php index 9147bf9..2f345db 100644 --- a/core/module/user/view/profilEdit/profilEdit.js.php +++ b/core/module/user/view/profilEdit/profilEdit.js.php @@ -19,7 +19,7 @@ $(document).ready(function () { } // Désactive les éléments liés aux espaces - if (!$("#profilEditCourseIndex").prop("checked")) { + if (!$("#profilEditCourseIndex, #profilEditCourseAuthor").prop("checked")) { $("#courseContainer").slideUp(); } else { $("#courseContainer").slideDown(); @@ -71,7 +71,7 @@ $(document).ready(function () { }); // Gérer l'évènement sur les options des espaces - $("#profilEditCourseIndex").change(function () { + $("#profilEditCourseIndex, #profilEditCourseAuthor").change(function () { if (!$(this).is(':checked')) { $('.courseOptions input[type="checkbox"]').prop('checked', false); $("#courseContainer").slideUp(); diff --git a/core/module/user/view/profilEdit/profilEdit.php b/core/module/user/view/profilEdit/profilEdit.php index 03c8431..d6580a8 100644 --- a/core/module/user/view/profilEdit/profilEdit.php +++ b/core/module/user/view/profilEdit/profilEdit.php @@ -79,76 +79,83 @@ -
-
-
-

- -

-
-
- $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'course', 'index']) - ]); ?> -
-
-
+getUrl(2) >= self::GROUP_EDITOR): ?> +
+
+
+

+ +

-
- $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'course', 'edit']), +
+ $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'course', 'author']) ]); ?>
-
- $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'course', 'backup']), - ]); ?> -
-
- $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'course', 'restore']), +
+ $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'course', 'index']) ]); ?>
-
-
- $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'course', 'users']), - ]); ?> +
+
+
+ $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'course', 'edit']), + ]); ?> +
+
+ $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'course', 'backup']), + ]); ?> +
+
+ $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'course', 'restore']), + ]); ?> +
-
- $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'course', 'userHistory']), - ]); ?> +
+
+ $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'course', 'users']), + ]); ?> +
+
+ $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'course', 'userHistory']), + ]); ?> +
+
+ $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'course', 'userHistoryExport']), + ]); ?> +
-
- $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'course', 'userHistoryExport']), - ]); ?> +
+
+ $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'course', 'userDelete']), + ]); ?> +
+
+ $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'course', 'usersAdd']), + ]); ?> +
+
+ $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'course', 'usersDelete']), + ]); ?> +
-
-
-
- $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'course', 'userDelete']), - ]); ?> -
-
- $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'course', 'usersAdd']), - ]); ?> -
-
- $this->getData(['profil', $this->getUrl(2), $this->getUrl(3), 'course', 'usersDelete']), - ]); ?> -
-
+
-
+