MDL-48309 mod_forum: Add discussion subscription to the navigation

This commit is contained in:
Andrew Nicols 2014-11-25 09:15:46 +08:00
parent 11b5e41b0c
commit 5eddcfee34
2 changed files with 24 additions and 1 deletions

View File

@ -105,6 +105,8 @@ $string['configshortpost'] = 'Any post under this length (in characters not incl
$string['configtrackingtype'] = 'Default setting for read tracking.';
$string['configtrackreadposts'] = 'Set to \'yes\' if you want to track read/unread for each user.';
$string['configusermarksread'] = 'If \'yes\', the user must manually mark a post as read. If \'no\', when the post is viewed it is marked as read.';
$string['confirmsubscribediscussion'] = 'Do you really want to subscribe to discussion \'{$a->discussion}\' in forum \'{$a->forum}\'?';
$string['confirmunsubscribediscussion'] = 'Do you really want to unsubscribe from discussion \'{$a->discussion}\' in forum \'{$a->forum}\'?';
$string['confirmsubscribe'] = 'Do you really want to subscribe to forum \'{$a}\'?';
$string['confirmunsubscribe'] = 'Do you really want to unsubscribe from forum \'{$a}\'?';
$string['couldnotadd'] = 'Could not add your post due to an unknown error';
@ -446,6 +448,7 @@ $string['smallmessage'] = '{$a->user} posted in {$a->forumname}';
$string['startedby'] = 'Started by';
$string['subject'] = 'Subject';
$string['subscribe'] = 'Subscribe to this forum';
$string['subscribediscussion'] = 'Subscribe to this discussion';
$string['subscribeall'] = 'Subscribe everyone to this forum';
$string['subscribeenrolledonly'] = 'Sorry, only enrolled users are allowed to subscribe to forum post notifications.';
$string['subscribed'] = 'Subscribed';

View File

@ -7055,6 +7055,11 @@ function forum_extend_settings_navigation(settings_navigation $settingsnav, navi
$PAGE->cm->context = context_module::instance($PAGE->cm->instance);
}
$params = $PAGE->url->params();
if (!empty($params['d'])) {
$discussionid = $params['d'];
}
// for some actions you need to be enrolled, beiing admin is not enough sometimes here
$enrolled = is_enrolled($PAGE->cm->context, $USER, '', false);
$activeenrolled = is_enrolled($PAGE->cm->context, $USER, '', true);
@ -7110,13 +7115,28 @@ function forum_extend_settings_navigation(settings_navigation $settingsnav, navi
}
if ($cansubscribe) {
if (\mod_forum\subscriptions::is_subscribed($USER->id, $forumobject)) {
if (\mod_forum\subscriptions::is_subscribed($USER->id, $forumobject, null, $PAGE->cm)) {
$linktext = get_string('unsubscribe', 'forum');
} else {
$linktext = get_string('subscribe', 'forum');
}
$url = new moodle_url('/mod/forum/subscribe.php', array('id'=>$forumobject->id, 'sesskey'=>sesskey()));
$forumnode->add($linktext, $url, navigation_node::TYPE_SETTING);
if (isset($discussionid)) {
if (\mod_forum\subscriptions::is_subscribed($USER->id, $forumobject, $discussionid, $PAGE->cm)) {
$linktext = get_string('unsubscribediscussion', 'forum');
} else {
$linktext = get_string('subscribediscussion', 'forum');
}
$url = new moodle_url('/mod/forum/subscribe.php', array(
'id' => $forumobject->id,
'sesskey' => sesskey(),
'd' => $discussionid,
'returnurl' => $PAGE->url->out(),
));
$forumnode->add($linktext, $url, navigation_node::TYPE_SETTING);
}
}
if (has_capability('mod/forum:viewsubscribers', $PAGE->cm->context)){