# This patch file was generated by NetBeans IDE
# This patch can be applied using context Tools: Apply Diff Patch action on respective folder.
# It uses platform neutral UTF-8 encoding.
# Above lines and this line are ignored by the patching process.
Index: moodle/admin/roles/assign.php
--- moodle/admin/roles/assign.php Base (1.128)
+++ moodle/admin/roles/assign.php Locally Modified (Based On 1.128)
@@ -31,41 +31,35 @@
 
 $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 @@
     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 @@
     }
 }
 
-// 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));
-
-    /// course header
+$PAGE->set_pagelayout('admin');
     $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)));
-        }
+$tabfile = $CFG->dirroot.'/'.$CFG->admin.'/roles/tabs.php';
+
+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->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) {
+        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));
-    echo $OUTPUT->header();
-    $currenttab = 'assign';
-    include('tabs.php');
-
 } else {
-    $PAGE->set_title($title);
+            $PAGE->set_heading($course->fullname);
+        }
+        break;
+    case CONTEXT_MODULE:
     $PAGE->set_heading(print_context_name($context, false));
-    echo $OUTPUT->header();
-    $currenttab = 'assign';
-    include('tabs.php');
+        $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 @@
     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');
     }
 }
 
Index: moodle/admin/roles/check.php
--- moodle/admin/roles/check.php Base (1.17)
+++ moodle/admin/roles/check.php Locally Modified (Based On 1.17)
@@ -30,19 +30,15 @@
 $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,19 +46,16 @@
 
 // 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);
+$isfrontpage = ($course->id == SITEID);
 
-// These are needed early because of tabs.php
-$assignableroles = get_assignable_roles($context, ROLENAME_BOTH);
-$overridableroles = get_overridable_roles($context, ROLENAME_BOTH);
-
 // Get the user_selector we will need.
 // Teachers within a course just get to see the same list of people they can
 // assign roles to. Admins (people with moodle/role:manage) can run this report for any user.
@@ -77,48 +70,53 @@
 
 // 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);
-    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)));
-        }
+$tabfile = $CFG->dirroot.'/'.$CFG->admin.'/roles/tabs.php';
+
+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->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) {
+        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');
-    echo $OUTPUT->header();
-    $currenttab = 'check';
-    include('tabs.php');
-
 } else {
-    echo $OUTPUT->header();
-    $currenttab = 'check';
-    include('tabs.php');
+            $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 @@
 
 // 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 @@
 
 // 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();
Index: moodle/admin/roles/override.php
--- moodle/admin/roles/override.php Base (1.81)
+++ moodle/admin/roles/override.php Locally Modified (Based On 1.81)
@@ -32,22 +32,14 @@
 
 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 @@
 
 // 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 @@
 $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
+$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) {
-        $PAGE->set_heading($course->fullname);
+            $fullname = fullname($user, has_capability('moodle/site:viewfullnames', $context));
+            $PAGE->set_heading($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_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) {
+        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);
-    $currenttab = 'permissions';
-    $tabfile = 'tabs.php';
-
 } else {
-    $currenttab = 'permissions';
-    $tabfile = 'tabs.php';
+            $PAGE->set_heading($course->fullname);
 }
-
-
-// Handle the cancel button.
-if (optional_param('cancel', false, PARAM_BOOL)) {
-    redirect($returnurl);
+        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 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 @@
 
 // Finally start page output
 echo $OUTPUT->header();
-if ($tabfile) {
     include($tabfile);
-}
-echo $OUTPUT->heading_with_help($title, 'overrides');
+echo $OUTPUT->heading_with_help($title, 'overrides', 'role');
 
 // Show UI for overriding roles.
 if (!empty($capabilities)) {
@@ -152,37 +145,32 @@
 } 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'));
 
-    ?>
-<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();
Index: moodle/admin/roles/permissions.php
--- moodle/admin/roles/permissions.php Base (1.2)
+++ moodle/admin/roles/permissions.php Locally Modified (Based On 1.2)
@@ -40,22 +40,14 @@
 
 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 @@
 // 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,48 +75,52 @@
 $contextname = print_context_name($context);
 $title = get_string('permissionsincontext', 'role', $contextname);
 $straction = get_string('permissions', 'role'); // Used by tabs.php
-$PAGE->set_title($title);
+$tabfile = $CFG->dirroot.'/'.$CFG->admin.'/roles/tabs.php';
+$currenttab = 'permissions';
 
-// Print the header and tabs
-if ($context->contextlevel == CONTEXT_SYSTEM) {
+$PAGE->set_pagelayout('admin');
+$PAGE->set_title($title);
+switch ($context->contextlevel) {
+    case 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
+        break;
+    case CONTEXT_USER:
+        $tabfile = $CFG->dirroot.'/user/tabs.php';
     if ($isfrontpage) {
-        $PAGE->set_heading($course->fullname);
+            $fullname = fullname($user, has_capability('moodle/site:viewfullnames', $context));
+            $PAGE->set_heading($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_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) {
+        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);
-    $currenttab = 'permissions';
-    $tabfile = 'tabs.php';
-
 } else {
-    $currenttab = 'permissions';
-    $tabfile = 'tabs.php';
+            $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()) {
+// 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);
 
@@ -131,105 +128,71 @@
             $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);
             }
-            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()) {
+        // 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();
-            if ($tabfile) {
                 include($tabfile);
-            }
             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))) {
+    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->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))) {
+        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);
-
+            }
+        }
             echo $OUTPUT->header();
