Merge branch 'MDL-67663-38-3' of git://github.com/junpataleta/moodle into MOODLE_38_STABLE
This commit is contained in:
Vendored
+1
-1
@@ -1,2 +1,2 @@
|
||||
define ("core/drawer",["exports","jquery","core/pubsub","core/drawer_events"],function(a,b,c,d){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.default=void 0;b=e(b);c=function(a){if(a&&a.__esModule){return a}else{var b={};if(null!=a){for(var c in a){if(Object.prototype.hasOwnProperty.call(a,c)){var d=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(a,c):{};if(d.get||d.set){Object.defineProperty(b,c,d)}else{b[c]=a[c]}}}}b.default=a;return b}}(c);d=e(d);function e(a){return a&&a.__esModule?a:{default:a}}var f=function(a){a.removeClass("hidden");a.attr("aria-expanded",!0);a.attr("aria-hidden",!1);a.focus();c.publish(d.default.DRAWER_SHOWN,a)},g=function(a){a.addClass("hidden");a.attr("aria-expanded",!1);a.attr("aria-hidden",!0);c.publish(d.default.DRAWER_HIDDEN,a)},h=function(a){var b=a.hasClass("hidden");return!b},i=function(a){if(h(a)){g(a)}else{f(a)}},j=function(a){a=(0,b.default)(a);return a.closest("[data-region=\"right-hand-drawer\"]")};a.default={hide:g,show:f,isVisible:h,toggle:i,registerToggles:function registerToggles(a,b){var c=null;b.attr("aria-expanded",h(a));b.on("click",function(d){d.preventDefault();var e=h(a);i(a);b.attr("aria-expanded",!e);if(!e){c=b.filter(function(a,b){return b==d.target||b.contains(d.target)})}else if(c){c.focus();c=null}})},getDrawerRoot:j};return a.default});
|
||||
define ("core/drawer",["exports","jquery","core/pubsub","core/drawer_events"],function(a,b,c,d){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.default=void 0;b=e(b);c=function(a){if(a&&a.__esModule){return a}else{var b={};if(null!=a){for(var c in a){if(Object.prototype.hasOwnProperty.call(a,c)){var d=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(a,c):{};if(d.get||d.set){Object.defineProperty(b,c,d)}else{b[c]=a[c]}}}}b.default=a;return b}}(c);d=e(d);function e(a){return a&&a.__esModule?a:{default:a}}var f=function(a){a.removeClass("hidden");a.attr("aria-expanded",!0);a.removeAttr("aria-hidden");a.focus();c.publish(d.default.DRAWER_SHOWN,a)},g=function(a){a.addClass("hidden");a.attr("aria-expanded",!1);a.attr("aria-hidden",!0);c.publish(d.default.DRAWER_HIDDEN,a)},h=function(a){var b=a.hasClass("hidden");return!b},i=function(a){if(h(a)){g(a)}else{f(a)}},j=function(a){a=(0,b.default)(a);return a.closest("[data-region=\"right-hand-drawer\"]")};a.default={hide:g,show:f,isVisible:h,toggle:i,registerToggles:function registerToggles(a,b){var c=null;b.attr("aria-expanded",h(a));b.on("click",function(d){d.preventDefault();var e=h(a);i(a);b.attr("aria-expanded",!e);if(!e){c=b.filter(function(a,b){return b==d.target||b.contains(d.target)})}else if(c){c.focus();c=null}})},getDrawerRoot:j};return a.default});
|
||||
//# sourceMappingURL=drawer.min.js.map
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -32,7 +32,7 @@ import DrawerEvents from 'core/drawer_events';
|
||||
const show = (root) => {
|
||||
root.removeClass('hidden');
|
||||
root.attr('aria-expanded', true);
|
||||
root.attr('aria-hidden', false);
|
||||
root.removeAttr('aria-hidden');
|
||||
root.focus();
|
||||
|
||||
PubSub.publish(DrawerEvents.DRAWER_SHOWN, root);
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
id="{{$drawerid}}drawer-{{uniqid}}{{/drawerid}}"
|
||||
class="{{$drawerclasses}}{{/drawerclasses}} drawer bg-white {{^show}}hidden{{/show}}"
|
||||
aria-expanded="{{#show}}true{{/show}}{{^show}}false{{/show}}"
|
||||
aria-hidden="{{#show}}false{{/show}}{{^show}}true{{/show}}"
|
||||
{{^show}}aria-hidden="true"{{/show}}
|
||||
data-region="right-hand-drawer"
|
||||
role="region"
|
||||
tabindex="-1"
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,2 +1,2 @@
|
||||
define ("mod_forum/local/grades/local/grader/selectors",["exports"],function(a){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.default=void 0;var b=function(a,b){return"[data-".concat(a,"=\"").concat(b,"\"]")},c={buttons:{toggleFullscreen:b("action","togglefullscreen"),closeGrader:b("action","closegrader"),saveGrade:b("action","savegrade"),selectUser:b("action","select-user"),toggleSearch:b("action","toggle-search")},regions:{bodyContainer:b("region","body-container"),moduleReplace:b("region","module_content"),pickerRegion:b("region","user_picker"),gradingPanel:b("region","grade"),gradingPanelContainer:b("region","grading-panel-container"),gradingPanelErrors:b("region","grade-errors"),searchResultsContainer:b("region","search-results-container"),statusContainer:b("region","status-container"),userSearchContainer:b("region","user-search-container"),userSearchInput:b("region","user-search-input")},values:{sendStudentNotifications:"[data-region=\"notification\"] input[type=\"radio\"]:checked"}};a.default=c;return a.default});
|
||||
define ("mod_forum/local/grades/local/grader/selectors",["exports"],function(a){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.default=void 0;var b=function(a,b){return"[data-".concat(a,"=\"").concat(b,"\"]")},c={buttons:{toggleFullscreen:b("action","togglefullscreen"),closeGrader:b("action","closegrader"),collapseGradingDrawer:b("action","collapse-grading-drawer"),saveGrade:b("action","savegrade"),selectUser:b("action","select-user"),toggleSearch:b("action","toggle-search")},regions:{bodyContainer:b("region","body-container"),moduleContainer:b("region","module_content_container"),moduleReplace:b("region","module_content"),pickerRegion:b("region","user_picker"),gradingInfoContainer:b("region","grading-info-container"),gradingPanel:b("region","grade"),gradingPanelContainer:b("region","grading-panel-container"),gradingPanelErrors:b("region","grade-errors"),searchResultsContainer:b("region","search-results-container"),statusContainer:b("region","status-container"),userSearchContainer:b("region","user-search-container"),userSearchInput:b("region","user-search-input")},values:{sendStudentNotifications:"[data-region=\"notification\"] input[type=\"radio\"]:checked"}};a.default=c;return a.default});
|
||||
//# sourceMappingURL=selectors.min.js.map
|
||||
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"sources":["../../../../../src/local/grades/local/grader/selectors.js"],"names":["getDataSelector","name","value","buttons","toggleFullscreen","closeGrader","saveGrade","selectUser","toggleSearch","regions","bodyContainer","moduleReplace","pickerRegion","gradingPanel","gradingPanelContainer","gradingPanelErrors","searchResultsContainer","statusContainer","userSearchContainer","userSearchInput","values","sendStudentNotifications"],"mappings":"kKA8BMA,CAAAA,CAAe,CAAG,SAACC,CAAD,CAAOC,CAAP,CAAiB,CACrC,sBAAgBD,CAAhB,eAAyBC,CAAzB,OACH,C,GAEc,CACXC,OAAO,CAAE,CACLC,gBAAgB,CAAEJ,CAAe,CAAC,QAAD,CAAW,kBAAX,CAD5B,CAELK,WAAW,CAAEL,CAAe,CAAC,QAAD,CAAW,aAAX,CAFvB,CAGLM,SAAS,CAAEN,CAAe,CAAC,QAAD,CAAW,WAAX,CAHrB,CAILO,UAAU,CAAEP,CAAe,CAAC,QAAD,CAAW,aAAX,CAJtB,CAKLQ,YAAY,CAAER,CAAe,CAAC,QAAD,CAAW,eAAX,CALxB,CADE,CAQXS,OAAO,CAAE,CACLC,aAAa,CAAEV,CAAe,CAAC,QAAD,CAAW,gBAAX,CADzB,CAELW,aAAa,CAAEX,CAAe,CAAC,QAAD,CAAW,gBAAX,CAFzB,CAGLY,YAAY,CAAEZ,CAAe,CAAC,QAAD,CAAW,aAAX,CAHxB,CAILa,YAAY,CAAEb,CAAe,CAAC,QAAD,CAAW,OAAX,CAJxB,CAKLc,qBAAqB,CAAEd,CAAe,CAAC,QAAD,CAAW,yBAAX,CALjC,CAMLe,kBAAkB,CAAEf,CAAe,CAAC,QAAD,CAAW,cAAX,CAN9B,CAOLgB,sBAAsB,CAAEhB,CAAe,CAAC,QAAD,CAAW,0BAAX,CAPlC,CAQLiB,eAAe,CAAEjB,CAAe,CAAC,QAAD,CAAW,kBAAX,CAR3B,CASLkB,mBAAmB,CAAElB,CAAe,CAAC,QAAD,CAAW,uBAAX,CAT/B,CAULmB,eAAe,CAAEnB,CAAe,CAAC,QAAD,CAAW,mBAAX,CAV3B,CARE,CAoBXoB,MAAM,CAAE,CACJC,wBAAwB,CAAE,8DADtB,CApBG,C","sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see <http://www.gnu.org/licenses/>.\n\n/**\n * Define all of the selectors we will be using on the grading interface.\n *\n * @module mod_forum/local/grades/local/grader/selectors\n * @package mod_forum\n * @copyright 2019 Mathew May <mathew.solutions>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\n/**\n * A small helper function to build queryable data selectors.\n * @param {String} name\n * @param {String} value\n * @return {string}\n */\nconst getDataSelector = (name, value) => {\n return `[data-${name}=\"${value}\"]`;\n};\n\nexport default {\n buttons: {\n toggleFullscreen: getDataSelector('action', 'togglefullscreen'),\n closeGrader: getDataSelector('action', 'closegrader'),\n saveGrade: getDataSelector('action', 'savegrade'),\n selectUser: getDataSelector('action', 'select-user'),\n toggleSearch: getDataSelector('action', 'toggle-search')\n },\n regions: {\n bodyContainer: getDataSelector('region', 'body-container'),\n moduleReplace: getDataSelector('region', 'module_content'),\n pickerRegion: getDataSelector('region', 'user_picker'),\n gradingPanel: getDataSelector('region', 'grade'),\n gradingPanelContainer: getDataSelector('region', 'grading-panel-container'),\n gradingPanelErrors: getDataSelector('region', 'grade-errors'),\n searchResultsContainer: getDataSelector('region', 'search-results-container'),\n statusContainer: getDataSelector('region', 'status-container'),\n userSearchContainer: getDataSelector('region', 'user-search-container'),\n userSearchInput: getDataSelector('region', 'user-search-input')\n },\n values: {\n sendStudentNotifications: '[data-region=\"notification\"] input[type=\"radio\"]:checked',\n }\n};\n\n"],"file":"selectors.min.js"}
|
||||
{"version":3,"sources":["../../../../../src/local/grades/local/grader/selectors.js"],"names":["getDataSelector","name","value","buttons","toggleFullscreen","closeGrader","collapseGradingDrawer","saveGrade","selectUser","toggleSearch","regions","bodyContainer","moduleContainer","moduleReplace","pickerRegion","gradingInfoContainer","gradingPanel","gradingPanelContainer","gradingPanelErrors","searchResultsContainer","statusContainer","userSearchContainer","userSearchInput","values","sendStudentNotifications"],"mappings":"kKA8BMA,CAAAA,CAAe,CAAG,SAACC,CAAD,CAAOC,CAAP,CAAiB,CACrC,sBAAgBD,CAAhB,eAAyBC,CAAzB,OACH,C,GAEc,CACXC,OAAO,CAAE,CACLC,gBAAgB,CAAEJ,CAAe,CAAC,QAAD,CAAW,kBAAX,CAD5B,CAELK,WAAW,CAAEL,CAAe,CAAC,QAAD,CAAW,aAAX,CAFvB,CAGLM,qBAAqB,CAAEN,CAAe,CAAC,QAAD,CAAW,yBAAX,CAHjC,CAILO,SAAS,CAAEP,CAAe,CAAC,QAAD,CAAW,WAAX,CAJrB,CAKLQ,UAAU,CAAER,CAAe,CAAC,QAAD,CAAW,aAAX,CALtB,CAMLS,YAAY,CAAET,CAAe,CAAC,QAAD,CAAW,eAAX,CANxB,CADE,CASXU,OAAO,CAAE,CACLC,aAAa,CAAEX,CAAe,CAAC,QAAD,CAAW,gBAAX,CADzB,CAELY,eAAe,CAAEZ,CAAe,CAAC,QAAD,CAAW,0BAAX,CAF3B,CAGLa,aAAa,CAAEb,CAAe,CAAC,QAAD,CAAW,gBAAX,CAHzB,CAILc,YAAY,CAAEd,CAAe,CAAC,QAAD,CAAW,aAAX,CAJxB,CAKLe,oBAAoB,CAAEf,CAAe,CAAC,QAAD,CAAW,wBAAX,CALhC,CAMLgB,YAAY,CAAEhB,CAAe,CAAC,QAAD,CAAW,OAAX,CANxB,CAOLiB,qBAAqB,CAAEjB,CAAe,CAAC,QAAD,CAAW,yBAAX,CAPjC,CAQLkB,kBAAkB,CAAElB,CAAe,CAAC,QAAD,CAAW,cAAX,CAR9B,CASLmB,sBAAsB,CAAEnB,CAAe,CAAC,QAAD,CAAW,0BAAX,CATlC,CAULoB,eAAe,CAAEpB,CAAe,CAAC,QAAD,CAAW,kBAAX,CAV3B,CAWLqB,mBAAmB,CAAErB,CAAe,CAAC,QAAD,CAAW,uBAAX,CAX/B,CAYLsB,eAAe,CAAEtB,CAAe,CAAC,QAAD,CAAW,mBAAX,CAZ3B,CATE,CAuBXuB,MAAM,CAAE,CACJC,wBAAwB,CAAE,8DADtB,CAvBG,C","sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see <http://www.gnu.org/licenses/>.\n\n/**\n * Define all of the selectors we will be using on the grading interface.\n *\n * @module mod_forum/local/grades/local/grader/selectors\n * @package mod_forum\n * @copyright 2019 Mathew May <mathew.solutions>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\n/**\n * A small helper function to build queryable data selectors.\n * @param {String} name\n * @param {String} value\n * @return {string}\n */\nconst getDataSelector = (name, value) => {\n return `[data-${name}=\"${value}\"]`;\n};\n\nexport default {\n buttons: {\n toggleFullscreen: getDataSelector('action', 'togglefullscreen'),\n closeGrader: getDataSelector('action', 'closegrader'),\n collapseGradingDrawer: getDataSelector('action', 'collapse-grading-drawer'),\n saveGrade: getDataSelector('action', 'savegrade'),\n selectUser: getDataSelector('action', 'select-user'),\n toggleSearch: getDataSelector('action', 'toggle-search')\n },\n regions: {\n bodyContainer: getDataSelector('region', 'body-container'),\n moduleContainer: getDataSelector('region', 'module_content_container'),\n moduleReplace: getDataSelector('region', 'module_content'),\n pickerRegion: getDataSelector('region', 'user_picker'),\n gradingInfoContainer: getDataSelector('region', 'grading-info-container'),\n gradingPanel: getDataSelector('region', 'grade'),\n gradingPanelContainer: getDataSelector('region', 'grading-panel-container'),\n gradingPanelErrors: getDataSelector('region', 'grade-errors'),\n searchResultsContainer: getDataSelector('region', 'search-results-container'),\n statusContainer: getDataSelector('region', 'status-container'),\n userSearchContainer: getDataSelector('region', 'user-search-container'),\n userSearchInput: getDataSelector('region', 'user-search-input')\n },\n values: {\n sendStudentNotifications: '[data-region=\"notification\"] input[type=\"radio\"]:checked',\n }\n};\n\n"],"file":"selectors.min.js"}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,2 +1,2 @@
|
||||
define ("mod_forum/local/grades/local/grader/user_picker/selectors",["exports"],function(a){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.default=void 0;a.default={regions:{userRegion:"[data-region=\"user_picker/user\"]"},actions:{changeUser:"[data-action=\"change-user\"]"}};return a.default});
|
||||
define ("mod_forum/local/grades/local/grader/user_picker/selectors",["exports"],function(a){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.default=void 0;a.default={regions:{currentUser:"[data-region=\"user_picker/current_user\"]",userRegion:"[data-region=\"user_picker/user\"]"},actions:{changeUser:"[data-action=\"change-user\"]"}};return a.default});
|
||||
//# sourceMappingURL=selectors.min.js.map
|
||||
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"sources":["../../../../../../src/local/grades/local/grader/user_picker/selectors.js"],"names":["regions","userRegion","actions","changeUser"],"mappings":"qLAwBe,CACXA,OAAO,CAAE,CACLC,UAAU,CAAE,oCADP,CADE,CAIXC,OAAO,CAAE,CACLC,UAAU,CAAE,+BADP,CAJE,C","sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see <http://www.gnu.org/licenses/>.\n\n/**\n * Define all of the selectors we will be using on the grading interface.\n *\n * @module mod_forum/local/grades/local/grader/user_picker/selectors\n * @package mod_forum\n * @copyright 2019 Mathew May <mathew.solutions>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nexport default {\n regions: {\n userRegion: '[data-region=\"user_picker/user\"]',\n },\n actions: {\n changeUser: '[data-action=\"change-user\"]',\n }\n};\n\n"],"file":"selectors.min.js"}
|
||||
{"version":3,"sources":["../../../../../../src/local/grades/local/grader/user_picker/selectors.js"],"names":["regions","currentUser","userRegion","actions","changeUser"],"mappings":"qLAwBe,CACXA,OAAO,CAAE,CACLC,WAAW,CAAE,4CADR,CAELC,UAAU,CAAE,oCAFP,CADE,CAKXC,OAAO,CAAE,CACLC,UAAU,CAAE,+BADP,CALE,C","sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see <http://www.gnu.org/licenses/>.\n\n/**\n * Define all of the selectors we will be using on the grading interface.\n *\n * @module mod_forum/local/grades/local/grader/user_picker/selectors\n * @package mod_forum\n * @copyright 2019 Mathew May <mathew.solutions>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nexport default {\n regions: {\n currentUser: '[data-region=\"user_picker/current_user\"]',\n userRegion: '[data-region=\"user_picker/user\"]',\n },\n actions: {\n changeUser: '[data-action=\"change-user\"]',\n }\n};\n\n"],"file":"selectors.min.js"}
|
||||
@@ -35,6 +35,8 @@ import {debounce} from 'core/utils';
|
||||
import {fillInitialValues} from 'core_grades/grades/grader/gradingpanel/comparison';
|
||||
import * as Modal from 'core/modal_factory';
|
||||
import * as ModalEvents from 'core/modal_events';
|
||||
import {subscribe} from 'core/pubsub';
|
||||
import DrawerEvents from 'core/drawer_events';
|
||||
|
||||
const templateNames = {
|
||||
grader: {
|
||||
@@ -156,6 +158,16 @@ const showUserSearchInput = (toggleSearchButton, searchContainer, searchInput) =
|
||||
toggleSearchButton.setAttribute('aria-expanded', 'true');
|
||||
toggleSearchButton.classList.add('expand');
|
||||
toggleSearchButton.classList.remove('collapse');
|
||||
|
||||
// Hide the grading info container from screen reader.
|
||||
const gradingInfoContainer = searchContainer.parentElement.querySelector(Selectors.regions.gradingInfoContainer);
|
||||
gradingInfoContainer.setAttribute('aria-hidden', 'true');
|
||||
|
||||
// Hide the collapse grading drawer button from screen reader.
|
||||
const collapseGradingDrawer = searchContainer.parentElement.querySelector(Selectors.buttons.collapseGradingDrawer);
|
||||
collapseGradingDrawer.setAttribute('aria-hidden', 'true');
|
||||
collapseGradingDrawer.setAttribute('tabindex', '-1');
|
||||
|
||||
searchInput.focus();
|
||||
};
|
||||
|
||||
@@ -172,6 +184,16 @@ const hideUserSearchInput = (toggleSearchButton, searchContainer, searchInput) =
|
||||
toggleSearchButton.classList.add('collapse');
|
||||
toggleSearchButton.classList.remove('expand');
|
||||
toggleSearchButton.focus();
|
||||
|
||||
// Show the grading info container to screen reader.
|
||||
const gradingInfoContainer = searchContainer.parentElement.querySelector(Selectors.regions.gradingInfoContainer);
|
||||
gradingInfoContainer.removeAttribute('aria-hidden');
|
||||
|
||||
// Show the collapse grading drawer button from screen reader.
|
||||
const collapseGradingDrawer = searchContainer.parentElement.querySelector(Selectors.buttons.collapseGradingDrawer);
|
||||
collapseGradingDrawer.removeAttribute('aria-hidden');
|
||||
collapseGradingDrawer.setAttribute('tabindex', '0');
|
||||
|
||||
searchInput.value = '';
|
||||
};
|
||||
|
||||
@@ -277,6 +299,35 @@ const registerEventListeners = (graderLayout, userPicker, saveGradeFunction, use
|
||||
const users = searchForUsers(userList, searchInput.value);
|
||||
renderSearchResults(searchResultsContainer, users);
|
||||
}, 300));
|
||||
|
||||
// Remove the right margin of the content container when the grading panel is hidden so that it expands to full-width.
|
||||
subscribe(DrawerEvents.DRAWER_HIDDEN, (drawerRoot) => {
|
||||
const gradingPanel = drawerRoot[0];
|
||||
if (gradingPanel.querySelector(Selectors.regions.gradingPanel)) {
|
||||
setContentContainerMargin(graderContainer, 0);
|
||||
}
|
||||
});
|
||||
|
||||
// Bring back the right margin of the content container when the grading panel is shown to give space for the grading panel.
|
||||
subscribe(DrawerEvents.DRAWER_SHOWN, (drawerRoot) => {
|
||||
const gradingPanel = drawerRoot[0];
|
||||
if (gradingPanel.querySelector(Selectors.regions.gradingPanel)) {
|
||||
setContentContainerMargin(graderContainer, gradingPanel.offsetWidth);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Adjusts the right margin of the content container.
|
||||
*
|
||||
* @param {HTMLElement} graderContainer The container for the grader app.
|
||||
* @param {Number} rightMargin The right margin value.
|
||||
*/
|
||||
const setContentContainerMargin = (graderContainer, rightMargin) => {
|
||||
const contentContainer = graderContainer.querySelector(Selectors.regions.moduleContainer);
|
||||
if (contentContainer) {
|
||||
contentContainer.style.marginRight = `${rightMargin}px`;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -36,14 +36,17 @@ export default {
|
||||
buttons: {
|
||||
toggleFullscreen: getDataSelector('action', 'togglefullscreen'),
|
||||
closeGrader: getDataSelector('action', 'closegrader'),
|
||||
collapseGradingDrawer: getDataSelector('action', 'collapse-grading-drawer'),
|
||||
saveGrade: getDataSelector('action', 'savegrade'),
|
||||
selectUser: getDataSelector('action', 'select-user'),
|
||||
toggleSearch: getDataSelector('action', 'toggle-search')
|
||||
},
|
||||
regions: {
|
||||
bodyContainer: getDataSelector('region', 'body-container'),
|
||||
moduleContainer: getDataSelector('region', 'module_content_container'),
|
||||
moduleReplace: getDataSelector('region', 'module_content'),
|
||||
pickerRegion: getDataSelector('region', 'user_picker'),
|
||||
gradingInfoContainer: getDataSelector('region', 'grading-info-container'),
|
||||
gradingPanel: getDataSelector('region', 'grade'),
|
||||
gradingPanelContainer: getDataSelector('region', 'grading-panel-container'),
|
||||
gradingPanelErrors: getDataSelector('region', 'grade-errors'),
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
|
||||
import Templates from 'core/templates';
|
||||
import Selectors from './user_picker/selectors';
|
||||
import {get_string as getString} from 'core/str';
|
||||
|
||||
const templatePath = 'mod_forum/local/grades/local/grader';
|
||||
|
||||
@@ -111,6 +112,10 @@ class UserPicker {
|
||||
const [{html, js}] = await Promise.all([this.renderUserChange(user), this.showUserCallback(user)]);
|
||||
const userRegion = this.root.querySelector(Selectors.regions.userRegion);
|
||||
Templates.replaceNodeContents(userRegion, html, js);
|
||||
|
||||
// Update the hidden now-grading region so screen readers can announce the user that's currently being graded.
|
||||
const currentUserRegion = this.root.querySelector(Selectors.regions.currentUser);
|
||||
currentUserRegion.textContent = await getString('nowgradinguser', 'mod_forum', user.fullname);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
|
||||
export default {
|
||||
regions: {
|
||||
currentUser: '[data-region="user_picker/current_user"]',
|
||||
userRegion: '[data-region="user_picker/user"]',
|
||||
},
|
||||
actions: {
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
*/
|
||||
|
||||
$string['activityoverview'] = 'There are new forum posts';
|
||||
$string['actionsforgraderinterface'] = 'Actions for the grader interface';
|
||||
$string['actionsforpost'] = 'Actions for post';
|
||||
$string['addanewdiscussion'] = 'Add a new discussion topic';
|
||||
$string['addanewquestion'] = 'Add a new question';
|
||||
@@ -102,6 +103,7 @@ $string['clicktosubscribe'] = 'You are not subscribed to this discussion. Click
|
||||
$string['clicktounfavourite'] = 'You have starred this discussion. Click to unstar.';
|
||||
$string['clicktofavourite'] = 'You have not starred this discussion. Click to star.';
|
||||
$string['close'] = 'Close';
|
||||
$string['closegrader'] = 'Close grader';
|
||||
$string['completiondiscussions'] = 'Student must create discussions:';
|
||||
$string['completiondiscussionsdesc'] = 'Student must create at least {$a} discussion(s)';
|
||||
$string['completiondiscussionsgroup'] = 'Require discussions';
|
||||
@@ -299,6 +301,8 @@ $string['forum:exportdiscussion'] = 'Export whole discussion';
|
||||
$string['forum:exportforum'] = 'Export forum';
|
||||
$string['forum:exportownpost'] = 'Export own post';
|
||||
$string['forum:exportpost'] = 'Export post';
|
||||
$string['forumgradingnavigation'] = 'Forum grading navigation';
|
||||
$string['forumgradingpanel'] = 'Forum grading panel';
|
||||
$string['forumintro'] = 'Description';
|
||||
$string['forum:managesubscriptions'] = 'Manage subscribers';
|
||||
$string['forum:movediscussions'] = 'Move discussions';
|
||||
@@ -443,7 +447,7 @@ $string['namenews_help'] = 'The course announcements forum is a special forum fo
|
||||
$string['namesocial'] = 'Social forum';
|
||||
$string['nameteacher'] = 'Teacher forum';
|
||||
$string['nextdiscussiona'] = 'Next discussion: {$a}';
|
||||
$string['nextuser'] = 'Next user';
|
||||
$string['nextuser'] = 'Save changes and proceed to the next user';
|
||||
$string['newforumposts'] = 'New forum posts';
|
||||
$string['noattachments'] = 'There are no attachments to this post';
|
||||
$string['nodiscussions'] = 'There are no discussion topics yet in this forum';
|
||||
@@ -522,7 +526,7 @@ $string['poststo'] = 'Posts to';
|
||||
$string['posttoforum'] = 'Post to forum';
|
||||
$string['postupdated'] = 'Your post was updated';
|
||||
$string['potentialsubscribers'] = 'Potential subscribers';
|
||||
$string['previoususer'] = 'Previous user';
|
||||
$string['previoususer'] = 'Save changes and proceed to the previous user';
|
||||
$string['privacy:digesttypenone'] = 'We do not hold any data relating to a preferred forum digest type for this forum.';
|
||||
$string['privacy:digesttypepreference'] = 'You have chosen to receive the following forum digest type: "{$a->type}".';
|
||||
$string['privacy:discussionsubscriptionpreference'] = 'You have chosen the following discussion subscription preference for this forum: "{$a->preference}"';
|
||||
@@ -729,6 +733,7 @@ $string['unsubscribeshort'] = 'Unsubscribe';
|
||||
$string['useexperimentalui'] = 'Use experimental nested discussion view';
|
||||
$string['usermarksread'] = 'Manual message read marking';
|
||||
$string['usernavigation'] = 'User navigation';
|
||||
$string['usersforumposts'] = 'User\'s forum posts';
|
||||
$string['unpindiscussion'] = 'Unpin this discussion';
|
||||
$string['viewalldiscussions'] = 'View all discussions';
|
||||
$string['viewparentpost'] = 'View parent post';
|
||||
@@ -748,6 +753,7 @@ $string['grade_forum_title'] = 'Grade';
|
||||
$string['grade_rating_name'] = 'Rating';
|
||||
$string['gradeusers'] = 'Grade users';
|
||||
$string['graded'] = 'Graded';
|
||||
$string['nowgradinguser'] = 'Now grading {$a}';
|
||||
$string['gradeforrating'] = 'Grade for rating: {$a->str_long_grade}';
|
||||
$string['gradeforratinghidden'] = 'Grade for rating hidden';
|
||||
$string['gradeforwholeforum'] = 'Grade for forum: {$a->str_long_grade}';
|
||||
|
||||
@@ -44,8 +44,8 @@
|
||||
{{> mod_forum/local/grades/local/grader/navigation }}
|
||||
|
||||
<div class="d-flex flex-grow-1 h-100 position-relative">
|
||||
{{#drawer}}{{> mod_forum/local/grades/local/grader/grading }}{{/drawer}}
|
||||
{{> mod_forum/local/grades/local/grader/content }}
|
||||
{{#drawer}}{{> mod_forum/local/grades/local/grader/grading }}{{/drawer}}
|
||||
</div>
|
||||
</div>
|
||||
{{#js}}
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
{
|
||||
}
|
||||
}}
|
||||
<div class="grader-module-content w-100 h-100">
|
||||
<div class="grader-module-content w-100 h-100" data-region="module_content_container" role="region" aria-label="{{#str}} usersforumposts, mod_forum {{/str}}">
|
||||
<div data-region="module_content" class="grader-module-content-display">
|
||||
{{> mod_forum/local/grades/local/grader/module_content_placeholder }}
|
||||
</div>
|
||||
|
||||
@@ -36,9 +36,25 @@
|
||||
{{$drawerid}}grading-drawer-{{uniqid}}{{/drawerid}}
|
||||
{{$drawerclasses}}grader-grading-panel flex-shrink-0{{/drawerclasses}}
|
||||
{{$drawercontent}}
|
||||
<div class="h-100 w-100 bg-white d-flex flex-column">
|
||||
<div class="h-100 w-100 bg-white d-flex flex-column" role="region" aria-label="{{#str}} forumgradingpanel, mod_forum {{/str}}">
|
||||
<div class="flex-shrink-0 d-flex flex-column">
|
||||
<div class="header-container bg-light">
|
||||
<div class="info-container d-flex align-items-center" data-region="grading-info-container">
|
||||
<button
|
||||
class="btn btn-icon icon-size-3 icon-no-margin colour-inherit"
|
||||
data-action="collapse-grading-drawer"
|
||||
aria-controls="grading-drawer-{{uniqid}}"
|
||||
aria-expanded="true"
|
||||
title="{{#str}} closebuttontitle, core {{/str}}"
|
||||
aria-label="{{#str}} hidegraderpanel, mod_forum {{/str}}"
|
||||
>
|
||||
<span class="dir-ltr-hide">{{#pix}} t/left, core {{/pix}}</span>
|
||||
<span class="dir-rtl-hide">{{#pix}} t/right, core {{/pix}}</span>
|
||||
</button>
|
||||
<div class="ml-auto mr-auto text-center" data-region="status-container">
|
||||
{{> mod_forum/local/grades/local/grader/status_placeholder }}
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
id="searchbox-{{uniqid}}"
|
||||
class="user-search-container d-flex flex-grow-1 align-items-center collapsed"
|
||||
@@ -62,32 +78,15 @@
|
||||
aria-controls="searchbox-{{uniqid}}"
|
||||
data-action="toggle-search"
|
||||
>
|
||||
<div class="expanded-icon">
|
||||
<span aria-hidden="true">{{#pix}} e/cancel, core, {{#str}} hideusersearch, mod_forum {{/str}} {{/pix}}</span>
|
||||
<span class="sr-only">{{#str}} hideusersearch, mod_forum {{/str}}</span>
|
||||
<div class="expanded-icon" data-region="user-search-icon-hide">
|
||||
<span>{{#pix}} e/cancel, core, {{#str}} hideusersearch, mod_forum {{/str}} {{/pix}}</span>
|
||||
</div>
|
||||
<div class="collapsed-icon">
|
||||
<span aria-hidden="true">{{#pix}} i/search, core, {{#str}} showusersearch, mod_forum {{/str}} {{/pix}}</span>
|
||||
<span class="sr-only">{{#str}} showusersearch, mod_forum {{/str}}</span>
|
||||
<div class="collapsed-icon" data-region="user-search-icon-show">
|
||||
<span>{{#pix}} i/search, core, {{#str}} showusersearch, mod_forum {{/str}} {{/pix}}</span>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="info-container d-flex align-items-center">
|
||||
<button
|
||||
class="btn btn-icon icon-size-3 icon-no-margin colour-inherit"
|
||||
data-action="collapse-grading-drawer"
|
||||
aria-controls="grading-drawer-{{uniqid}}"
|
||||
aria-expanded="true"
|
||||
title="{{#str}} closebuttontitle, core {{/str}}"
|
||||
>
|
||||
<span class="dir-ltr-hide">{{#pix}} t/left, core {{/pix}}</span>
|
||||
<span class="dir-rtl-hide">{{#pix}} t/right, core {{/pix}}</span>
|
||||
</button>
|
||||
<div class="ml-auto mr-auto text-center" data-region="status-container">
|
||||
{{> mod_forum/local/grades/local/grader/status_placeholder }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="border-bottom px-3 pt-2" data-region="user_picker">
|
||||
{{> mod_forum/local/grades/local/grader/user_picker_placeholder }}
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
"moduleName": "Chef the Forum"
|
||||
}
|
||||
}}
|
||||
<nav id="nav-container-{{uniqid}}" class="grader-grading_navigation navbar">
|
||||
<nav id="nav-container-{{uniqid}}" class="grader-grading_navigation navbar" aria-label="{{#str}} forumgradingnavigation, mod_forum {{/str}}">
|
||||
<div class="d-none d-sm-flex align-items-center">
|
||||
<a href="{{{courseUrl}}}" class="btn btn-link px-2 colour-inherit">
|
||||
<h5 class="d-inline px-0 mb-0">{{courseName}}</h5>
|
||||
@@ -61,7 +61,7 @@
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-icon icon-no-margin drawer-button mr-1"
|
||||
aria-label="Open or close grader panel"
|
||||
aria-label="{{#str}} hidegraderpanel, mod_forum {{/str}}"
|
||||
data-action="collapse-grading-drawer"
|
||||
aria-controls="grading-drawer-{{uniqid}}"
|
||||
aria-expanded="true"
|
||||
|
||||
@@ -36,35 +36,36 @@
|
||||
}}
|
||||
|
||||
<div class="d-flex align-items-center user-picker-container mb-2 py-2">
|
||||
<div aria-live="polite" data-region="user_picker/current_user" class="sr-only"></div>
|
||||
<div class="d-flex align-items-center" data-region="user_picker/user"></div>
|
||||
<div class="ml-auto flex-shrink-0">
|
||||
<nav aria-label="{{#str}} usernavigation, mod_forum {{/str}}">
|
||||
<ul class="pagination mb-0">
|
||||
<li class="page-item">
|
||||
<a
|
||||
<button
|
||||
class="page-link icon-no-margin p-0 text-reset icon-size-3"
|
||||
href="#"
|
||||
aria-label="{{#str}} previous {{/str}}"
|
||||
aria-label="{{#str}} previoususer, mod_forum {{/str}}"
|
||||
data-action="change-user"
|
||||
data-direction="-1"
|
||||
title="{{#str}} previoususer, mod_forum {{/str}}"
|
||||
>
|
||||
<span class="dir-ltr-hide">{{#pix}} i/next, core {{/pix}}</span>
|
||||
<span class="dir-rtl-hide">{{#pix}} i/previous, core {{/pix}}</span>
|
||||
</a>
|
||||
</button>
|
||||
</li>
|
||||
<li class="page-item">
|
||||
<a
|
||||
<button
|
||||
class="page-link icon-no-margin p-0 text-reset icon-size-3 ml-2"
|
||||
href="#"
|
||||
aria-label="{{#str}} next {{/str}}"
|
||||
aria-label="{{#str}} nextuser, mod_forum {{/str}}"
|
||||
data-action="change-user"
|
||||
data-direction="1"
|
||||
title="{{#str}} nextuser, mod_forum {{/str}}"
|
||||
>
|
||||
<span class="dir-ltr-hide">{{#pix}} i/previous, core {{/pix}}</span>
|
||||
<span class="dir-rtl-hide">{{#pix}} i/next, core {{/pix}}</span>
|
||||
</a>
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
@@ -42,8 +42,7 @@
|
||||
<img
|
||||
class="rounded-circle userpicture mr-2"
|
||||
src="{{.}}"
|
||||
alt="{{#str}}pictureof, moodle, {{fullname}}{{/str}}"
|
||||
title="{{#str}}pictureof, moodle, {{fullname}}{{/str}}"
|
||||
aria-hidden="true"
|
||||
>
|
||||
{{/profileimage}}
|
||||
<div>
|
||||
|
||||
@@ -717,10 +717,6 @@ $grading-content-show-content-button-padding-left: calc(#{map-get($spacers, 2) *
|
||||
@include transition(margin-right .2s ease-in-out);
|
||||
}
|
||||
|
||||
.grader-grading-panel.hidden + .grader-module-content {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.drawer-button {
|
||||
position: relative;
|
||||
|
||||
|
||||
@@ -16786,9 +16786,6 @@ select {
|
||||
.path-mod-forum .unified-grader .grader-module-content {
|
||||
transition: none; } }
|
||||
|
||||
.path-mod-forum .unified-grader .grader-grading-panel.hidden + .grader-module-content {
|
||||
margin-right: 0; }
|
||||
|
||||
.path-mod-forum .unified-grader .drawer-button {
|
||||
position: relative; }
|
||||
.path-mod-forum .unified-grader .drawer-button.active::after {
|
||||
|
||||
@@ -17055,9 +17055,6 @@ select {
|
||||
.path-mod-forum .unified-grader .grader-module-content {
|
||||
transition: none; } }
|
||||
|
||||
.path-mod-forum .unified-grader .grader-grading-panel.hidden + .grader-module-content {
|
||||
margin-right: 0; }
|
||||
|
||||
.path-mod-forum .unified-grader .drawer-button {
|
||||
position: relative; }
|
||||
.path-mod-forum .unified-grader .drawer-button.active::after {
|
||||
|
||||
Reference in New Issue
Block a user