mirror of
https://github.com/moodle/moodle.git
synced 2025-03-15 05:00:06 +01:00
1 line
12 KiB
Plaintext
1 line
12 KiB
Plaintext
{"version":3,"sources":["../src/quickenrolment.js"],"names":["define","Template","$","Str","Config","Notification","ModalFactory","ModalEvents","Fragment","Pending","SELECTORS","COHORTSELECT","TRIGGERBUTTONS","UNWANTEDHIDDENFIELDS","QuickEnrolment","options","contextid","initModal","prototype","courseid","modal","triggerButtons","when","get_strings","key","component","create","type","types","SAVE_CANCEL","large","then","strings","setTitle","setSaveButtonText","getRoot","on","save","submitForm","bind","submitFormAjax","hidden","setBody","shown","pendingPromise","bodyPromise","getBody","html","stringIndex","find","length","resolve","catch","exception","fail","e","preventDefault","submit","form","each","remove","formData","serialize","hide","script","wwwroot","ajax","processData","contentType","response","error","addNotification","message","window","M","core_formchangechecker","reset_form_dirty_state","location","reload","loadFragment","getFooter","render","init","config"],"mappings":"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","sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see <http://www.gnu.org/licenses/>.\n\n/**\n * Quick enrolment AMD module.\n *\n * @module enrol_manual/quickenrolment\n * @copyright 2016 Damyon Wiese <damyon@moodle.com>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\ndefine(['core/templates',\n 'jquery',\n 'core/str',\n 'core/config',\n 'core/notification',\n 'core/modal_factory',\n 'core/modal_events',\n 'core/fragment',\n 'core/pending',\n ],\n function(Template, $, Str, Config, Notification, ModalFactory, ModalEvents, Fragment, Pending) {\n\n /** @type {Object} The list of selectors for the quick enrolment modal. */\n var SELECTORS = {\n COHORTSELECT: \"#id_cohortlist\",\n TRIGGERBUTTONS: \".enrolusersbutton.enrol_manual_plugin [type='submit']\",\n UNWANTEDHIDDENFIELDS: \":input[value='_qf__force_multiselect_submission']\"\n };\n\n /**\n * Constructor\n *\n * @param {Object} options Object containing options. The only valid option at this time is contextid.\n * Each call to templates.render gets it's own instance of this class.\n */\n var QuickEnrolment = function(options) {\n this.contextid = options.contextid;\n\n this.initModal();\n };\n // Class variables and functions.\n\n /** @var {number} courseid - */\n QuickEnrolment.prototype.courseid = 0;\n\n /** @var {Modal} modal */\n QuickEnrolment.prototype.modal = null;\n\n /**\n * Private method\n *\n * @method initModal\n * @private\n */\n QuickEnrolment.prototype.initModal = function() {\n var triggerButtons = $(SELECTORS.TRIGGERBUTTONS);\n\n $.when(\n Str.get_strings([\n {key: 'enroluserscohorts', component: 'enrol_manual'},\n {key: 'enrolusers', component: 'enrol_manual'},\n ]),\n ModalFactory.create({\n type: ModalFactory.types.SAVE_CANCEL,\n large: true,\n }, triggerButtons)\n )\n .then(function(strings, modal) {\n this.modal = modal;\n\n modal.setTitle(strings[1]);\n modal.setSaveButtonText(strings[1]);\n\n modal.getRoot().on(ModalEvents.save, this.submitForm.bind(this));\n modal.getRoot().on('submit', 'form', this.submitFormAjax.bind(this));\n\n // We want the reset the form every time it is opened.\n modal.getRoot().on(ModalEvents.hidden, function() {\n modal.setBody('');\n });\n\n modal.getRoot().on(ModalEvents.shown, function() {\n var pendingPromise = new Pending('enrol_manual/quickenrolment:initModal:shown');\n var bodyPromise = this.getBody();\n bodyPromise.then(function(html) {\n var stringIndex = $(html).find(SELECTORS.COHORTSELECT).length ? 0 : 1;\n modal.setSaveButtonText(strings[stringIndex]);\n\n return;\n })\n .then(pendingPromise.resolve)\n .catch(Notification.exception);\n\n modal.setBody(bodyPromise);\n }.bind(this));\n\n return;\n }.bind(this))\n .fail(Notification.exception);\n };\n\n /**\n * This triggers a form submission, so that any mform elements can do final tricks before the form submission is processed.\n *\n * @method submitForm\n * @param {Event} e Form submission event.\n * @private\n */\n QuickEnrolment.prototype.submitForm = function(e) {\n e.preventDefault();\n this.modal.getRoot().find('form').submit();\n };\n\n /**\n * Private method\n *\n * @method submitForm\n * @private\n * @param {Event} e Form submission event.\n */\n QuickEnrolment.prototype.submitFormAjax = function(e) {\n // We don't want to do a real form submission.\n e.preventDefault();\n\n var form = this.modal.getRoot().find('form');\n\n // Before send the data through AJAX, we need to parse and remove some unwanted hidden fields.\n // This hidden fields are added automatically by mforms and when it reaches the AJAX we get an error.\n var hidden = form.find(SELECTORS.UNWANTEDHIDDENFIELDS);\n hidden.each(function() {\n $(this).remove();\n });\n\n var formData = form.serialize();\n\n this.modal.hide();\n\n var settings = {\n type: 'GET',\n processData: false,\n contentType: \"application/json\"\n };\n\n var script = Config.wwwroot + '/enrol/manual/ajax.php?' + formData;\n $.ajax(script, settings)\n .then(function(response) {\n\n if (response.error) {\n Notification.addNotification({\n message: response.error,\n type: \"error\"\n });\n } else {\n // Reload the page, don't show changed data warnings.\n if (typeof window.M.core_formchangechecker !== \"undefined\") {\n window.M.core_formchangechecker.reset_form_dirty_state();\n }\n window.location.reload();\n }\n return;\n })\n .fail(Notification.exception);\n };\n\n /**\n * Private method\n *\n * @method getBody\n * @private\n * @return {Promise}\n */\n QuickEnrolment.prototype.getBody = function() {\n return Fragment.loadFragment('enrol_manual', 'enrol_users_form', this.contextid, {}).fail(Notification.exception);\n };\n\n /**\n * Private method\n *\n * @method getFooter\n * @private\n * @return {Promise}\n */\n QuickEnrolment.prototype.getFooter = function() {\n return Template.render('enrol_manual/enrol_modal_footer', {});\n };\n\n return /** @alias module:enrol_manual/quickenrolment */ {\n // Public variables and functions.\n /**\n * Every call to init creates a new instance of the class with it's own event listeners etc.\n *\n * @method init\n * @public\n * @param {object} config - config variables for the module.\n */\n init: function(config) {\n (new QuickEnrolment(config));\n }\n };\n});\n"],"file":"quickenrolment.min.js"} |