-            if ($tabfile) {
                 include($tabfile);
-            }
+        echo $OUTPUT->heading($title);
             echo $OUTPUT->box($message);
             $mform->display();
             echo $OUTPUT->footer();
             die;
         }
     }
-}
 
 echo $OUTPUT->header();
-if ($tabfile) {
     include($tabfile);
-}
 echo $OUTPUT->heading($title);
 
 $table = new permissions_table($context, $contextname, $allowoverrides, $allowsafeoverrides, $overridableroles);
@@ -239,14 +202,16 @@
     $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);
Index: moodle/admin/roles/tabs.php
--- moodle/admin/roles/tabs.php Base (1.59)
+++ moodle/admin/roles/tabs.php Locally Modified (Based On 1.59)
@@ -38,90 +38,6 @@
     }
 }
 
-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 @@
 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.'&amp;return=true&amp;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 (!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);
Index: moodle/course/modedit.php
--- moodle/course/modedit.php Base (1.92)
+++ moodle/course/modedit.php Locally Modified (Based On 1.92)
@@ -36,37 +36,24 @@
     $type   = optional_param('type', '', PARAM_ALPHANUM); //TODO: hopefully will be removed in 2.0
 
     $url = new moodle_url('/course/modedit.php');
-    if (!empty($add)) {
-        $url->param('add', $add);
-    } else if (!empty($update)) {
-        $url->param('update', $update);
-    } else {
-        debugging('Neither add nor update arguments were provided, PAGE->set_url needs to be checked', DEBUG_DEVELOPER);
-    }
     if (!empty($return)) {
         $url->param('return', $return);
     }
-    if (!empty($type)) {
-        $url->param('type', $type);
-    }
-    $PAGE->set_url($url);
 
     if (!empty($add)) {
+    $url->param('add', $add);
+    $PAGE->set_url($url);
+    
         $section = required_param('section', PARAM_INT);
         $course  = required_param('course', PARAM_INT);
 
-        if (!$course = $DB->get_record('course', array('id'=>$course))) {
-            print_error('invalidcourseid');
-        }
+    $course = $DB->get_record('course', array('id'=>$course), '*', MUST_EXIST);
+    $module = $DB->get_record('modules', array('name'=>$add), '*', MUST_EXIST);
 
         require_login($course);
         $context = get_context_instance(CONTEXT_COURSE, $course->id);
         require_capability('moodle/course:manageactivities', $context);
 
-        if (!$module = $DB->get_record('modules', array('name'=>$add))) {
-            print_error('moduledoesnotexist');
-        }
-
         $cw = get_course_section($section, $course->id);
 
         if (!course_allowed_module($course, $module->id)) {
@@ -112,41 +99,22 @@
             $pageheading = get_string('addinganew', 'moodle', $fullmodulename);
         }
 
-        $pagepath = 'mod-' . $module->name . '-';
-        if (!empty($type)) { //TODO: hopefully will be removed in 2.0
-            $pagepath .= $type;
-        } else {
-            $pagepath .= 'mod';
-        }
-        $PAGE->set_pagetype($pagepath);
-
-        $navlinksinstancename = '';
-
     } else if (!empty($update)) {
-        if (!$cm = get_coursemodule_from_id('', $update, 0)) {
-            print_error('invalidcoursemodule');
-        }
 
-        if (!$course = $DB->get_record('course', array('id'=>$cm->course))) {
-            print_error('invalidcourseid');
-        }
+    $url->param('update', $update);
+    $PAGE->set_url($url);
 
+    $cm = get_coursemodule_from_id('', $update, 0, false, MUST_EXIST);
+    $course = $DB->get_record('course', array('id'=>$cm->course), '*', MUST_EXIST);
+
         require_login($course, false, $cm); // needed to setup proper $COURSE
         $context = get_context_instance(CONTEXT_MODULE, $cm->id);
         require_capability('moodle/course:manageactivities', $context);
 
-        if (!$module = $DB->get_record('modules', array('id'=>$cm->module))) {
-            print_error('moduledoesnotexist');
-        }
+    $module = $DB->get_record('modules', array('id'=>$cm->module), '*', MUST_EXIST);
+    $data = $data = $DB->get_record($module->name, array('id'=>$cm->instance), '*', MUST_EXIST);
+    $cw = $DB->get_record('course_sections', array('id'=>$cm->section), '*', MUST_EXIST);
 
-        if (!$data = $DB->get_record($module->name, array('id'=>$cm->instance))) {
-            print_error('moduleinstancedoesnotexist');
-        }
-
-        if (!$cw = $DB->get_record('course_sections', array('id'=>$cm->section))) {
-            print_error('sectionnotexist');
-        }
-
         $data->coursemodule       = $cm->id;
         $data->section            = $cw->section;  // The section number itself - relative!!! (section column in course_sections)
         $data->visible            = $cm->visible; //??  $cw->visible ? $cm->visible : 0; // section hiding overrides
@@ -216,24 +184,22 @@
             $pageheading = get_string('updatinga', 'moodle', $fullmodulename);
         }
 
