diff --git a/mod/assign/amd/build/bulkactions/grading/bulk_actions.min.js b/mod/assign/amd/build/bulkactions/grading/bulk_actions.min.js index 45a3939d343..dad1e2d8a9e 100644 --- a/mod/assign/amd/build/bulkactions/grading/bulk_actions.min.js +++ b/mod/assign/amd/build/bulkactions/grading/bulk_actions.min.js @@ -1,3 +1,3 @@ -define("mod_assign/bulkactions/grading/bulk_actions",["exports","core/bulkactions/bulk_actions","./general_action","./delete","./extend","./message","./setmarkingallocation","./setmarkingworkflowstate","core/templates","core/str"],(function(_exports,_bulk_actions,_general_action,_delete,_extend2,_message2,_setmarkingallocation,_setmarkingworkflowstate,_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_actions=_interopRequireDefault(_bulk_actions),_general_action=_interopRequireDefault(_general_action),_delete=_interopRequireDefault(_delete),_extend2=_interopRequireDefault(_extend2),_message2=_interopRequireDefault(_message2),_setmarkingallocation=_interopRequireDefault(_setmarkingallocation),_setmarkingworkflowstate=_interopRequireDefault(_setmarkingworkflowstate),_templates=_interopRequireDefault(_templates);const Selectors_selectBulkItemCheckbox='input[type="checkbox"][name="selectedusers"]',Selectors_selectBulkItemTrigger='input[type="checkbox"][name="selectedusers"], input[type="checkbox"][name="selectall"]';var _cmid=new WeakMap,_extend=new WeakMap,_grantAttempt=new WeakMap,_markingAllocation=new WeakMap,_message=new WeakMap,_pluginOperations=new WeakMap,_removeSubmission=new WeakMap,_sesskey=new WeakMap,_submissionDrafts=new WeakMap,_workflowState=new WeakMap;class _default extends _bulk_actions.default{static init(options){return new this(options)}constructor(_ref){let{cmid:cmid,message:message,submissiondrafts:submissiondrafts,removesubmission:removesubmission,extend:extend,grantattempt:grantattempt,workflowstate:workflowstate,markingallocation:markingallocation,pluginoperations:pluginoperations,sesskey:sesskey}=_ref;super(),_classPrivateFieldInitSpec(this,_cmid,{writable:!0,value:void 0}),_classPrivateFieldInitSpec(this,_extend,{writable:!0,value:void 0}),_classPrivateFieldInitSpec(this,_grantAttempt,{writable:!0,value:void 0}),_classPrivateFieldInitSpec(this,_markingAllocation,{writable:!0,value:void 0}),_classPrivateFieldInitSpec(this,_message,{writable:!0,value:void 0}),_classPrivateFieldInitSpec(this,_pluginOperations,{writable:!0,value:void 0}),_classPrivateFieldInitSpec(this,_removeSubmission,{writable:!0,value:void 0}),_classPrivateFieldInitSpec(this,_sesskey,{writable:!0,value:void 0}),_classPrivateFieldInitSpec(this,_submissionDrafts,{writable:!0,value:void 0}),_classPrivateFieldInitSpec(this,_workflowState,{writable:!0,value:void 0}),_classPrivateFieldSet(this,_cmid,cmid),_classPrivateFieldSet(this,_message,message),_classPrivateFieldSet(this,_submissionDrafts,submissiondrafts),_classPrivateFieldSet(this,_removeSubmission,removesubmission),_classPrivateFieldSet(this,_extend,extend),_classPrivateFieldSet(this,_grantAttempt,grantattempt),_classPrivateFieldSet(this,_workflowState,workflowstate),_classPrivateFieldSet(this,_markingAllocation,markingallocation),_classPrivateFieldSet(this,_sesskey,sesskey),_classPrivateFieldSet(this,_pluginOperations,pluginoperations)}getBulkActions(){const actions=[new _general_action.default(_classPrivateFieldGet(this,_cmid),_classPrivateFieldGet(this,_sesskey),"lock",(0,_str.getString)("batchoperationlock","mod_assign"),_templates.default.renderPix("i/lock","core"),(0,_str.getString)("locksubmissions","mod_assign"),(0,_str.getString)("batchoperationconfirmlock","mod_assign"),(0,_str.getString)("batchoperationlock","mod_assign")),new _general_action.default(_classPrivateFieldGet(this,_cmid),_classPrivateFieldGet(this,_sesskey),"unlock",(0,_str.getString)("batchoperationunlock","mod_assign"),_templates.default.renderPix("i/unlock","core"),(0,_str.getString)("unlocksubmissions","mod_assign"),(0,_str.getString)("batchoperationconfirmunlock","mod_assign"),(0,_str.getString)("batchoperationunlock","mod_assign")),new _general_action.default(_classPrivateFieldGet(this,_cmid),_classPrivateFieldGet(this,_sesskey),"downloadselected",(0,_str.getString)("batchoperationdownloadselected","mod_assign"),_templates.default.renderPix("t/download","core"),(0,_str.getString)("downloadselectedsubmissions","mod_assign"),(0,_str.getString)("batchoperationconfirmdownloadselected","mod_assign"),(0,_str.getString)("batchoperationdownloadselected","mod_assign"))];_classPrivateFieldGet(this,_removeSubmission)&&actions.push(new _delete.default(_classPrivateFieldGet(this,_cmid),_classPrivateFieldGet(this,_sesskey))),_classPrivateFieldGet(this,_extend)&&actions.push(new _extend2.default(_classPrivateFieldGet(this,_cmid))),_classPrivateFieldGet(this,_grantAttempt)&&actions.push(new _general_action.default(_classPrivateFieldGet(this,_cmid),_classPrivateFieldGet(this,_sesskey),"addattempt",(0,_str.getString)("batchoperationaddattempt","mod_assign"),_templates.default.renderPix("t/add","core"),(0,_str.getString)("addattempt","mod_assign"),(0,_str.getString)("batchoperationconfirmaddattempt","mod_assign"),(0,_str.getString)("batchoperationaddattempt","mod_assign"))),_classPrivateFieldGet(this,_workflowState)&&actions.push(new _setmarkingworkflowstate.default(_classPrivateFieldGet(this,_cmid))),_classPrivateFieldGet(this,_markingAllocation)&&actions.push(new _setmarkingallocation.default(_classPrivateFieldGet(this,_cmid))),_classPrivateFieldGet(this,_submissionDrafts)&&actions.push(new _general_action.default(_classPrivateFieldGet(this,_cmid),_classPrivateFieldGet(this,_sesskey),"reverttodraft",(0,_str.getString)("batchoperationreverttodraft","mod_assign"),_templates.default.renderPix("e/undo","core"),(0,_str.getString)("reverttodraft","mod_assign"),(0,_str.getString)("batchoperationconfirmreverttodraft","mod_assign"),(0,_str.getString)("batchoperationreverttodraft","mod_assign"))),_classPrivateFieldGet(this,_message)&&actions.push(new _message2.default);for(const operation of _classPrivateFieldGet(this,_pluginOperations))actions.push(new _general_action.default(_classPrivateFieldGet(this,_cmid),_classPrivateFieldGet(this,_sesskey),operation.key,operation.label,operation.icon,operation.confirmationtitle,operation.confirmationquestion));return actions}getSelectedItems(){return document.querySelectorAll("".concat(Selectors_selectBulkItemCheckbox,":checked"))}registerItemSelectChangeEvent(eventHandler){document.querySelectorAll(Selectors_selectBulkItemTrigger).forEach((checkbox=>{checkbox.addEventListener("change",eventHandler.bind(this))}))}}return _exports.default=_default,_exports.default})); +define("mod_assign/bulkactions/grading/bulk_actions",["exports","core/bulkactions/bulk_actions","./general_action","./delete","./extend","./message","./setmarkingallocation","./setmarkingworkflowstate","core/templates","core/str"],(function(_exports,_bulk_actions,_general_action,_delete,_extend2,_message2,_setmarkingallocation,_setmarkingworkflowstate,_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_actions=_interopRequireDefault(_bulk_actions),_general_action=_interopRequireDefault(_general_action),_delete=_interopRequireDefault(_delete),_extend2=_interopRequireDefault(_extend2),_message2=_interopRequireDefault(_message2),_setmarkingallocation=_interopRequireDefault(_setmarkingallocation),_setmarkingworkflowstate=_interopRequireDefault(_setmarkingworkflowstate),_templates=_interopRequireDefault(_templates);const Selectors_selectBulkItemCheckbox='input[type="checkbox"][name="selectedusers"]',Selectors_selectBulkItemTrigger='input[type="checkbox"][name="selectedusers"], input[type="checkbox"][name="selectall"]';var _cmid=new WeakMap,_extend=new WeakMap,_grantAttempt=new WeakMap,_markingAllocation=new WeakMap,_message=new WeakMap,_pluginOperations=new WeakMap,_removeSubmission=new WeakMap,_sesskey=new WeakMap,_submissionDrafts=new WeakMap,_workflowState=new WeakMap;class _default extends _bulk_actions.default{static init(options){return new this(options)}constructor(_ref){let{cmid:cmid,message:message,submissiondrafts:submissiondrafts,removesubmission:removesubmission,extend:extend,grantattempt:grantattempt,workflowstate:workflowstate,markingallocation:markingallocation,pluginoperations:pluginoperations,sesskey:sesskey}=_ref;super(),_classPrivateFieldInitSpec(this,_cmid,{writable:!0,value:void 0}),_classPrivateFieldInitSpec(this,_extend,{writable:!0,value:void 0}),_classPrivateFieldInitSpec(this,_grantAttempt,{writable:!0,value:void 0}),_classPrivateFieldInitSpec(this,_markingAllocation,{writable:!0,value:void 0}),_classPrivateFieldInitSpec(this,_message,{writable:!0,value:void 0}),_classPrivateFieldInitSpec(this,_pluginOperations,{writable:!0,value:void 0}),_classPrivateFieldInitSpec(this,_removeSubmission,{writable:!0,value:void 0}),_classPrivateFieldInitSpec(this,_sesskey,{writable:!0,value:void 0}),_classPrivateFieldInitSpec(this,_submissionDrafts,{writable:!0,value:void 0}),_classPrivateFieldInitSpec(this,_workflowState,{writable:!0,value:void 0}),_classPrivateFieldSet(this,_cmid,cmid),_classPrivateFieldSet(this,_message,message),_classPrivateFieldSet(this,_submissionDrafts,submissiondrafts),_classPrivateFieldSet(this,_removeSubmission,removesubmission),_classPrivateFieldSet(this,_extend,extend),_classPrivateFieldSet(this,_grantAttempt,grantattempt),_classPrivateFieldSet(this,_workflowState,workflowstate),_classPrivateFieldSet(this,_markingAllocation,markingallocation),_classPrivateFieldSet(this,_sesskey,sesskey),_classPrivateFieldSet(this,_pluginOperations,pluginoperations)}getBulkActions(){const actions=[new _general_action.default(_classPrivateFieldGet(this,_cmid),_classPrivateFieldGet(this,_sesskey),"lock",(0,_str.getString)("batchoperationlock","mod_assign"),_templates.default.renderPix("i/lock","core"),(0,_str.getString)("locksubmissions","mod_assign"),(0,_str.getString)("batchoperationconfirmlock","mod_assign"),(0,_str.getString)("batchoperationlock","mod_assign")),new _general_action.default(_classPrivateFieldGet(this,_cmid),_classPrivateFieldGet(this,_sesskey),"unlock",(0,_str.getString)("batchoperationunlock","mod_assign"),_templates.default.renderPix("i/unlock","core"),(0,_str.getString)("unlocksubmissions","mod_assign"),(0,_str.getString)("batchoperationconfirmunlock","mod_assign"),(0,_str.getString)("batchoperationunlock","mod_assign")),new _general_action.default(_classPrivateFieldGet(this,_cmid),_classPrivateFieldGet(this,_sesskey),"downloadselected",(0,_str.getString)("batchoperationdownloadselected","mod_assign"),_templates.default.renderPix("t/download","core"),(0,_str.getString)("downloadselectedsubmissions","mod_assign"),(0,_str.getString)("batchoperationconfirmdownloadselected","mod_assign"),(0,_str.getString)("batchoperationdownloadselected","mod_assign"))];_classPrivateFieldGet(this,_removeSubmission)&&actions.push(new _delete.default(_classPrivateFieldGet(this,_cmid),_classPrivateFieldGet(this,_sesskey))),_classPrivateFieldGet(this,_extend)&&actions.push(new _extend2.default(_classPrivateFieldGet(this,_cmid),_classPrivateFieldGet(this,_sesskey))),_classPrivateFieldGet(this,_grantAttempt)&&actions.push(new _general_action.default(_classPrivateFieldGet(this,_cmid),_classPrivateFieldGet(this,_sesskey),"addattempt",(0,_str.getString)("batchoperationaddattempt","mod_assign"),_templates.default.renderPix("t/add","core"),(0,_str.getString)("addattempt","mod_assign"),(0,_str.getString)("batchoperationconfirmaddattempt","mod_assign"),(0,_str.getString)("batchoperationaddattempt","mod_assign"))),_classPrivateFieldGet(this,_workflowState)&&actions.push(new _setmarkingworkflowstate.default(_classPrivateFieldGet(this,_cmid),_classPrivateFieldGet(this,_sesskey))),_classPrivateFieldGet(this,_markingAllocation)&&actions.push(new _setmarkingallocation.default(_classPrivateFieldGet(this,_cmid),_classPrivateFieldGet(this,_sesskey))),_classPrivateFieldGet(this,_submissionDrafts)&&actions.push(new _general_action.default(_classPrivateFieldGet(this,_cmid),_classPrivateFieldGet(this,_sesskey),"reverttodraft",(0,_str.getString)("batchoperationreverttodraft","mod_assign"),_templates.default.renderPix("e/undo","core"),(0,_str.getString)("reverttodraft","mod_assign"),(0,_str.getString)("batchoperationconfirmreverttodraft","mod_assign"),(0,_str.getString)("batchoperationreverttodraft","mod_assign"))),_classPrivateFieldGet(this,_message)&&actions.push(new _message2.default);for(const operation of _classPrivateFieldGet(this,_pluginOperations))actions.push(new _general_action.default(_classPrivateFieldGet(this,_cmid),_classPrivateFieldGet(this,_sesskey),operation.key,operation.label,operation.icon,operation.confirmationtitle,operation.confirmationquestion));return actions}getSelectedItems(){return document.querySelectorAll("".concat(Selectors_selectBulkItemCheckbox,":checked"))}registerItemSelectChangeEvent(eventHandler){document.querySelectorAll(Selectors_selectBulkItemTrigger).forEach((checkbox=>{checkbox.addEventListener("change",eventHandler.bind(this))}))}}return _exports.default=_default,_exports.default})); //# sourceMappingURL=bulk_actions.min.js.map \ No newline at end of file diff --git a/mod/assign/amd/build/bulkactions/grading/bulk_actions.min.js.map b/mod/assign/amd/build/bulkactions/grading/bulk_actions.min.js.map index 2d8e6d664e7..a62752d1146 100644 --- a/mod/assign/amd/build/bulkactions/grading/bulk_actions.min.js.map +++ b/mod/assign/amd/build/bulkactions/grading/bulk_actions.min.js.map @@ -1 +1 @@ -{"version":3,"file":"bulk_actions.min.js","sources":["../../../src/bulkactions/grading/bulk_actions.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 .\n\n/**\n * Class for defining the bulk actions area in the assignment grading page.\n *\n * @module mod_assign/bulkactions/grading/bulk_actions\n * @copyright 2024 Shamim Rezaie \n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport BulkActions from 'core/bulkactions/bulk_actions';\nimport GeneralAction from './general_action';\nimport DeleteAction from './delete';\nimport ExtendAction from './extend';\nimport MessageAction from './message';\nimport SetMarkingAllocationAction from './setmarkingallocation';\nimport SetMarkingWorkflowStateAction from './setmarkingworkflowstate';\nimport Templates from 'core/templates';\nimport {getString} from 'core/str';\n\nconst Selectors = {\n selectBulkItemCheckbox: 'input[type=\"checkbox\"][name=\"selectedusers\"]',\n selectBulkItemTrigger: 'input[type=\"checkbox\"][name=\"selectedusers\"], input[type=\"checkbox\"][name=\"selectall\"]',\n};\n\nexport default class extends BulkActions {\n /** @type {number} The course module ID. */\n #cmid;\n\n /** @type {boolean} Whether to show the extend action. */\n #extend;\n\n /** @type {boolean} Whether to show the grant extension action. */\n #grantAttempt;\n\n /** @type {boolean} Whether to show the set marking allocation action. */\n #markingAllocation;\n\n /** @type {string} Whether to show the message action. */\n #message;\n\n /** @type {Array} The list of plugin operations. */\n #pluginOperations;\n\n /** @type {boolean} Whether to show the remove submission action. */\n #removeSubmission;\n\n /** @type {string} The session key. */\n #sesskey;\n\n /** @type {boolean} Whether to show the revert to draft action. */\n #submissionDrafts;\n\n /** @type {boolean} Whether to show the set workflow state action. */\n #workflowState;\n\n /**\n * Returns the instance of the class.\n *\n * @param {Object} options - The options object.\n * @param {number} options.cmid - The course module ID.\n * @param {string} options.message - Whether to show the message action.\n * @param {boolean} options.submissiondrafts - Whether to show the revert to draft action.\n * @param {boolean} options.removesubmission - Whether to show the remove submission action.\n * @param {boolean} options.extend - Whether to show the grant extension action.\n * @param {boolean} options.grantattempt - Whether to show the grant attempt action.\n * @param {boolean} options.workflowstate - Whether to show the set workflow state action.\n * @param {boolean} options.markingallocation - Whether to show the set marking allocation action.\n * @param {Array} options.pluginoperations - The list of plugin operations.\n * @param {string} options.sesskey - The session key.\n * @returns {this} An instance of the anonymous class extending BulkActions.\n */\n static init(options) {\n return new this(options);\n }\n\n /**\n * The class constructor\n *\n * @param {Object} options - The options object.\n * @param {number} options.cmid - The course module ID.\n * @param {string} options.message - Whether to show the message action.\n * @param {boolean} options.submissiondrafts - Whether to show the revert to draft action.\n * @param {boolean} options.removesubmission - Whether to show the remove submission action.\n * @param {boolean} options.extend - Whether to show the grant extension action.\n * @param {boolean} options.grantattempt - Whether to show the grant attempt action.\n * @param {boolean} options.workflowstate - Whether to show the set workflow state action.\n * @param {boolean} options.markingallocation - Whether to show the set marking allocation action.\n * @param {Array} options.pluginoperations - The list of plugin operations.\n * @param {string} options.sesskey - The session key.\n */\n constructor({\n cmid, message, submissiondrafts, removesubmission, extend,\n grantattempt, workflowstate, markingallocation, pluginoperations, sesskey\n }) {\n super();\n this.#cmid = cmid;\n this.#message = message;\n this.#submissionDrafts = submissiondrafts;\n this.#removeSubmission = removesubmission;\n this.#extend = extend;\n this.#grantAttempt = grantattempt;\n this.#workflowState = workflowstate;\n this.#markingAllocation = markingallocation;\n this.#sesskey = sesskey;\n this.#pluginOperations = pluginoperations;\n }\n\n getBulkActions() {\n const actions = [\n new GeneralAction(\n this.#cmid,\n this.#sesskey,\n 'lock',\n getString('batchoperationlock', 'mod_assign'),\n Templates.renderPix('i/lock', 'core'),\n getString('locksubmissions', 'mod_assign'),\n getString('batchoperationconfirmlock', 'mod_assign'),\n getString('batchoperationlock', 'mod_assign'),\n ),\n new GeneralAction(\n this.#cmid,\n this.#sesskey,\n 'unlock',\n getString('batchoperationunlock', 'mod_assign'),\n Templates.renderPix('i/unlock', 'core'),\n getString('unlocksubmissions', 'mod_assign'),\n getString('batchoperationconfirmunlock', 'mod_assign'),\n getString('batchoperationunlock', 'mod_assign'),\n ),\n new GeneralAction(\n this.#cmid,\n this.#sesskey,\n 'downloadselected',\n getString('batchoperationdownloadselected', 'mod_assign'),\n Templates.renderPix('t/download', 'core'),\n getString('downloadselectedsubmissions', 'mod_assign'),\n getString('batchoperationconfirmdownloadselected', 'mod_assign'),\n getString('batchoperationdownloadselected', 'mod_assign'),\n ),\n ];\n\n if (this.#removeSubmission) {\n actions.push(new DeleteAction(this.#cmid, this.#sesskey));\n }\n\n if (this.#extend) {\n actions.push(new ExtendAction(this.#cmid));\n }\n\n if (this.#grantAttempt) {\n actions.push(\n new GeneralAction(\n this.#cmid,\n this.#sesskey,\n 'addattempt',\n getString('batchoperationaddattempt', 'mod_assign'),\n Templates.renderPix('t/add', 'core'),\n getString('addattempt', 'mod_assign'),\n getString('batchoperationconfirmaddattempt', 'mod_assign'),\n getString('batchoperationaddattempt', 'mod_assign'),\n )\n );\n }\n\n if (this.#workflowState) {\n actions.push(new SetMarkingWorkflowStateAction(this.#cmid));\n }\n\n if (this.#markingAllocation) {\n actions.push(new SetMarkingAllocationAction(this.#cmid));\n }\n\n if (this.#submissionDrafts) {\n actions.push(\n new GeneralAction(\n this.#cmid,\n this.#sesskey,\n 'reverttodraft',\n getString('batchoperationreverttodraft', 'mod_assign'),\n Templates.renderPix('e/undo', 'core'),\n getString('reverttodraft', 'mod_assign'),\n getString('batchoperationconfirmreverttodraft', 'mod_assign'),\n getString('batchoperationreverttodraft', 'mod_assign'),\n )\n );\n }\n\n if (this.#message) {\n actions.push(new MessageAction());\n }\n\n for (const operation of this.#pluginOperations) {\n actions.push(\n new GeneralAction(\n this.#cmid,\n this.#sesskey,\n operation.key,\n operation.label,\n operation.icon,\n operation.confirmationtitle,\n operation.confirmationquestion,\n )\n );\n }\n\n return actions;\n }\n\n getSelectedItems() {\n return document.querySelectorAll(`${Selectors.selectBulkItemCheckbox}:checked`);\n }\n\n registerItemSelectChangeEvent(eventHandler) {\n const itemSelectCheckboxes = document.querySelectorAll(Selectors.selectBulkItemTrigger);\n itemSelectCheckboxes.forEach((checkbox) => {\n checkbox.addEventListener('change', eventHandler.bind(this));\n });\n }\n}\n"],"names":["Selectors","BulkActions","options","this","constructor","cmid","message","submissiondrafts","removesubmission","extend","grantattempt","workflowstate","markingallocation","pluginoperations","sesskey","getBulkActions","actions","GeneralAction","Templates","renderPix","push","DeleteAction","ExtendAction","SetMarkingWorkflowStateAction","SetMarkingAllocationAction","MessageAction","operation","key","label","icon","confirmationtitle","confirmationquestion","getSelectedItems","document","querySelectorAll","registerItemSelectChangeEvent","eventHandler","forEach","checkbox","addEventListener","bind"],"mappings":"i9DAiCMA,iCACsB,+CADtBA,gCAEqB,kXAGEC,kCA+CbC,gBACD,IAAIC,KAAKD,SAkBpBE,sBAAYC,KACRA,KADQC,QACFA,QADEC,iBACOA,iBADPC,iBACyBA,iBADzBC,OAC2CA,OAD3CC,aAERA,aAFQC,cAEMA,cAFNC,kBAEqBA,kBAFrBC,iBAEwCA,iBAFxCC,QAE0DA,qxBAGrDT,0CACGC,sDACSC,+DACAC,qDACVC,iDACMC,wDACCC,6DACIC,uDACVE,sDACSD,kBAG7BE,uBACUC,QAAU,CACZ,IAAIC,8CACAd,kCACAA,eACA,QACA,kBAAU,qBAAsB,cAChCe,mBAAUC,UAAU,SAAU,SAC9B,kBAAU,kBAAmB,eAC7B,kBAAU,4BAA6B,eACvC,kBAAU,qBAAsB,eAEpC,IAAIF,8CACAd,kCACAA,eACA,UACA,kBAAU,uBAAwB,cAClCe,mBAAUC,UAAU,WAAY,SAChC,kBAAU,oBAAqB,eAC/B,kBAAU,8BAA+B,eACzC,kBAAU,uBAAwB,eAEtC,IAAIF,8CACAd,kCACAA,eACA,oBACA,kBAAU,iCAAkC,cAC5Ce,mBAAUC,UAAU,aAAc,SAClC,kBAAU,8BAA+B,eACzC,kBAAU,wCAAyC,eACnD,kBAAU,iCAAkC,sCAIhDhB,yBACAa,QAAQI,KAAK,IAAIC,sCAAalB,kCAAYA,uCAG1CA,eACAa,QAAQI,KAAK,IAAIE,uCAAanB,oCAG9BA,qBACAa,QAAQI,KACJ,IAAIH,8CACAd,kCACAA,eACA,cACA,kBAAU,2BAA4B,cACtCe,mBAAUC,UAAU,QAAS,SAC7B,kBAAU,aAAc,eACxB,kBAAU,kCAAmC,eAC7C,kBAAU,2BAA4B,sCAK9ChB,sBACAa,QAAQI,KAAK,IAAIG,uDAA8BpB,oCAG/CA,0BACAa,QAAQI,KAAK,IAAII,oDAA2BrB,oCAG5CA,yBACAa,QAAQI,KACJ,IAAIH,8CACAd,kCACAA,eACA,iBACA,kBAAU,8BAA+B,cACzCe,mBAAUC,UAAU,SAAU,SAC9B,kBAAU,gBAAiB,eAC3B,kBAAU,qCAAsC,eAChD,kBAAU,8BAA+B,sCAKjDhB,gBACAa,QAAQI,KAAK,IAAIK,uBAGhB,MAAMC,mCAAavB,wBACpBa,QAAQI,KACJ,IAAIH,8CACAd,kCACAA,eACAuB,UAAUC,IACVD,UAAUE,MACVF,UAAUG,KACVH,UAAUI,kBACVJ,UAAUK,8BAKff,QAGXgB,0BACWC,SAASC,2BAAoBlC,8CAGxCmC,8BAA8BC,cACGH,SAASC,iBAAiBlC,iCAClCqC,SAASC,WAC1BA,SAASC,iBAAiB,SAAUH,aAAaI,KAAKrC"} \ No newline at end of file +{"version":3,"file":"bulk_actions.min.js","sources":["../../../src/bulkactions/grading/bulk_actions.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 .\n\n/**\n * Class for defining the bulk actions area in the assignment grading page.\n *\n * @module mod_assign/bulkactions/grading/bulk_actions\n * @copyright 2024 Shamim Rezaie \n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport BulkActions from 'core/bulkactions/bulk_actions';\nimport GeneralAction from './general_action';\nimport DeleteAction from './delete';\nimport ExtendAction from './extend';\nimport MessageAction from './message';\nimport SetMarkingAllocationAction from './setmarkingallocation';\nimport SetMarkingWorkflowStateAction from './setmarkingworkflowstate';\nimport Templates from 'core/templates';\nimport {getString} from 'core/str';\n\nconst Selectors = {\n selectBulkItemCheckbox: 'input[type=\"checkbox\"][name=\"selectedusers\"]',\n selectBulkItemTrigger: 'input[type=\"checkbox\"][name=\"selectedusers\"], input[type=\"checkbox\"][name=\"selectall\"]',\n};\n\nexport default class extends BulkActions {\n /** @type {number} The course module ID. */\n #cmid;\n\n /** @type {boolean} Whether to show the extend action. */\n #extend;\n\n /** @type {boolean} Whether to show the grant extension action. */\n #grantAttempt;\n\n /** @type {boolean} Whether to show the set marking allocation action. */\n #markingAllocation;\n\n /** @type {string} Whether to show the message action. */\n #message;\n\n /** @type {Array} The list of plugin operations. */\n #pluginOperations;\n\n /** @type {boolean} Whether to show the remove submission action. */\n #removeSubmission;\n\n /** @type {string} The session key. */\n #sesskey;\n\n /** @type {boolean} Whether to show the revert to draft action. */\n #submissionDrafts;\n\n /** @type {boolean} Whether to show the set workflow state action. */\n #workflowState;\n\n /**\n * Returns the instance of the class.\n *\n * @param {Object} options - The options object.\n * @param {number} options.cmid - The course module ID.\n * @param {string} options.message - Whether to show the message action.\n * @param {boolean} options.submissiondrafts - Whether to show the revert to draft action.\n * @param {boolean} options.removesubmission - Whether to show the remove submission action.\n * @param {boolean} options.extend - Whether to show the grant extension action.\n * @param {boolean} options.grantattempt - Whether to show the grant attempt action.\n * @param {boolean} options.workflowstate - Whether to show the set workflow state action.\n * @param {boolean} options.markingallocation - Whether to show the set marking allocation action.\n * @param {Array} options.pluginoperations - The list of plugin operations.\n * @param {string} options.sesskey - The session key.\n * @returns {this} An instance of the anonymous class extending BulkActions.\n */\n static init(options) {\n return new this(options);\n }\n\n /**\n * The class constructor\n *\n * @param {Object} options - The options object.\n * @param {number} options.cmid - The course module ID.\n * @param {string} options.message - Whether to show the message action.\n * @param {boolean} options.submissiondrafts - Whether to show the revert to draft action.\n * @param {boolean} options.removesubmission - Whether to show the remove submission action.\n * @param {boolean} options.extend - Whether to show the grant extension action.\n * @param {boolean} options.grantattempt - Whether to show the grant attempt action.\n * @param {boolean} options.workflowstate - Whether to show the set workflow state action.\n * @param {boolean} options.markingallocation - Whether to show the set marking allocation action.\n * @param {Array} options.pluginoperations - The list of plugin operations.\n * @param {string} options.sesskey - The session key.\n */\n constructor({\n cmid, message, submissiondrafts, removesubmission, extend,\n grantattempt, workflowstate, markingallocation, pluginoperations, sesskey\n }) {\n super();\n this.#cmid = cmid;\n this.#message = message;\n this.#submissionDrafts = submissiondrafts;\n this.#removeSubmission = removesubmission;\n this.#extend = extend;\n this.#grantAttempt = grantattempt;\n this.#workflowState = workflowstate;\n this.#markingAllocation = markingallocation;\n this.#sesskey = sesskey;\n this.#pluginOperations = pluginoperations;\n }\n\n getBulkActions() {\n const actions = [\n new GeneralAction(\n this.#cmid,\n this.#sesskey,\n 'lock',\n getString('batchoperationlock', 'mod_assign'),\n Templates.renderPix('i/lock', 'core'),\n getString('locksubmissions', 'mod_assign'),\n getString('batchoperationconfirmlock', 'mod_assign'),\n getString('batchoperationlock', 'mod_assign'),\n ),\n new GeneralAction(\n this.#cmid,\n this.#sesskey,\n 'unlock',\n getString('batchoperationunlock', 'mod_assign'),\n Templates.renderPix('i/unlock', 'core'),\n getString('unlocksubmissions', 'mod_assign'),\n getString('batchoperationconfirmunlock', 'mod_assign'),\n getString('batchoperationunlock', 'mod_assign'),\n ),\n new GeneralAction(\n this.#cmid,\n this.#sesskey,\n 'downloadselected',\n getString('batchoperationdownloadselected', 'mod_assign'),\n Templates.renderPix('t/download', 'core'),\n getString('downloadselectedsubmissions', 'mod_assign'),\n getString('batchoperationconfirmdownloadselected', 'mod_assign'),\n getString('batchoperationdownloadselected', 'mod_assign'),\n ),\n ];\n\n if (this.#removeSubmission) {\n actions.push(new DeleteAction(this.#cmid, this.#sesskey));\n }\n\n if (this.#extend) {\n actions.push(new ExtendAction(this.#cmid, this.#sesskey));\n }\n\n if (this.#grantAttempt) {\n actions.push(\n new GeneralAction(\n this.#cmid,\n this.#sesskey,\n 'addattempt',\n getString('batchoperationaddattempt', 'mod_assign'),\n Templates.renderPix('t/add', 'core'),\n getString('addattempt', 'mod_assign'),\n getString('batchoperationconfirmaddattempt', 'mod_assign'),\n getString('batchoperationaddattempt', 'mod_assign'),\n )\n );\n }\n\n if (this.#workflowState) {\n actions.push(new SetMarkingWorkflowStateAction(this.#cmid, this.#sesskey));\n }\n\n if (this.#markingAllocation) {\n actions.push(new SetMarkingAllocationAction(this.#cmid, this.#sesskey));\n }\n\n if (this.#submissionDrafts) {\n actions.push(\n new GeneralAction(\n this.#cmid,\n this.#sesskey,\n 'reverttodraft',\n getString('batchoperationreverttodraft', 'mod_assign'),\n Templates.renderPix('e/undo', 'core'),\n getString('reverttodraft', 'mod_assign'),\n getString('batchoperationconfirmreverttodraft', 'mod_assign'),\n getString('batchoperationreverttodraft', 'mod_assign'),\n )\n );\n }\n\n if (this.#message) {\n actions.push(new MessageAction());\n }\n\n for (const operation of this.#pluginOperations) {\n actions.push(\n new GeneralAction(\n this.#cmid,\n this.#sesskey,\n operation.key,\n operation.label,\n operation.icon,\n operation.confirmationtitle,\n operation.confirmationquestion,\n )\n );\n }\n\n return actions;\n }\n\n getSelectedItems() {\n return document.querySelectorAll(`${Selectors.selectBulkItemCheckbox}:checked`);\n }\n\n registerItemSelectChangeEvent(eventHandler) {\n const itemSelectCheckboxes = document.querySelectorAll(Selectors.selectBulkItemTrigger);\n itemSelectCheckboxes.forEach((checkbox) => {\n checkbox.addEventListener('change', eventHandler.bind(this));\n });\n }\n}\n"],"names":["Selectors","BulkActions","options","this","constructor","cmid","message","submissiondrafts","removesubmission","extend","grantattempt","workflowstate","markingallocation","pluginoperations","sesskey","getBulkActions","actions","GeneralAction","Templates","renderPix","push","DeleteAction","ExtendAction","SetMarkingWorkflowStateAction","SetMarkingAllocationAction","MessageAction","operation","key","label","icon","confirmationtitle","confirmationquestion","getSelectedItems","document","querySelectorAll","registerItemSelectChangeEvent","eventHandler","forEach","checkbox","addEventListener","bind"],"mappings":"i9DAiCMA,iCACsB,+CADtBA,gCAEqB,kXAGEC,kCA+CbC,gBACD,IAAIC,KAAKD,SAkBpBE,sBAAYC,KACRA,KADQC,QACFA,QADEC,iBACOA,iBADPC,iBACyBA,iBADzBC,OAC2CA,OAD3CC,aAERA,aAFQC,cAEMA,cAFNC,kBAEqBA,kBAFrBC,iBAEwCA,iBAFxCC,QAE0DA,qxBAGrDT,0CACGC,sDACSC,+DACAC,qDACVC,iDACMC,wDACCC,6DACIC,uDACVE,sDACSD,kBAG7BE,uBACUC,QAAU,CACZ,IAAIC,8CACAd,kCACAA,eACA,QACA,kBAAU,qBAAsB,cAChCe,mBAAUC,UAAU,SAAU,SAC9B,kBAAU,kBAAmB,eAC7B,kBAAU,4BAA6B,eACvC,kBAAU,qBAAsB,eAEpC,IAAIF,8CACAd,kCACAA,eACA,UACA,kBAAU,uBAAwB,cAClCe,mBAAUC,UAAU,WAAY,SAChC,kBAAU,oBAAqB,eAC/B,kBAAU,8BAA+B,eACzC,kBAAU,uBAAwB,eAEtC,IAAIF,8CACAd,kCACAA,eACA,oBACA,kBAAU,iCAAkC,cAC5Ce,mBAAUC,UAAU,aAAc,SAClC,kBAAU,8BAA+B,eACzC,kBAAU,wCAAyC,eACnD,kBAAU,iCAAkC,sCAIhDhB,yBACAa,QAAQI,KAAK,IAAIC,sCAAalB,kCAAYA,uCAG1CA,eACAa,QAAQI,KAAK,IAAIE,uCAAanB,kCAAYA,uCAG1CA,qBACAa,QAAQI,KACJ,IAAIH,8CACAd,kCACAA,eACA,cACA,kBAAU,2BAA4B,cACtCe,mBAAUC,UAAU,QAAS,SAC7B,kBAAU,aAAc,eACxB,kBAAU,kCAAmC,eAC7C,kBAAU,2BAA4B,sCAK9ChB,sBACAa,QAAQI,KAAK,IAAIG,uDAA8BpB,kCAAYA,uCAG3DA,0BACAa,QAAQI,KAAK,IAAII,oDAA2BrB,kCAAYA,uCAGxDA,yBACAa,QAAQI,KACJ,IAAIH,8CACAd,kCACAA,eACA,iBACA,kBAAU,8BAA+B,cACzCe,mBAAUC,UAAU,SAAU,SAC9B,kBAAU,gBAAiB,eAC3B,kBAAU,qCAAsC,eAChD,kBAAU,8BAA+B,sCAKjDhB,gBACAa,QAAQI,KAAK,IAAIK,uBAGhB,MAAMC,mCAAavB,wBACpBa,QAAQI,KACJ,IAAIH,8CACAd,kCACAA,eACAuB,UAAUC,IACVD,UAAUE,MACVF,UAAUG,KACVH,UAAUI,kBACVJ,UAAUK,8BAKff,QAGXgB,0BACWC,SAASC,2BAAoBlC,8CAGxCmC,8BAA8BC,cACGH,SAASC,iBAAiBlC,iCAClCqC,SAASC,WAC1BA,SAASC,iBAAiB,SAAUH,aAAaI,KAAKrC"} \ No newline at end of file diff --git a/mod/assign/amd/build/bulkactions/grading/delete.min.js b/mod/assign/amd/build/bulkactions/grading/delete.min.js index f84fb9f49eb..6e23dc6f6ba 100644 --- a/mod/assign/amd/build/bulkactions/grading/delete.min.js +++ b/mod/assign/amd/build/bulkactions/grading/delete.min.js @@ -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 \ No newline at end of file diff --git a/mod/assign/amd/build/bulkactions/grading/delete.min.js.map b/mod/assign/amd/build/bulkactions/grading/delete.min.js.map index 197ebf4ff21..4ceae94ac5d 100644 --- a/mod/assign/amd/build/bulkactions/grading/delete.min.js.map +++ b/mod/assign/amd/build/bulkactions/grading/delete.min.js.map @@ -1 +1 @@ -{"version":3,"file":"delete.min.js","sources":["../../../src/bulkactions/grading/delete.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 .\n\n/**\n * Class that defines the bulk action for removing submissions in the assignment grading page.\n *\n * @module mod_assign/bulkactions/grading/delete\n * @copyright 2024 Shamim Rezaie \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 /** @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=\"removesubmission\"]';\n }\n\n async triggerBulkAction() {\n Notification.deleteCancelPromise(\n getString('removesubmission', 'mod_assign'),\n getString('batchoperationconfirmremovesubmission', 'mod_assign'),\n getString('batchoperationremovesubmission', '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\n const form = document.createElement('form');\n form.method = 'POST';\n form.action = url.toString();\n\n // Create hidden inputs for the form.\n ((form, hiddenInputs) => {\n for (const [name, value] of Object.entries(hiddenInputs)) {\n const input = document.createElement('input');\n input.type = 'hidden';\n input.name = name;\n input.value = value;\n form.appendChild(input);\n }\n })(form, {\n action: 'gradingbatchoperation',\n operation: 'removesubmission',\n selectedusers: selectedUsers.join(','),\n sesskey: this.#sesskey,\n });\n\n // Append the form to the body, submit it, and then remove it from the DOM.\n document.body.appendChild(form);\n form.submit();\n form.remove();\n\n return;\n }).catch(() => {\n return;\n });\n }\n\n async renderBulkActionTrigger(showInDropdown, index) {\n return Templates.render('mod_assign/bulkactions/grading/bulk_delete_trigger', {\n showindropdown: showInDropdown,\n isfirst: index === 0,\n });\n }\n}\n"],"names":["Selectors","BulkAction","constructor","cmid","sesskey","getBulkActionTriggerSelector","deleteCancelPromise","then","selectedUsers","document","querySelectorAll","map","checkbox","value","url","URL","window","location","href","searchParams","set","this","form","createElement","method","action","toString","hiddenInputs","name","Object","entries","input","type","appendChild","operation","selectedusers","join","body","submit","remove","catch","showInDropdown","index","Templates","render","showindropdown","isfirst"],"mappings":"qhDA4BMA,iCACsB,yHAGCC,qBAazBC,YAAYC,KAAMC,yLAEDD,0CACGC,SAGpBC,qCACW,6GAIMC,qBACT,kBAAU,mBAAoB,eAC9B,kBAAU,wCAAyC,eACnD,kBAAU,iCAAkC,eAC9CC,MAAK,WACGC,cAAgB,IAAIC,SAASC,iBAAiBV,mCAAmCW,KAAIC,UAAYA,SAASC,QAC1GC,IAAM,IAAIC,IAAIC,OAAOC,SAASC,MACpCJ,IAAIK,aAAaC,IAAI,2BAAMC,mBAErBC,KAAOb,SAASc,cAAc,QACpCD,KAAKE,OAAS,OACdF,KAAKG,OAASX,IAAIY,aAGhBJ,KAAMK,oBACC,MAAOC,KAAMf,SAAUgB,OAAOC,QAAQH,cAAe,OAChDI,MAAQtB,SAASc,cAAc,SACrCQ,MAAMC,KAAO,SACbD,MAAMH,KAAOA,KACbG,MAAMlB,MAAQA,MACdS,KAAKW,YAAYF,UAEtBT,KAAM,CACLG,OAAQ,wBACRS,UAAW,mBACXC,cAAe3B,cAAc4B,KAAK,KAClChC,8BAASiB,iBAIbZ,SAAS4B,KAAKJ,YAAYX,MAC1BA,KAAKgB,SACLhB,KAAKiB,YAGNC,OAAM,uCAKiBC,eAAgBC,cACnCC,mBAAUC,OAAO,qDAAsD,CAC1EC,eAAgBJ,eAChBK,QAAmB,IAAVJ"} \ No newline at end of file +{"version":3,"file":"delete.min.js","sources":["../../../src/bulkactions/grading/delete.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 .\n\n/**\n * Class that defines the bulk action for removing submissions in the assignment grading page.\n *\n * @module mod_assign/bulkactions/grading/delete\n * @copyright 2024 Shamim Rezaie \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 DeleteCancelModal from 'core/modal_delete_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=\"removesubmission\"]';\n }\n\n async triggerBulkAction() {\n const selectedUsers = [...document.querySelectorAll(Selectors.selectBulkItemCheckbox)].map(checkbox => checkbox.value);\n\n const modal = await DeleteCancelModal.create({\n title: await getString('removesubmission', 'mod_assign'),\n buttons: {\n save: await getString('batchoperationremovesubmission', 'mod_assign'),\n },\n body: Templates.render('mod_assign/bulkactions/grading/bulk_action_modal_body', {\n text: await getString('batchoperationconfirmremovesubmission', 'mod_assign'),\n operation: 'removesubmission',\n cmid: this.#cmid,\n selectedusers: selectedUsers.join(','),\n sesskey: this.#sesskey\n }),\n show: true,\n removeOnClose: true,\n });\n\n // Handle delete event.\n modal.getRoot().on(ModalEvents.delete, (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_delete_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","DeleteCancelModal","create","title","buttons","save","body","Templates","render","text","operation","this","selectedusers","join","show","removeOnClose","getRoot","on","ModalEvents","delete","e","preventDefault","find","submit","showInDropdown","index","showindropdown","isfirst"],"mappings":"uoDA6BMA,iCACsB,yHAGCC,qBAazBC,YAAYC,KAAMC,yLAEDD,0CACGC,SAGpBC,qCACW,6FAIDC,cAAgB,IAAIC,SAASC,iBAAiBR,mCAAmCS,KAAIC,UAAYA,SAASC,QAE1GC,YAAcC,6BAAkBC,OAAO,CACzCC,YAAa,kBAAU,mBAAoB,cAC3CC,QAAS,CACLC,WAAY,kBAAU,iCAAkC,eAE5DC,KAAMC,mBAAUC,OAAO,wDAAyD,CAC5EC,WAAY,kBAAU,wCAAyC,cAC/DC,UAAW,mBACXnB,2BAAMoB,YACNC,cAAelB,cAAcmB,KAAK,KAClCrB,8BAASmB,iBAEbG,MAAM,EACNC,eAAe,IAInBf,MAAMgB,UAAUC,GAAGC,sBAAYC,QAASC,IACpCA,EAAEC,iBACFrB,MAAMgB,UAAUM,KAAK,QAAQC,0CAIPC,eAAgBC,cACnClB,mBAAUC,OAAO,qDAAsD,CAC1EkB,eAAgBF,eAChBG,QAAmB,IAAVF"} \ No newline at end of file diff --git a/mod/assign/amd/build/bulkactions/grading/extend.min.js b/mod/assign/amd/build/bulkactions/grading/extend.min.js index ceae3ea7db9..e8a6688db85 100644 --- a/mod/assign/amd/build/bulkactions/grading/extend.min.js +++ b/mod/assign/amd/build/bulkactions/grading/extend.min.js @@ -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 \ No newline at end of file diff --git a/mod/assign/amd/build/bulkactions/grading/extend.min.js.map b/mod/assign/amd/build/bulkactions/grading/extend.min.js.map index 9c2ca911bb5..09cb40d4bde 100644 --- a/mod/assign/amd/build/bulkactions/grading/extend.min.js.map +++ b/mod/assign/amd/build/bulkactions/grading/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 .\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 \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"} \ No newline at end of file +{"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 .\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 \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"} \ No newline at end of file diff --git a/mod/assign/amd/build/bulkactions/grading/general_action.min.js b/mod/assign/amd/build/bulkactions/grading/general_action.min.js index 24737cc5ca7..f4ea5d9b48f 100644 --- a/mod/assign/amd/build/bulkactions/grading/general_action.min.js +++ b/mod/assign/amd/build/bulkactions/grading/general_action.min.js @@ -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 \ No newline at end of file diff --git a/mod/assign/amd/build/bulkactions/grading/general_action.min.js.map b/mod/assign/amd/build/bulkactions/grading/general_action.min.js.map index a66517365b7..015b0152eec 100644 --- a/mod/assign/amd/build/bulkactions/grading/general_action.min.js.map +++ b/mod/assign/amd/build/bulkactions/grading/general_action.min.js.map @@ -1 +1 @@ -{"version":3,"file":"general_action.min.js","sources":["../../../src/bulkactions/grading/general_action.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 .\n\n/**\n * Class that defines the bulk action for general actions in the assignment grading page.\n *\n * @module mod_assign/bulkactions/grading/general_action\n * @copyright 2024 Shamim Rezaie \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';\n\nconst Selectors = {\n selectBulkItemCheckbox: 'input[type=\"checkbox\"][name=\"selectedusers\"]:checked',\n};\n\nexport default class extends BulkAction {\n\n /** @type {string} The action key. */\n actionKey;\n\n /** @type {number} The course module ID. */\n #cmid;\n\n /** @type {Promise} The action button's icon. */\n #buttonIcon;\n\n /** @type {Promise} The action button's label. */\n #buttonLabel;\n\n /** @type {Promise} Title of the confirmation dialog. */\n #confirmationTitle;\n\n /** @type {Promise} Question of the confirmation dialog. */\n #confirmationQuestion;\n\n /** @type {Promise} Text for the confirmation yes button. */\n #confirmationYes;\n\n /** @type {string} The session key. */\n #sesskey;\n\n /**\n * The class constructor.\n *\n * @param {int} cmid The course module ID.\n * @param {string} sesskey The session key.\n * @param {string} actionKey The action key.\n * @param {Promise} buttonLabel The action button's label.\n * @param {Promise} buttonIcon The action button's icon.\n * @param {Promise} confirmationTitle Title of the confirmation dialog.\n * @param {Promise} confirmationQuestion Question of the confirmation dialog.\n * @param {Promise} confirmationYes Text for the confirmation yes button.\n */\n constructor(cmid, sesskey, actionKey, buttonLabel, buttonIcon, confirmationTitle, confirmationQuestion, confirmationYes) {\n super();\n this.#cmid = cmid;\n this.#sesskey = sesskey;\n this.actionKey = actionKey;\n this.#buttonLabel = buttonLabel;\n this.#buttonIcon = buttonIcon;\n this.#confirmationTitle = confirmationTitle;\n this.#confirmationQuestion = confirmationQuestion;\n this.#confirmationYes = confirmationYes;\n }\n\n getBulkActionTriggerSelector() {\n return `[data-type=\"bulkactions\"] [data-action=\"${this.actionKey}\"]`;\n }\n\n async triggerBulkAction() {\n Notification.saveCancelPromise(\n this.#confirmationTitle,\n this.#confirmationQuestion,\n this.#confirmationYes,\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\n const form = document.createElement('form');\n form.method = 'POST';\n form.action = url.toString();\n\n // Create hidden inputs for the form.\n ((form, hiddenInputs) => {\n for (const [name, value] of Object.entries(hiddenInputs)) {\n const input = document.createElement('input');\n input.type = 'hidden';\n input.name = name;\n input.value = value;\n form.appendChild(input);\n }\n })(form, {\n action: 'gradingbatchoperation',\n operation: this.actionKey,\n selectedusers: selectedUsers.join(','),\n sesskey: this.#sesskey,\n });\n\n // Append the form to the body, submit it, and then remove it from the DOM.\n document.body.appendChild(form);\n form.submit();\n form.remove();\n\n return;\n }).catch(() => {\n return;\n });\n }\n\n async renderBulkActionTrigger(showInDropdown, index) {\n return Templates.render('mod_assign/bulkactions/grading/bulk_general_action_trigger', {\n action: this.actionKey,\n title: await this.#buttonLabel,\n icon: await this.#buttonIcon,\n showindropdown: showInDropdown,\n isfirst: index === 0,\n });\n }\n}\n"],"names":["Selectors","BulkAction","constructor","cmid","sesskey","actionKey","buttonLabel","buttonIcon","confirmationTitle","confirmationQuestion","confirmationYes","getBulkActionTriggerSelector","this","saveCancelPromise","then","selectedUsers","document","querySelectorAll","map","checkbox","value","url","URL","window","location","href","searchParams","set","form","createElement","method","action","toString","hiddenInputs","name","Object","entries","input","type","appendChild","operation","selectedusers","join","body","submit","remove","catch","showInDropdown","index","Templates","render","title","icon","showindropdown","isfirst"],"mappings":"6gDA2BMA,iCACsB,wQAGCC,qBAsCzBC,YAAYC,KAAMC,QAASC,UAAWC,YAAaC,WAAYC,kBAAmBC,qBAAsBC,muBAEvFP,0CACGC,cACXC,UAAYA,kDACGC,oDACDC,0DACOC,oEACGC,kEACLC,iBAG5BC,uFACsDC,KAAKP,gEAI1CQ,wCACTD,+CACAA,kDACAA,wBACFE,MAAK,WACGC,cAAgB,IAAIC,SAASC,iBAAiBjB,mCAAmCkB,KAAIC,UAAYA,SAASC,QAC1GC,IAAM,IAAIC,IAAIC,OAAOC,SAASC,MACpCJ,IAAIK,aAAaC,IAAI,2BAAMf,mBAErBgB,KAAOZ,SAASa,cAAc,QACpCD,KAAKE,OAAS,OACdF,KAAKG,OAASV,IAAIW,aAGhBJ,KAAMK,oBACC,MAAOC,KAAMd,SAAUe,OAAOC,QAAQH,cAAe,OAChDI,MAAQrB,SAASa,cAAc,SACrCQ,MAAMC,KAAO,SACbD,MAAMH,KAAOA,KACbG,MAAMjB,MAAQA,MACdQ,KAAKW,YAAYF,UAEtBT,KAAM,CACLG,OAAQ,wBACRS,UAAW5B,KAAKP,UAChBoC,cAAe1B,cAAc2B,KAAK,KAClCtC,8BAASQ,iBAIbI,SAAS2B,KAAKJ,YAAYX,MAC1BA,KAAKgB,SACLhB,KAAKiB,YAGNC,OAAM,uCAKiBC,eAAgBC,cACnCC,mBAAUC,OAAO,6DAA8D,CAClFnB,OAAQnB,KAAKP,UACb8C,kCAAavC,mBACbwC,iCAAYxC,kBACZyC,eAAgBN,eAChBO,QAAmB,IAAVN"} \ No newline at end of file +{"version":3,"file":"general_action.min.js","sources":["../../../src/bulkactions/grading/general_action.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 .\n\n/**\n * Class that defines the bulk action for general actions in the assignment grading page.\n *\n * @module mod_assign/bulkactions/grading/general_action\n * @copyright 2024 Shamim Rezaie \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 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\n /** @type {string} The action key. */\n actionKey;\n\n /** @type {number} The course module ID. */\n #cmid;\n\n /** @type {Promise} The action button's icon. */\n #buttonIcon;\n\n /** @type {Promise} The action button's label. */\n #buttonLabel;\n\n /** @type {Promise} Title of the confirmation dialog. */\n #confirmationTitle;\n\n /** @type {Promise} Question of the confirmation dialog. */\n #confirmationQuestion;\n\n /** @type {Promise} Text for the confirmation yes button. */\n #confirmationYes;\n\n /** @type {string} The session key. */\n #sesskey;\n\n /**\n * The class constructor.\n *\n * @param {int} cmid The course module ID.\n * @param {string} sesskey The session key.\n * @param {string} actionKey The action key.\n * @param {Promise} buttonLabel The action button's label.\n * @param {Promise} buttonIcon The action button's icon.\n * @param {Promise} confirmationTitle Title of the confirmation dialog.\n * @param {Promise} confirmationQuestion Question of the confirmation dialog.\n * @param {Promise} confirmationYes Text for the confirmation yes button.\n */\n constructor(cmid, sesskey, actionKey, buttonLabel, buttonIcon, confirmationTitle, confirmationQuestion, confirmationYes) {\n super();\n this.#cmid = cmid;\n this.#sesskey = sesskey;\n this.actionKey = actionKey;\n this.#buttonLabel = buttonLabel;\n this.#buttonIcon = buttonIcon;\n this.#confirmationTitle = confirmationTitle;\n this.#confirmationQuestion = confirmationQuestion;\n this.#confirmationYes = confirmationYes;\n }\n\n getBulkActionTriggerSelector() {\n return `[data-type=\"bulkactions\"] [data-action=\"${this.actionKey}\"]`;\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 this.#confirmationTitle,\n buttons: {\n save: await this.#confirmationYes,\n },\n body: Templates.render('mod_assign/bulkactions/grading/bulk_action_modal_body', {\n text: await this.#confirmationQuestion,\n operation: this.actionKey,\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_general_action_trigger', {\n action: this.actionKey,\n title: await this.#buttonLabel,\n icon: await this.#buttonIcon,\n showindropdown: showInDropdown,\n isfirst: index === 0,\n });\n }\n}\n"],"names":["Selectors","BulkAction","constructor","cmid","sesskey","actionKey","buttonLabel","buttonIcon","confirmationTitle","confirmationQuestion","confirmationYes","getBulkActionTriggerSelector","this","selectedUsers","document","querySelectorAll","map","checkbox","value","modal","SaveCancelModal","create","title","buttons","save","body","Templates","render","text","operation","selectedusers","join","show","removeOnClose","getRoot","on","ModalEvents","e","preventDefault","find","submit","showInDropdown","index","action","icon","showindropdown","isfirst"],"mappings":"unDA4BMA,iCACsB,wQAGCC,qBAsCzBC,YAAYC,KAAMC,QAASC,UAAWC,YAAaC,WAAYC,kBAAmBC,qBAAsBC,muBAEvFP,0CACGC,cACXC,UAAYA,kDACGC,oDACDC,0DACOC,oEACGC,kEACLC,iBAG5BC,uFACsDC,KAAKP,gDAIjDQ,cAAgB,IAAIC,SAASC,iBAAiBf,mCAAmCgB,KAAIC,UAAYA,SAASC,QAE1GC,YAAcC,2BAAgBC,OAAO,CACvCC,kCAAaV,yBACbW,QAAS,CACLC,iCAAYZ,wBAEhBa,KAAMC,mBAAUC,OAAO,wDAAyD,CAC5EC,iCAAYhB,4BACZiB,UAAWjB,KAAKP,UAChBF,2BAAMS,YACNkB,cAAejB,cAAckB,KAAK,KAClC3B,8BAASQ,iBAEboB,MAAM,EACNC,eAAe,IAInBd,MAAMe,UAAUC,GAAGC,sBAAYZ,MAAOa,IAClCA,EAAEC,iBACFnB,MAAMe,UAAUK,KAAK,QAAQC,0CAIPC,eAAgBC,cACnChB,mBAAUC,OAAO,6DAA8D,CAClFgB,OAAQ/B,KAAKP,UACbiB,kCAAaV,mBACbgC,iCAAYhC,kBACZiC,eAAgBJ,eAChBK,QAAmB,IAAVJ"} \ No newline at end of file diff --git a/mod/assign/amd/build/bulkactions/grading/message.min.js.map b/mod/assign/amd/build/bulkactions/grading/message.min.js.map index e399f77838a..56c1b7111e8 100644 --- a/mod/assign/amd/build/bulkactions/grading/message.min.js.map +++ b/mod/assign/amd/build/bulkactions/grading/message.min.js.map @@ -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 .\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 \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"} \ No newline at end of file +{"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 .\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 \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"} \ No newline at end of file diff --git a/mod/assign/amd/build/bulkactions/grading/setmarkingallocation.min.js b/mod/assign/amd/build/bulkactions/grading/setmarkingallocation.min.js index cf47bc1f118..123b4c3341e 100644 --- a/mod/assign/amd/build/bulkactions/grading/setmarkingallocation.min.js +++ b/mod/assign/amd/build/bulkactions/grading/setmarkingallocation.min.js @@ -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 \ No newline at end of file diff --git a/mod/assign/amd/build/bulkactions/grading/setmarkingallocation.min.js.map b/mod/assign/amd/build/bulkactions/grading/setmarkingallocation.min.js.map index a58dd3318ee..6a93fda95e3 100644 --- a/mod/assign/amd/build/bulkactions/grading/setmarkingallocation.min.js.map +++ b/mod/assign/amd/build/bulkactions/grading/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 .\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 \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"} \ No newline at end of file +{"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 .\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 \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"} \ No newline at end of file diff --git a/mod/assign/amd/build/bulkactions/grading/setmarkingworkflowstate.min.js b/mod/assign/amd/build/bulkactions/grading/setmarkingworkflowstate.min.js index fe22f7604ce..a63b70c9bee 100644 --- a/mod/assign/amd/build/bulkactions/grading/setmarkingworkflowstate.min.js +++ b/mod/assign/amd/build/bulkactions/grading/setmarkingworkflowstate.min.js @@ -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 \ No newline at end of file diff --git a/mod/assign/amd/build/bulkactions/grading/setmarkingworkflowstate.min.js.map b/mod/assign/amd/build/bulkactions/grading/setmarkingworkflowstate.min.js.map index 4b741f96947..879ed3de31e 100644 --- a/mod/assign/amd/build/bulkactions/grading/setmarkingworkflowstate.min.js.map +++ b/mod/assign/amd/build/bulkactions/grading/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 .\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 \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"} \ No newline at end of file +{"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 .\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 \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"} \ No newline at end of file diff --git a/mod/assign/amd/src/bulkactions/grading/bulk_actions.js b/mod/assign/amd/src/bulkactions/grading/bulk_actions.js index 58e043e883d..b0a8a8f3ade 100644 --- a/mod/assign/amd/src/bulkactions/grading/bulk_actions.js +++ b/mod/assign/amd/src/bulkactions/grading/bulk_actions.js @@ -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) { diff --git a/mod/assign/amd/src/bulkactions/grading/delete.js b/mod/assign/amd/src/bulkactions/grading/delete.js index 0b76730a188..47159cbb284 100644 --- a/mod/assign/amd/src/bulkactions/grading/delete.js +++ b/mod/assign/amd/src/bulkactions/grading/delete.js @@ -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(); }); } diff --git a/mod/assign/amd/src/bulkactions/grading/extend.js b/mod/assign/amd/src/bulkactions/grading/extend.js index 49e77b7c3eb..b571e2830af 100644 --- a/mod/assign/amd/src/bulkactions/grading/extend.js +++ b/mod/assign/amd/src/bulkactions/grading/extend.js @@ -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(); }); } diff --git a/mod/assign/amd/src/bulkactions/grading/general_action.js b/mod/assign/amd/src/bulkactions/grading/general_action.js index 18065174bb8..73db7c72c70 100644 --- a/mod/assign/amd/src/bulkactions/grading/general_action.js +++ b/mod/assign/amd/src/bulkactions/grading/general_action.js @@ -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(); }); } diff --git a/mod/assign/amd/src/bulkactions/grading/message.js b/mod/assign/amd/src/bulkactions/grading/message.js index 79ee9179960..bdf5881b6e6 100644 --- a/mod/assign/amd/src/bulkactions/grading/message.js +++ b/mod/assign/amd/src/bulkactions/grading/message.js @@ -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) { diff --git a/mod/assign/amd/src/bulkactions/grading/setmarkingallocation.js b/mod/assign/amd/src/bulkactions/grading/setmarkingallocation.js index 66ad7f951ab..dcb3b09318f 100644 --- a/mod/assign/amd/src/bulkactions/grading/setmarkingallocation.js +++ b/mod/assign/amd/src/bulkactions/grading/setmarkingallocation.js @@ -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(); }); } diff --git a/mod/assign/amd/src/bulkactions/grading/setmarkingworkflowstate.js b/mod/assign/amd/src/bulkactions/grading/setmarkingworkflowstate.js index 4067b6e581e..ceec85be1c9 100644 --- a/mod/assign/amd/src/bulkactions/grading/setmarkingworkflowstate.js +++ b/mod/assign/amd/src/bulkactions/grading/setmarkingworkflowstate.js @@ -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(); }); } diff --git a/mod/assign/templates/bulkactions/grading/bulk_action_modal_body.mustache b/mod/assign/templates/bulkactions/grading/bulk_action_modal_body.mustache new file mode 100644 index 00000000000..d6a045e544d --- /dev/null +++ b/mod/assign/templates/bulkactions/grading/bulk_action_modal_body.mustache @@ -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 . +}} +{{! + @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" + } +}} +

{{text}}

+
+ + + + + + +