Skip to content

Commit

Permalink
Merge branch 'MDL-73415-master' of https://github.com/sharidas/moodle
Browse files Browse the repository at this point in the history
  • Loading branch information
sarjona committed Feb 23, 2022
2 parents 9af1613 + e6a4eb3 commit 67df769
Show file tree
Hide file tree
Showing 25 changed files with 336 additions and 143 deletions.
2 changes: 1 addition & 1 deletion course/tests/behat/activities_visibility_icons.feature
Expand Up @@ -115,7 +115,7 @@ Feature: Toggle activities visibility from the course page
And "Test forum name" activity should be hidden
And I click on "Test forum name" "link" in the "Recent activity" "block"
And I should see "Test forum name"
And I should see "(There are no discussion topics yet in this forum)"
And I should see "There are no discussion topics yet in this forum"

@javascript
Scenario: Activities can be made available but not visible on a course page
Expand Down
5 changes: 2 additions & 3 deletions course/tests/behat/course_creation.feature
Expand Up @@ -22,12 +22,11 @@ Feature: Managers can create courses
And I add the "Latest announcements" block
And I am on the Announcements "forum activity" page
And "Add discussion topic" "link" should exist
And "Subscription mode > Forced subscription" "link" should not exist in current page administration
And "Subscription mode > Forced subscription" "text" should exist in current page administration
And I navigate to "Subscriptions" in current page administration
And I should see "Forced subscription"
And I log out
And I am on the Announcements "forum activity" page logged in as student1
And "Add a new topic" "link" should not exist
And "Forced subscription" "text" should exist

Scenario: Create a course from the management interface and return to it
Given the following "courses" exist:
Expand Down
3 changes: 2 additions & 1 deletion mod/forum/classes/local/renderers/discussion.php
Expand Up @@ -216,7 +216,8 @@ public function render(
'pindiscussion' => null,
'neighbourlinks' => $this->get_neighbour_links_html(),
'exportdiscussion' => !empty($CFG->enableportfolios) ? $this->get_export_discussion_html($user) : null
]
],
'settingsselector' => true,
]);

