From 5e8de26794b673aaf52c090fd2b17e1cf2da0b19 Mon Sep 17 00:00:00 2001 From: Marina Glancy Date: Thu, 30 May 2013 10:28:35 +1000 Subject: [PATCH 1/3] MDL-21097 Correctly check capabilities for course settings items - Make sure that items in course settings (and frontpage settings) are shown depending on user capabilities - Make sure user is able to turn editing on on the page even if he has only limited number of seciton/modules capabilities --- course/view.php | 5 +++++ index.php | 1 + lib/navigationlib.php | 10 ++++++++-- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/course/view.php b/course/view.php index 18f03132764..3856f9e4e39 100644 --- a/course/view.php +++ b/course/view.php @@ -125,6 +125,11 @@ $PAGE->set_pagelayout('course'); $PAGE->set_pagetype('course-view-' . $course->format); $PAGE->set_other_editing_capability('moodle/course:manageactivities'); + $PAGE->set_other_editing_capability('moodle/course:activityvisibility'); + if (course_format_uses_sections($course->format)) { + $PAGE->set_other_editing_capability('moodle/course:sectionvisibility'); + $PAGE->set_other_editing_capability('moodle/course:movesections'); + } if ($reset_user_allowed_editing) { // ugly hack diff --git a/index.php b/index.php index 087a73aef3f..9dec05d1359 100644 --- a/index.php +++ b/index.php @@ -90,6 +90,7 @@ $PAGE->set_pagetype('site-index'); $PAGE->set_other_editing_capability('moodle/course:manageactivities'); + $PAGE->set_other_editing_capability('moodle/course:activityvisibility'); $PAGE->set_docs_path(''); $PAGE->set_pagelayout('frontpage'); $editing = $PAGE->user_is_editing(); diff --git a/lib/navigationlib.php b/lib/navigationlib.php index 72ab3691e4a..25e2c107b8e 100644 --- a/lib/navigationlib.php +++ b/lib/navigationlib.php @@ -3582,7 +3582,7 @@ class settings_navigation extends navigation_node { $coursenode->force_open(); } - if (has_capability('moodle/course:update', $coursecontext)) { + if ($this->page->user_allowed_editing()) { // Add the turn on/off settings if ($this->page->url->compare(new moodle_url('/course/view.php'), URL_MATCH_BASE)) { @@ -3603,7 +3603,9 @@ class settings_navigation extends navigation_node { $editstring = get_string('turneditingon'); } $coursenode->add($editstring, $editurl, self::TYPE_SETTING, null, null, new pix_icon('i/edit', '')); + } + if (has_capability('moodle/course:manageactivities', $coursecontext)) { // Add the module chooser toggle $modchoosertoggleurl = clone($baseurl); if ($this->page->user_is_editing() && course_ajax_enabled($course)) { @@ -3619,7 +3621,9 @@ class settings_navigation extends navigation_node { $modchoosertoggle->add_class('visibleifjs'); user_preference_allow_ajax_update('usemodchooser', PARAM_BOOL); } + } + if (has_capability('moodle/course:update', $coursecontext)) { if ($this->page->user_is_editing()) { // Removed as per MDL-22732 // $this->add_course_editing_links($course); @@ -4381,7 +4385,7 @@ class settings_navigation extends navigation_node { } $frontpage->id = 'frontpagesettings'; - if (has_capability('moodle/course:update', $coursecontext)) { + if ($this->page->user_allowed_editing()) { // Add the turn on/off settings $url = new moodle_url('/course/view.php', array('id'=>$course->id, 'sesskey'=>sesskey())); @@ -4393,7 +4397,9 @@ class settings_navigation extends navigation_node { $editstring = get_string('turneditingon'); } $frontpage->add($editstring, $url, self::TYPE_SETTING, null, null, new pix_icon('i/edit', '')); + } + if (has_capability('moodle/course:update', $coursecontext)) { // Add the course settings link $url = new moodle_url('/admin/settings.php', array('section'=>'frontpagesettings')); $frontpage->add(get_string('editsettings'), $url, self::TYPE_SETTING, null, null, new pix_icon('i/settings', '')); From 3ffbbeea7c5a5a47b1544197a1eaeaf47381e7b0 Mon Sep 17 00:00:00 2001 From: Marina Glancy Date: Wed, 5 Jun 2013 14:00:11 +1000 Subject: [PATCH 2/3] MDL-21097 corrected course editing roles --- course/view.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/course/view.php b/course/view.php index 3856f9e4e39..8a74b557709 100644 --- a/course/view.php +++ b/course/view.php @@ -124,11 +124,11 @@ $PAGE->set_pagelayout('course'); $PAGE->set_pagetype('course-view-' . $course->format); + $PAGE->set_other_editing_capability('moodle/course:update'); $PAGE->set_other_editing_capability('moodle/course:manageactivities'); $PAGE->set_other_editing_capability('moodle/course:activityvisibility'); if (course_format_uses_sections($course->format)) { $PAGE->set_other_editing_capability('moodle/course:sectionvisibility'); - $PAGE->set_other_editing_capability('moodle/course:movesections'); } if ($reset_user_allowed_editing) { From a6ce14dfb5644041a4bb83306cbe1018d24b6a61 Mon Sep 17 00:00:00 2001 From: Marina Glancy Date: Wed, 5 Jun 2013 18:06:56 +1000 Subject: [PATCH 3/3] MDL-21097 Correctly check capabilities for frontpage editing mode --- index.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/index.php b/index.php index 9dec05d1359..c7653227c09 100644 --- a/index.php +++ b/index.php @@ -40,6 +40,9 @@ } $PAGE->set_url('/', $urlparams); $PAGE->set_course($SITE); + $PAGE->set_other_editing_capability('moodle/course:update'); + $PAGE->set_other_editing_capability('moodle/course:manageactivities'); + $PAGE->set_other_editing_capability('moodle/course:activityvisibility'); // Prevent caching of this page to stop confusion when changing page after making AJAX changes $PAGE->set_cacheable(false); @@ -89,8 +92,6 @@ } $PAGE->set_pagetype('site-index'); - $PAGE->set_other_editing_capability('moodle/course:manageactivities'); - $PAGE->set_other_editing_capability('moodle/course:activityvisibility'); $PAGE->set_docs_path(''); $PAGE->set_pagelayout('frontpage'); $editing = $PAGE->user_is_editing(); @@ -137,7 +138,7 @@ echo format_text($summarytext, $section->summaryformat, $summaryformatoptions); - if ($editing) { + if ($editing && has_capability('moodle/course:update', $context)) { $streditsummary = get_string('editsummary'); echo "id\">pix_url('t/edit') . "\" ".