mirror of
https://github.com/moodle/moodle.git
synced 2025-04-20 16:04:25 +02:00
MDL-80750 mod_assign: Generic bulk action form template
This commit is contained in:
parent
35cabfcc7e
commit
d62f653e47
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,3 +1,3 @@
|
||||
define("mod_assign/bulkactions/grading/delete",["exports","core/bulkactions/bulk_action","core/notification","core/templates","core/str"],(function(_exports,_bulk_action,_notification,_templates,_str){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _classPrivateFieldInitSpec(obj,privateMap,value){!function(obj,privateCollection){if(privateCollection.has(obj))throw new TypeError("Cannot initialize the same private elements twice on an object")}(obj,privateMap),privateMap.set(obj,value)}function _classPrivateFieldGet(receiver,privateMap){return function(receiver,descriptor){if(descriptor.get)return descriptor.get.call(receiver);return descriptor.value}(receiver,_classExtractFieldDescriptor(receiver,privateMap,"get"))}function _classPrivateFieldSet(receiver,privateMap,value){return function(receiver,descriptor,value){if(descriptor.set)descriptor.set.call(receiver,value);else{if(!descriptor.writable)throw new TypeError("attempted to set read only private field");descriptor.value=value}}(receiver,_classExtractFieldDescriptor(receiver,privateMap,"set"),value),value}function _classExtractFieldDescriptor(receiver,privateMap,action){if(!privateMap.has(receiver))throw new TypeError("attempted to "+action+" private field on non-instance");return privateMap.get(receiver)}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_bulk_action=_interopRequireDefault(_bulk_action),_notification=_interopRequireDefault(_notification),_templates=_interopRequireDefault(_templates);const Selectors_selectBulkItemCheckbox='input[type="checkbox"][name="selectedusers"]:checked';var _cmid=new WeakMap,_sesskey=new WeakMap;class _default extends _bulk_action.default{constructor(cmid,sesskey){super(),_classPrivateFieldInitSpec(this,_cmid,{writable:!0,value:void 0}),_classPrivateFieldInitSpec(this,_sesskey,{writable:!0,value:void 0}),_classPrivateFieldSet(this,_cmid,cmid),_classPrivateFieldSet(this,_sesskey,sesskey)}getBulkActionTriggerSelector(){return'[data-type="bulkactions"] [data-action="removesubmission"]'}async triggerBulkAction(){_notification.default.deleteCancelPromise((0,_str.getString)("removesubmission","mod_assign"),(0,_str.getString)("batchoperationconfirmremovesubmission","mod_assign"),(0,_str.getString)("batchoperationremovesubmission","mod_assign")).then((()=>{const selectedUsers=[...document.querySelectorAll(Selectors_selectBulkItemCheckbox)].map((checkbox=>checkbox.value)),url=new URL(window.location.href);url.searchParams.set("id",_classPrivateFieldGet(this,_cmid));const form=document.createElement("form");form.method="POST",form.action=url.toString(),((form,hiddenInputs)=>{for(const[name,value]of Object.entries(hiddenInputs)){const input=document.createElement("input");input.type="hidden",input.name=name,input.value=value,form.appendChild(input)}})(form,{action:"gradingbatchoperation",operation:"removesubmission",selectedusers:selectedUsers.join(","),sesskey:_classPrivateFieldGet(this,_sesskey)}),document.body.appendChild(form),form.submit(),form.remove()})).catch((()=>{}))}async renderBulkActionTrigger(showInDropdown,index){return _templates.default.render("mod_assign/bulkactions/grading/bulk_delete_trigger",{showindropdown:showInDropdown,isfirst:0===index})}}return _exports.default=_default,_exports.default}));
|
||||
define("mod_assign/bulkactions/grading/delete",["exports","core/bulkactions/bulk_action","core/templates","core/str","core/modal_delete_cancel","core/modal_events"],(function(_exports,_bulk_action,_templates,_str,_modal_delete_cancel,_modal_events){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _classPrivateFieldInitSpec(obj,privateMap,value){!function(obj,privateCollection){if(privateCollection.has(obj))throw new TypeError("Cannot initialize the same private elements twice on an object")}(obj,privateMap),privateMap.set(obj,value)}function _classPrivateFieldGet(receiver,privateMap){return function(receiver,descriptor){if(descriptor.get)return descriptor.get.call(receiver);return descriptor.value}(receiver,_classExtractFieldDescriptor(receiver,privateMap,"get"))}function _classPrivateFieldSet(receiver,privateMap,value){return function(receiver,descriptor,value){if(descriptor.set)descriptor.set.call(receiver,value);else{if(!descriptor.writable)throw new TypeError("attempted to set read only private field");descriptor.value=value}}(receiver,_classExtractFieldDescriptor(receiver,privateMap,"set"),value),value}function _classExtractFieldDescriptor(receiver,privateMap,action){if(!privateMap.has(receiver))throw new TypeError("attempted to "+action+" private field on non-instance");return privateMap.get(receiver)}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_bulk_action=_interopRequireDefault(_bulk_action),_templates=_interopRequireDefault(_templates),_modal_delete_cancel=_interopRequireDefault(_modal_delete_cancel),_modal_events=_interopRequireDefault(_modal_events);const Selectors_selectBulkItemCheckbox='input[type="checkbox"][name="selectedusers"]:checked';var _cmid=new WeakMap,_sesskey=new WeakMap;class _default extends _bulk_action.default{constructor(cmid,sesskey){super(),_classPrivateFieldInitSpec(this,_cmid,{writable:!0,value:void 0}),_classPrivateFieldInitSpec(this,_sesskey,{writable:!0,value:void 0}),_classPrivateFieldSet(this,_cmid,cmid),_classPrivateFieldSet(this,_sesskey,sesskey)}getBulkActionTriggerSelector(){return'[data-type="bulkactions"] [data-action="removesubmission"]'}async triggerBulkAction(){const selectedUsers=[...document.querySelectorAll(Selectors_selectBulkItemCheckbox)].map((checkbox=>checkbox.value)),modal=await _modal_delete_cancel.default.create({title:await(0,_str.getString)("removesubmission","mod_assign"),buttons:{save:await(0,_str.getString)("batchoperationremovesubmission","mod_assign")},body:_templates.default.render("mod_assign/bulkactions/grading/bulk_action_modal_body",{text:await(0,_str.getString)("batchoperationconfirmremovesubmission","mod_assign"),operation:"removesubmission",cmid:_classPrivateFieldGet(this,_cmid),selectedusers:selectedUsers.join(","),sesskey:_classPrivateFieldGet(this,_sesskey)}),show:!0,removeOnClose:!0});modal.getRoot().on(_modal_events.default.delete,(e=>{e.preventDefault(),modal.getRoot().find("form").submit()}))}async renderBulkActionTrigger(showInDropdown,index){return _templates.default.render("mod_assign/bulkactions/grading/bulk_delete_trigger",{showindropdown:showInDropdown,isfirst:0===index})}}return _exports.default=_default,_exports.default}));
|
||||
|
||||
//# sourceMappingURL=delete.min.js.map
|
File diff suppressed because one or more lines are too long
@ -1,3 +1,3 @@
|
||||
define("mod_assign/bulkactions/grading/extend",["exports","core/bulkactions/bulk_action","core/notification","core/templates","core/str"],(function(_exports,_bulk_action,_notification,_templates,_str){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _classPrivateFieldInitSpec(obj,privateMap,value){!function(obj,privateCollection){if(privateCollection.has(obj))throw new TypeError("Cannot initialize the same private elements twice on an object")}(obj,privateMap),privateMap.set(obj,value)}function _classPrivateFieldSet(receiver,privateMap,value){return function(receiver,descriptor,value){if(descriptor.set)descriptor.set.call(receiver,value);else{if(!descriptor.writable)throw new TypeError("attempted to set read only private field");descriptor.value=value}}(receiver,_classExtractFieldDescriptor(receiver,privateMap,"set"),value),value}function _classExtractFieldDescriptor(receiver,privateMap,action){if(!privateMap.has(receiver))throw new TypeError("attempted to "+action+" private field on non-instance");return privateMap.get(receiver)}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_bulk_action=_interopRequireDefault(_bulk_action),_notification=_interopRequireDefault(_notification),_templates=_interopRequireDefault(_templates);const Selectors_selectBulkItemCheckbox='input[type="checkbox"][name="selectedusers"]:checked';var _cmid=new WeakMap;class _default extends _bulk_action.default{constructor(cmid){super(),_classPrivateFieldInitSpec(this,_cmid,{writable:!0,value:void 0}),_classPrivateFieldSet(this,_cmid,cmid)}getBulkActionTriggerSelector(){return'[data-type="bulkactions"] [data-action="grantextension"]'}async triggerBulkAction(){_notification.default.saveCancelPromise((0,_str.getString)("grantextension","mod_assign"),(0,_str.getString)("batchoperationconfirmgrantextension","mod_assign"),(0,_str.getString)("batchoperationgrantextension","mod_assign")).then((()=>{const selectedUsers=[...document.querySelectorAll(Selectors_selectBulkItemCheckbox)].map((checkbox=>checkbox.value)),url=new URL(window.location.href);var receiver;url.searchParams.set("id",function(receiver,descriptor){return descriptor.get?descriptor.get.call(receiver):descriptor.value}(receiver=this,_classExtractFieldDescriptor(receiver,_cmid,"get"))),url.searchParams.set("action","grantextension"),url.searchParams.set("selectedusers",selectedUsers.join(",")),window.location=url})).catch((()=>{}))}async renderBulkActionTrigger(showInDropdown,index){return _templates.default.render("mod_assign/bulkactions/grading/bulk_extend_trigger",{showindropdown:showInDropdown,isfirst:0===index})}}return _exports.default=_default,_exports.default}));
|
||||
define("mod_assign/bulkactions/grading/extend",["exports","core/bulkactions/bulk_action","core/templates","core/str","core/modal_save_cancel","core/modal_events"],(function(_exports,_bulk_action,_templates,_str,_modal_save_cancel,_modal_events){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _classPrivateFieldInitSpec(obj,privateMap,value){!function(obj,privateCollection){if(privateCollection.has(obj))throw new TypeError("Cannot initialize the same private elements twice on an object")}(obj,privateMap),privateMap.set(obj,value)}function _classPrivateFieldGet(receiver,privateMap){return function(receiver,descriptor){if(descriptor.get)return descriptor.get.call(receiver);return descriptor.value}(receiver,_classExtractFieldDescriptor(receiver,privateMap,"get"))}function _classPrivateFieldSet(receiver,privateMap,value){return function(receiver,descriptor,value){if(descriptor.set)descriptor.set.call(receiver,value);else{if(!descriptor.writable)throw new TypeError("attempted to set read only private field");descriptor.value=value}}(receiver,_classExtractFieldDescriptor(receiver,privateMap,"set"),value),value}function _classExtractFieldDescriptor(receiver,privateMap,action){if(!privateMap.has(receiver))throw new TypeError("attempted to "+action+" private field on non-instance");return privateMap.get(receiver)}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_bulk_action=_interopRequireDefault(_bulk_action),_templates=_interopRequireDefault(_templates),_modal_save_cancel=_interopRequireDefault(_modal_save_cancel),_modal_events=_interopRequireDefault(_modal_events);const Selectors_selectBulkItemCheckbox='input[type="checkbox"][name="selectedusers"]:checked';var _cmid=new WeakMap,_sesskey=new WeakMap;class _default extends _bulk_action.default{constructor(cmid,sesskey){super(),_classPrivateFieldInitSpec(this,_cmid,{writable:!0,value:void 0}),_classPrivateFieldInitSpec(this,_sesskey,{writable:!0,value:void 0}),_classPrivateFieldSet(this,_cmid,cmid),_classPrivateFieldSet(this,_sesskey,sesskey)}getBulkActionTriggerSelector(){return'[data-type="bulkactions"] [data-action="grantextension"]'}async triggerBulkAction(){const selectedUsers=[...document.querySelectorAll(Selectors_selectBulkItemCheckbox)].map((checkbox=>checkbox.value)),modal=await _modal_save_cancel.default.create({title:await(0,_str.getString)("grantextension","mod_assign"),buttons:{save:await(0,_str.getString)("batchoperationgrantextension","mod_assign")},body:_templates.default.render("mod_assign/bulkactions/grading/bulk_action_modal_body",{text:await(0,_str.getString)("batchoperationconfirmgrantextension","mod_assign"),operation:"grantextension",cmid:_classPrivateFieldGet(this,_cmid),selectedusers:selectedUsers.join(","),sesskey:_classPrivateFieldGet(this,_sesskey)}),show:!0,removeOnClose:!0});modal.getRoot().on(_modal_events.default.save,(e=>{e.preventDefault(),modal.getRoot().find("form").submit()}))}async renderBulkActionTrigger(showInDropdown,index){return _templates.default.render("mod_assign/bulkactions/grading/bulk_extend_trigger",{showindropdown:showInDropdown,isfirst:0===index})}}return _exports.default=_default,_exports.default}));
|
||||
|
||||
//# sourceMappingURL=extend.min.js.map
|
@ -1 +1 @@
|
||||
{"version":3,"file":"extend.min.js","sources":["../../../src/bulkactions/grading/extend.js"],"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 * Class that defines the bulk action to extend the assignment deadline in the assignment grading page.\n *\n * @module mod_assign/bulkactions/grading/extend\n * @copyright 2024 Shamim Rezaie <shamim@moodle.com>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport BulkAction from 'core/bulkactions/bulk_action';\nimport Notification from 'core/notification';\nimport Templates from 'core/templates';\nimport {getString} from 'core/str';\n\nconst Selectors = {\n selectBulkItemCheckbox: 'input[type=\"checkbox\"][name=\"selectedusers\"]:checked',\n};\n\nexport default class extends BulkAction {\n /** @type {number} The course module ID. */\n #cmid;\n\n /**\n * The class constructor.\n *\n * @param {number} cmid The course module ID.\n */\n constructor(cmid) {\n super();\n this.#cmid = cmid;\n }\n\n getBulkActionTriggerSelector() {\n return '[data-type=\"bulkactions\"] [data-action=\"grantextension\"]';\n }\n\n async triggerBulkAction() {\n Notification.saveCancelPromise(\n getString('grantextension', 'mod_assign'),\n getString('batchoperationconfirmgrantextension', 'mod_assign'),\n getString('batchoperationgrantextension', 'mod_assign'),\n ).then(() => {\n const selectedUsers = [...document.querySelectorAll(Selectors.selectBulkItemCheckbox)].map(checkbox => checkbox.value);\n const url = new URL(window.location.href);\n url.searchParams.set('id', this.#cmid);\n url.searchParams.set('action', 'grantextension');\n url.searchParams.set('selectedusers', selectedUsers.join(','));\n window.location = url;\n\n return;\n }).catch(() => {\n return;\n });\n }\n\n async renderBulkActionTrigger(showInDropdown, index) {\n return Templates.render('mod_assign/bulkactions/grading/bulk_extend_trigger', {\n showindropdown: showInDropdown,\n isfirst: index === 0,\n });\n }\n}\n"],"names":["Selectors","BulkAction","constructor","cmid","getBulkActionTriggerSelector","saveCancelPromise","then","selectedUsers","document","querySelectorAll","map","checkbox","value","url","URL","window","location","href","searchParams","set","this","join","catch","showInDropdown","index","Templates","render","showindropdown","isfirst"],"mappings":"0yCA4BMA,iCACsB,oGAGCC,qBASzBC,YAAYC,iHAEKA,MAGjBC,qCACW,2GAIMC,mBACT,kBAAU,iBAAkB,eAC5B,kBAAU,sCAAuC,eACjD,kBAAU,+BAAgC,eAC5CC,MAAK,WACGC,cAAgB,IAAIC,SAASC,iBAAiBT,mCAAmCU,KAAIC,UAAYA,SAASC,QAC1GC,IAAM,IAAIC,IAAIC,OAAOC,SAASC,mBACpCJ,IAAIK,aAAaC,IAAI,kHAAMC,0DAC3BP,IAAIK,aAAaC,IAAI,SAAU,kBAC/BN,IAAIK,aAAaC,IAAI,gBAAiBZ,cAAcc,KAAK,MACzDN,OAAOC,SAAWH,OAGnBS,OAAM,uCAKiBC,eAAgBC,cACnCC,mBAAUC,OAAO,qDAAsD,CAC1EC,eAAgBJ,eAChBK,QAAmB,IAAVJ"}
|
||||
{"version":3,"file":"extend.min.js","sources":["../../../src/bulkactions/grading/extend.js"],"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 * Class that defines the bulk action to extend the assignment deadline in the assignment grading page.\n *\n * @module mod_assign/bulkactions/grading/extend\n * @copyright 2024 Shamim Rezaie <shamim@moodle.com>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport BulkAction from 'core/bulkactions/bulk_action';\nimport Templates from 'core/templates';\nimport {getString} from 'core/str';\nimport SaveCancelModal from 'core/modal_save_cancel';\nimport ModalEvents from 'core/modal_events';\n\nconst Selectors = {\n selectBulkItemCheckbox: 'input[type=\"checkbox\"][name=\"selectedusers\"]:checked',\n};\n\nexport default class extends BulkAction {\n /** @type {number} The course module ID. */\n #cmid;\n\n /** @type {string} The session key. */\n #sesskey;\n\n /**\n * The class constructor.\n *\n * @param {number} cmid The course module ID.\n * @param {string} sesskey The session key.\n */\n constructor(cmid, sesskey) {\n super();\n this.#cmid = cmid;\n this.#sesskey = sesskey;\n }\n\n getBulkActionTriggerSelector() {\n return '[data-type=\"bulkactions\"] [data-action=\"grantextension\"]';\n }\n\n async triggerBulkAction() {\n const selectedUsers = [...document.querySelectorAll(Selectors.selectBulkItemCheckbox)].map(checkbox => checkbox.value);\n\n const modal = await SaveCancelModal.create({\n title: await getString('grantextension', 'mod_assign'),\n buttons: {\n save: await getString('batchoperationgrantextension', 'mod_assign'),\n },\n body: Templates.render('mod_assign/bulkactions/grading/bulk_action_modal_body', {\n text: await getString('batchoperationconfirmgrantextension', 'mod_assign'),\n operation: 'grantextension',\n cmid: this.#cmid,\n selectedusers: selectedUsers.join(','),\n sesskey: this.#sesskey\n }),\n show: true,\n removeOnClose: true,\n });\n\n // Handle save event.\n modal.getRoot().on(ModalEvents.save, (e) => {\n e.preventDefault();\n modal.getRoot().find('form').submit();\n });\n }\n\n async renderBulkActionTrigger(showInDropdown, index) {\n return Templates.render('mod_assign/bulkactions/grading/bulk_extend_trigger', {\n showindropdown: showInDropdown,\n isfirst: index === 0,\n });\n }\n}\n"],"names":["Selectors","BulkAction","constructor","cmid","sesskey","getBulkActionTriggerSelector","selectedUsers","document","querySelectorAll","map","checkbox","value","modal","SaveCancelModal","create","title","buttons","save","body","Templates","render","text","operation","this","selectedusers","join","show","removeOnClose","getRoot","on","ModalEvents","e","preventDefault","find","submit","showInDropdown","index","showindropdown","isfirst"],"mappings":"+nDA6BMA,iCACsB,yHAGCC,qBAazBC,YAAYC,KAAMC,yLAEDD,0CACGC,SAGpBC,qCACW,2FAIDC,cAAgB,IAAIC,SAASC,iBAAiBR,mCAAmCS,KAAIC,UAAYA,SAASC,QAE1GC,YAAcC,2BAAgBC,OAAO,CACvCC,YAAa,kBAAU,iBAAkB,cACzCC,QAAS,CACLC,WAAY,kBAAU,+BAAgC,eAE1DC,KAAMC,mBAAUC,OAAO,wDAAyD,CAC5EC,WAAY,kBAAU,sCAAuC,cAC7DC,UAAW,iBACXnB,2BAAMoB,YACNC,cAAelB,cAAcmB,KAAK,KAClCrB,8BAASmB,iBAEbG,MAAM,EACNC,eAAe,IAInBf,MAAMgB,UAAUC,GAAGC,sBAAYb,MAAOc,IAClCA,EAAEC,iBACFpB,MAAMgB,UAAUK,KAAK,QAAQC,0CAIPC,eAAgBC,cACnCjB,mBAAUC,OAAO,qDAAsD,CAC1EiB,eAAgBF,eAChBG,QAAmB,IAAVF"}
|
@ -1,3 +1,3 @@
|
||||
define("mod_assign/bulkactions/grading/general_action",["exports","core/bulkactions/bulk_action","core/notification","core/templates"],(function(_exports,_bulk_action,_notification,_templates){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _classPrivateFieldInitSpec(obj,privateMap,value){!function(obj,privateCollection){if(privateCollection.has(obj))throw new TypeError("Cannot initialize the same private elements twice on an object")}(obj,privateMap),privateMap.set(obj,value)}function _classPrivateFieldGet(receiver,privateMap){return function(receiver,descriptor){if(descriptor.get)return descriptor.get.call(receiver);return descriptor.value}(receiver,_classExtractFieldDescriptor(receiver,privateMap,"get"))}function _classPrivateFieldSet(receiver,privateMap,value){return function(receiver,descriptor,value){if(descriptor.set)descriptor.set.call(receiver,value);else{if(!descriptor.writable)throw new TypeError("attempted to set read only private field");descriptor.value=value}}(receiver,_classExtractFieldDescriptor(receiver,privateMap,"set"),value),value}function _classExtractFieldDescriptor(receiver,privateMap,action){if(!privateMap.has(receiver))throw new TypeError("attempted to "+action+" private field on non-instance");return privateMap.get(receiver)}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_bulk_action=_interopRequireDefault(_bulk_action),_notification=_interopRequireDefault(_notification),_templates=_interopRequireDefault(_templates);const Selectors_selectBulkItemCheckbox='input[type="checkbox"][name="selectedusers"]:checked';var _cmid=new WeakMap,_buttonIcon=new WeakMap,_buttonLabel=new WeakMap,_confirmationTitle=new WeakMap,_confirmationQuestion=new WeakMap,_confirmationYes=new WeakMap,_sesskey=new WeakMap;class _default extends _bulk_action.default{constructor(cmid,sesskey,actionKey,buttonLabel,buttonIcon,confirmationTitle,confirmationQuestion,confirmationYes){var obj,key,value;super(),value=void 0,(key="actionKey")in(obj=this)?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,_classPrivateFieldInitSpec(this,_cmid,{writable:!0,value:void 0}),_classPrivateFieldInitSpec(this,_buttonIcon,{writable:!0,value:void 0}),_classPrivateFieldInitSpec(this,_buttonLabel,{writable:!0,value:void 0}),_classPrivateFieldInitSpec(this,_confirmationTitle,{writable:!0,value:void 0}),_classPrivateFieldInitSpec(this,_confirmationQuestion,{writable:!0,value:void 0}),_classPrivateFieldInitSpec(this,_confirmationYes,{writable:!0,value:void 0}),_classPrivateFieldInitSpec(this,_sesskey,{writable:!0,value:void 0}),_classPrivateFieldSet(this,_cmid,cmid),_classPrivateFieldSet(this,_sesskey,sesskey),this.actionKey=actionKey,_classPrivateFieldSet(this,_buttonLabel,buttonLabel),_classPrivateFieldSet(this,_buttonIcon,buttonIcon),_classPrivateFieldSet(this,_confirmationTitle,confirmationTitle),_classPrivateFieldSet(this,_confirmationQuestion,confirmationQuestion),_classPrivateFieldSet(this,_confirmationYes,confirmationYes)}getBulkActionTriggerSelector(){return'[data-type="bulkactions"] [data-action="'.concat(this.actionKey,'"]')}async triggerBulkAction(){_notification.default.saveCancelPromise(_classPrivateFieldGet(this,_confirmationTitle),_classPrivateFieldGet(this,_confirmationQuestion),_classPrivateFieldGet(this,_confirmationYes)).then((()=>{const selectedUsers=[...document.querySelectorAll(Selectors_selectBulkItemCheckbox)].map((checkbox=>checkbox.value)),url=new URL(window.location.href);url.searchParams.set("id",_classPrivateFieldGet(this,_cmid));const form=document.createElement("form");form.method="POST",form.action=url.toString(),((form,hiddenInputs)=>{for(const[name,value]of Object.entries(hiddenInputs)){const input=document.createElement("input");input.type="hidden",input.name=name,input.value=value,form.appendChild(input)}})(form,{action:"gradingbatchoperation",operation:this.actionKey,selectedusers:selectedUsers.join(","),sesskey:_classPrivateFieldGet(this,_sesskey)}),document.body.appendChild(form),form.submit(),form.remove()})).catch((()=>{}))}async renderBulkActionTrigger(showInDropdown,index){return _templates.default.render("mod_assign/bulkactions/grading/bulk_general_action_trigger",{action:this.actionKey,title:await _classPrivateFieldGet(this,_buttonLabel),icon:await _classPrivateFieldGet(this,_buttonIcon),showindropdown:showInDropdown,isfirst:0===index})}}return _exports.default=_default,_exports.default}));
|
||||
define("mod_assign/bulkactions/grading/general_action",["exports","core/bulkactions/bulk_action","core/templates","core/modal_save_cancel","core/modal_events"],(function(_exports,_bulk_action,_templates,_modal_save_cancel,_modal_events){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _classPrivateFieldInitSpec(obj,privateMap,value){!function(obj,privateCollection){if(privateCollection.has(obj))throw new TypeError("Cannot initialize the same private elements twice on an object")}(obj,privateMap),privateMap.set(obj,value)}function _classPrivateFieldGet(receiver,privateMap){return function(receiver,descriptor){if(descriptor.get)return descriptor.get.call(receiver);return descriptor.value}(receiver,_classExtractFieldDescriptor(receiver,privateMap,"get"))}function _classPrivateFieldSet(receiver,privateMap,value){return function(receiver,descriptor,value){if(descriptor.set)descriptor.set.call(receiver,value);else{if(!descriptor.writable)throw new TypeError("attempted to set read only private field");descriptor.value=value}}(receiver,_classExtractFieldDescriptor(receiver,privateMap,"set"),value),value}function _classExtractFieldDescriptor(receiver,privateMap,action){if(!privateMap.has(receiver))throw new TypeError("attempted to "+action+" private field on non-instance");return privateMap.get(receiver)}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_bulk_action=_interopRequireDefault(_bulk_action),_templates=_interopRequireDefault(_templates),_modal_save_cancel=_interopRequireDefault(_modal_save_cancel),_modal_events=_interopRequireDefault(_modal_events);const Selectors_selectBulkItemCheckbox='input[type="checkbox"][name="selectedusers"]:checked';var _cmid=new WeakMap,_buttonIcon=new WeakMap,_buttonLabel=new WeakMap,_confirmationTitle=new WeakMap,_confirmationQuestion=new WeakMap,_confirmationYes=new WeakMap,_sesskey=new WeakMap;class _default extends _bulk_action.default{constructor(cmid,sesskey,actionKey,buttonLabel,buttonIcon,confirmationTitle,confirmationQuestion,confirmationYes){var obj,key,value;super(),value=void 0,(key="actionKey")in(obj=this)?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,_classPrivateFieldInitSpec(this,_cmid,{writable:!0,value:void 0}),_classPrivateFieldInitSpec(this,_buttonIcon,{writable:!0,value:void 0}),_classPrivateFieldInitSpec(this,_buttonLabel,{writable:!0,value:void 0}),_classPrivateFieldInitSpec(this,_confirmationTitle,{writable:!0,value:void 0}),_classPrivateFieldInitSpec(this,_confirmationQuestion,{writable:!0,value:void 0}),_classPrivateFieldInitSpec(this,_confirmationYes,{writable:!0,value:void 0}),_classPrivateFieldInitSpec(this,_sesskey,{writable:!0,value:void 0}),_classPrivateFieldSet(this,_cmid,cmid),_classPrivateFieldSet(this,_sesskey,sesskey),this.actionKey=actionKey,_classPrivateFieldSet(this,_buttonLabel,buttonLabel),_classPrivateFieldSet(this,_buttonIcon,buttonIcon),_classPrivateFieldSet(this,_confirmationTitle,confirmationTitle),_classPrivateFieldSet(this,_confirmationQuestion,confirmationQuestion),_classPrivateFieldSet(this,_confirmationYes,confirmationYes)}getBulkActionTriggerSelector(){return'[data-type="bulkactions"] [data-action="'.concat(this.actionKey,'"]')}async triggerBulkAction(){const selectedUsers=[...document.querySelectorAll(Selectors_selectBulkItemCheckbox)].map((checkbox=>checkbox.value)),modal=await _modal_save_cancel.default.create({title:await _classPrivateFieldGet(this,_confirmationTitle),buttons:{save:await _classPrivateFieldGet(this,_confirmationYes)},body:_templates.default.render("mod_assign/bulkactions/grading/bulk_action_modal_body",{text:await _classPrivateFieldGet(this,_confirmationQuestion),operation:this.actionKey,cmid:_classPrivateFieldGet(this,_cmid),selectedusers:selectedUsers.join(","),sesskey:_classPrivateFieldGet(this,_sesskey)}),show:!0,removeOnClose:!0});modal.getRoot().on(_modal_events.default.save,(e=>{e.preventDefault(),modal.getRoot().find("form").submit()}))}async renderBulkActionTrigger(showInDropdown,index){return _templates.default.render("mod_assign/bulkactions/grading/bulk_general_action_trigger",{action:this.actionKey,title:await _classPrivateFieldGet(this,_buttonLabel),icon:await _classPrivateFieldGet(this,_buttonIcon),showindropdown:showInDropdown,isfirst:0===index})}}return _exports.default=_default,_exports.default}));
|
||||
|
||||
//# sourceMappingURL=general_action.min.js.map
|
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
||||
{"version":3,"file":"message.min.js","sources":["../../../src/bulkactions/grading/message.js"],"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 * Bulk action for messaging users in the assignment grading page.\n *\n * @module mod_assign/bulkactions/grading/message\n * @copyright 2024 Shamim Rezaie <shamim@moodle.com>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport BulkAction from 'core/bulkactions/bulk_action';\nimport Templates from 'core/templates';\nimport {showModal as showMessageModal} from 'core_message/message_send_bulk';\n\nconst Selectors = {\n selectBulkItemCheckbox: 'input[type=\"checkbox\"][name=\"selectedusers\"]:checked',\n};\n\nexport default class extends BulkAction {\n getBulkActionTriggerSelector() {\n return '[data-type=\"bulkactions\"] [data-action=\"message\"]';\n }\n\n triggerBulkAction() {\n const selectedUsers = [...document.querySelectorAll(Selectors.selectBulkItemCheckbox)].map(checkbox => checkbox.value);\n showMessageModal(selectedUsers);\n }\n\n async renderBulkActionTrigger(showInDropdown, index) {\n return Templates.render('mod_assign/bulkactions/grading/bulk_message_trigger', {\n showindropdown: showInDropdown,\n isfirst: index === 0,\n });\n }\n}\n"],"names":["Selectors","BulkAction","getBulkActionTriggerSelector","triggerBulkAction","selectedUsers","document","querySelectorAll","map","checkbox","value","showInDropdown","index","Templates","render","showindropdown","isfirst"],"mappings":";;;;;;;2LA2BMA,iCACsB,8EAGCC,qBACzBC,qCACW,oDAGVC,0BACSC,cAAgB,IAAIC,SAASC,iBAAiBN,mCAAmCO,KAAIC,UAAYA,SAASC,yCAC9FL,6CAGQM,eAAgBC,cACnCC,mBAAUC,OAAO,sDAAuD,CAC3EC,eAAgBJ,eAChBK,QAAmB,IAAVJ"}
|
||||
{"version":3,"file":"message.min.js","sources":["../../../src/bulkactions/grading/message.js"],"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 * Bulk action for messaging users in the assignment grading page.\n *\n * @module mod_assign/bulkactions/grading/message\n * @copyright 2024 Shamim Rezaie <shamim@moodle.com>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport BulkAction from 'core/bulkactions/bulk_action';\nimport Templates from 'core/templates';\nimport {showModal as showMessageModal} from 'core_message/message_send_bulk';\n\nconst Selectors = {\n selectBulkItemCheckbox: 'input[type=\"checkbox\"][name=\"selectedusers\"]:checked',\n};\n\nexport default class extends BulkAction {\n getBulkActionTriggerSelector() {\n return '[data-type=\"bulkactions\"] [data-action=\"message\"]';\n }\n\n triggerBulkAction() {\n const selectedUsers = [...document.querySelectorAll(Selectors.selectBulkItemCheckbox)].map(checkbox => checkbox.value);\n showMessageModal(selectedUsers);\n }\n\n async renderBulkActionTrigger(showInDropdown, index) {\n return Templates.render('mod_assign/bulkactions/grading/bulk_message_trigger', {\n showindropdown: showInDropdown,\n isfirst: index === 0,\n });\n }\n}\n"],"names":["Selectors","BulkAction","getBulkActionTriggerSelector","triggerBulkAction","selectedUsers","document","querySelectorAll","map","checkbox","value","showInDropdown","index","Templates","render","showindropdown","isfirst"],"mappings":";;;;;;;2LA2BMA,iCACsB,8EAGCC,qBACzBC,qCACW,oDAGXC,0BACUC,cAAgB,IAAIC,SAASC,iBAAiBN,mCAAmCO,KAAIC,UAAYA,SAASC,yCAC/FL,6CAGSM,eAAgBC,cACnCC,mBAAUC,OAAO,sDAAuD,CAC3EC,eAAgBJ,eAChBK,QAAmB,IAAVJ"}
|
@ -1,3 +1,3 @@
|
||||
define("mod_assign/bulkactions/grading/setmarkingallocation",["exports","core/bulkactions/bulk_action","core/notification","core/templates","core/str"],(function(_exports,_bulk_action,_notification,_templates,_str){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _classPrivateFieldInitSpec(obj,privateMap,value){!function(obj,privateCollection){if(privateCollection.has(obj))throw new TypeError("Cannot initialize the same private elements twice on an object")}(obj,privateMap),privateMap.set(obj,value)}function _classPrivateFieldSet(receiver,privateMap,value){return function(receiver,descriptor,value){if(descriptor.set)descriptor.set.call(receiver,value);else{if(!descriptor.writable)throw new TypeError("attempted to set read only private field");descriptor.value=value}}(receiver,_classExtractFieldDescriptor(receiver,privateMap,"set"),value),value}function _classExtractFieldDescriptor(receiver,privateMap,action){if(!privateMap.has(receiver))throw new TypeError("attempted to "+action+" private field on non-instance");return privateMap.get(receiver)}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_bulk_action=_interopRequireDefault(_bulk_action),_notification=_interopRequireDefault(_notification),_templates=_interopRequireDefault(_templates);const Selectors_selectBulkItemCheckbox='input[type="checkbox"][name="selectedusers"]:checked';var _cmid=new WeakMap;class _default extends _bulk_action.default{constructor(cmid){super(),_classPrivateFieldInitSpec(this,_cmid,{writable:!0,value:void 0}),_classPrivateFieldSet(this,_cmid,cmid)}getBulkActionTriggerSelector(){return'[data-type="bulkactions"] [data-action="setmarkingallocation"]'}async triggerBulkAction(){_notification.default.saveCancelPromise((0,_str.getString)("setmarkingallocation","mod_assign"),(0,_str.getString)("batchoperationconfirmsetmarkingallocation","mod_assign"),(0,_str.getString)("batchoperationsetmarkingallocation","mod_assign")).then((()=>{const selectedUsers=[...document.querySelectorAll(Selectors_selectBulkItemCheckbox)].map((checkbox=>checkbox.value)),url=new URL(window.location.href);var receiver;url.searchParams.set("id",function(receiver,descriptor){return descriptor.get?descriptor.get.call(receiver):descriptor.value}(receiver=this,_classExtractFieldDescriptor(receiver,_cmid,"get"))),url.searchParams.set("action","viewbatchmarkingallocation"),url.searchParams.set("selectedusers",selectedUsers.join(",")),window.location=url})).catch((()=>{}))}async renderBulkActionTrigger(showInDropdown,index){return _templates.default.render("mod_assign/bulkactions/grading/bulk_setmarkingallocation_trigger",{showindropdown:showInDropdown,isfirst:0===index})}}return _exports.default=_default,_exports.default}));
|
||||
define("mod_assign/bulkactions/grading/setmarkingallocation",["exports","core/bulkactions/bulk_action","core/templates","core/str","core/modal_save_cancel","core/modal_events"],(function(_exports,_bulk_action,_templates,_str,_modal_save_cancel,_modal_events){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _classPrivateFieldInitSpec(obj,privateMap,value){!function(obj,privateCollection){if(privateCollection.has(obj))throw new TypeError("Cannot initialize the same private elements twice on an object")}(obj,privateMap),privateMap.set(obj,value)}function _classPrivateFieldGet(receiver,privateMap){return function(receiver,descriptor){if(descriptor.get)return descriptor.get.call(receiver);return descriptor.value}(receiver,_classExtractFieldDescriptor(receiver,privateMap,"get"))}function _classPrivateFieldSet(receiver,privateMap,value){return function(receiver,descriptor,value){if(descriptor.set)descriptor.set.call(receiver,value);else{if(!descriptor.writable)throw new TypeError("attempted to set read only private field");descriptor.value=value}}(receiver,_classExtractFieldDescriptor(receiver,privateMap,"set"),value),value}function _classExtractFieldDescriptor(receiver,privateMap,action){if(!privateMap.has(receiver))throw new TypeError("attempted to "+action+" private field on non-instance");return privateMap.get(receiver)}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_bulk_action=_interopRequireDefault(_bulk_action),_templates=_interopRequireDefault(_templates),_modal_save_cancel=_interopRequireDefault(_modal_save_cancel),_modal_events=_interopRequireDefault(_modal_events);const Selectors_selectBulkItemCheckbox='input[type="checkbox"][name="selectedusers"]:checked';var _cmid=new WeakMap,_sesskey=new WeakMap;class _default extends _bulk_action.default{constructor(cmid,sesskey){super(),_classPrivateFieldInitSpec(this,_cmid,{writable:!0,value:void 0}),_classPrivateFieldInitSpec(this,_sesskey,{writable:!0,value:void 0}),_classPrivateFieldSet(this,_cmid,cmid),_classPrivateFieldSet(this,_sesskey,sesskey)}getBulkActionTriggerSelector(){return'[data-type="bulkactions"] [data-action="setmarkingallocation"]'}async triggerBulkAction(){const selectedUsers=[...document.querySelectorAll(Selectors_selectBulkItemCheckbox)].map((checkbox=>checkbox.value)),modal=await _modal_save_cancel.default.create({title:await(0,_str.getString)("setmarkingallocation","mod_assign"),buttons:{save:await(0,_str.getString)("batchoperationsetmarkingallocation","mod_assign")},body:_templates.default.render("mod_assign/bulkactions/grading/bulk_action_modal_body",{text:await(0,_str.getString)("batchoperationconfirmsetmarkingallocation","mod_assign"),operation:"setmarkingallocation",cmid:_classPrivateFieldGet(this,_cmid),selectedusers:selectedUsers.join(","),sesskey:_classPrivateFieldGet(this,_sesskey)}),show:!0,removeOnClose:!0});modal.getRoot().on(_modal_events.default.save,(e=>{e.preventDefault(),modal.getRoot().find("form").submit()}))}async renderBulkActionTrigger(showInDropdown,index){return _templates.default.render("mod_assign/bulkactions/grading/bulk_setmarkingallocation_trigger",{showindropdown:showInDropdown,isfirst:0===index})}}return _exports.default=_default,_exports.default}));
|
||||
|
||||
//# sourceMappingURL=setmarkingallocation.min.js.map
|
@ -1 +1 @@
|
||||
{"version":3,"file":"setmarkingallocation.min.js","sources":["../../../src/bulkactions/grading/setmarkingallocation.js"],"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 * Bulk action for allocating markers in the assignment grading page.\n *\n * @module mod_assign/bulkactions/grading/setmarkingallocation\n * @copyright 2024 Shamim Rezaie <shamim@moodle.com>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport BulkAction from 'core/bulkactions/bulk_action';\nimport Notification from 'core/notification';\nimport Templates from 'core/templates';\nimport {getString} from 'core/str';\n\nconst Selectors = {\n selectBulkItemCheckbox: 'input[type=\"checkbox\"][name=\"selectedusers\"]:checked',\n};\n\nexport default class extends BulkAction {\n /** @type {number} The course module ID. */\n #cmid;\n\n /**\n * The class constructor.\n *\n * @param {number} cmid The course module ID.\n */\n constructor(cmid) {\n super();\n this.#cmid = cmid;\n }\n\n getBulkActionTriggerSelector() {\n return '[data-type=\"bulkactions\"] [data-action=\"setmarkingallocation\"]';\n }\n\n async triggerBulkAction() {\n Notification.saveCancelPromise(\n getString('setmarkingallocation', 'mod_assign'),\n getString('batchoperationconfirmsetmarkingallocation', 'mod_assign'),\n getString('batchoperationsetmarkingallocation', 'mod_assign'),\n ).then(() => {\n const selectedUsers = [...document.querySelectorAll(Selectors.selectBulkItemCheckbox)].map(checkbox => checkbox.value);\n const url = new URL(window.location.href);\n url.searchParams.set('id', this.#cmid);\n url.searchParams.set('action', 'viewbatchmarkingallocation');\n url.searchParams.set('selectedusers', selectedUsers.join(','));\n window.location = url;\n\n return;\n }).catch(() => {\n return;\n });\n }\n\n async renderBulkActionTrigger(showInDropdown, index) {\n return Templates.render('mod_assign/bulkactions/grading/bulk_setmarkingallocation_trigger', {\n showindropdown: showInDropdown,\n isfirst: index === 0,\n });\n }\n}\n"],"names":["Selectors","BulkAction","constructor","cmid","getBulkActionTriggerSelector","saveCancelPromise","then","selectedUsers","document","querySelectorAll","map","checkbox","value","url","URL","window","location","href","searchParams","set","this","join","catch","showInDropdown","index","Templates","render","showindropdown","isfirst"],"mappings":"wzCA4BMA,iCACsB,oGAGCC,qBASzBC,YAAYC,iHAEKA,MAGjBC,qCACW,iHAIMC,mBACT,kBAAU,uBAAwB,eAClC,kBAAU,4CAA6C,eACvD,kBAAU,qCAAsC,eAClDC,MAAK,WACGC,cAAgB,IAAIC,SAASC,iBAAiBT,mCAAmCU,KAAIC,UAAYA,SAASC,QAC1GC,IAAM,IAAIC,IAAIC,OAAOC,SAASC,mBACpCJ,IAAIK,aAAaC,IAAI,kHAAMC,0DAC3BP,IAAIK,aAAaC,IAAI,SAAU,8BAC/BN,IAAIK,aAAaC,IAAI,gBAAiBZ,cAAcc,KAAK,MACzDN,OAAOC,SAAWH,OAGnBS,OAAM,uCAKiBC,eAAgBC,cACnCC,mBAAUC,OAAO,mEAAoE,CACxFC,eAAgBJ,eAChBK,QAAmB,IAAVJ"}
|
||||
{"version":3,"file":"setmarkingallocation.min.js","sources":["../../../src/bulkactions/grading/setmarkingallocation.js"],"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 * Bulk action for allocating markers in the assignment grading page.\n *\n * @module mod_assign/bulkactions/grading/setmarkingallocation\n * @copyright 2024 Shamim Rezaie <shamim@moodle.com>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport BulkAction from 'core/bulkactions/bulk_action';\nimport Templates from 'core/templates';\nimport {getString} from 'core/str';\nimport SaveCancelModal from 'core/modal_save_cancel';\nimport ModalEvents from 'core/modal_events';\n\nconst Selectors = {\n selectBulkItemCheckbox: 'input[type=\"checkbox\"][name=\"selectedusers\"]:checked',\n};\n\nexport default class extends BulkAction {\n /** @type {number} The course module ID. */\n #cmid;\n\n /** @type {string} The session key. */\n #sesskey;\n\n /**\n * The class constructor.\n *\n * @param {number} cmid The course module ID.\n * @param {string} sesskey The session key.\n */\n constructor(cmid, sesskey) {\n super();\n this.#cmid = cmid;\n this.#sesskey = sesskey;\n }\n\n getBulkActionTriggerSelector() {\n return '[data-type=\"bulkactions\"] [data-action=\"setmarkingallocation\"]';\n }\n\n async triggerBulkAction() {\n const selectedUsers = [...document.querySelectorAll(Selectors.selectBulkItemCheckbox)].map(checkbox => checkbox.value);\n\n const modal = await SaveCancelModal.create({\n title: await getString('setmarkingallocation', 'mod_assign'),\n buttons: {\n save: await getString('batchoperationsetmarkingallocation', 'mod_assign'),\n },\n body: Templates.render('mod_assign/bulkactions/grading/bulk_action_modal_body', {\n text: await getString('batchoperationconfirmsetmarkingallocation', 'mod_assign'),\n operation: 'setmarkingallocation',\n cmid: this.#cmid,\n selectedusers: selectedUsers.join(','),\n sesskey: this.#sesskey\n }),\n show: true,\n removeOnClose: true,\n });\n\n // Handle save event.\n modal.getRoot().on(ModalEvents.save, (e) => {\n e.preventDefault();\n modal.getRoot().find('form').submit();\n });\n }\n\n async renderBulkActionTrigger(showInDropdown, index) {\n return Templates.render('mod_assign/bulkactions/grading/bulk_setmarkingallocation_trigger', {\n showindropdown: showInDropdown,\n isfirst: index === 0,\n });\n }\n}\n"],"names":["Selectors","BulkAction","constructor","cmid","sesskey","getBulkActionTriggerSelector","selectedUsers","document","querySelectorAll","map","checkbox","value","modal","SaveCancelModal","create","title","buttons","save","body","Templates","render","text","operation","this","selectedusers","join","show","removeOnClose","getRoot","on","ModalEvents","e","preventDefault","find","submit","showInDropdown","index","showindropdown","isfirst"],"mappings":"6oDA6BMA,iCACsB,yHAGCC,qBAazBC,YAAYC,KAAMC,yLAEDD,0CACGC,SAGpBC,qCACW,iGAIDC,cAAgB,IAAIC,SAASC,iBAAiBR,mCAAmCS,KAAIC,UAAYA,SAASC,QAE1GC,YAAcC,2BAAgBC,OAAO,CACvCC,YAAa,kBAAU,uBAAwB,cAC/CC,QAAS,CACLC,WAAY,kBAAU,qCAAsC,eAEhEC,KAAMC,mBAAUC,OAAO,wDAAyD,CAC5EC,WAAY,kBAAU,4CAA6C,cACnEC,UAAW,uBACXnB,2BAAMoB,YACNC,cAAelB,cAAcmB,KAAK,KAClCrB,8BAASmB,iBAEbG,MAAM,EACNC,eAAe,IAInBf,MAAMgB,UAAUC,GAAGC,sBAAYb,MAAOc,IAClCA,EAAEC,iBACFpB,MAAMgB,UAAUK,KAAK,QAAQC,0CAIPC,eAAgBC,cACnCjB,mBAAUC,OAAO,mEAAoE,CACxFiB,eAAgBF,eAChBG,QAAmB,IAAVF"}
|
@ -1,3 +1,3 @@
|
||||
define("mod_assign/bulkactions/grading/setmarkingworkflowstate",["exports","core/bulkactions/bulk_action","core/notification","core/templates","core/str"],(function(_exports,_bulk_action,_notification,_templates,_str){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _classPrivateFieldInitSpec(obj,privateMap,value){!function(obj,privateCollection){if(privateCollection.has(obj))throw new TypeError("Cannot initialize the same private elements twice on an object")}(obj,privateMap),privateMap.set(obj,value)}function _classPrivateFieldSet(receiver,privateMap,value){return function(receiver,descriptor,value){if(descriptor.set)descriptor.set.call(receiver,value);else{if(!descriptor.writable)throw new TypeError("attempted to set read only private field");descriptor.value=value}}(receiver,_classExtractFieldDescriptor(receiver,privateMap,"set"),value),value}function _classExtractFieldDescriptor(receiver,privateMap,action){if(!privateMap.has(receiver))throw new TypeError("attempted to "+action+" private field on non-instance");return privateMap.get(receiver)}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_bulk_action=_interopRequireDefault(_bulk_action),_notification=_interopRequireDefault(_notification),_templates=_interopRequireDefault(_templates);const Selectors_selectBulkItemCheckbox='input[type="checkbox"][name="selectedusers"]:checked';var _cmid=new WeakMap;class _default extends _bulk_action.default{constructor(cmid){super(),_classPrivateFieldInitSpec(this,_cmid,{writable:!0,value:void 0}),_classPrivateFieldSet(this,_cmid,cmid)}getBulkActionTriggerSelector(){return'[data-type="bulkactions"] [data-action="setmarkingworkflowstate"]'}async triggerBulkAction(){_notification.default.saveCancelPromise((0,_str.getString)("setmarkingworkflowstate","mod_assign"),(0,_str.getString)("batchoperationconfirmsetmarkingworkflowstate","mod_assign"),(0,_str.getString)("batchoperationsetmarkingworkflowstate","mod_assign")).then((()=>{const selectedUsers=[...document.querySelectorAll(Selectors_selectBulkItemCheckbox)].map((checkbox=>checkbox.value)),url=new URL(window.location.href);var receiver;url.searchParams.set("id",function(receiver,descriptor){return descriptor.get?descriptor.get.call(receiver):descriptor.value}(receiver=this,_classExtractFieldDescriptor(receiver,_cmid,"get"))),url.searchParams.set("action","viewbatchsetmarkingworkflowstate"),url.searchParams.set("selectedusers",selectedUsers.join(",")),window.location=url})).catch((()=>{}))}async renderBulkActionTrigger(showInDropdown,index){return _templates.default.render("mod_assign/bulkactions/grading/bulk_setmarkingworkflowstate_trigger",{showindropdown:showInDropdown,isfirst:0===index})}}return _exports.default=_default,_exports.default}));
|
||||
define("mod_assign/bulkactions/grading/setmarkingworkflowstate",["exports","core/bulkactions/bulk_action","core/templates","core/str","core/modal_save_cancel","core/modal_events"],(function(_exports,_bulk_action,_templates,_str,_modal_save_cancel,_modal_events){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _classPrivateFieldInitSpec(obj,privateMap,value){!function(obj,privateCollection){if(privateCollection.has(obj))throw new TypeError("Cannot initialize the same private elements twice on an object")}(obj,privateMap),privateMap.set(obj,value)}function _classPrivateFieldGet(receiver,privateMap){return function(receiver,descriptor){if(descriptor.get)return descriptor.get.call(receiver);return descriptor.value}(receiver,_classExtractFieldDescriptor(receiver,privateMap,"get"))}function _classPrivateFieldSet(receiver,privateMap,value){return function(receiver,descriptor,value){if(descriptor.set)descriptor.set.call(receiver,value);else{if(!descriptor.writable)throw new TypeError("attempted to set read only private field");descriptor.value=value}}(receiver,_classExtractFieldDescriptor(receiver,privateMap,"set"),value),value}function _classExtractFieldDescriptor(receiver,privateMap,action){if(!privateMap.has(receiver))throw new TypeError("attempted to "+action+" private field on non-instance");return privateMap.get(receiver)}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_bulk_action=_interopRequireDefault(_bulk_action),_templates=_interopRequireDefault(_templates),_modal_save_cancel=_interopRequireDefault(_modal_save_cancel),_modal_events=_interopRequireDefault(_modal_events);const Selectors_selectBulkItemCheckbox='input[type="checkbox"][name="selectedusers"]:checked';var _cmid=new WeakMap,_sesskey=new WeakMap;class _default extends _bulk_action.default{constructor(cmid,sesskey){super(),_classPrivateFieldInitSpec(this,_cmid,{writable:!0,value:void 0}),_classPrivateFieldInitSpec(this,_sesskey,{writable:!0,value:void 0}),_classPrivateFieldSet(this,_cmid,cmid),_classPrivateFieldSet(this,_sesskey,sesskey)}getBulkActionTriggerSelector(){return'[data-type="bulkactions"] [data-action="setmarkingworkflowstate"]'}async triggerBulkAction(){const selectedUsers=[...document.querySelectorAll(Selectors_selectBulkItemCheckbox)].map((checkbox=>checkbox.value)),modal=await _modal_save_cancel.default.create({title:await(0,_str.getString)("setmarkingworkflowstate","mod_assign"),buttons:{save:await(0,_str.getString)("batchoperationsetmarkingworkflowstate","mod_assign")},body:_templates.default.render("mod_assign/bulkactions/grading/bulk_action_modal_body",{text:await(0,_str.getString)("batchoperationconfirmsetmarkingworkflowstate","mod_assign"),operation:"setmarkingworkflowstate",cmid:_classPrivateFieldGet(this,_cmid),selectedusers:selectedUsers.join(","),sesskey:_classPrivateFieldGet(this,_sesskey)}),show:!0,removeOnClose:!0});modal.getRoot().on(_modal_events.default.save,(e=>{e.preventDefault(),modal.getRoot().find("form").submit()}))}async renderBulkActionTrigger(showInDropdown,index){return _templates.default.render("mod_assign/bulkactions/grading/bulk_setmarkingworkflowstate_trigger",{showindropdown:showInDropdown,isfirst:0===index})}}return _exports.default=_default,_exports.default}));
|
||||
|
||||
//# sourceMappingURL=setmarkingworkflowstate.min.js.map
|
@ -1 +1 @@
|
||||
{"version":3,"file":"setmarkingworkflowstate.min.js","sources":["../../../src/bulkactions/grading/setmarkingworkflowstate.js"],"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 * Class that defines the bulk action for setting marking workflow state in the assignment grading page.\n *\n * @module mod_assign/bulkactions/grading/setmarkingworkflowstate\n * @copyright 2024 Shamim Rezaie <shamim@moodle.com>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport BulkAction from 'core/bulkactions/bulk_action';\nimport Notification from 'core/notification';\nimport Templates from 'core/templates';\nimport {getString} from 'core/str';\n\nconst Selectors = {\n selectBulkItemCheckbox: 'input[type=\"checkbox\"][name=\"selectedusers\"]:checked',\n};\n\nexport default class extends BulkAction {\n /** @type {number} The course module ID. */\n #cmid;\n\n /**\n * The class constructor.\n *\n * @param {number} cmid The course module ID.\n */\n constructor(cmid) {\n super();\n this.#cmid = cmid;\n }\n\n getBulkActionTriggerSelector() {\n return '[data-type=\"bulkactions\"] [data-action=\"setmarkingworkflowstate\"]';\n }\n\n async triggerBulkAction() {\n Notification.saveCancelPromise(\n getString('setmarkingworkflowstate', 'mod_assign'),\n getString('batchoperationconfirmsetmarkingworkflowstate', 'mod_assign'),\n getString('batchoperationsetmarkingworkflowstate', 'mod_assign'),\n ).then(() => {\n const selectedUsers = [...document.querySelectorAll(Selectors.selectBulkItemCheckbox)].map(checkbox => checkbox.value);\n const url = new URL(window.location.href);\n url.searchParams.set('id', this.#cmid);\n url.searchParams.set('action', 'viewbatchsetmarkingworkflowstate');\n url.searchParams.set('selectedusers', selectedUsers.join(','));\n window.location = url;\n\n return;\n }).catch(() => {\n return;\n });\n }\n\n async renderBulkActionTrigger(showInDropdown, index) {\n return Templates.render('mod_assign/bulkactions/grading/bulk_setmarkingworkflowstate_trigger', {\n showindropdown: showInDropdown,\n isfirst: index === 0,\n });\n }\n}\n"],"names":["Selectors","BulkAction","constructor","cmid","getBulkActionTriggerSelector","saveCancelPromise","then","selectedUsers","document","querySelectorAll","map","checkbox","value","url","URL","window","location","href","searchParams","set","this","join","catch","showInDropdown","index","Templates","render","showindropdown","isfirst"],"mappings":"2zCA4BMA,iCACsB,oGAGCC,qBASzBC,YAAYC,iHAEKA,MAGjBC,qCACW,oHAIMC,mBACT,kBAAU,0BAA2B,eACrC,kBAAU,+CAAgD,eAC1D,kBAAU,wCAAyC,eACrDC,MAAK,WACGC,cAAgB,IAAIC,SAASC,iBAAiBT,mCAAmCU,KAAIC,UAAYA,SAASC,QAC1GC,IAAM,IAAIC,IAAIC,OAAOC,SAASC,mBACpCJ,IAAIK,aAAaC,IAAI,kHAAMC,0DAC3BP,IAAIK,aAAaC,IAAI,SAAU,oCAC/BN,IAAIK,aAAaC,IAAI,gBAAiBZ,cAAcc,KAAK,MACzDN,OAAOC,SAAWH,OAGnBS,OAAM,uCAKiBC,eAAgBC,cACnCC,mBAAUC,OAAO,sEAAuE,CAC3FC,eAAgBJ,eAChBK,QAAmB,IAAVJ"}
|
||||
{"version":3,"file":"setmarkingworkflowstate.min.js","sources":["../../../src/bulkactions/grading/setmarkingworkflowstate.js"],"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 * Class that defines the bulk action for setting marking workflow state in the assignment grading page.\n *\n * @module mod_assign/bulkactions/grading/setmarkingworkflowstate\n * @copyright 2024 Shamim Rezaie <shamim@moodle.com>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport BulkAction from 'core/bulkactions/bulk_action';\nimport Templates from 'core/templates';\nimport {getString} from 'core/str';\nimport SaveCancelModal from 'core/modal_save_cancel';\nimport ModalEvents from 'core/modal_events';\n\nconst Selectors = {\n selectBulkItemCheckbox: 'input[type=\"checkbox\"][name=\"selectedusers\"]:checked',\n};\n\nexport default class extends BulkAction {\n /** @type {number} The course module ID. */\n #cmid;\n\n /** @type {string} The session key. */\n #sesskey;\n\n /**\n * The class constructor.\n *\n * @param {number} cmid The course module ID.\n * @param {string} sesskey The session key.\n */\n constructor(cmid, sesskey) {\n super();\n this.#cmid = cmid;\n this.#sesskey = sesskey;\n }\n\n getBulkActionTriggerSelector() {\n return '[data-type=\"bulkactions\"] [data-action=\"setmarkingworkflowstate\"]';\n }\n\n async triggerBulkAction() {\n const selectedUsers = [...document.querySelectorAll(Selectors.selectBulkItemCheckbox)].map(checkbox => checkbox.value);\n\n const modal = await SaveCancelModal.create({\n title: await getString('setmarkingworkflowstate', 'mod_assign'),\n buttons: {\n save: await getString('batchoperationsetmarkingworkflowstate', 'mod_assign'),\n },\n body: Templates.render('mod_assign/bulkactions/grading/bulk_action_modal_body', {\n text: await getString('batchoperationconfirmsetmarkingworkflowstate', 'mod_assign'),\n operation: 'setmarkingworkflowstate',\n cmid: this.#cmid,\n selectedusers: selectedUsers.join(','),\n sesskey: this.#sesskey\n }),\n show: true,\n removeOnClose: true,\n });\n\n // Handle save event.\n modal.getRoot().on(ModalEvents.save, (e) => {\n e.preventDefault();\n modal.getRoot().find('form').submit();\n });\n }\n\n async renderBulkActionTrigger(showInDropdown, index) {\n return Templates.render('mod_assign/bulkactions/grading/bulk_setmarkingworkflowstate_trigger', {\n showindropdown: showInDropdown,\n isfirst: index === 0,\n });\n }\n}\n"],"names":["Selectors","BulkAction","constructor","cmid","sesskey","getBulkActionTriggerSelector","selectedUsers","document","querySelectorAll","map","checkbox","value","modal","SaveCancelModal","create","title","buttons","save","body","Templates","render","text","operation","this","selectedusers","join","show","removeOnClose","getRoot","on","ModalEvents","e","preventDefault","find","submit","showInDropdown","index","showindropdown","isfirst"],"mappings":"gpDA6BMA,iCACsB,yHAGCC,qBAazBC,YAAYC,KAAMC,yLAEDD,0CACGC,SAGpBC,qCACW,oGAIDC,cAAgB,IAAIC,SAASC,iBAAiBR,mCAAmCS,KAAIC,UAAYA,SAASC,QAE1GC,YAAcC,2BAAgBC,OAAO,CACvCC,YAAa,kBAAU,0BAA2B,cAClDC,QAAS,CACLC,WAAY,kBAAU,wCAAyC,eAEnEC,KAAMC,mBAAUC,OAAO,wDAAyD,CAC5EC,WAAY,kBAAU,+CAAgD,cACtEC,UAAW,0BACXnB,2BAAMoB,YACNC,cAAelB,cAAcmB,KAAK,KAClCrB,8BAASmB,iBAEbG,MAAM,EACNC,eAAe,IAInBf,MAAMgB,UAAUC,GAAGC,sBAAYb,MAAOc,IAClCA,EAAEC,iBACFpB,MAAMgB,UAAUK,KAAK,QAAQC,0CAIPC,eAAgBC,cACnCjB,mBAAUC,OAAO,sEAAuE,CAC3FiB,eAAgBF,eAChBG,QAAmB,IAAVF"}
|
@ -158,7 +158,7 @@ export default class extends BulkActions {
|
||||
}
|
||||
|
||||
if (this.#extend) {
|
||||
actions.push(new ExtendAction(this.#cmid));
|
||||
actions.push(new ExtendAction(this.#cmid, this.#sesskey));
|
||||
}
|
||||
|
||||
if (this.#grantAttempt) {
|
||||
@ -177,11 +177,11 @@ export default class extends BulkActions {
|
||||
}
|
||||
|
||||
if (this.#workflowState) {
|
||||
actions.push(new SetMarkingWorkflowStateAction(this.#cmid));
|
||||
actions.push(new SetMarkingWorkflowStateAction(this.#cmid, this.#sesskey));
|
||||
}
|
||||
|
||||
if (this.#markingAllocation) {
|
||||
actions.push(new SetMarkingAllocationAction(this.#cmid));
|
||||
actions.push(new SetMarkingAllocationAction(this.#cmid, this.#sesskey));
|
||||
}
|
||||
|
||||
if (this.#submissionDrafts) {
|
||||
|
@ -22,9 +22,10 @@
|
||||
*/
|
||||
|
||||
import BulkAction from 'core/bulkactions/bulk_action';
|
||||
import Notification from 'core/notification';
|
||||
import Templates from 'core/templates';
|
||||
import {getString} from 'core/str';
|
||||
import DeleteCancelModal from 'core/modal_delete_cancel';
|
||||
import ModalEvents from 'core/modal_events';
|
||||
|
||||
const Selectors = {
|
||||
selectBulkItemCheckbox: 'input[type="checkbox"][name="selectedusers"]:checked',
|
||||
@ -54,43 +55,28 @@ export default class extends BulkAction {
|
||||
}
|
||||
|
||||
async triggerBulkAction() {
|
||||
Notification.deleteCancelPromise(
|
||||
getString('removesubmission', 'mod_assign'),
|
||||
getString('batchoperationconfirmremovesubmission', 'mod_assign'),
|
||||
getString('batchoperationremovesubmission', 'mod_assign'),
|
||||
).then(() => {
|
||||
const selectedUsers = [...document.querySelectorAll(Selectors.selectBulkItemCheckbox)].map(checkbox => checkbox.value);
|
||||
const url = new URL(window.location.href);
|
||||
url.searchParams.set('id', this.#cmid);
|
||||
const selectedUsers = [...document.querySelectorAll(Selectors.selectBulkItemCheckbox)].map(checkbox => checkbox.value);
|
||||
|
||||
const form = document.createElement('form');
|
||||
form.method = 'POST';
|
||||
form.action = url.toString();
|
||||
|
||||
// Create hidden inputs for the form.
|
||||
((form, hiddenInputs) => {
|
||||
for (const [name, value] of Object.entries(hiddenInputs)) {
|
||||
const input = document.createElement('input');
|
||||
input.type = 'hidden';
|
||||
input.name = name;
|
||||
input.value = value;
|
||||
form.appendChild(input);
|
||||
}
|
||||
})(form, {
|
||||
action: 'gradingbatchoperation',
|
||||
const modal = await DeleteCancelModal.create({
|
||||
title: await getString('removesubmission', 'mod_assign'),
|
||||
buttons: {
|
||||
save: await getString('batchoperationremovesubmission', 'mod_assign'),
|
||||
},
|
||||
body: Templates.render('mod_assign/bulkactions/grading/bulk_action_modal_body', {
|
||||
text: await getString('batchoperationconfirmremovesubmission', 'mod_assign'),
|
||||
operation: 'removesubmission',
|
||||
cmid: this.#cmid,
|
||||
selectedusers: selectedUsers.join(','),
|
||||
sesskey: this.#sesskey,
|
||||
});
|
||||
sesskey: this.#sesskey
|
||||
}),
|
||||
show: true,
|
||||
removeOnClose: true,
|
||||
});
|
||||
|
||||
// Append the form to the body, submit it, and then remove it from the DOM.
|
||||
document.body.appendChild(form);
|
||||
form.submit();
|
||||
form.remove();
|
||||
|
||||
return;
|
||||
}).catch(() => {
|
||||
return;
|
||||
// Handle delete event.
|
||||
modal.getRoot().on(ModalEvents.delete, (e) => {
|
||||
e.preventDefault();
|
||||
modal.getRoot().find('form').submit();
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -22,9 +22,10 @@
|
||||
*/
|
||||
|
||||
import BulkAction from 'core/bulkactions/bulk_action';
|
||||
import Notification from 'core/notification';
|
||||
import Templates from 'core/templates';
|
||||
import {getString} from 'core/str';
|
||||
import SaveCancelModal from 'core/modal_save_cancel';
|
||||
import ModalEvents from 'core/modal_events';
|
||||
|
||||
const Selectors = {
|
||||
selectBulkItemCheckbox: 'input[type="checkbox"][name="selectedusers"]:checked',
|
||||
@ -34,14 +35,19 @@ export default class extends BulkAction {
|
||||
/** @type {number} The course module ID. */
|
||||
#cmid;
|
||||
|
||||
/** @type {string} The session key. */
|
||||
#sesskey;
|
||||
|
||||
/**
|
||||
* The class constructor.
|
||||
*
|
||||
* @param {number} cmid The course module ID.
|
||||
* @param {string} sesskey The session key.
|
||||
*/
|
||||
constructor(cmid) {
|
||||
constructor(cmid, sesskey) {
|
||||
super();
|
||||
this.#cmid = cmid;
|
||||
this.#sesskey = sesskey;
|
||||
}
|
||||
|
||||
getBulkActionTriggerSelector() {
|
||||
@ -49,21 +55,28 @@ export default class extends BulkAction {
|
||||
}
|
||||
|
||||
async triggerBulkAction() {
|
||||
Notification.saveCancelPromise(
|
||||
getString('grantextension', 'mod_assign'),
|
||||
getString('batchoperationconfirmgrantextension', 'mod_assign'),
|
||||
getString('batchoperationgrantextension', 'mod_assign'),
|
||||
).then(() => {
|
||||
const selectedUsers = [...document.querySelectorAll(Selectors.selectBulkItemCheckbox)].map(checkbox => checkbox.value);
|
||||
const url = new URL(window.location.href);
|
||||
url.searchParams.set('id', this.#cmid);
|
||||
url.searchParams.set('action', 'grantextension');
|
||||
url.searchParams.set('selectedusers', selectedUsers.join(','));
|
||||
window.location = url;
|
||||
const selectedUsers = [...document.querySelectorAll(Selectors.selectBulkItemCheckbox)].map(checkbox => checkbox.value);
|
||||
|
||||
return;
|
||||
}).catch(() => {
|
||||
return;
|
||||
const modal = await SaveCancelModal.create({
|
||||
title: await getString('grantextension', 'mod_assign'),
|
||||
buttons: {
|
||||
save: await getString('batchoperationgrantextension', 'mod_assign'),
|
||||
},
|
||||
body: Templates.render('mod_assign/bulkactions/grading/bulk_action_modal_body', {
|
||||
text: await getString('batchoperationconfirmgrantextension', 'mod_assign'),
|
||||
operation: 'grantextension',
|
||||
cmid: this.#cmid,
|
||||
selectedusers: selectedUsers.join(','),
|
||||
sesskey: this.#sesskey
|
||||
}),
|
||||
show: true,
|
||||
removeOnClose: true,
|
||||
});
|
||||
|
||||
// Handle save event.
|
||||
modal.getRoot().on(ModalEvents.save, (e) => {
|
||||
e.preventDefault();
|
||||
modal.getRoot().find('form').submit();
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -22,8 +22,9 @@
|
||||
*/
|
||||
|
||||
import BulkAction from 'core/bulkactions/bulk_action';
|
||||
import Notification from 'core/notification';
|
||||
import Templates from 'core/templates';
|
||||
import SaveCancelModal from 'core/modal_save_cancel';
|
||||
import ModalEvents from 'core/modal_events';
|
||||
|
||||
const Selectors = {
|
||||
selectBulkItemCheckbox: 'input[type="checkbox"][name="selectedusers"]:checked',
|
||||
@ -84,43 +85,28 @@ export default class extends BulkAction {
|
||||
}
|
||||
|
||||
async triggerBulkAction() {
|
||||
Notification.saveCancelPromise(
|
||||
this.#confirmationTitle,
|
||||
this.#confirmationQuestion,
|
||||
this.#confirmationYes,
|
||||
).then(() => {
|
||||
const selectedUsers = [...document.querySelectorAll(Selectors.selectBulkItemCheckbox)].map(checkbox => checkbox.value);
|
||||
const url = new URL(window.location.href);
|
||||
url.searchParams.set('id', this.#cmid);
|
||||
const selectedUsers = [...document.querySelectorAll(Selectors.selectBulkItemCheckbox)].map(checkbox => checkbox.value);
|
||||
|
||||
const form = document.createElement('form');
|
||||
form.method = 'POST';
|
||||
form.action = url.toString();
|
||||
|
||||
// Create hidden inputs for the form.
|
||||
((form, hiddenInputs) => {
|
||||
for (const [name, value] of Object.entries(hiddenInputs)) {
|
||||
const input = document.createElement('input');
|
||||
input.type = 'hidden';
|
||||
input.name = name;
|
||||
input.value = value;
|
||||
form.appendChild(input);
|
||||
}
|
||||
})(form, {
|
||||
action: 'gradingbatchoperation',
|
||||
const modal = await SaveCancelModal.create({
|
||||
title: await this.#confirmationTitle,
|
||||
buttons: {
|
||||
save: await this.#confirmationYes,
|
||||
},
|
||||
body: Templates.render('mod_assign/bulkactions/grading/bulk_action_modal_body', {
|
||||
text: await this.#confirmationQuestion,
|
||||
operation: this.actionKey,
|
||||
cmid: this.#cmid,
|
||||
selectedusers: selectedUsers.join(','),
|
||||
sesskey: this.#sesskey,
|
||||
});
|
||||
sesskey: this.#sesskey
|
||||
}),
|
||||
show: true,
|
||||
removeOnClose: true,
|
||||
});
|
||||
|
||||
// Append the form to the body, submit it, and then remove it from the DOM.
|
||||
document.body.appendChild(form);
|
||||
form.submit();
|
||||
form.remove();
|
||||
|
||||
return;
|
||||
}).catch(() => {
|
||||
return;
|
||||
// Handle save event.
|
||||
modal.getRoot().on(ModalEvents.save, (e) => {
|
||||
e.preventDefault();
|
||||
modal.getRoot().find('form').submit();
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -34,9 +34,9 @@ export default class extends BulkAction {
|
||||
return '[data-type="bulkactions"] [data-action="message"]';
|
||||
}
|
||||
|
||||
triggerBulkAction() {
|
||||
triggerBulkAction() {
|
||||
const selectedUsers = [...document.querySelectorAll(Selectors.selectBulkItemCheckbox)].map(checkbox => checkbox.value);
|
||||
showMessageModal(selectedUsers);
|
||||
showMessageModal(selectedUsers);
|
||||
}
|
||||
|
||||
async renderBulkActionTrigger(showInDropdown, index) {
|
||||
|
@ -22,9 +22,10 @@
|
||||
*/
|
||||
|
||||
import BulkAction from 'core/bulkactions/bulk_action';
|
||||
import Notification from 'core/notification';
|
||||
import Templates from 'core/templates';
|
||||
import {getString} from 'core/str';
|
||||
import SaveCancelModal from 'core/modal_save_cancel';
|
||||
import ModalEvents from 'core/modal_events';
|
||||
|
||||
const Selectors = {
|
||||
selectBulkItemCheckbox: 'input[type="checkbox"][name="selectedusers"]:checked',
|
||||
@ -34,14 +35,19 @@ export default class extends BulkAction {
|
||||
/** @type {number} The course module ID. */
|
||||
#cmid;
|
||||
|
||||
/** @type {string} The session key. */
|
||||
#sesskey;
|
||||
|
||||
/**
|
||||
* The class constructor.
|
||||
*
|
||||
* @param {number} cmid The course module ID.
|
||||
* @param {string} sesskey The session key.
|
||||
*/
|
||||
constructor(cmid) {
|
||||
constructor(cmid, sesskey) {
|
||||
super();
|
||||
this.#cmid = cmid;
|
||||
this.#sesskey = sesskey;
|
||||
}
|
||||
|
||||
getBulkActionTriggerSelector() {
|
||||
@ -49,21 +55,28 @@ export default class extends BulkAction {
|
||||
}
|
||||
|
||||
async triggerBulkAction() {
|
||||
Notification.saveCancelPromise(
|
||||
getString('setmarkingallocation', 'mod_assign'),
|
||||
getString('batchoperationconfirmsetmarkingallocation', 'mod_assign'),
|
||||
getString('batchoperationsetmarkingallocation', 'mod_assign'),
|
||||
).then(() => {
|
||||
const selectedUsers = [...document.querySelectorAll(Selectors.selectBulkItemCheckbox)].map(checkbox => checkbox.value);
|
||||
const url = new URL(window.location.href);
|
||||
url.searchParams.set('id', this.#cmid);
|
||||
url.searchParams.set('action', 'viewbatchmarkingallocation');
|
||||
url.searchParams.set('selectedusers', selectedUsers.join(','));
|
||||
window.location = url;
|
||||
const selectedUsers = [...document.querySelectorAll(Selectors.selectBulkItemCheckbox)].map(checkbox => checkbox.value);
|
||||
|
||||
return;
|
||||
}).catch(() => {
|
||||
return;
|
||||
const modal = await SaveCancelModal.create({
|
||||
title: await getString('setmarkingallocation', 'mod_assign'),
|
||||
buttons: {
|
||||
save: await getString('batchoperationsetmarkingallocation', 'mod_assign'),
|
||||
},
|
||||
body: Templates.render('mod_assign/bulkactions/grading/bulk_action_modal_body', {
|
||||
text: await getString('batchoperationconfirmsetmarkingallocation', 'mod_assign'),
|
||||
operation: 'setmarkingallocation',
|
||||
cmid: this.#cmid,
|
||||
selectedusers: selectedUsers.join(','),
|
||||
sesskey: this.#sesskey
|
||||
}),
|
||||
show: true,
|
||||
removeOnClose: true,
|
||||
});
|
||||
|
||||
// Handle save event.
|
||||
modal.getRoot().on(ModalEvents.save, (e) => {
|
||||
e.preventDefault();
|
||||
modal.getRoot().find('form').submit();
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -22,9 +22,10 @@
|
||||
*/
|
||||
|
||||
import BulkAction from 'core/bulkactions/bulk_action';
|
||||
import Notification from 'core/notification';
|
||||
import Templates from 'core/templates';
|
||||
import {getString} from 'core/str';
|
||||
import SaveCancelModal from 'core/modal_save_cancel';
|
||||
import ModalEvents from 'core/modal_events';
|
||||
|
||||
const Selectors = {
|
||||
selectBulkItemCheckbox: 'input[type="checkbox"][name="selectedusers"]:checked',
|
||||
@ -34,14 +35,19 @@ export default class extends BulkAction {
|
||||
/** @type {number} The course module ID. */
|
||||
#cmid;
|
||||
|
||||
/** @type {string} The session key. */
|
||||
#sesskey;
|
||||
|
||||
/**
|
||||
* The class constructor.
|
||||
*
|
||||
* @param {number} cmid The course module ID.
|
||||
* @param {string} sesskey The session key.
|
||||
*/
|
||||
constructor(cmid) {
|
||||
constructor(cmid, sesskey) {
|
||||
super();
|
||||
this.#cmid = cmid;
|
||||
this.#sesskey = sesskey;
|
||||
}
|
||||
|
||||
getBulkActionTriggerSelector() {
|
||||
@ -49,21 +55,28 @@ export default class extends BulkAction {
|
||||
}
|
||||
|
||||
async triggerBulkAction() {
|
||||
Notification.saveCancelPromise(
|
||||
getString('setmarkingworkflowstate', 'mod_assign'),
|
||||
getString('batchoperationconfirmsetmarkingworkflowstate', 'mod_assign'),
|
||||
getString('batchoperationsetmarkingworkflowstate', 'mod_assign'),
|
||||
).then(() => {
|
||||
const selectedUsers = [...document.querySelectorAll(Selectors.selectBulkItemCheckbox)].map(checkbox => checkbox.value);
|
||||
const url = new URL(window.location.href);
|
||||
url.searchParams.set('id', this.#cmid);
|
||||
url.searchParams.set('action', 'viewbatchsetmarkingworkflowstate');
|
||||
url.searchParams.set('selectedusers', selectedUsers.join(','));
|
||||
window.location = url;
|
||||
const selectedUsers = [...document.querySelectorAll(Selectors.selectBulkItemCheckbox)].map(checkbox => checkbox.value);
|
||||
|
||||
return;
|
||||
}).catch(() => {
|
||||
return;
|
||||
const modal = await SaveCancelModal.create({
|
||||
title: await getString('setmarkingworkflowstate', 'mod_assign'),
|
||||
buttons: {
|
||||
save: await getString('batchoperationsetmarkingworkflowstate', 'mod_assign'),
|
||||
},
|
||||
body: Templates.render('mod_assign/bulkactions/grading/bulk_action_modal_body', {
|
||||
text: await getString('batchoperationconfirmsetmarkingworkflowstate', 'mod_assign'),
|
||||
operation: 'setmarkingworkflowstate',
|
||||
cmid: this.#cmid,
|
||||
selectedusers: selectedUsers.join(','),
|
||||
sesskey: this.#sesskey
|
||||
}),
|
||||
show: true,
|
||||
removeOnClose: true,
|
||||
});
|
||||
|
||||
// Handle save event.
|
||||
modal.getRoot().on(ModalEvents.save, (e) => {
|
||||
e.preventDefault();
|
||||
modal.getRoot().find('form').submit();
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,46 @@
|
||||
{{!
|
||||
This file is part of Moodle - http://moodle.org/
|
||||
|
||||
Moodle is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Moodle is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Moodle. If not, see <http://www.gnu.org/licenses/>.
|
||||
}}
|
||||
{{!
|
||||
@template mod_assign/bulkactions/grading/bulk_action_modal_body
|
||||
|
||||
Renders the body of the bulk action confirmation modal.
|
||||
|
||||
Context variables required for this template:
|
||||
* text - The bulk action confirmation text.
|
||||
* operation - The name of the bulk operation.
|
||||
* cmid - The course module ID.
|
||||
* selectedusers - The string containing the IDs of the selected users.
|
||||
* sesskey - The session key.
|
||||
|
||||
Example context (json):
|
||||
{
|
||||
"text": "Lock all selected submissions?",
|
||||
"operation": "lock",
|
||||
"cmid": 2,
|
||||
"selectedusers": "3,5",
|
||||
"sesskey": "abc123"
|
||||
}
|
||||
}}
|
||||
<p>{{text}}</p>
|
||||
<form method="post" action="view.php">
|
||||
<input type="hidden" name="action" value="gradingbatchoperation">
|
||||
<input type="hidden" name="operation" value="{{operation}}">
|
||||
<input type="hidden" name="id" value="{{cmid}}">
|
||||
<input type="hidden" name="selectedusers" value="{{selectedusers}}">
|
||||
<input type="hidden" name="sesskey" value="{{{sesskey}}}">
|
||||
<input type="hidden" name="returnaction" value="grading">
|
||||
</form>
|
Loading…
x
Reference in New Issue
Block a user