MDL-65033 mod_forum: Accessibility updates

This commit is contained in:
Peter 2019-03-28 12:09:10 +08:00 committed by Peter
parent 13cd05ac14
commit ac91531670
11 changed files with 60 additions and 27 deletions

View File

@ -1 +1 @@
define(["jquery","core/templates","core/notification","mod_forum/repository","mod_forum/selectors"],function(a,b,c,d,e){var f=function(f){f.on("click",e.favourite.toggle,function(e){var f=a(this),g=f.data("forumid"),h=f.data("discussionid"),i=f.data("targetstate");d.setFavouriteDiscussionState(g,h,i).then(function(a){return b.render("mod_forum/discussion_favourite_toggle",a)}).then(function(a,c){return b.replaceNode(f,a,c)})["catch"](c.exception),e.preventDefault()})};return{init:function(a){f(a)}}});
define(["jquery","core/templates","core/notification","mod_forum/repository","mod_forum/selectors","core/str"],function(a,b,c,d,e,f){var g=function(g){g.on("click",e.favourite.toggle,function(e){var g=a(this),h=g.data("forumid"),i=g.data("discussionid"),j=g.data("targetstate");d.setFavouriteDiscussionState(h,i,j).then(function(a){return b.render("mod_forum/discussion_favourite_toggle",a)}).then(function(a,c){return b.replaceNode(g,a,c)}).then(function(){return f.get_string("favouriteupdated","forum").done(function(a){return c.addNotification({message:a,type:"info"})})})["catch"](c.exception),e.preventDefault()})};return{init:function(a){g(a)}}});

View File

@ -1 +1 @@
define(["jquery","core/ajax","core/str","core/templates","core/notification","mod_forum/repository","mod_forum/selectors"],function(a,b,c,d,e,f,g){var h=function(b){b.on("click",g.pin.toggle,function(b){var c=a(this),g=c.data("forumid"),h=c.data("discussionid"),i=c.data("targetstate");f.setPinDiscussionState(g,h,i).then(function(a){return d.render("mod_forum/discussion_pin_toggle",a)}).then(function(a,b){return d.replaceNode(c,a,b)}).fail(e.exception),b.preventDefault()})};return{init:function(a){h(a)}}});
define(["jquery","core/ajax","core/str","core/templates","core/notification","mod_forum/repository","mod_forum/selectors","core/str"],function(a,b,c,d,e,f,g,h){var i=function(b){b.on("click",g.pin.toggle,function(b){var c=a(this),g=c.data("forumid"),i=c.data("discussionid"),j=c.data("targetstate");f.setPinDiscussionState(g,i,j).then(function(a){return d.render("mod_forum/discussion_pin_toggle",a)}).then(function(a,b){return d.replaceNode(c,a,b)}).then(function(){return h.get_string("pinupdated","forum").done(function(a){return e.addNotification({message:a,type:"info"})})}).fail(e.exception),b.preventDefault()})};return{init:function(a){i(a)}}});

View File

@ -28,12 +28,14 @@ define([
'core/notification',
'mod_forum/repository',
'mod_forum/selectors',
'core/str',
], function(
$,
Templates,
Notification,
Repository,
Selectors
Selectors,
String
) {
/**
@ -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();

View File

@ -33,6 +33,7 @@ define([
'core/notification',
'mod_forum/repository',
'mod_forum/selectors',
'core/str',
], function(
$,
Ajax,
@ -40,7 +41,8 @@ define([
Templates,
Notification,
Repository,
Selectors
Selectors,
String
) {
/**
@ -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();

View File

@ -125,7 +125,7 @@ class discussion_list extends db_table_vault {
$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 : '';

View File

@ -75,13 +75,13 @@ $string['cannotmovenotvisible'] = 'Forum not visible';
$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';
@ -239,6 +239,7 @@ $string['exportdiscussion'] = 'Export whole discussion to portfolio';
$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.';
@ -440,6 +441,7 @@ $string['permanentlinktopost'] = 'Permanent link to this post';
$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}';

View File

@ -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"

View File

@ -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}}"

View File

@ -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}}"

View File

@ -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}}
@ -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>

View File

@ -82,39 +82,39 @@ class mod_forum_vaults_discussion_list_testcase extends advanced_testcase {
$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());
}
@ -132,7 +132,7 @@ class mod_forum_vaults_discussion_list_testcase extends advanced_testcase {
$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]);
@ -154,7 +154,7 @@ class mod_forum_vaults_discussion_list_testcase extends advanced_testcase {
['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());
@ -163,7 +163,7 @@ class mod_forum_vaults_discussion_list_testcase extends advanced_testcase {
$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());
@ -172,26 +172,26 @@ class mod_forum_vaults_discussion_list_testcase extends advanced_testcase {
$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());
@ -237,7 +237,7 @@ class mod_forum_vaults_discussion_list_testcase extends advanced_testcase {
$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]);