roles MDL-22126 Fixed up usage of admin/roles/tags.php
This commit is contained in:
+50
-58
@@ -31,41 +31,35 @@ define("MAX_USERS_TO_LIST_PER_ROLE", 10);
|
||||
|
||||
$contextid = required_param('contextid',PARAM_INT);
|
||||
$roleid = optional_param('roleid', 0, PARAM_INT);
|
||||
$courseid = optional_param('courseid', 0, PARAM_INT); // needed for user tabs
|
||||
$extendperiod = optional_param('extendperiod', 0, PARAM_INT);
|
||||
$extendbase = optional_param('extendbase', 3, PARAM_INT);
|
||||
|
||||
list($context, $course, $cm) = get_context_info_array($contextid);
|
||||
|
||||
$PAGE->set_url('/admin/roles/assign.php', array('contextid' => $contextid));
|
||||
$PAGE->set_context($context);
|
||||
$url = new moodle_url('/admin/roles/assign.php', array('contextid' => $contextid));
|
||||
|
||||
$userid = 0;
|
||||
$tabfile = null;
|
||||
|
||||
if ($course) {
|
||||
$isfrontpage = ($context->contextlevel == CONTEXT_COURSE and $context->instanceid == SITEID);
|
||||
|
||||
} else {
|
||||
$isfrontpage = false;
|
||||
if (!$course) {
|
||||
if ($context->contextlevel == CONTEXT_USER) {
|
||||
$courseid = optional_param('courseid', SITEID, PARAM_INT); // needed for user/tabs.php
|
||||
$course = $DB->get_record('course', array('id'=>$courseid), '*', MUST_EXIST);
|
||||
$PAGE->url->param('courseid', $courseid);
|
||||
$userid = $context->instanceid;
|
||||
$course = $DB->get_record('course', array('id'=>optional_param('courseid', SITEID, PARAM_INT)), '*', MUST_EXIST);
|
||||
$user = $DB->get_record('user', array('id'=>$context->instanceid), '*', MUST_EXIST);
|
||||
$url->param('courseid', $course->id);
|
||||
$url->param('userid', $user->id);
|
||||
} else {
|
||||
$course = $SITE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// security
|
||||
require_login($course, false, $cm);
|
||||
require_capability('moodle/role:assign', $context);
|
||||
$PAGE->set_url($url);
|
||||
$PAGE->set_context($context);
|
||||
|
||||
$contextname = print_context_name($context);
|
||||
$courseid = $course->id;
|
||||
$inmeta = $course->metacourse;
|
||||
$isfrontpage = ($course->id == SITEID);
|
||||
|
||||
// These are needed early because of tabs.php
|
||||
list($assignableroles, $assigncounts, $nameswithcounts) = get_assignable_roles($context, ROLENAME_BOTH, true);
|
||||
@@ -79,9 +73,6 @@ if ($roleid && !isset($assignableroles[$roleid])) {
|
||||
print_error('cannotassignrolehere', '', get_context_url($context), $a);
|
||||
}
|
||||
|
||||
// Get some language strings
|
||||
$straction = get_string('assignroles', 'role'); // Used by tabs.php
|
||||
|
||||
// Work out an appropriate page title.
|
||||
if ($roleid) {
|
||||
$a = new stdClass;
|
||||
@@ -231,50 +222,49 @@ if ($roleid) {
|
||||
}
|
||||
}
|
||||
|
||||
// Print the header and tabs
|
||||
if ($context->contextlevel == CONTEXT_USER) {
|
||||
$user = $DB->get_record('user', array('id'=>$userid));
|
||||
$fullname = fullname($user, has_capability('moodle/site:viewfullnames', $context));
|
||||
$PAGE->set_pagelayout('admin');
|
||||
$PAGE->set_title($title);
|
||||
$tabfile = $CFG->dirroot.'/'.$CFG->admin.'/roles/tabs.php';
|
||||
|
||||
/// course header
|
||||
$PAGE->set_title($title);
|
||||
if ($courseid != SITEID) {
|
||||
if (has_capability('moodle/course:viewparticipants', get_context_instance(CONTEXT_COURSE, $courseid))) {
|
||||
$PAGE->navbar->add(get_string('participants'), new moodle_url('/user/index.php', array('id'=>$courseid)));
|
||||
switch ($context->contextlevel) {
|
||||
case CONTEXT_SYSTEM:
|
||||
admin_externalpage_setup('assignroles', '', array('contextid' => $contextid, 'roleid' => $roleid));
|
||||
break;
|
||||
case CONTEXT_USER:
|
||||
$tabfile = $CFG->dirroot.'/user/tabs.php';
|
||||
if ($isfrontpage) {
|
||||
$fullname = fullname($user, has_capability('moodle/site:viewfullnames', $context));
|
||||
$PAGE->set_heading($fullname);
|
||||
} else {
|
||||
$PAGE->set_heading($course->fullname);
|
||||
}
|
||||
$PAGE->set_heading($fullname);
|
||||
} else {
|
||||
$PAGE->set_heading($course->fullname);
|
||||
}
|
||||
$PAGE->navbar->add($fullname, new moodle_url("$CFG->wwwroot/user/view.php", array('id'=>$userid,'course'=>$courseid)));
|
||||
$PAGE->navbar->add($straction);
|
||||
echo $OUTPUT->header();
|
||||
|
||||
$showroles = 1;
|
||||
$currenttab = 'assign';
|
||||
echo $OUTPUT->header();
|
||||
include($CFG->dirroot.'/user/tabs.php');
|
||||
|
||||
} else if ($context->contextlevel == CONTEXT_SYSTEM) {
|
||||
admin_externalpage_setup('assignroles', '', array('contextid' => $contextid, 'roleid' => $roleid));
|
||||
echo $OUTPUT->header();
|
||||
|
||||
} else if ($isfrontpage) {
|
||||
admin_externalpage_setup('frontpageroles', '', array('contextid' => $contextid, 'roleid' => $roleid));
|
||||
echo $OUTPUT->header();
|
||||
$currenttab = 'assign';
|
||||
include('tabs.php');
|
||||
|
||||
} else {
|
||||
$PAGE->set_title($title);
|
||||
$PAGE->set_heading(print_context_name($context, false));
|
||||
echo $OUTPUT->header();
|
||||
$currenttab = 'assign';
|
||||
include('tabs.php');
|
||||
$showroles = 1;
|
||||
break;
|
||||
case CONTEXT_COURSECAT:
|
||||
$PAGE->set_heading("$SITE->fullname: ".get_string("categories"));
|
||||
break;
|
||||
case CONTEXT_COURSE:
|
||||
if ($isfrontpage) {
|
||||
admin_externalpage_setup('frontpageroles', '', array('contextid' => $contextid, 'roleid' => $roleid));
|
||||
} else {
|
||||
$PAGE->set_heading($course->fullname);
|
||||
}
|
||||
break;
|
||||
case CONTEXT_MODULE:
|
||||
$PAGE->set_heading(print_context_name($context, false));
|
||||
$PAGE->set_cacheable(false);
|
||||
break;
|
||||
case CONTEXT_BLOCK:
|
||||
$PAGE->set_heading($PAGE->course->fullname);
|
||||
break;
|
||||
}
|
||||
|
||||
$currenttab = 'assign';
|
||||
echo $OUTPUT->header();
|
||||
include($tabfile);
|
||||
|
||||
// Print heading.
|
||||
echo $OUTPUT->heading_with_help($title, 'assignroles');
|
||||
echo $OUTPUT->heading_with_help($title, 'assignroles', 'role');
|
||||
|
||||
if ($roleid) {
|
||||
// Show UI for assigning a particular role to users.
|
||||
@@ -417,7 +407,9 @@ $assignurl = new moodle_url($PAGE->url, array('roleid'=>$roleid));
|
||||
echo html_writer::table($table);
|
||||
|
||||
if ($context->contextlevel > CONTEXT_USER) {
|
||||
echo '<div class="backlink"><a href="' . get_context_url($context) . '">' . get_string('backto', '', $contextname) . '</a></div>';
|
||||
echo html_writer::start_tag('div', array('class'=>'backlink'));
|
||||
echo html_writer::tag('a', get_string('backto', '', $contextname), array('href'=>get_context_url($context)));
|
||||
echo html_writer::end_tag('div');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+57
-57
@@ -30,19 +30,15 @@ require_once($CFG->dirroot . '/' . $CFG->admin . '/roles/lib.php');
|
||||
$contextid = required_param('contextid',PARAM_INT);
|
||||
|
||||
list($context, $course, $cm) = get_context_info_array($contextid);
|
||||
$PAGE->set_url('/admin/roles/check.php', array('contextid' => $contextid));
|
||||
$PAGE->set_context($context);
|
||||
|
||||
if ($course) {
|
||||
$isfrontpage = ($context->contextlevel == CONTEXT_COURSE and $context->instanceid == SITEID);
|
||||
$url = new moodle_url('/admin/roles/check.php', array('contextid' => $contextid));
|
||||
|
||||
} else {
|
||||
$isfrontpage = false;
|
||||
if (!$course) {
|
||||
if ($context->contextlevel == CONTEXT_USER) {
|
||||
$courseid = optional_param('courseid', SITEID, PARAM_INT); // needed for user/tabs.php
|
||||
$course = $DB->get_record('course', array('id'=>$courseid), '*', MUST_EXIST);
|
||||
$PAGE->url->param('courseid', $courseid);
|
||||
$userid = $context->instanceid;
|
||||
$course = $DB->get_record('course', array('id'=>optional_param('courseid', SITEID, PARAM_INT)), '*', MUST_EXIST);
|
||||
$user = $DB->get_record('user', array('id'=>$context->instanceid), '*', MUST_EXIST);
|
||||
$url->param('courseid', $course->id);
|
||||
$url->param('userid', $user->id);
|
||||
} else {
|
||||
$course = $SITE;
|
||||
}
|
||||
@@ -50,18 +46,15 @@ if ($course) {
|
||||
|
||||
// security first
|
||||
require_login($course, false, $cm);
|
||||
$canview = has_any_capability(array('moodle/role:assign', 'moodle/role:safeoverride',
|
||||
'moodle/role:override', 'moodle/role:manage'), $context);
|
||||
if (!$canview) {
|
||||
if (!has_any_capability(array('moodle/role:assign', 'moodle/role:safeoverride', 'moodle/role:override', 'moodle/role:manage'), $context)) {
|
||||
print_error('nopermissions', 'error', '', get_string('checkpermissions', 'role'));
|
||||
}
|
||||
$PAGE->set_url($url);
|
||||
$PAGE->set_context($context);
|
||||
|
||||
$courseid = $course->id;
|
||||
$contextname = print_context_name($context);
|
||||
|
||||
// These are needed early because of tabs.php
|
||||
$assignableroles = get_assignable_roles($context, ROLENAME_BOTH);
|
||||
$overridableroles = get_overridable_roles($context, ROLENAME_BOTH);
|
||||
$isfrontpage = ($course->id == SITEID);
|
||||
|
||||
// Get the user_selector we will need.
|
||||
// Teachers within a course just get to see the same list of people they can
|
||||
@@ -77,48 +70,53 @@ $userselector->set_rows(10);
|
||||
|
||||
// Work out an appropriate page title.
|
||||
$title = get_string('checkpermissionsin', 'role', $contextname);
|
||||
$straction = get_string('checkpermissions', 'role'); // Used by tabs.php
|
||||
|
||||
// Print the header and tabs
|
||||
if ($context->contextlevel == CONTEXT_USER) {
|
||||
$user = $DB->get_record('user', array('id' => $userid));
|
||||
$fullname = fullname($user, has_capability('moodle/site:viewfullnames', $context));
|
||||
$PAGE->set_pagelayout('admin');
|
||||
$PAGE->set_title($title);
|
||||
$tabfile = $CFG->dirroot.'/'.$CFG->admin.'/roles/tabs.php';
|
||||
|
||||
$PAGE->set_title($title);
|
||||
if ($courseid != SITEID) {
|
||||
if (has_capability('moodle/course:viewparticipants', get_context_instance(CONTEXT_COURSE, $courseid))) {
|
||||
$PAGE->navbar->add(get_string('participants'), new moodle_url('/user/index.php', array('id'=>$courseid)));
|
||||
switch ($context->contextlevel) {
|
||||
case CONTEXT_SYSTEM:
|
||||
admin_externalpage_setup('assignroles', '', array('contextid' => $contextid, 'roleid' => $roleid));
|
||||
break;
|
||||
case CONTEXT_USER:
|
||||
$tabfile = $CFG->dirroot.'/user/tabs.php';
|
||||
if ($isfrontpage) {
|
||||
$fullname = fullname($user, has_capability('moodle/site:viewfullnames', $context));
|
||||
$PAGE->set_heading($fullname);
|
||||
} else {
|
||||
$PAGE->set_heading($course->fullname);
|
||||
}
|
||||
$PAGE->set_heading($fullname);
|
||||
} else {
|
||||
$PAGE->set_heading($course->fullname);
|
||||
}
|
||||
$PAGE->navbar->add($fullname, new moodle_url("$CFG->wwwroot/user/view.php", array('id'=>$userid,'course'=>$courseid)));
|
||||
$PAGE->navbar->add($straction);
|
||||
echo $OUTPUT->header();
|
||||
|
||||
$showroles = 1;
|
||||
$currenttab = 'check';
|
||||
include($CFG->dirroot.'/user/tabs.php');
|
||||
|
||||
} else if ($context->contextlevel == CONTEXT_SYSTEM) {
|
||||
admin_externalpage_setup('checkpermissions', '', array('contextid' => $contextid));
|
||||
echo $OUTPUT->header();
|
||||
|
||||
} else if ($context->contextlevel == CONTEXT_COURSE and $context->instanceid == SITEID) {
|
||||
admin_externalpage_setup('frontpageroles', '', array('contextid' => $contextid), $CFG->wwwroot . '/' . $CFG->admin . '/roles/check.php');
|
||||
echo $OUTPUT->header();
|
||||
$currenttab = 'check';
|
||||
include('tabs.php');
|
||||
|
||||
} else {
|
||||
echo $OUTPUT->header();
|
||||
$currenttab = 'check';
|
||||
include('tabs.php');
|
||||
$showroles = 1;
|
||||
break;
|
||||
case CONTEXT_COURSECAT:
|
||||
$PAGE->set_heading("$SITE->fullname: ".get_string("categories"));
|
||||
break;
|
||||
case CONTEXT_COURSE:
|
||||
if ($isfrontpage) {
|
||||
admin_externalpage_setup('frontpageroles', '', array('contextid' => $contextid), $CFG->wwwroot . '/' . $CFG->admin . '/roles/check.php');
|
||||
} else {
|
||||
$PAGE->set_heading($course->fullname);
|
||||
}
|
||||
break;
|
||||
case CONTEXT_MODULE:
|
||||
$PAGE->set_heading(print_context_name($context, false));
|
||||
$PAGE->set_cacheable(false);
|
||||
break;
|
||||
case CONTEXT_BLOCK:
|
||||
$PAGE->set_heading($PAGE->course->fullname);
|
||||
break;
|
||||
}
|
||||
|
||||
$currenttab = 'check';
|
||||
echo $OUTPUT->header();
|
||||
// These are needed early because of tabs.php
|
||||
$assignableroles = get_assignable_roles($context, ROLENAME_BOTH);
|
||||
$overridableroles = get_overridable_roles($context, ROLENAME_BOTH);
|
||||
include($tabfile);
|
||||
|
||||
// Print heading.
|
||||
echo $OUTPUT->heading_with_help($title, 'checkpermissions');
|
||||
echo $OUTPUT->heading_with_help($title, 'checkpermissions', 'role');
|
||||
|
||||
// If a user has been chosen, show all the permissions for this user.
|
||||
$reportuser = $userselector->get_selected_user();
|
||||
@@ -141,10 +139,10 @@ echo '<form method="get" action="' . $CFG->wwwroot . '/' . $CFG->admin . '/roles
|
||||
|
||||
// Hidden fields.
|
||||
echo '<input type="hidden" name="contextid" value="' . $context->id . '" />';
|
||||
if (!empty($userid)) {
|
||||
echo '<input type="hidden" name="userid" value="' . $userid . '" />';
|
||||
if (!empty($user->id)) {
|
||||
echo '<input type="hidden" name="userid" value="' . $user->id . '" />';
|
||||
}
|
||||
if ($courseid && $courseid != SITEID) {
|
||||
if ($isfrontpage) {
|
||||
echo '<input type="hidden" name="courseid" value="' . $courseid . '" />';
|
||||
}
|
||||
|
||||
@@ -159,7 +157,9 @@ echo $OUTPUT->box_end();
|
||||
|
||||
// Appropriate back link.
|
||||
if ($context->contextlevel > CONTEXT_USER) {
|
||||
echo '<div class="backlink"><a href="' . get_context_url($context) . '">' . get_string('backto', '', $contextname) . '</a></div>';
|
||||
echo html_writer::start_tag('div', array('class'=>'backlink'));
|
||||
echo html_writer::tag('a', get_string('backto', '', $contextname), array('href'=>get_context_url($context)));
|
||||
echo html_writer::end_tag('div');
|
||||
}
|
||||
|
||||
echo $OUTPUT->footer();
|
||||
|
||||
+73
-85
@@ -32,22 +32,14 @@ $roleid = required_param('roleid', PARAM_INT); // requested role id
|
||||
|
||||
list($context, $course, $cm) = get_context_info_array($contextid);
|
||||
|
||||
$PAGE->set_url('/admin/roles/override.php', array('contextid' => $contextid, 'roleid' => $roleid));
|
||||
$PAGE->set_context($context);
|
||||
$url = new moodle_url('/admin/roles/override.php', array('contextid' => $contextid, 'roleid' => $roleid));
|
||||
|
||||
$userid = 0;
|
||||
$tabfile = null;
|
||||
|
||||
if ($course) {
|
||||
$isfrontpage = ($context->contextlevel == CONTEXT_COURSE and $context->instanceid == SITEID);
|
||||
|
||||
} else {
|
||||
$isfrontpage = false;
|
||||
if (!$course) {
|
||||
if ($context->contextlevel == CONTEXT_USER) {
|
||||
$courseid = optional_param('courseid', SITEID, PARAM_INT); // needed for user/tabs.php
|
||||
$course = $DB->get_record('course', array('id'=>$courseid), '*', MUST_EXIST);
|
||||
$PAGE->url->param('courseid', $courseid);
|
||||
$userid = $context->instanceid;
|
||||
$course = $DB->get_record('course', array('id'=>optional_param('courseid', SITEID, PARAM_INT)), '*', MUST_EXIST);
|
||||
$user = $DB->get_record('user', array('id'=>$context->instanceid), '*', MUST_EXIST);
|
||||
$url->param('courseid', $course->id);
|
||||
$url->param('userid', $user->id);
|
||||
} else {
|
||||
$course = $SITE;
|
||||
}
|
||||
@@ -55,16 +47,22 @@ if ($course) {
|
||||
|
||||
// security first
|
||||
require_login($course, false, $cm);
|
||||
$safeoverridesonly = !has_capability('moodle/role:override', $context);
|
||||
if ($safeoverridesonly) {
|
||||
if (!has_capability('moodle/role:override', $context)) {
|
||||
require_capability('moodle/role:safeoverride', $context);
|
||||
}
|
||||
$PAGE->set_url($url);
|
||||
$PAGE->set_context($context);
|
||||
|
||||
$courseid = $course->id;
|
||||
$isfrontpage = ($course->id == SITEID);
|
||||
|
||||
$baseurl = $PAGE->url->out();
|
||||
$returnurl = new moodle_url('/admin/roles/permissions.php', array('contextid' => $context->id));
|
||||
|
||||
// Handle the cancel button.
|
||||
if (optional_param('cancel', false, PARAM_BOOL)) {
|
||||
redirect($returnurl);
|
||||
}
|
||||
|
||||
$role = $DB->get_record('role', array('id'=>$roleid), '*', MUST_EXIST);
|
||||
|
||||
// These are needed early because of tabs.php
|
||||
@@ -77,46 +75,43 @@ $straction = get_string('overrideroles', 'role'); // Used by tabs.php
|
||||
$a = (object)array('context' => $contextname, 'role' => $overridableroles[$roleid]);
|
||||
$title = get_string('overridepermissionsforrole', 'role', $a);
|
||||
|
||||
// Print the header and tabs
|
||||
if ($context->contextlevel == CONTEXT_SYSTEM) {
|
||||
print_error('cannotoverridebaserole', 'error');
|
||||
$tabfile = $CFG->dirroot.'/'.$CFG->admin.'/roles/tabs.php';
|
||||
$currenttab = 'permissions';
|
||||
|
||||
} else if ($context->contextlevel == CONTEXT_USER) {
|
||||
// NOTE: this is not linked from UI for now
|
||||
$userid = $context->instanceid;
|
||||
$user = $DB->get_record('user', array('id'=>$userid, 'deleted'=>0), '*', MUST_EXIST);
|
||||
$fullname = fullname($user, has_capability('moodle/site:viewfullnames', $context));
|
||||
|
||||
// course header
|
||||
if ($isfrontpage) {
|
||||
$PAGE->set_heading($course->fullname);
|
||||
} else {
|
||||
if (has_capability('moodle/course:viewparticipants', get_context_instance(CONTEXT_COURSE, $courseid))) {
|
||||
$PAGE->navbar->add(get_string('participants'), new moodle_url('/user/index.php', array('id'=>$courseid)));
|
||||
$PAGE->set_pagelayout('admin');
|
||||
$PAGE->set_title($title);
|
||||
$PAGE->navbar->add($straction);
|
||||
switch ($context->contextlevel) {
|
||||
case CONTEXT_SYSTEM:
|
||||
print_error('cannotoverridebaserole', 'error');
|
||||
break;
|
||||
case CONTEXT_USER:
|
||||
$tabfile = $CFG->dirroot.'/user/tabs.php';
|
||||
if ($isfrontpage) {
|
||||
$fullname = fullname($user, has_capability('moodle/site:viewfullnames', $context));
|
||||
$PAGE->set_heading($fullname);
|
||||
} else {
|
||||
$PAGE->set_heading($course->fullname);
|
||||
}
|
||||
$PAGE->set_heading($fullname);
|
||||
}
|
||||
$PAGE->navbar->add($fullname, new moodle_url("$CFG->wwwroot/user/view.php", array('id'=>$userid,'course'=>$courseid)));
|
||||
$PAGE->navbar->add($straction);
|
||||
|
||||
$showroles = 1;
|
||||
$currenttab = 'permissions';
|
||||
$tabfile = $CFG->dirroot.'/user/tabs.php';
|
||||
|
||||
} else if ($isfrontpage) {
|
||||
admin_externalpage_setup('frontpageroles', '', array(), $PAGE->url);
|
||||
$currenttab = 'permissions';
|
||||
$tabfile = 'tabs.php';
|
||||
|
||||
} else {
|
||||
$currenttab = 'permissions';
|
||||
$tabfile = 'tabs.php';
|
||||
}
|
||||
|
||||
|
||||
// Handle the cancel button.
|
||||
if (optional_param('cancel', false, PARAM_BOOL)) {
|
||||
redirect($returnurl);
|
||||
$showroles = 1;
|
||||
break;
|
||||
case CONTEXT_COURSECAT:
|
||||
$PAGE->set_heading("$SITE->fullname: ".get_string("categories"));
|
||||
break;
|
||||
case CONTEXT_COURSE:
|
||||
if ($isfrontpage) {
|
||||
admin_externalpage_setup('frontpageroles', '', array(), $PAGE->url);
|
||||
} else {
|
||||
$PAGE->set_heading($course->fullname);
|
||||
}
|
||||
break;
|
||||
case CONTEXT_MODULE:
|
||||
$PAGE->set_heading(print_context_name($context, false));
|
||||
$PAGE->set_cacheable(false);
|
||||
break;
|
||||
case CONTEXT_BLOCK:
|
||||
$PAGE->set_heading($PAGE->course->fullname);
|
||||
break;
|
||||
}
|
||||
|
||||
// Make sure this user can override that role
|
||||
@@ -128,7 +123,7 @@ if (empty($overridableroles[$roleid])) {
|
||||
}
|
||||
|
||||
// If we are actually overriding a role, create the table object, and save changes if appropriate.
|
||||
$overridestable = new override_permissions_table_advanced($context, $roleid, $safeoverridesonly);
|
||||
$overridestable = new override_permissions_table_advanced($context, $roleid, false);
|
||||
$overridestable->read_submitted_permissions();
|
||||
|
||||
if (optional_param('savechanges', false, PARAM_BOOL) && confirm_sesskey()) {
|
||||
@@ -140,10 +135,8 @@ if (optional_param('savechanges', false, PARAM_BOOL) && confirm_sesskey()) {
|
||||
|
||||
// Finally start page output
|
||||
echo $OUTPUT->header();
|
||||
if ($tabfile) {
|
||||
include($tabfile);
|
||||
}
|
||||
echo $OUTPUT->heading_with_help($title, 'overrides');
|
||||
include($tabfile);
|
||||
echo $OUTPUT->heading_with_help($title, 'overrides', 'role');
|
||||
|
||||
// Show UI for overriding roles.
|
||||
if (!empty($capabilities)) {
|
||||
@@ -152,37 +145,32 @@ if (!empty($capabilities)) {
|
||||
} else {
|
||||
// Print the capabilities overrideable in this context
|
||||
echo $OUTPUT->box_start('generalbox capbox');
|
||||
echo html_writer::start_tag('form', array('id'=>'overrideform', 'action'=>$PAGE->url->out(), 'method'=>'post'));
|
||||
echo html_writer::start_tag('div');
|
||||
echo html_writer::empty_tag('input', array('type'=>'hidden', 'name'=>'sesskey', 'value'=>sesskey()));
|
||||
echo html_writer::empty_tag('input', array('type'=>'hidden', 'name'=>'roleid', 'value'=>$roleid));
|
||||
echo html_writer::tag('p', get_string('highlightedcellsshowinherit', 'role'), array('class'=>'overridenotice'));
|
||||
|
||||
$overridestable->display();
|
||||
if ($overridestable->has_locked_capabiltites()) {
|
||||
echo '<p class="overridenotice">' . get_string('safeoverridenotice', 'role') . "</p>\n";
|
||||
}
|
||||
|
||||
?>
|
||||
<form id="overrideform" action="<?php echo $baseurl ?>" method="post"><div>
|
||||
<input type="hidden" name="sesskey" value="<?php p(sesskey()); ?>" />
|
||||
<input type="hidden" name="roleid" value="<?php p($roleid); ?>" />
|
||||
<?php
|
||||
|
||||
echo '<p class="overridenotice">' . get_string('highlightedcellsshowinherit', 'role') . ' </p>';
|
||||
$overridestable->display();
|
||||
|
||||
if ($overridestable->has_locked_capabiltites()) {
|
||||
echo '<p class="overridenotice">' . get_string('safeoverridenotice', 'role') . "</p>\n";
|
||||
}
|
||||
|
||||
?>
|
||||
<div class="submit buttons">
|
||||
<input type="submit" name="savechanges" value="<?php print_string('savechanges') ?>" />
|
||||
<input type="submit" name="cancel" value="<?php print_string('cancel') ?>" />
|
||||
</div>
|
||||
</div></form>
|
||||
<?php
|
||||
echo html_writer::start_tag('div', array('class'=>'submit_buttons'));
|
||||
echo html_writer::empty_tag('input', array('type'=>'submit', 'name'=>'savechanges', 'value'=>get_string('savechanges')));
|
||||
echo html_writer::empty_tag('input', array('type'=>'submit', 'name'=>'cancel', 'value'=>get_string('cancel')));
|
||||
echo html_writer::end_tag('div');
|
||||
echo html_writer::end_tag('div');
|
||||
echo html_writer::end_tag('form');
|
||||
echo $OUTPUT->box_end();
|
||||
|
||||
}
|
||||
|
||||
// Print a form to swap roles, and a link back to the all roles list.
|
||||
echo '<div class="backlink">';
|
||||
$select = new single_select(new moodle_url($baseurl), 'roleid', $nameswithcounts, $roleid, null);
|
||||
echo html_writer::start_tag('div', array('class'=>'backlink'));
|
||||
$select = new single_select($PAGE->url, 'roleid', $nameswithcounts, $roleid, null);
|
||||
$select->label = get_string('overrideanotherrole', 'role');
|
||||
echo $OUTPUT->render($select);
|
||||
echo '<p><a href="' . $returnurl . '">' . get_string('backtoallroles', 'role') . '</a></p>';
|
||||
echo '</div>';
|
||||
echo html_writer::tag('p', html_writer::tag('a', get_string('backtoallroles', 'role'), array('href'=>$returnurl)));
|
||||
echo html_writer::end_tag('div');
|
||||
|
||||
echo $OUTPUT->footer();
|
||||
|
||||
+113
-148
@@ -40,22 +40,14 @@ $prohibit = optional_param('prohibit', 0, PARAM_BOOL);
|
||||
|
||||
list($context, $course, $cm) = get_context_info_array($contextid);
|
||||
|
||||
$PAGE->set_url('/admin/roles/permissions.php', array('contextid' => $contextid));
|
||||
$PAGE->set_context($context);
|
||||
$url = new moodle_url('/admin/roles/permissions.php', array('contextid' => $contextid));
|
||||
|
||||
$userid = 0;
|
||||
$tabfile = null;
|
||||
|
||||
if ($course) {
|
||||
$isfrontpage = ($context->contextlevel == CONTEXT_COURSE and $context->instanceid == SITEID);
|
||||
|
||||
} else {
|
||||
$isfrontpage = false;
|
||||
if (!$course) {
|
||||
if ($context->contextlevel == CONTEXT_USER) {
|
||||
$courseid = optional_param('courseid', SITEID, PARAM_INT); // needed for user/tabs.php
|
||||
$course = $DB->get_record('course', array('id'=>$courseid), '*', MUST_EXIST);
|
||||
$PAGE->url->param('courseid', $courseid);
|
||||
$userid = $context->instanceid;
|
||||
$course = $DB->get_record('course', array('id'=>optional_param('courseid', SITEID, PARAM_INT)), '*', MUST_EXIST);
|
||||
$user = $DB->get_record('user', array('id'=>$context->instanceid), '*', MUST_EXIST);
|
||||
$url->param('courseid', $course->id);
|
||||
$url->param('userid', $user->id);
|
||||
} else {
|
||||
$course = $SITE;
|
||||
}
|
||||
@@ -64,14 +56,15 @@ if ($course) {
|
||||
// security first
|
||||
require_login($course, false, $cm);
|
||||
require_capability('moodle/role:review', $context);
|
||||
|
||||
$PAGE->set_url($url);
|
||||
$PAGE->set_context($context);
|
||||
$courseid = $course->id;
|
||||
$isfrontpage = ($course->id == SITEID);
|
||||
|
||||
|
||||
// These are needed early because of tabs.php
|
||||
$assignableroles = get_assignable_roles($context, ROLENAME_BOTH);
|
||||
list($overridableroles, $overridecounts, $nameswithcounts) = get_overridable_roles($context, ROLENAME_BOTH, true);
|
||||
|
||||
if ($capability) {
|
||||
$capability = $DB->get_record('capabilities', array('name'=>$capability), '*', MUST_EXIST);
|
||||
}
|
||||
@@ -82,154 +75,124 @@ $allowsafeoverrides = has_capability('moodle/role:safeoverride', $context);
|
||||
$contextname = print_context_name($context);
|
||||
$title = get_string('permissionsincontext', 'role', $contextname);
|
||||
$straction = get_string('permissions', 'role'); // Used by tabs.php
|
||||
$tabfile = $CFG->dirroot.'/'.$CFG->admin.'/roles/tabs.php';
|
||||
$currenttab = 'permissions';
|
||||
|
||||
$PAGE->set_pagelayout('admin');
|
||||
$PAGE->set_title($title);
|
||||
|
||||
// Print the header and tabs
|
||||
if ($context->contextlevel == CONTEXT_SYSTEM) {
|
||||
print_error('cannotoverridebaserole', 'error');
|
||||
|
||||
} else if ($context->contextlevel == CONTEXT_USER) {
|
||||
// NOTE: this is not linked from UI for now
|
||||
$userid = $context->instanceid;
|
||||
$user = $DB->get_record('user', array('id'=>$userid, 'deleted'=>0), '*', MUST_EXIST);
|
||||
$fullname = fullname($user, has_capability('moodle/site:viewfullnames', $context));
|
||||
|
||||
// course header
|
||||
if ($isfrontpage) {
|
||||
$PAGE->set_heading($course->fullname);
|
||||
} else {
|
||||
if (has_capability('moodle/course:viewparticipants', get_context_instance(CONTEXT_COURSE, $courseid))) {
|
||||
$PAGE->navbar->add(get_string('participants'), new moodle_url('/user/index.php', array('id'=>$courseid)));
|
||||
switch ($context->contextlevel) {
|
||||
case CONTEXT_SYSTEM:
|
||||
print_error('cannotoverridebaserole', 'error');
|
||||
break;
|
||||
case CONTEXT_USER:
|
||||
$tabfile = $CFG->dirroot.'/user/tabs.php';
|
||||
if ($isfrontpage) {
|
||||
$fullname = fullname($user, has_capability('moodle/site:viewfullnames', $context));
|
||||
$PAGE->set_heading($fullname);
|
||||
} else {
|
||||
$PAGE->set_heading($course->fullname);
|
||||
}
|
||||
$PAGE->set_heading($fullname);
|
||||
}
|
||||
$PAGE->navbar->add($fullname, new moodle_url("$CFG->wwwroot/user/view.php", array('id'=>$userid,'course'=>$courseid)));
|
||||
$PAGE->navbar->add($straction);
|
||||
|
||||
$showroles = 1;
|
||||
$currenttab = 'permissions';
|
||||
$tabfile = $CFG->dirroot.'/user/tabs.php';
|
||||
|
||||
} else if ($isfrontpage) {
|
||||
admin_externalpage_setup('frontpageroles', '', array(), $PAGE->url);
|
||||
$currenttab = 'permissions';
|
||||
$tabfile = 'tabs.php';
|
||||
|
||||
} else {
|
||||
$currenttab = 'permissions';
|
||||
$tabfile = 'tabs.php';
|
||||
$showroles = 1;
|
||||
break;
|
||||
case CONTEXT_COURSECAT:
|
||||
$PAGE->set_heading("$SITE->fullname: ".get_string("categories"));
|
||||
break;
|
||||
case CONTEXT_COURSE:
|
||||
if ($isfrontpage) {
|
||||
admin_externalpage_setup('frontpageroles', '', array(), $PAGE->url);
|
||||
} else {
|
||||
$PAGE->set_heading($course->fullname);
|
||||
}
|
||||
break;
|
||||
case CONTEXT_MODULE:
|
||||
$PAGE->set_heading(print_context_name($context, false));
|
||||
$PAGE->set_cacheable(false);
|
||||
break;
|
||||
case CONTEXT_BLOCK:
|
||||
$PAGE->set_heading($PAGE->course->fullname);
|
||||
break;
|
||||
}
|
||||
|
||||
// handle confirmations and actions
|
||||
if ($prevent and isset($overridableroles[$roleid]) and $capability) {
|
||||
if ($allowoverrides or ($allowsafeoverrides and is_safe_capability($capability))) {
|
||||
if ($confirm and data_submitted() and confirm_sesskey()) {
|
||||
role_change_permission($roleid, $context, $capability->name, CAP_PREVENT);
|
||||
redirect($PAGE->url);
|
||||
// We have a capability and overrides are allowed or safe overrides are allowed and this is safe
|
||||
if ($capability && ($allowoverrides || ($allowsafeoverrides && is_safe_capability($capability)))) {
|
||||
// If we already know the the role ID, it is overrideable, and we are setting prevent or unprohibit
|
||||
if (isset($overridableroles[$roleid]) && ($prevent || $unprohibit)) {
|
||||
// We are preventing
|
||||
if ($prevent) {
|
||||
if ($confirm && data_submitted() && confirm_sesskey()) {
|
||||
role_change_permission($roleid, $context, $capability->name, CAP_PREVENT);
|
||||
redirect($PAGE->url);
|
||||
|
||||
} else {
|
||||
$a = (object)array('cap'=>get_capability_docs_link($capability)." ($capability->name)", 'role'=>$overridableroles[$roleid], 'context'=>$contextname);
|
||||
$message = get_string('confirmroleprevent', 'role', $a);
|
||||
$continueurl = new moodle_url($PAGE->url, array('contextid'=>$context->id, 'roleid'=>$roleid, 'capability'=>$capability->name, 'prevent'=>1, 'sesskey'=>sesskey(), 'confirm'=>1));
|
||||
|
||||
echo $OUTPUT->header();
|
||||
if ($tabfile) {
|
||||
include($tabfile);
|
||||
} else {
|
||||
$a = (object)array('cap'=>get_capability_docs_link($capability)." ($capability->name)", 'role'=>$overridableroles[$roleid], 'context'=>$contextname);
|
||||
$message = get_string('confirmroleprevent', 'role', $a);
|
||||
$continueurl = new moodle_url($PAGE->url, array('contextid'=>$context->id, 'roleid'=>$roleid, 'capability'=>$capability->name, 'prevent'=>1, 'sesskey'=>sesskey(), 'confirm'=>1));
|
||||
}
|
||||
echo $OUTPUT->heading($title);
|
||||
echo $OUTPUT->confirm($message, $continueurl, $PAGE->url);
|
||||
echo $OUTPUT->footer();
|
||||
die;
|
||||
}
|
||||
// We are unprohibiting
|
||||
if ($unprohibit) {
|
||||
if ($confirm && data_submitted() && confirm_sesskey()) {
|
||||
role_change_permission($roleid, $context, $capability->name, CAP_INHERIT);
|
||||
redirect($PAGE->url);
|
||||
} else {
|
||||
$a = (object)array('cap'=>get_capability_docs_link($capability)." ($capability->name)", 'role'=>$overridableroles[$roleid], 'context'=>$contextname);
|
||||
$message = get_string('confirmroleunprohibit', 'role', $a);
|
||||
$continueurl = new moodle_url($PAGE->url, array('contextid'=>$context->id, 'roleid'=>$roleid, 'capability'=>$capability->name, 'unprohibit'=>1, 'sesskey'=>sesskey(), 'confirm'=>1));
|
||||
}
|
||||
}
|
||||
// Display and print
|
||||
echo $OUTPUT->header();
|
||||
include($tabfile);
|
||||
echo $OUTPUT->heading($title);
|
||||
echo $OUTPUT->confirm($message, $continueurl, $PAGE->url);
|
||||
echo $OUTPUT->footer();
|
||||
die;
|
||||
}
|
||||
}
|
||||
|
||||
if ($unprohibit and isset($overridableroles[$roleid]) and $capability) {
|
||||
if ($allowoverrides or ($allowsafeoverrides and is_safe_capability($capability))) {
|
||||
if ($confirm and data_submitted() and confirm_sesskey()) {
|
||||
role_change_permission($roleid, $context, $capability->name, CAP_INHERIT);
|
||||
redirect($PAGE->url);
|
||||
|
||||
} else {
|
||||
$a = (object)array('cap'=>get_capability_docs_link($capability)." ($capability->name)", 'role'=>$overridableroles[$roleid], 'context'=>$contextname);
|
||||
$message = get_string('confirmroleunprohibit', 'role', $a);
|
||||
$continueurl = new moodle_url($PAGE->url, array('contextid'=>$context->id, 'roleid'=>$roleid, 'capability'=>$capability->name, 'unprohibit'=>1, 'sesskey'=>sesskey(), 'confirm'=>1));
|
||||
|
||||
echo $OUTPUT->header();
|
||||
if ($tabfile) {
|
||||
include($tabfile);
|
||||
if ($allow || $prohibit) {
|
||||
if ($allow) {
|
||||
$mform = new role_allow_form(null, array($context, $capability, $overridableroles));
|
||||
if ($mform->is_cancelled()) {
|
||||
redirect($PAGE->url);
|
||||
} else if ($data = $mform->get_data() and !empty($data->roleid)) {
|
||||
$roleid = $data->roleid;
|
||||
if (isset($overridableroles[$roleid])) {
|
||||
role_change_permission($roleid, $context, $capability->name, CAP_ALLOW);
|
||||
}
|
||||
redirect($PAGE->url);
|
||||
} else {
|
||||
$a = (object)array('cap'=>get_capability_docs_link($capability)." ($capability->name)", 'context'=>$contextname);
|
||||
$message = get_string('roleallowinfo', 'role', $a);
|
||||
}
|
||||
echo $OUTPUT->heading($title);
|
||||
echo $OUTPUT->confirm($message, $continueurl, $PAGE->url);
|
||||
echo $OUTPUT->footer();
|
||||
die;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($allow and $capability) {
|
||||
if ($allowoverrides or ($allowsafeoverrides and is_safe_capability($capability))) {
|
||||
$mform = new role_allow_form(null, array($context, $capability, $overridableroles));
|
||||
if ($mform->is_cancelled()) {
|
||||
redirect($PAGE->url);
|
||||
|
||||
} else if ($data = $mform->get_data() and !empty($data->roleid)) {
|
||||
$roleid = $data->roleid;
|
||||
if (isset($overridableroles[$roleid])) {
|
||||
role_change_permission($roleid, $context, $capability->name, CAP_ALLOW);
|
||||
if ($prohibit) {
|
||||
$mform = new role_prohibit_form(null, array($context, $capability, $overridableroles));
|
||||
if ($mform->is_cancelled()) {
|
||||
redirect($PAGE->url);
|
||||
} else if ($data = $mform->get_data() and !empty($data->roleid)) {
|
||||
$roleid = $data->roleid;
|
||||
if (isset($overridableroles[$roleid])) {
|
||||
role_change_permission($roleid, $context, $capability->name, CAP_PROHIBIT);
|
||||
}
|
||||
redirect($PAGE->url);
|
||||
} else {
|
||||
$a = (object)array('cap'=>get_capability_docs_link($capability)." ($capability->name)", 'context'=>$contextname);
|
||||
$message = get_string('roleprohibitinfo', 'role', $a);
|
||||
}
|
||||
redirect($PAGE->url);
|
||||
|
||||
} else {
|
||||
$a = (object)array('cap'=>get_capability_docs_link($capability)." ($capability->name)", 'context'=>$contextname);
|
||||
$message = get_string('roleallowinfo', 'role', $a);
|
||||
|
||||
echo $OUTPUT->header();
|
||||
if ($tabfile) {
|
||||
include($tabfile);
|
||||
}
|
||||
echo $OUTPUT->heading($title);
|
||||
echo $OUTPUT->box($message);
|
||||
$mform->display();
|
||||
echo $OUTPUT->footer();
|
||||
die;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($prohibit and $capability) {
|
||||
if ($allowoverrides or ($allowsafeoverrides and is_safe_capability($capability))) {
|
||||
$mform = new role_prohibit_form(null, array($context, $capability, $overridableroles));
|
||||
if ($mform->is_cancelled()) {
|
||||
redirect($PAGE->url);
|
||||
|
||||
} else if ($data = $mform->get_data() and !empty($data->roleid)) {
|
||||
$roleid = $data->roleid;
|
||||
if (isset($overridableroles[$roleid])) {
|
||||
role_change_permission($roleid, $context, $capability->name, CAP_PROHIBIT);
|
||||
}
|
||||
redirect($PAGE->url);
|
||||
|
||||
} else {
|
||||
$a = (object)array('cap'=>get_capability_docs_link($capability)." ($capability->name)", 'context'=>$contextname);
|
||||
$message = get_string('roleprohibitinfo', 'role', $a);
|
||||
|
||||
echo $OUTPUT->header();
|
||||
if ($tabfile) {
|
||||
include($tabfile);
|
||||
}
|
||||
echo $OUTPUT->box($message);
|
||||
$mform->display();
|
||||
echo $OUTPUT->footer();
|
||||
die;
|
||||
}
|
||||
echo $OUTPUT->header();
|
||||
include($tabfile);
|
||||
echo $OUTPUT->heading($title);
|
||||
echo $OUTPUT->box($message);
|
||||
$mform->display();
|
||||
echo $OUTPUT->footer();
|
||||
die;
|
||||
}
|
||||
}
|
||||
|
||||
echo $OUTPUT->header();
|
||||
if ($tabfile) {
|
||||
include($tabfile);
|
||||
}
|
||||
include($tabfile);
|
||||
echo $OUTPUT->heading($title);
|
||||
|
||||
$table = new permissions_table($context, $contextname, $allowoverrides, $allowsafeoverrides, $overridableroles);
|
||||
@@ -239,14 +202,16 @@ if ($overridableroles) {
|
||||
$overrideurl = new moodle_url('/admin/roles/override.php', array('contextid' => $context->id));
|
||||
$select = new single_select($overrideurl, 'roleid', $nameswithcounts);
|
||||
$select->label = get_string('advancedoverride', 'role');
|
||||
echo '<div class="advancedoverride">'.$OUTPUT->render($select).'</div>';
|
||||
echo html_writer::tag('div', $OUTPUT->render($select), array('class'=>'advancedoverride'));
|
||||
}
|
||||
$table->display();
|
||||
echo $OUTPUT->box_end();
|
||||
|
||||
|
||||
if ($context->contextlevel > CONTEXT_USER) {
|
||||
echo '<div class="backlink"><a href="' . get_context_url($context) . '">' . get_string('backto', '', $contextname) . '</a></div>';
|
||||
echo html_writer::start_tag('div', array('class'=>'backlink'));
|
||||
echo html_writer::tag('a', get_string('backto', '', $contextname), array('href'=>get_context_url($context)));
|
||||
echo html_writer::end_tag('div');
|
||||
}
|
||||
|
||||
echo $OUTPUT->footer($course);
|
||||
|
||||
+11
-100
@@ -38,90 +38,6 @@ if (!isset($availablefilters)) {
|
||||
}
|
||||
}
|
||||
|
||||
if ($currenttab != 'update') {
|
||||
switch ($context->contextlevel) {
|
||||
|
||||
case CONTEXT_SYSTEM:
|
||||
$stradministration = get_string('administration');
|
||||
if (empty($title)) {
|
||||
$title = $SITE->fullname;
|
||||
}
|
||||
$PAGE->navbar->add($stradministration, new moodle_url('/admin/'), navigation_node::TYPE_SETTING);
|
||||
$PAGE->navbar->add($straction);
|
||||
$PAGE->set_title($title);
|
||||
$PAGE->set_heading($SITE->fullname);
|
||||
break;
|
||||
|
||||
case CONTEXT_USER:
|
||||
break;
|
||||
|
||||
case CONTEXT_COURSECAT:
|
||||
$category = $DB->get_record('course_categories', array('id'=>$context->instanceid));
|
||||
$strcategories = get_string("categories");
|
||||
$strcategory = get_string("category");
|
||||
$strcourses = get_string("courses");
|
||||
|
||||
if (empty($title)) {
|
||||
$title = "$SITE->shortname: $category->name";
|
||||
}
|
||||
|
||||
$PAGE->navbar->add($strcategories, new moodle_url('/course/index.php'), navigation_node::TYPE_SETTING);
|
||||
$PAGE->navbar->add($category->name, new moodle_url('/course/category.php', array('id'=>$category->id)), navigation_node::TYPE_SETTING);
|
||||
$PAGE->navbar->add(get_string("roles"));
|
||||
$PAGE->set_title($title);
|
||||
$PAGE->set_heading("$SITE->fullname: $strcourses");
|
||||
break;
|
||||
|
||||
case CONTEXT_COURSE:
|
||||
if ($context->instanceid != SITEID) {
|
||||
$course = $DB->get_record('course', array('id'=>$context->instanceid));
|
||||
|
||||
if (empty($title)) {
|
||||
$title = get_string("editcoursesettings");
|
||||
}
|
||||
$roleslink = new moodle_url("$CFG->wwwroot/$CFG->admin/roles/assign.php", array('contextid'=>$context->id));
|
||||
$PAGE->navbar->add(get_string('roles'), $roleslink, navigation_node::TYPE_SETTING);
|
||||
$PAGE->set_title($title);
|
||||
$PAGE->set_heading($course->fullname);
|
||||
}
|
||||
break;
|
||||
|
||||
case CONTEXT_MODULE:
|
||||
if (!$cm = get_coursemodule_from_id('', $context->instanceid)) {
|
||||
print_error('invalidcoursemodule', 'error');
|
||||
}
|
||||
if (!$course = $DB->get_record('course', array('id' => $cm->course))) {
|
||||
print_error('invalidcourse');
|
||||
}
|
||||
|
||||
$PAGE->navigation->add(get_string('roles'));
|
||||
|
||||
if (empty($title)) {
|
||||
$title = get_string("editinga", "moodle", $fullmodulename);
|
||||
}
|
||||
$PAGE->set_title($title);
|
||||
$PAGE->set_cacheable(false);
|
||||
break;
|
||||
|
||||
case CONTEXT_BLOCK:
|
||||
if ($blockinstance = $DB->get_record('block_instances', array('id' => $context->instanceid))) {
|
||||
$blockname = print_context_name($context);
|
||||
|
||||
$PAGE->navbar->add($blockname);
|
||||
$PAGE->navbar->add($straction);
|
||||
$PAGE->set_title("$straction: $blockname");
|
||||
$PAGE->set_heading($PAGE->course->fullname);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
print_error('unknowncontext');
|
||||
return false;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$toprow = array();
|
||||
$inactive = array();
|
||||
$activetwo = array();
|
||||
@@ -132,27 +48,23 @@ $permissionsrow = array();
|
||||
if ($context->contextlevel != CONTEXT_SYSTEM) { // Print tabs for anything except SYSTEM context
|
||||
|
||||
if ($context->contextlevel == CONTEXT_MODULE) { // Only show update button if module
|
||||
$toprow[] = new tabobject('update', $CFG->wwwroot.'/course/mod.php?update='.
|
||||
$context->instanceid.'&return=true&sesskey='.sesskey(), get_string('settings'));
|
||||
$url = new moodle_url('/course/mod.php', array('update'=>$context->instanceid, 'return'=>'true', 'sesskey'=>sesskey()));
|
||||
$toprow[] = new tabobject('update', $url, get_string('settings'));
|
||||
}
|
||||
|
||||
if (!empty($assignableroles) || $currenttab=='assign') {
|
||||
$toprow[] = new tabobject('assign',
|
||||
new moodle_url('/admin/roles/assign.php', array('contextid'=>$context->id)),
|
||||
get_string('localroles', 'role'), '', true);
|
||||
$url = new moodle_url('/admin/roles/assign.php', array('contextid'=>$context->id));
|
||||
$toprow[] = new tabobject('assign', $url, get_string('localroles', 'role'), '', true);
|
||||
}
|
||||
|
||||
if (has_capability('moodle/role:review', $context) or !empty($overridableroles)) {
|
||||
$permissionsrow['permissions'] = new tabobject('permissions',
|
||||
new moodle_url('/admin/roles/permissions.php', array('contextid'=>$context->id)),
|
||||
get_string('permissions', 'role'), '', true);
|
||||
$url = new moodle_url('/admin/roles/permissions.php', array('contextid'=>$context->id));
|
||||
$permissionsrow['permissions'] = new tabobject('permissions', $url, get_string('permissions', 'role'), '', true);
|
||||
}
|
||||
|
||||
if (has_any_capability(array('moodle/role:assign', 'moodle/role:safeoverride',
|
||||
'moodle/role:override', 'moodle/role:assign'), $context)) {
|
||||
$permissionsrow['check'] = new tabobject('check',
|
||||
new moodle_url('/admin/roles/check.php', array('contextid'=>$context->id)),
|
||||
get_string('checkpermissions', 'role'));
|
||||
if (has_any_capability(array('moodle/role:assign', 'moodle/role:safeoverride', 'moodle/role:override', 'moodle/role:assign'), $context)) {
|
||||
$url = new moodle_url('/admin/roles/check.php', array('contextid'=>$context->id));
|
||||
$permissionsrow['check'] = new tabobject('check', $url, get_string('checkpermissions', 'role'));
|
||||
}
|
||||
|
||||
if ($permissionsrow) {
|
||||
@@ -166,9 +78,8 @@ if ($context->contextlevel != CONTEXT_SYSTEM) { // Print tabs for anything ex
|
||||
}
|
||||
|
||||
if (!empty($availablefilters)) {
|
||||
$toprow[] = new tabobject('filters',
|
||||
new moodle_url('/filter/manage.php', array('contextid'=>$context->id)),
|
||||
get_string('filters', 'admin'));
|
||||
$url = new moodle_url('/filter/manage.php', array('contextid'=>$context->id));
|
||||
$toprow[] = new tabobject('filters', $url, get_string('filters', 'admin'));
|
||||
}
|
||||
}
|
||||
unset($permissionsrow);
|
||||
|
||||
+529
-568
File diff suppressed because it is too large
Load Diff
+40
-30
@@ -36,9 +36,7 @@ require_once($CFG->libdir . '/adminlib.php');
|
||||
$contextid = required_param('contextid',PARAM_INT);
|
||||
$forfilter = optional_param('filter', '', PARAM_SAFEPATH);
|
||||
|
||||
if (!$context = get_context_instance_by_id($contextid)) {
|
||||
print_error('wrongcontextid', 'error');
|
||||
}
|
||||
$context = get_context_instance_by_id($contextid, MUST_EXIST);
|
||||
|
||||
$args = array('contextid'=>$contextid);
|
||||
$baseurl = new moodle_url('/filter/manage.php', $args);
|
||||
@@ -52,26 +50,34 @@ if (!in_array($context->contextlevel, array(CONTEXT_COURSECAT, CONTEXT_COURSE, C
|
||||
print_error('cannotcustomisefiltersblockuser', 'error');
|
||||
}
|
||||
|
||||
$isfrontpage = $context->contextlevel == CONTEXT_COURSE && $context->instanceid == SITEID;
|
||||
$isfrontpage = ($context->contextlevel == CONTEXT_COURSE && $context->instanceid == SITEID);
|
||||
$contextname = print_context_name($context);
|
||||
|
||||
$cm = null;
|
||||
if ($context->contextlevel == CONTEXT_COURSECAT) {
|
||||
$course = clone($SITE);
|
||||
$heading = "$SITE->fullname: ".get_string("categories");
|
||||
$PAGE->set_heading();
|
||||
} else if ($context->contextlevel == CONTEXT_COURSE) {
|
||||
$course = $DB->get_record('course', array('id' => $context->instanceid));
|
||||
$course = $DB->get_record('course', array('id' => $context->instanceid), '*', MUST_EXIST);
|
||||
$heading = $course->fullname;
|
||||
} else {
|
||||
// Must be module context.
|
||||
$course = $DB->get_record_sql('SELECT c.* FROM {course} c JOIN {context} ctx ON c.id = ctx.instanceid WHERE ctx.id = ?',
|
||||
array(get_parent_contextid($context)));
|
||||
}
|
||||
if (!$course) {
|
||||
print_error('invalidcourse', 'error');
|
||||
$cm = get_coursemodule_from_id(null, $context->instanceid, false, 0, MUST_EXIST);
|
||||
$course = $DB->get_record('course', array('id'=>$cm->course), '*', MUST_EXIST);
|
||||
}
|
||||
|
||||
/// Check login and permissions.
|
||||
require_login($course);
|
||||
require_login($course, false, $cm);
|
||||
require_capability('moodle/filter:manage', $context);
|
||||
|
||||
if ($cm) {
|
||||
$heading = $PAGE->activityrecord->name;
|
||||
}
|
||||
|
||||
$PAGE->set_context($context);
|
||||
$PAGE->set_heading($heading);
|
||||
|
||||
/// Get the list of available filters.
|
||||
$availablefilters = filter_get_available_in_context($context);
|
||||
if (!$isfrontpage && empty($availablefilters)) {
|
||||
@@ -106,10 +112,6 @@ if ($forfilter == '' && optional_param('savechanges', false, PARAM_BOOL) && conf
|
||||
redirect($CFG->wwwroot . '/filter/manage.php?contextid=' . $context->id, get_string('changessaved'), 1);
|
||||
}
|
||||
|
||||
/// These are needed early because of tabs.php
|
||||
$assignableroles = get_assignable_roles($context, ROLENAME_BOTH);
|
||||
$overridableroles = get_overridable_roles($context, ROLENAME_BOTH);
|
||||
|
||||
/// Work out an appropriate page title.
|
||||
if ($forfilter) {
|
||||
$a = new stdClass;
|
||||
@@ -122,16 +124,24 @@ if ($forfilter) {
|
||||
$straction = get_string('filters', 'admin'); // Used by tabs.php
|
||||
|
||||
/// Print the header and tabs
|
||||
if ($context->contextlevel == CONTEXT_COURSE and $context->instanceid == SITEID) {
|
||||
if ($isfrontpage) {
|
||||
admin_externalpage_setup('frontpagefilters');
|
||||
echo $OUTPUT->header();
|
||||
} else {
|
||||
$PAGE->set_cacheable(false);
|
||||
$PAGE->set_title($title);
|
||||
$PAGE->set_pagelayout('admin');
|
||||
echo $OUTPUT->header();
|
||||
|
||||
// These are because of /roles/tabs.php
|
||||
$currenttab = 'filters';
|
||||
include_once($CFG->dirroot . '/' . $CFG->admin . '/roles/tabs.php');
|
||||
$assignableroles = get_assignable_roles($context, ROLENAME_BOTH);
|
||||
$overridableroles = get_overridable_roles($context, ROLENAME_BOTH);
|
||||
include($CFG->dirroot . '/' . $CFG->admin . '/roles/tabs.php');
|
||||
}
|
||||
|
||||
/// Print heading.
|
||||
echo $OUTPUT->heading_with_help($title, 'localfiltersettings');
|
||||
echo $OUTPUT->heading_with_help($title, 'localfiltersettings', 'filters');
|
||||
|
||||
if (empty($availablefilters)) {
|
||||
echo '<p class="centerpara">' . get_string('nofiltersenabled', 'filters') . "</p>\n";
|
||||
@@ -158,9 +168,9 @@ if (empty($availablefilters)) {
|
||||
TEXTFILTER_ON => $stron,
|
||||
);
|
||||
|
||||
echo '<form action="'.$baseurl->out().'" method="post">';
|
||||
echo "\n<div>\n";
|
||||
echo '<input type="hidden" name="sesskey" value="' . sesskey() . '" />';
|
||||
echo html_writer::start_tag('form', array('action'=>$baseurl->out(), 'method'=>'post'));
|
||||
echo html_writer::start_tag('div');
|
||||
echo html_writer::empty_tag('input', array('type'=>'hidden', 'name'=>'sesskey', 'value'=>sesskey()));
|
||||
|
||||
$table = new html_table();
|
||||
$table->head = array(get_string('filter'), get_string('isactive', 'filters'));
|
||||
@@ -200,18 +210,18 @@ if (empty($availablefilters)) {
|
||||
}
|
||||
|
||||
echo html_writer::table($table);
|
||||
echo '<div class="buttons">' . "\n";
|
||||
echo '<input type="submit" name="savechanges" value="' . get_string('savechanges') . '" />';
|
||||
echo "\n</div>\n";
|
||||
echo "</div>\n";
|
||||
echo "</form>\n";
|
||||
|
||||
echo html_writer::start_tag('div', array('class'=>'buttons'));
|
||||
echo html_writer::empty_tag('input', array('type'=>'submit', 'name'=>'savechanges', 'value'=>get_string('savechanges')));
|
||||
echo html_writer::end_tag('div');
|
||||
echo html_writer::end_tag('div');
|
||||
echo html_writer::end_tag('form');
|
||||
}
|
||||
|
||||
/// Appropriate back link.
|
||||
if (!$isfrontpage && ($url = get_context_url($context))) {
|
||||
echo '<div class="backlink"><a href="' . $url . '">' .
|
||||
get_string('backto', '', $contextname) . '</a></div>';
|
||||
if (!$isfrontpage) {
|
||||
echo html_writer::start_tag('div', array('class'=>'backlink'));
|
||||
echo html_writer::tag('a', get_string('backto', '', $contextname), array('href'=>get_context_url($context)));
|
||||
echo html_writer::end_tag('div');
|
||||
}
|
||||
|
||||
echo $OUTPUT->footer();
|
||||
|
||||
+13
-8
@@ -2733,30 +2733,35 @@ class settings_navigation extends navigation_node {
|
||||
protected function load_category_settings() {
|
||||
global $CFG;
|
||||
|
||||
$blocknode = $this->add(print_context_name($this->context));
|
||||
$blocknode->force_open();
|
||||
$categorynode = $this->add(print_context_name($this->context));
|
||||
$categorynode->force_open();
|
||||
|
||||
if ($this->page->user_is_editing() && has_capability('moodle/category:manage', $this->context)) {
|
||||
$blocknode->add(get_string('editcategorythis'), new moodle_url('/course/editcategory.php', array('id' => $this->context->instanceid)));
|
||||
$blocknode->add(get_string('addsubcategory'), new moodle_url('/course/editcategory.php', array('parent' => $this->context->instanceid)));
|
||||
$categorynode->add(get_string('editcategorythis'), new moodle_url('/course/editcategory.php', array('id' => $this->context->instanceid)));
|
||||
$categorynode->add(get_string('addsubcategory'), new moodle_url('/course/editcategory.php', array('parent' => $this->context->instanceid)));
|
||||
}
|
||||
|
||||
// Assign local roles
|
||||
$assignurl = new moodle_url('/'.$CFG->admin.'/roles/assign.php', array('contextid'=>$this->context->id));
|
||||
$blocknode->add(get_string('assignroles', 'role'), $assignurl, self::TYPE_SETTING);
|
||||
$categorynode->add(get_string('assignroles', 'role'), $assignurl, self::TYPE_SETTING);
|
||||
|
||||
// Override roles
|
||||
if (has_capability('moodle/role:review', $this->context) or count(get_overridable_roles($this->context))>0) {
|
||||
$url = new moodle_url('/'.$CFG->admin.'/roles/permissions.php', array('contextid'=>$this->context->id));
|
||||
$blocknode->add(get_string('permissions', 'role'), $url, self::TYPE_SETTING);
|
||||
$categorynode->add(get_string('permissions', 'role'), $url, self::TYPE_SETTING);
|
||||
}
|
||||
// Check role permissions
|
||||
if (has_any_capability(array('moodle/role:assign', 'moodle/role:safeoverride','moodle/role:override', 'moodle/role:assign'), $this->context)) {
|
||||
$url = new moodle_url('/'.$CFG->admin.'/roles/check.php', array('contextid'=>$this->context->id));
|
||||
$blocknode->add(get_string('checkpermissions', 'role'), $url, self::TYPE_SETTING);
|
||||
$categorynode->add(get_string('checkpermissions', 'role'), $url, self::TYPE_SETTING);
|
||||
}
|
||||
// Manage filters
|
||||
if (has_capability('moodle/filter:manage', $this->context) && count(filter_get_available_in_context($this->context))>0) {
|
||||
$url = new moodle_url('/filter/manage.php', array('contextid'=>$this->context->id));
|
||||
$categorynode->add(get_string('filters', 'admin'), $url, self::TYPE_SETTING);
|
||||
}
|
||||
|
||||
return $blocknode;
|
||||
return $categorynode;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user