diff --git a/mod/quiz/tabs.php b/mod/quiz/tabs.php index 7bc1179b875..1b60098de3d 100644 --- a/mod/quiz/tabs.php +++ b/mod/quiz/tabs.php @@ -22,6 +22,7 @@ $course = get_record('course', 'id', $quiz->course); } + $context = get_context_instance(CONTEXT_MODULE, $cm->id); //print_heading(format_string($quiz->name)); $tabs = array(); @@ -29,9 +30,11 @@ $inactive = array(); $row[] = new tabobject('info', "$CFG->wwwroot/mod/quiz/view.php?q=$quiz->id", get_string('info', 'quiz')); - $row[] = new tabobject('reports', "$CFG->wwwroot/mod/quiz/report.php?q=$quiz->id", get_string('results', 'quiz')); + if (has_capability('mod/quiz:viewreports', $context)) { + $row[] = new tabobject('reports', "$CFG->wwwroot/mod/quiz/report.php?q=$quiz->id", get_string('results', 'quiz')); + } $row[] = new tabobject('preview', "$CFG->wwwroot/mod/quiz/attempt.php?q=$quiz->id", get_string('preview', 'quiz')); - if (isteacheredit($course->id)) { + if (has_capability('mod/quiz:manage', $context)) { $row[] = new tabobject('edit', "$CFG->wwwroot/mod/quiz/edit.php?quizid=$quiz->id", get_string('edit')); } @@ -72,11 +75,22 @@ $streditingquiz = get_string("editinga", "moodle", $strquiz); $strupdate = get_string('updatethis', 'moodle', $strquiz); $row[] = new tabobject('editq', "$CFG->wwwroot/mod/quiz/edit.php?quizid=$quiz->id", $strquiz, $streditingquiz); - $row[] = new tabobject('questions', "$CFG->wwwroot/question/edit.php?courseid=$course->id", get_string('questions', 'quiz'), $streditingquestions); - $row[] = new tabobject('categories', "$CFG->wwwroot/question/category.php?id=$course->id", get_string('categories', 'quiz'), get_string('editqcats', 'quiz')); - $row[] = new tabobject('import', "$CFG->wwwroot/question/import.php?course=$course->id", get_string('import', 'quiz'), get_string('importquestions', 'quiz')); - $row[] = new tabobject('export', "$CFG->wwwroot/question/export.php?courseid=$course->id", get_string('export', 'quiz'), get_string('exportquestions', 'quiz')); - + + if (has_capability('moodle/question:manage', $context)) { + $row[] = new tabobject('questions', "$CFG->wwwroot/question/edit.php?courseid=$course->id", get_string('questions', 'quiz'), $streditingquestions); + } + + if (has_capability('moodle/question:managecategory', $context)) { + $row[] = new tabobject('categories', "$CFG->wwwroot/question/category.php?id=$course->id", get_string('categories', 'quiz'), get_string('editqcats', 'quiz')); + } + + if (has_capability('moodle/question:import', $context)) { + $row[] = new tabobject('import', "$CFG->wwwroot/question/import.php?course=$course->id", get_string('import', 'quiz'), get_string('importquestions', 'quiz')); + } + + if (has_capability('moodle/question:export', $context)) { + $row[] = new tabobject('export', "$CFG->wwwroot/question/export.php?courseid=$course->id", get_string('export', 'quiz'), get_string('exportquestions', 'quiz')); + } $tabs[] = $row; } diff --git a/question/category.php b/question/category.php index c0ef9ef01a0..a3f3dc57fc3 100644 --- a/question/category.php +++ b/question/category.php @@ -33,12 +33,11 @@ if (! $course = get_record("course", "id", $id)) { error("Course ID is incorrect"); } - + + $context = get_context_instance(CONTEXT_COURSE, $id); + require_login($course->id, false); - - if (!isteacheredit($course->id)) { - error("Only teachers authorized to edit the course '{$course->fullname}' can use this page!"); - } + require_capability('moodle/question:managecategory', $context); $qcobject = new question_category_object(); $qcobject->set_course($course); diff --git a/question/edit.php b/question/edit.php index d13a996f133..6d1fb00c731 100644 --- a/question/edit.php +++ b/question/edit.php @@ -27,13 +27,9 @@ if (! $course = get_record("course", "id", $courseid)) { error("This course doesn't exist"); } - + $context = get_context_instance(CONTEXT_COURSE, $courseid); require_login($course->id, false); - - if (!isteacheredit($course->id)) { - error("You can't modify this course!"); - } - + $SESSION->returnurl = $FULLME; // Print basic page layout. diff --git a/question/editlib.php b/question/editlib.php index 0e1fa467dfb..962d24c3716 100644 --- a/question/editlib.php +++ b/question/editlib.php @@ -208,6 +208,8 @@ function question_category_form($course, $current, $recurse=1, $showhidden=false function question_list($course, $categoryid, $quizid=0, $recurse=1, $page=0, $perpage=100, $showhidden=false, $sortorder='qtype, name ASC') { global $QTYPE_MENU, $USER, $CFG; + + $context = get_context_instance(CONTEXT_COURSE, $course->id); $qtypemenu = $QTYPE_MENU; if ($rqp_types = get_records('question_rqp_types')) { @@ -277,13 +279,17 @@ function question_list($course, $categoryid, $quizid=0, } echo '