@@ -235,18 +242,10 @@ if ($roleid) {
// Print a form to swap roles, and a link back to the all roles list.
echo '
';
- $newroleurl = new moodle_url($PAGE->url);
- if ($returnto !== null) {
- $newroleurl->param('return', $returnto);
- }
- $select = new single_select($newroleurl, 'roleid', $nameswithcounts, $roleid, null);
+ $select = new single_select($PAGE->url, 'roleid', $nameswithcounts, $roleid, null);
$select->label = get_string('assignanotherrole', 'core_role');
echo $OUTPUT->render($select);
- $backurl = new moodle_url('/admin/roles/assign.php', array('contextid' => $contextid));
- if ($returnto !== null) {
- $backurl->param('return', $returnto);
- }
- echo '
' . get_string('backtoallroles', 'core_role') . '
';
+ echo '
' . get_string('backtoallroles', 'core_role') . '
';
echo '
';
} else if (empty($assignableroles)) {
@@ -284,9 +283,6 @@ if ($roleid) {
}
} else if ($assigncounts[$roleid] > MAX_USERS_TO_LIST_PER_ROLE) {
$assignurl = new moodle_url($PAGE->url, array('roleid'=>$roleid));
- if ($returnto !== null) {
- $assignurl->param('return', $returnto);
- }
$roleholdernames[$roleid] = '
'.$strmorethanmax.'';
} else {
$roleholdernames[$roleid] = '';
@@ -307,9 +303,6 @@ if ($roleid) {
foreach ($assignableroles as $roleid => $rolename) {
$description = format_string($DB->get_field('role', 'description', array('id'=>$roleid)));
$assignurl = new moodle_url($PAGE->url, array('roleid'=>$roleid));
- if ($returnto !== null) {
- $assignurl->param('return', $returnto);
- }
$row = array('
'.$rolename.'',
$description, $assigncounts[$roleid]);
if ($showroleholders) {
@@ -322,8 +315,8 @@ if ($roleid) {
if ($context->contextlevel > CONTEXT_USER) {
- if ($context->contextlevel === CONTEXT_COURSECAT && $returnto === 'management') {
- $url = new moodle_url('/course/management.php', array('categoryid' => $context->instanceid));
+ if ($returnurl) {
+ $url = new moodle_url($returnurl);
} else {
$url = $context->get_url();
}
diff --git a/admin/roles/check.php b/admin/roles/check.php
index 0f403080219..10e173ef13e 100644
--- a/admin/roles/check.php
+++ b/admin/roles/check.php
@@ -25,6 +25,7 @@
require_once(__DIR__ . '/../../config.php');
$contextid = required_param('contextid', PARAM_INT);
+$returnurl = optional_param('returnurl', null, PARAM_LOCALURL);
list($context, $course, $cm) = get_context_info_array($contextid);
@@ -49,7 +50,13 @@ require_login($course, false, $cm);
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', 'core_role'));
}
-$PAGE->set_url($url);
+
+navigation_node::override_active_url($url);
+$pageurl = new moodle_url($url);
+if ($returnurl) {
+ $pageurl->param('returnurl', $returnurl);
+}
+$PAGE->set_url($pageurl);
if ($context->contextlevel == CONTEXT_USER and $USER->id != $context->instanceid) {
$PAGE->navbar->includesettingsbase = true;
@@ -75,6 +82,10 @@ $userselector->set_rows(20);
$title = get_string('checkpermissionsin', 'core_role', $contextname);
$PAGE->set_pagelayout('admin');
+if ($context->contextlevel == CONTEXT_BLOCK) {
+ // Do not show blocks when changing block's settings, it is confusing.
+ $PAGE->blocks->show_only_fake_blocks(true);
+}
$PAGE->set_title($title);
switch ($context->contextlevel) {
@@ -156,16 +167,7 @@ if (!is_null($reportuser)) {
// Show UI for choosing a user to report on.
echo $OUTPUT->box_start('generalbox boxwidthnormal boxaligncenter', 'chooseuser');
-echo '