diff --git a/lib/navigationlib.php b/lib/navigationlib.php index 2613a620350..57548f4e1fd 100644 --- a/lib/navigationlib.php +++ b/lib/navigationlib.php @@ -1479,10 +1479,10 @@ class global_navigation extends navigation_node { } // Add a branch for the current user $usernode = $usersnode->add(fullname($user, true), null, self::TYPE_USER, null, $user->id); - } - if ($this->page->context->contextlevel == CONTEXT_USER && $user->id == $this->page->context->instanceid) { - $usernode->force_open(); + if ($this->page->context->contextlevel == CONTEXT_USER && $user->id == $this->page->context->instanceid) { + $usernode->make_active(); + } } // If the user is the current user or has permission to view the details of the requested @@ -1521,12 +1521,14 @@ class global_navigation extends navigation_node { } } - $messageargs = null; - if ($USER->id!=$user->id) { - $messageargs = array('id'=>$user->id); + if (!empty($CFG->messaging)) { + $messageargs = null; + if ($USER->id!=$user->id) { + $messageargs = array('id'=>$user->id); + } + $url = new moodle_url('/message/index.php',$messageargs); + $usernode->add(get_string('messages', 'message'), $url, self::TYPE_SETTING, null, 'messages'); } - $url = new moodle_url('/message/index.php',$messageargs); - $usernode->add(get_string('messages', 'message'), $url, self::TYPE_SETTING, null, 'messages'); // TODO: Private file capability check if ($iscurrentuser) { @@ -3051,6 +3053,10 @@ class settings_navigation extends navigation_node { // Add a user setting branch $usersetting = $this->add(get_string($gstitle, 'moodle', $fullname), null, self::TYPE_CONTAINER, null, $key); $usersetting->id = 'usersettings'; + if ($this->page->context->contextlevel == CONTEXT_USER && $this->page->context->instanceid == $user->id) { + // Automatically start by making it active + $usersetting->make_active(); + } // Check if the user has been deleted if ($user->deleted) { @@ -3184,10 +3190,10 @@ class settings_navigation extends navigation_node { } // Messaging - // TODO this is adding itself to the messaging settings for other people based on one's own setting - if (has_capability('moodle/user:editownmessageprofile', $systemcontext)) { + if (($currentuser && has_capability('moodle/user:editownmessageprofile', $systemcontext)) || (!isguestuser($user) && has_capability('moodle/user:editmessageprofile', $usercontext) && !is_primary_admin($user->id))) { $url = new moodle_url('/message/edit.php', array('id'=>$user->id, 'course'=>$course->id)); - $usersetting->add(get_string('editmymessage', 'message'), $url, self::TYPE_SETTING); + // Hide the node if messaging disabled + $usersetting->add(get_string('editmymessage', 'message'), $url, self::TYPE_SETTING)->display = !empty($CFG->messaging); } // Blogs diff --git a/message/edit.php b/message/edit.php index cc7ef7d7e11..a0cf2230881 100644 --- a/message/edit.php +++ b/message/edit.php @@ -65,14 +65,17 @@ $systemcontext = get_context_instance(CONTEXT_SYSTEM); $personalcontext = get_context_instance(CONTEXT_USER, $user->id); $coursecontext = get_context_instance(CONTEXT_COURSE, $course->id); -$PAGE->set_context(get_context_instance(CONTEXT_USER, $USER->id)); +$PAGE->set_context($personalcontext); $PAGE->set_pagelayout('course'); // check access control if ($user->id == $USER->id) { //editing own message profile require_capability('moodle/user:editownmessageprofile', $systemcontext); - + if ($course->id != SITEID && $node = $PAGE->navigation->find($course->id, navigation_node::TYPE_COURSE)) { + $node->make_active(); + $PAGE->navbar->includesettingsbase = true; + } } else { // teachers, parents, etc. require_capability('moodle/user:editmessageprofile', $personalcontext); @@ -85,6 +88,7 @@ if ($user->id == $USER->id) { if ($user->id == $mainadmin->id) { print_error('adminprimarynoedit'); } + $PAGE->navigation->extend_for_user($user); } /// Save new preferences if data was submited @@ -176,17 +180,6 @@ $streditmymessage = get_string('editmymessage', 'message'); $strparticipants = get_string('participants'); $userfullname = fullname($user, true); -if ($user->id==$USER->id) { - $PAGE->navigation->extend_for_user($USER); -} else { - if (has_capability('moodle/course:viewparticipants', $coursecontext) || - has_capability('moodle/site:viewparticipants', $systemcontext)) { - $PAGE->navbar->add($strparticipants, new moodle_url('/message/index.php', array('id'=>$course->id))); - } - $PAGE->navbar->add($userfullname, new moodle_url('/user/view.php', array('id'=>$user->id, 'course'=>$course->id))); - $PAGE->navbar->add($streditmymessage); -} - $PAGE->set_title("$course->shortname: $streditmymessage"); if ($course->id != SITEID) { $PAGE->set_heading("$course->fullname: $streditmymessage"); diff --git a/user/editadvanced.php b/user/editadvanced.php index f5eea71d422..666eacedb2e 100644 --- a/user/editadvanced.php +++ b/user/editadvanced.php @@ -72,7 +72,14 @@ if ($id == -1) { require_capability('moodle/user:update', $systemcontext); $user = $DB->get_record('user', array('id'=>$id), '*', MUST_EXIST); $PAGE->set_context(get_context_instance(CONTEXT_USER, $user->id)); - $PAGE->navigation->extend_for_user($user); + if ($user->id == $USER->id) { + if ($course->id != SITEID && $node = $PAGE->navigation->find($course->id, navigation_node::TYPE_COURSE)) { + $node->make_active(); + $PAGE->navbar->includesettingsbase = true; + } + } else { + $PAGE->navigation->extend_for_user($user); + } } // remote users cannot be edited