-        $navlinksinstancename = array('name' => format_string($data->name, true), 'link' => "$CFG->wwwroot/mod/$module->name/view.php?id=$cm->id", 'type' => 'activityinstance');
-
-        $pagetype = 'mod-' . $module->name . '-';
-        if (!empty($type)) {
-            $pagetype .= $type;
         } else {
-            $pagetype .= 'mod';
-        }
-        $PAGE->set_pagetype($pagetype);
-    } else {
         require_login();
         print_error('invalidaction');
     }
 
+$pagepath = 'mod-' . $module->name . '-';
+if (!empty($type)) { //TODO: hopefully will be removed in 2.0
+    $pagepath .= $type;
+} else {
+    $pagepath .= 'mod';
+}
+$PAGE->set_pagetype($pagepath);
+
     $modmoodleform = "$CFG->dirroot/mod/$module->name/mod_form.php";
     if (file_exists($modmoodleform)) {
         require_once($modmoodleform);
-
     } else {
         print_error('noformdesc');
     }
@@ -255,28 +221,21 @@
         } else {
             redirect("$CFG->wwwroot/course/view.php?id=$course->id#section-".$cw->section);
         }
-
     } else if ($fromform = $mform->get_data()) {
-        if (empty($fromform->coursemodule)) { //add
+    if (empty($fromform->coursemodule)) {
+        // Add
             $cm = null;
-            if (!$course = $DB->get_record('course', array('id'=>$fromform->course))) {
-                print_error('invalidcourseid');
-            }
+        $course = $DB->get_record('course', array('id'=>$fromform->course), '*', MUST_EXIST);
             $fromform->instance     = '';
             $fromform->coursemodule = '';
-        } else { //update
-            if (!$cm = get_coursemodule_from_id('', $fromform->coursemodule, 0)) {
-                print_error('invalidcoursemodule');
-            }
-
-            if (!$course = $DB->get_record('course', array('id'=>$cm->course))) {
-                print_error('invalidcourseid');
-            }
+    } else { 
+        // Update
+        $cm = get_coursemodule_from_id('', $fromform->coursemodule, 0, false, MUST_EXIST);
+        $course = $DB->get_record('course', array('id'=>$cm->course), '*', MUST_EXIST);
             $fromform->instance     = $cm->instance;
             $fromform->coursemodule = $cm->id;
         }
 
-
         if (!empty($fromform->coursemodule)) {
             $context = get_context_instance(CONTEXT_MODULE, $fromform->coursemodule);
         } else {
@@ -310,9 +269,11 @@
 
         // Convert the 'use grade' checkbox into a grade-item number: 0 if
         // checked, null if not
-        $fromform->completiongradeitemnumber =
-            isset($fromform->completionusegrade) && $fromform->completionusegrade
-            ? 0 : null;
+    if (isset($fromform->completionusegrade) && $fromform->completionusegrade) {
+        $fromform->completiongradeitemnumber = 0;
+    } else {
+        $fromform->completiongradeitemnumber = null;
+    }
 
         if (!empty($fromform->update)) {
 
@@ -601,16 +562,16 @@
         exit;
 
     } else {
+
+    $streditinga = get_string('editinga', 'moodle', $fullmodulename);
+    $strmodulenameplural = get_string('modulenameplural', $module->name);
+
         if (!empty($cm->id)) {
             $context = get_context_instance(CONTEXT_MODULE, $cm->id);
         } else {
             $context = get_context_instance(CONTEXT_COURSE, $course->id);
         }
 
-        $streditinga = get_string('editinga', 'moodle', $fullmodulename);
-        $strmodulenameplural = get_string('modulenameplural', $module->name);
-
-        $PAGE->navbar->add($streditinga);
         $PAGE->set_heading($course->fullname);
         $PAGE->set_title($streditinga);
         $PAGE->set_focuscontrol($mform->focus());
Index: moodle/filter/manage.php
--- moodle/filter/manage.php Base (1.13)
+++ moodle/filter/manage.php Locally Modified (Based On 1.13)
@@ -36,9 +36,7 @@
 $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 @@
     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)));
+    $cm = get_coursemodule_from_id(null, $context->instanceid, false, 0, MUST_EXIST);
+    $course = $DB->get_record('course', array('id'=>$cm->course), '*', MUST_EXIST);
 }
-if (!$course) {
-    print_error('invalidcourse', 'error');
-}
 
 /// 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 @@
     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 @@
 $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 @@
         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 @@
     }
 
     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();
Index: moodle/lib/navigationlib.php
--- moodle/lib/navigationlib.php Base (1.88)
+++ moodle/lib/navigationlib.php Locally Modified (Based On 1.88)
@@ -2733,30 +2733,35 @@
     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;
     }
 
     /**