$capabilities = (array) $exporteddiscussion['capabilities'];
Expand Down
52 changes: 37 additions & 15 deletions mod/forum/classes/output/subscription_actionbar.php
Expand Up @@ -39,31 +39,45 @@ class subscription_actionbar implements renderable, templatable {
/** @var \stdClass */
private $forum;

/** @var int */
private $edit;

/**
* subscription_actionbar constructor.
*
* @param int $id The forum id.
* @param moodle_url $currenturl Current URL.
* @param \stdClass $forum The forum object.
* @param int $edit This argument decides to show view/manage subscribers view.
*/
public function __construct(int $id, moodle_url $currenturl, \stdClass $forum) {
public function __construct(int $id, moodle_url $currenturl, \stdClass $forum, int $edit) {
$this->id = $id;
$this->currenturl = $currenturl;
$this->forum = $forum;
$this->edit = $edit;
}

/**
* Create url select menu for subscription option
*
* @return url_select the url_select object
* @return url_select|null the url_select object
*/
private function create_subscription_menu(): url_select {
private function create_subscription_menu(): ?url_select {
// When user is on manage subscription, we don't have to show the subscription selector.
if ($this->edit === 1 && !\mod_forum\subscriptions::is_forcesubscribed($this->forum)) {
return null;
}

$sesskey = sesskey();
$modeset = \mod_forum\subscriptions::get_subscription_mode($this->forum);
$optionallink = new moodle_url('/mod/forum/subscribe.php', ['id' => $this->id, 'mode' => 0, 'sesskey' => $sesskey]);
$forcedlink = new moodle_url('/mod/forum/subscribe.php', ['id' => $this->id, 'mode' => 1, 'sesskey' => $sesskey]);
$autolink = new moodle_url('/mod/forum/subscribe.php', ['id' => $this->id, 'mode' => 2, 'sesskey' => $sesskey]);
$disabledlink = new moodle_url('/mod/forum/subscribe.php', ['id' => $this->id, 'mode' => 3, 'sesskey' => $sesskey]);
$optionallink = new moodle_url('/mod/forum/subscribe.php',
['id' => $this->id, 'mode' => FORUM_CHOOSESUBSCRIBE, 'sesskey' => $sesskey, 'edit' => $this->edit]);
$forcedlink = new moodle_url('/mod/forum/subscribe.php',
['id' => $this->id, 'mode' => FORUM_FORCESUBSCRIBE, 'sesskey' => $sesskey, 'edit' => $this->edit]);
$autolink = new moodle_url('/mod/forum/subscribe.php',
['id' => $this->id, 'mode' => FORUM_INITIALSUBSCRIBE, 'sesskey' => $sesskey, 'edit' => $this->edit]);
$disabledlink = new moodle_url('/mod/forum/subscribe.php',
['id' => $this->id, 'mode' => FORUM_DISALLOWSUBSCRIBE, 'sesskey' => $sesskey, 'edit' => $this->edit]);

$menu = [
$optionallink->out(false) => get_string('subscriptionoptional', 'forum'),
Expand Down Expand Up @@ -104,9 +118,14 @@ private function create_subscription_menu(): url_select {
/**
* Create view and manage subscribers select menu.
*
* @return url_select get url_select object.
* @return url_select|null get url_select object.
*/
private function create_view_manage_menu(): url_select {
private function create_view_manage_menu(): ?url_select {
// If forced subscription is used then no need to show the view.
if (\mod_forum\subscriptions::is_forcesubscribed($this->forum)) {
return null;
}

$viewlink = new moodle_url('/mod/forum/subscribers.php', ['id' => $this->id, 'edit' => 'off']);
$managelink = new moodle_url('/mod/forum/subscribers.php', ['id' => $this->id, 'edit' => 'on']);

Expand All @@ -115,12 +134,11 @@ private function create_view_manage_menu(): url_select {
$managelink->out(false) => get_string('managesubscriptionson', 'forum'),
];

if ($this->currenturl->get_param('edit') === 'off') {
if ($this->edit === 0) {
$this->currenturl = $viewlink;
} else {
$this->currenturl = $managelink;
}

$urlselect = new url_select($menu, $this->currenturl->out(false), null, 'selectviewandmanagesubscribers');
$urlselect->set_label(get_string('subscribers', 'forum'), ['class' => 'accesshide']);
return $urlselect;
Expand All @@ -133,12 +151,16 @@ private function create_view_manage_menu(): url_select {
* @return array data for template
*/
public function export_for_template(renderer_base $output): array {
$data = [];
$subscribeoptionselect = $this->create_subscription_menu();
$viewmanageselect = $this->create_view_manage_menu();
$data = [
'subscriptionoptions' => $subscribeoptionselect->export_for_template($output),
'viewandmanageselect' => $viewmanageselect->export_for_template($output),
];

if ($subscribeoptionselect) {
$data ['subscriptionoptions'] = $subscribeoptionselect->export_for_template($output);
}
if ($viewmanageselect) {
$data['viewandmanageselect'] = $viewmanageselect->export_for_template($output);
}
return $data;
}
}
36 changes: 36 additions & 0 deletions mod/forum/deprecatedlib.php
Expand Up @@ -476,3 +476,39 @@ function forum_get_completion_state($course, $cm, $userid, $type) {

return $result;
}

/**
* Prints the editing button on subscribers page
*
* @deprecated since Moodle 4.0
* @todo MDL-73956 Final deprecation in Moodle 4.4
* @global object
* @global object
* @param int $courseid
* @param int $forumid
* @return string
*/
function forum_update_subscriptions_button($courseid, $forumid): string {
global $CFG, $USER;

debugging('The method forum_update_subscriptions_button() has been deprecated as it is no longer used.' .
'The \'Manage subscribers\' button has been replaced with tertiary navigation.', DEBUG_DEVELOPER);

if (!empty($USER->subscriptionsediting)) {
$string = get_string('managesubscriptionsoff', 'forum');
$edit = "off";
} else {
$string = get_string('managesubscriptionson', 'forum');
$edit = "on";
}

$subscribers = html_writer::start_tag('form', array('action' => $CFG->wwwroot . '/mod/forum/subscribers.php',
'method' => 'get', 'class' => 'form-inline'));
$subscribers .= html_writer::empty_tag('input', array('type' => 'submit', 'value' => $string,
'class' => 'btn btn-secondary'));
$subscribers .= html_writer::empty_tag('input', array('type' => 'hidden', 'name' => 'id', 'value' => $forumid));
$subscribers .= html_writer::empty_tag('input', array('type' => 'hidden', 'name' => 'edit', 'value' => $edit));
$subscribers .= html_writer::end_tag('form');

return $subscribers;
}
1 change: 1 addition & 0 deletions mod/forum/discuss.php
Expand Up @@ -312,6 +312,7 @@
$isnestedv2displaymode = $displaymode == FORUM_MODE_NESTED_V2;
$PAGE->set_title("$course->shortname: " . format_string($discussion->get_name()));
$PAGE->set_heading($course->fullname);
$PAGE->set_secondary_active_tab('modulepage');
$PAGE->activityheader->disable();
if ($isnestedv2displaymode) {
$PAGE->add_body_class('nested-v2-display-mode reset-style');
Expand Down
5 changes: 5 additions & 0 deletions mod/forum/lang/en/forum.php
Expand Up @@ -30,6 +30,7 @@
$string['addanewdiscussion'] = 'Add discussion topic';
$string['addanewquestion'] = 'Add a new question';
$string['addanewtopic'] = 'Add a new topic';
$string['addreply'] = 'Add reply';
$string['addtofavourites'] = 'Star this discussion';
$string['advancedsearch'] = 'Advanced search';
$string['alldiscussions'] = 'All discussions';
Expand Down Expand Up @@ -224,6 +225,8 @@
$string['duedatetodisplayincalendar'] = 'Due date to display in calendar';
$string['eachuserforum'] = 'Each person posts one discussion';
$string['edit'] = 'Edit';
$string['editdiscussion'] = 'Edit discussion';
$string['editdiscussiontopic'] = 'Edit discussion topic';
$string['editedby'] = 'Edited by {$a->name} - original submission {$a->date}';
$string['editedpostupdated'] = '{$a}\'s post was updated';
$string['editing'] = 'Editing';
Expand Down Expand Up @@ -318,6 +321,7 @@
$string['forum:rate'] = 'Rate posts';
$string['forum:replynews'] = 'Reply to announcements';
$string['forum:replypost'] = 'Reply to posts';
$string['replypostdiscussion'] = 'Reply to discussion';
$string['forum:postprivatereply'] = 'Reply privately to posts';
$string['forum:readprivatereplies'] = 'View private replies';
$string['forums'] = 'Forums';
Expand Down Expand Up @@ -598,6 +602,7 @@
$string['processingdigest'] = 'Processing email digest for user {$a}';
$string['processingpost'] = 'Processing post {$a}';
$string['prune'] = 'Split';
$string['prunediscussion'] = 'Split discussion';
$string['prunedpost'] = 'A new discussion has been created from that post';
$string['pruneheading'] = 'Split the discussion and move this post to a new discussion';
$string['qandaforum'] = 'Q and A forum';
Expand Down
31 changes: 0 additions & 31 deletions mod/forum/lib.php
Expand Up @@ -4255,37 +4255,6 @@ function forum_change_discussionid($postid, $discussionid) {
return true;
}

/**
* Prints the editing button on subscribers page
*
* @global object
* @global object
* @param int $courseid
* @param int $forumid
* @return string
*/
function forum_update_subscriptions_button($courseid, $forumid) {
global $CFG, $USER;

if (!empty($USER->subscriptionsediting)) {
$string = get_string('managesubscriptionsoff', 'forum');
$edit = "off";
} else {
$string = get_string('managesubscriptionson', 'forum');
$edit = "on";
}

$subscribers = html_writer::start_tag('form', array('action' => $CFG->wwwroot . '/mod/forum/subscribers.php',
'method' => 'get', 'class' => 'form-inline'));
$subscribers .= html_writer::empty_tag('input', array('type' => 'submit', 'value' => $string,
'class' => 'btn btn-secondary'));
$subscribers .= html_writer::empty_tag('input', array('type' => 'hidden', 'name' => 'id', 'value' => $forumid));
$subscribers .= html_writer::empty_tag('input', array('type' => 'hidden', 'name' => 'edit', 'value' => $edit));
$subscribers .= html_writer::end_tag('form');

return $subscribers;
}

// Functions to do with read tracking.

/**
Expand Down
30 changes: 21 additions & 9 deletions mod/forum/post.php
Expand Up @@ -450,6 +450,8 @@
$PAGE->navbar->add(get_string('delete', 'forum'));
$PAGE->set_title($course->shortname);
$PAGE->set_heading($course->fullname);
$PAGE->set_secondary_active_tab('modulepage');
$PAGE->activityheader->disable();

if ($replycount) {
if (!has_capability('mod/forum:deleteanypost', $modcontext)) {
Expand Down Expand Up @@ -552,6 +554,8 @@

$PAGE->set_cm($cm);
$PAGE->set_context($modcontext);
$PAGE->set_secondary_active_tab('modulepage');
$PAGE->activityheader->disable();

$prunemform = new mod_forum_prune_form(null, array('prune' => $prune, 'confirm' => $prune));

Expand Down Expand Up @@ -632,7 +636,7 @@
$course = $DB->get_record('course', array('id' => $forum->course));
$subjectstr = format_string($post->subject, true);
$PAGE->navbar->add($subjectstr, new moodle_url('/mod/forum/discuss.php', array('d' => $discussion->id)));
$PAGE->navbar->add(get_string("prune", "forum"));
$PAGE->navbar->add(get_string("prunediscussion", "forum"));
$PAGE->set_title(format_string($discussion->name).": ".format_string($post->subject));
$PAGE->set_heading($course->fullname);
echo $OUTPUT->header();
Expand Down Expand Up @@ -1077,24 +1081,32 @@
$PAGE->navbar->add($titlesubject, $urlfactory->get_discussion_view_url_from_discussion($discussionentity));
}

if ($post->parent) {
$PAGE->navbar->add(get_string('reply', 'forum'));
}

if ($edit) {
$PAGE->navbar->add(get_string('edit', 'forum'));
$PAGE->navbar->add(get_string('editdiscussiontopic', 'forum'), $PAGE->url);
} else if ($reply) {
$PAGE->navbar->add(get_string('addreply', 'forum'));
} else {
$PAGE->navbar->add(get_string('addanewdiscussion', 'forum'), $PAGE->url);
}

$PAGE->set_title("{$course->shortname}: {$strdiscussionname}{$titlesubject}");
$PAGE->set_heading($course->fullname);
$PAGE->set_secondary_active_tab("modulepage");
$activityheaderconfig['hidecompletion'] = true;
if (!empty($parententity)) {
$activityheaderconfig['description'] = '';
}
$activityheaderconfig['description'] = '';

// Remove the activity description.
$PAGE->activityheader->set_attrs($activityheaderconfig);
echo $OUTPUT->header();

if ($edit) {
echo $OUTPUT->heading(get_string('editdiscussiontopic', 'forum'), 2);
} else if ($reply) {
echo $OUTPUT->heading(get_string('replypostdiscussion', 'forum'), 2);
} else {
echo $OUTPUT->heading(get_string('addanewdiscussion', 'forum'), 2);
}

// Checkup.
if (!empty($parententity) && !$capabilitymanager->can_view_post($USER, $discussionentity, $parententity)) {
print_error('cannotreply', 'forum');
Expand Down
4 changes: 3 additions & 1 deletion mod/forum/renderer.php
Expand Up @@ -120,7 +120,9 @@ public function subscriber_overview($users, $forum , $course) {
$output = '';
$modinfo = get_fast_modinfo($course);
if (!$users || !is_array($users) || count($users)===0) {
$output .= $this->output->heading(get_string("nosubscribers", "forum"));
$output .= $this->output->notification(
get_string("nosubscribers", "forum"),
\core\output\notification::NOTIFY_INFO, false);
} else if (!isset($modinfo->instances['forum'][$forum->id])) {
$output .= $this->output->heading(get_string("invalidmodule", "error"));
} else {
Expand Down
2 changes: 1 addition & 1 deletion mod/forum/report/summary/classes/summary_table.php
Expand Up @@ -377,7 +377,7 @@ public function col_export(\stdClass $data): string {
public function print_nothing_to_display(): void {
global $OUTPUT;

echo $OUTPUT->heading(get_string('nothingtodisplay'), 4);
echo $OUTPUT->notification(get_string('nothingtodisplay'), \core\output\notification::NOTIFY_INFO);
}

/**
Expand Down
2 changes: 1 addition & 1 deletion mod/forum/report/summary/index.php
Expand Up @@ -172,7 +172,6 @@
\forumreport_summary\event\report_viewed::create($eventparams)->trigger();

echo $OUTPUT->header();
echo $OUTPUT->heading(get_string('summarytitle', 'forumreport_summary', $title), 2, 'pb-5');

if (!empty($filters['groups'])) {
\core\notification::info(get_string('viewsdisclaimer', 'forumreport_summary'));
Expand All @@ -183,6 +182,7 @@
$forumselect = new single_select($reporturl, 'forumid', $forumselectoptions, $forumid, '');
$forumselect->set_label(get_string('forumselectlabel', 'forumreport_summary'));
echo $OUTPUT->render($forumselect);
echo $OUTPUT->heading(get_string('nodetitle', 'forumreport_summary'), 2, 'pb-5 mt-3');

// Render the report filters form.
$renderer = $PAGE->get_renderer('forumreport_summary');
Expand Down
5 changes: 2 additions & 3 deletions mod/forum/search.php
Expand Up @@ -223,9 +223,8 @@

echo '</div>';

if (!$PAGE->has_secondary_navigation()) {
echo $OUTPUT->heading($strforums, 2);
}
echo $OUTPUT->heading($strforums, 2);

echo $OUTPUT->heading("$strsearchresults: $totalcount", 3);

$url = new moodle_url('search.php', array('search' => $search, 'id' => $course->id, 'perpage' => $perpage));
Expand Down

0 comments on commit 67df769

Please sign in to comment.