Skip to content

Commit

Permalink
MDL-65033 mod_forum: Accessibility updates
Browse files Browse the repository at this point in the history
  • Loading branch information
Peter authored and peterRd committed Apr 29, 2019
1 parent 13cd05a commit ac91531
Show file tree
Hide file tree
Showing 11 changed files with 60 additions and 27 deletions.
2 changes: 1 addition & 1 deletion mod/forum/amd/build/favourite_toggle.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion mod/forum/amd/build/pin_toggle.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 12 additions & 1 deletion mod/forum/amd/src/favourite_toggle.js
Expand Up @@ -28,12 +28,14 @@ define([
'core/notification',
'mod_forum/repository',
'mod_forum/selectors',
'core/str',
], function(
$,
Templates,
Notification,
Repository,
Selectors
Selectors,
String
) {

/**
Expand All @@ -55,6 +57,15 @@ define([
.then(function(html, js) {
return Templates.replaceNode(toggleElement, html, js);
})
.then(function() {
return String.get_string("favouriteupdated", "forum")
.done(function(s) {
return Notification.addNotification({
message: s,
type: "info"
});
});
})
.catch(Notification.exception);

e.preventDefault();
Expand Down
13 changes: 12 additions & 1 deletion mod/forum/amd/src/pin_toggle.js
Expand Up @@ -33,14 +33,16 @@ define([
'core/notification',
'mod_forum/repository',
'mod_forum/selectors',
'core/str',
], function(
$,
Ajax,
Str,
Templates,
Notification,
Repository,
Selectors
Selectors,
String
) {

/**
Expand All @@ -61,6 +63,15 @@ define([
.then(function(html, js) {
return Templates.replaceNode(toggleElement, html, js);
})
.then(function() {
return String.get_string("pinupdated", "forum")
.done(function(s) {
return Notification.addNotification({
message: s,
type: "info"
});
});
})
.fail(Notification.exception);

e.preventDefault();
Expand Down
2 changes: 1 addition & 1 deletion mod/forum/classes/local/vaults/discussion_list.php
Expand Up @@ -125,7 +125,7 @@ protected function generate_get_records_sql(string $wheresql = null, ?string $so
$tables .= ' JOIN {user} fa ON fa.id = ' . $alias . '.userid';
$tables .= ' JOIN {user} la ON la.id = ' . $alias . '.usermodified';
$tables .= ' JOIN ' . $posttable->get_from_sql() . ' ON fp.id = ' . $alias . '.firstpost';
$tables .= $favsql ? $favsql : '';
$tables .= isset($favsql) ? $favsql : '';

$selectsql = 'SELECT ' . $fields . ' FROM ' . $tables;
$selectsql .= $wheresql ? ' WHERE ' . $wheresql : '';
Expand Down
6 changes: 4 additions & 2 deletions mod/forum/lang/en/forum.php
Expand Up @@ -75,13 +75,13 @@
$string['cannotmovetonotexist'] = 'You can\'t move to that forum - it doesn\'t exist!';
$string['cannotmovetonotfound'] = 'Target forum not found in this course.';
$string['cannotmovetosingleforum'] = 'Cannot move discussion to a simple single discussion forum';
$string['cannotpindiscussions'] = 'Sorry, you do not have the permission to pin discussions.';
$string['cannotpindiscussions'] = 'Sorry, you do not have permission to pin discussions.';
$string['cannotpurgecachedrss'] = 'Could not purge the cached RSS feeds for the source and/or destination forum(s) - check your file permissionsforums';
$string['cannotremovesubscriber'] = 'Could not remove subscriber with id {$a} from this forum!';
$string['cannotreply'] = 'You cannot reply to this post';
$string['cannotsplit'] = 'Discussions from this forum cannot be split';
$string['cannotsubscribe'] = 'Sorry, but you must be a group member to subscribe.';
$string['cannotfavourite'] = 'Sorry, but you do not have the permission to favourite.';
$string['cannotfavourite'] = 'Sorry, but you do not have the permission to star discussions.';
$string['cannottrack'] = 'Could not stop tracking that forum';
$string['cannotunsubscribe'] = 'Could not unsubscribe you from that forum';
$string['cannotupdatepost'] = 'You can not update this post';
Expand Down Expand Up @@ -239,6 +239,7 @@
$string['exportattachmentname'] = 'Export attachment {$a} to portfolio';
$string['firstpost'] = 'First post';
$string['favourites'] = 'Starred';
$string['favouriteupdated'] = 'Your star option has been updated.';
$string['forcedreadtracking'] = 'Allow forced read tracking';
$string['forcedreadtracking_desc'] = 'Allows forums to be set to forced read tracking. Will result in decreased performance for some users, particularly on courses with many forums and posts. When off, any forums previously set to Forced are treated as optional.';
$string['forcesubscribed_help'] = 'This forum has been configured so that you cannot unsubscribe from discussions.';
Expand Down Expand Up @@ -440,6 +441,7 @@
$string['permanentlinktoparentpost'] = 'Permanent link to the parent of this post';
$string['postisprivatereply'] = 'This post was made privately and is not visible to all users.';
$string['pindiscussion'] = 'Pin this discussion';
$string['pinupdated'] = 'The pin option has been updated.';
$string['posttomygroups'] = 'Post a copy to all groups';
$string['posttomygroups_help'] = 'Posts a copy of this message to all groups you have access to. Participants in groups you do not have access to will not see this post';
$string['prevdiscussiona'] = 'Previous discussion: {$a}';
Expand Down
3 changes: 2 additions & 1 deletion mod/forum/templates/discussion_favourite_toggle.mustache
Expand Up @@ -34,11 +34,12 @@
}}
{{#capabilities.favourite}}
<a
class="p-t-0 btn btn-link"
class="btn btn-link"
data-type="favorite-toggle"
data-action="toggle"
data-discussionid="{{id}}"
data-forumid="{{forumid}}"
role="menuitem",
tabindex="-1"
{{#userstate.favourited}}
data-targetstate="0"
Expand Down
2 changes: 2 additions & 0 deletions mod/forum/templates/discussion_pin_toggle.mustache
Expand Up @@ -40,6 +40,8 @@
data-discussionid="{{id}}"
data-forumid="{{forumid}}"
href="{{urls.pin}}"
tabindex="-1"
role="menuitem"
{{#pinned}}
data-targetstate="0"
title="{{#str}}unpindiscussion, mod_forum{{/str}}"
Expand Down
Expand Up @@ -35,7 +35,7 @@
{{#capabilities.subscribe}}
<a
href="{{{urls.subscribe}}}"
class="p-3 btn btn-link"
class="py-3 btn btn-link"
data-type="subscription-toggle"
data-action="toggle"
data-discussionid="{{id}}"
Expand Down
10 changes: 8 additions & 2 deletions mod/forum/templates/forum_action_menu.mustache
Expand Up @@ -25,11 +25,13 @@
}
}}
<div class="ml-auto dropdown">
<button class="m-t-0 p-t-0 btn btn-link btn-icon"
<button class="{{^settings.excludetext}}dropdown-toggle{{/settings.excludetext}} m-t-0 p-t-0 btn btn-link btn-icon"
type="button"
role="button"
data-toggle="dropdown"
aria-haspopup="true"
tabindex="0"
aria-controls="forum-action-menu-{{id}}-menu"
aria-expanded="false">
{{#settings.togglemoreicon}}
{{#pix}} i/moremenu, core{{/pix}}
Expand All @@ -42,7 +44,11 @@
{{/settings.excludetext}}

</button>
<div class="dropdown-menu dropdown-menu-right">
<div class="dropdown-menu dropdown-menu-right"
aria-labelledby="forum-action-menu-{{id}}-menu"
data-rel="menu-content"
role="menu"
id="forum-action-menu-{{id}}-menu">
<div class="dropdown-item">
{{> mod_forum/discussion_favourite_toggle}}
</div>
Expand Down
32 changes: 16 additions & 16 deletions mod/forum/tests/vaults_discussion_list_test.php
Expand Up @@ -82,39 +82,39 @@ public function test_get_from_forum_id() {
$course = $datagenerator->create_course();
$forum = $datagenerator->create_module('forum', ['course' => $course->id]);

$this->assertEquals([], $vault->get_from_forum_id($forum->id, true, $user->id, null, 0, 0));
$this->assertEquals([], $vault->get_from_forum_id($forum->id, true, $user->id, null, 0, 0, $user));

$now = time();
[$discussion1, $post1] = $this->helper_post_to_forum($forum, $user, ['timestart' => $now - 10, 'timemodified' => 1]);
[$discussion2, $post2] = $this->helper_post_to_forum($forum, $user, ['timestart' => $now - 9, 'timemodified' => 2]);
[$hiddendiscussion, $post3] = $this->helper_post_to_forum($forum, $user, ['timestart' => $now + 10, 'timemodified' => 3]);

$summaries = array_values($vault->get_from_forum_id($forum->id, false, null, null, 0, 0));
$summaries = array_values($vault->get_from_forum_id($forum->id, false, null, null, 0, 0, $user));
$this->assertCount(2, $summaries);
$this->assertEquals($discussion2->id, $summaries[0]->get_discussion()->get_id());
$this->assertEquals($discussion1->id, $summaries[1]->get_discussion()->get_id());

$summaries = array_values($vault->get_from_forum_id($forum->id, true, null, null, 0, 0));
$summaries = array_values($vault->get_from_forum_id($forum->id, true, null, null, 0, 0, $user));
$this->assertCount(3, $summaries);
$this->assertEquals($hiddendiscussion->id, $summaries[0]->get_discussion()->get_id());
$this->assertEquals($discussion2->id, $summaries[1]->get_discussion()->get_id());
$this->assertEquals($discussion1->id, $summaries[2]->get_discussion()->get_id());

$summaries = array_values($vault->get_from_forum_id($forum->id, false, $user->id, null, 0, 0));
$summaries = array_values($vault->get_from_forum_id($forum->id, false, $user->id, null, 0, 0, $user));
$this->assertCount(3, $summaries);
$this->assertEquals($hiddendiscussion->id, $summaries[0]->get_discussion()->get_id());
$this->assertEquals($discussion2->id, $summaries[1]->get_discussion()->get_id());
$this->assertEquals($discussion1->id, $summaries[2]->get_discussion()->get_id());

$summaries = array_values($vault->get_from_forum_id($forum->id, true, null, null, 1, 0));
$summaries = array_values($vault->get_from_forum_id($forum->id, true, null, null, 1, 0, $user));
$this->assertCount(1, $summaries);
$this->assertEquals($hiddendiscussion->id, $summaries[0]->get_discussion()->get_id());

$summaries = array_values($vault->get_from_forum_id($forum->id, true, null, null, 1, 1));
$summaries = array_values($vault->get_from_forum_id($forum->id, true, null, null, 1, 1, $user));
$this->assertCount(1, $summaries);
$this->assertEquals($discussion2->id, $summaries[0]->get_discussion()->get_id());

$summaries = array_values($vault->get_from_forum_id($forum->id, true, null, null, 1, 2));
$summaries = array_values($vault->get_from_forum_id($forum->id, true, null, null, 1, 2, $user));
$this->assertCount(1, $summaries);
$this->assertEquals($discussion1->id, $summaries[0]->get_discussion()->get_id());
}
Expand All @@ -132,7 +132,7 @@ public function test_get_from_forum_id_and_group_id() {
$course = $datagenerator->create_course();
$forum = $datagenerator->create_module('forum', ['course' => $course->id]);

$this->assertEquals([], $vault->get_from_forum_id($forum->id, true, true, null, 0, 0));
$this->assertEquals([], $vault->get_from_forum_id($forum->id, true, true, null, 0, 0, $user));

$now = time();
[$discussion1, $post1] = $this->helper_post_to_forum($forum, $user, ['timestart' => $now - 10, 'timemodified' => 1]);
Expand All @@ -154,7 +154,7 @@ public function test_get_from_forum_id_and_group_id() {
['timestart' => $now + 11, 'timemodified' => 6, 'groupid' => 3]
);

$summaries = array_values($vault->get_from_forum_id_and_group_id($forum->id, [1, 2, 3], true, null, null, 0, 0));
$summaries = array_values($vault->get_from_forum_id_and_group_id($forum->id, [1, 2, 3], true, null, null, 0, 0, $user));
$this->assertCount(6, $summaries);
$this->assertEquals($hiddengroupdiscussion->id, $summaries[0]->get_discussion()->get_id());
$this->assertEquals($hiddendiscussion->id, $summaries[1]->get_discussion()->get_id());
Expand All @@ -163,7 +163,7 @@ public function test_get_from_forum_id_and_group_id() {
$this->assertEquals($discussion2->id, $summaries[4]->get_discussion()->get_id());
$this->assertEquals($discussion1->id, $summaries[5]->get_discussion()->get_id());

$summaries = array_values($vault->get_from_forum_id_and_group_id($forum->id, [1, 2, 3], false, $user->id, null, 0, 0));
$summaries = array_values($vault->get_from_forum_id_and_group_id($forum->id, [1, 2, 3], false, $user->id, null, 0, 0, $user));
$this->assertCount(6, $summaries);
$this->assertEquals($hiddengroupdiscussion->id, $summaries[0]->get_discussion()->get_id());
$this->assertEquals($hiddendiscussion->id, $summaries[1]->get_discussion()->get_id());
Expand All @@ -172,26 +172,26 @@ public function test_get_from_forum_id_and_group_id() {
$this->assertEquals($discussion2->id, $summaries[4]->get_discussion()->get_id());
$this->assertEquals($discussion1->id, $summaries[5]->get_discussion()->get_id());

$summaries = array_values($vault->get_from_forum_id_and_group_id($forum->id, [1, 2, 3], true, null, null, 1, 0));
$summaries = array_values($vault->get_from_forum_id_and_group_id($forum->id, [1, 2, 3], true, null, null, 1, 0, $user));
$this->assertCount(1, $summaries);
$this->assertEquals($hiddengroupdiscussion->id, $summaries[0]->get_discussion()->get_id());

$summaries = array_values($vault->get_from_forum_id_and_group_id($forum->id, [1, 2, 3], true, null, null, 1, 1));
$summaries = array_values($vault->get_from_forum_id_and_group_id($forum->id, [1, 2, 3], true, null, null, 1, 1, $user));
$this->assertCount(1, $summaries);
$this->assertEquals($hiddendiscussion->id, $summaries[0]->get_discussion()->get_id());

$summaries = array_values($vault->get_from_forum_id_and_group_id($forum->id, [1, 2, 3], true, null, null, 1, 2));
$summaries = array_values($vault->get_from_forum_id_and_group_id($forum->id, [1, 2, 3], true, null, null, 1, 2, $user));
$this->assertCount(1, $summaries);
$this->assertEquals($groupdiscussion2->id, $summaries[0]->get_discussion()->get_id());

$summaries = array_values($vault->get_from_forum_id_and_group_id($forum->id, [1, 2, 3], false, null, null, 0, 0));
$summaries = array_values($vault->get_from_forum_id_and_group_id($forum->id, [1, 2, 3], false, null, null, 0, 0, $user));
$this->assertCount(4, $summaries);
$this->assertEquals($groupdiscussion2->id, $summaries[0]->get_discussion()->get_id());
$this->assertEquals($groupdiscussion1->id, $summaries[1]->get_discussion()->get_id());
$this->assertEquals($discussion2->id, $summaries[2]->get_discussion()->get_id());
$this->assertEquals($discussion1->id, $summaries[3]->get_discussion()->get_id());

$summaries = array_values($vault->get_from_forum_id_and_group_id($forum->id, [], true, null, null, 0, 0));
$summaries = array_values($vault->get_from_forum_id_and_group_id($forum->id, [], true, null, null, 0, 0, $user));
$this->assertCount(3, $summaries);
$this->assertEquals($hiddendiscussion->id, $summaries[0]->get_discussion()->get_id());
$this->assertEquals($discussion2->id, $summaries[1]->get_discussion()->get_id());
Expand Down Expand Up @@ -237,7 +237,7 @@ public function test_get_total_discussion_count_from_forum_id_and_group_id() {
$course = $datagenerator->create_course();
$forum = $datagenerator->create_module('forum', ['course' => $course->id]);

$this->assertEquals([], $vault->get_from_forum_id($forum->id, true, true, null, 0, 0));
$this->assertEquals([], $vault->get_from_forum_id($forum->id, true, true, null, 0, 0, $user));

$now = time();
[$discussion1, $post1] = $this->helper_post_to_forum($forum, $user, ['timestart' => $now - 10, 'timemodified' => 1]);
Expand Down

0 comments on commit ac91531

Please sign in to comment.