AutorÃa | Ultima modificación | Ver Log |
{"version":3,"file":"add_purpose.min.js","sources":["../src/add_purpose.js"],"sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see <http://www.gnu.org/licenses/>.\n\n/**\n * Module to add purposes.\n *\n * @module tool_dataprivacy/add_purpose\n * @copyright 2018 David Monllao\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\ndefine([\n 'jquery',\n 'cor
e/str',\n 'core/ajax',\n 'core/notification',\n 'core/modal_save_cancel',\n 'core/modal_events',\n 'core/fragment',\n 'core_form/changechecker',\n], function(\n $,\n Str,\n Ajax,\n Notification,\n ModalSaveCancel,\n ModalEvents,\n Fragment,\n FormChangeChecker\n) {\n\n var SELECTORS = {\n PURPOSE_LINK: '[data-add-element=\"purpose\"]',\n };\n\n var AddPurpose = function(contextId) {\n this.contextId = contextId;\n\n var stringKeys = [\n {\n key: 'addpurpose',\n component: 'tool_dataprivacy'\n },\n {\n key: 'save',\n component: 'admin'\n }\n ];\n this.strings = Str.get_strings(stringKeys);\n\n this.registerEventListeners();\n };\n\n /**\n * @var {int} contextId\n * @private\n */\n AddPurpose.prototype.con
textId = 0;\n\n /**\n * @var {Promise}\n * @private\n */\n AddPurpose.prototype.strings = 0;\n\n AddPurpose.prototype.registerEventListeners = function() {\n\n var trigger = $(SELECTORS.PURPOSE_LINK);\n trigger.on('click', function() {\n this.strings.then(function(strings) {\n return Promise.all([\n ModalSaveCancel.create({\n title: strings[0],\n body: '',\n }),\n strings[1],\n ]).then(function([modal, string]) {\n this.setupFormModal(modal, string);\n }.bind(this));\n }.bind(this))\n .catch(Notification.exception);\n }.bind(this));\n\n };\n\n /**\n * @method getBody\n * @param {Object} formdata\n * @private\n * @return {Promise}\n */\
n AddPurpose.prototype.getBody = function(formdata) {\n\n var params = null;\n if (typeof formdata !== \"undefined\") {\n params = {jsonformdata: JSON.stringify(formdata)};\n }\n // Get the content of the modal.\n return Fragment.loadFragment('tool_dataprivacy', 'addpurpose_form', this.contextId, params);\n };\n\n AddPurpose.prototype.setupFormModal = function(modal, saveText) {\n modal.setLarge();\n\n modal.setSaveButtonText(saveText);\n\n // We want to reset the form every time it is opened.\n modal.getRoot().on(ModalEvents.hidden, this.destroy.bind(this));\n\n modal.setBody(this.getBody());\n\n // We catch the modal save event, and use it to submit the form inside the modal.\n // Triggering a form submission will give JS validation scripts a chance to check for errors.\n modal.getRoot().on(ModalEvents.save, this.submitForm.bind(t
his));\n // We also catch the form submit event and use it to submit the form with ajax.\n modal.getRoot().on('submit', 'form', this.submitFormAjax.bind(this));\n\n this.modal = modal;\n\n modal.show();\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 AddPurpose.prototype.submitForm = function(e) {\n e.preventDefault();\n this.modal.getRoot().find('form').submit();\n };\n\n AddPurpose.prototype.submitFormAjax = function(e) {\n // We don't want to do a real form submission.\n e.preventDefault();\n\n // Convert all the form elements values to a serialised string.\n var formData = this.modal.getRoot().find('form').serialize();\n\n Aja
x.call([{\n methodname: 'tool_dataprivacy_create_purpose_form',\n args: {jsonformdata: JSON.stringify(formData)},\n done: function(data) {\n if (data.validationerrors) {\n this.modal.setBody(this.getBody(formData));\n } else {\n this.close();\n }\n }.bind(this),\n\n fail: Notification.exception\n }]);\n };\n\n AddPurpose.prototype.close = function() {\n this.destroy();\n document.location.reload();\n };\n\n AddPurpose.prototype.destroy = function() {\n FormChangeChecker.resetAllFormDirtyStates();\n this.modal.destroy();\n };\n\n AddPurpose.prototype.removeListeners = function() {\n $(SELECTORS.PURPOSE_LINK).off('click');\n };\n\n return /** @alias module:tool_dataprivacy/add_purpose */ {\n getInstance:
function(contextId) {\n return new AddPurpose(contextId);\n }\n };\n }\n);\n"],"names":["define","$","Str","Ajax","Notification","ModalSaveCancel","ModalEvents","Fragment","FormChangeChecker","SELECTORS","AddPurpose","contextId","strings","get_strings","key","component","registerEventListeners","prototype","on","then","Promise","all","create","title","body","modal","string","setupFormModal","bind","this","catch","exception","getBody","formdata","params","jsonformdata","JSON","stringify","loadFragment","saveText","setLarge","setSaveButtonText","getRoot","hidden","destroy","setBody","save","submitForm","submitFormAjax","show","e","preventDefault","find","submit","formData","serialize","call","methodname","args","done","data","validationerrors","close","fail","document","location","reload","resetAllFormDirtyStates","removeListeners","off","getInstance"],"mappings":";;;;;;;AAsBAA,sCAAO,CACH,SACA,WACA,YACA,oBACA,yBACA,oBACA,gBACA,4BACD,SACCC,EACAC,IACAC,KACAC,aACAC,gBACAC,YACAC
,SACAC,uBAGQC,uBACc,+BAGdC,WAAa,SAASC,gBACjBA,UAAYA,eAYZC,QAAUV,IAAIW,YAVF,CACb,CACIC,IAAK,aACLC,UAAW,oBAEf,CACID,IAAK,OACLC,UAAW,gBAKdC,iCAOTN,WAAWO,UAAUN,UAAY,EAMjCD,WAAWO,UAAUL,QAAU,EAE/BF,WAAWO,UAAUD,uBAAyB,WAE5Bf,EAAEQ,wBACRS,GAAG,QAAS,gBACXN,QAAQO,KAAK,SAASP,gBAChBQ,QAAQC,IAAI,CACfhB,gBAAgBiB,OAAO,CACnBC,MAAOX,QAAQ,GACfY,KAAM,KAEVZ,QAAQ,KACTO,KAAK,mBAAUM,MAAOC,kBAChBC,eAAeF,MAAOC,SAC7BE,KAAKC,QACTD,KAAKC,OACNC,MAAM1B,aAAa2B,YACtBH,KAAKC,QAUXnB,WAAWO,UAAUe,QAAU,SAASC,cAEhCC,OAAS,iBACW,IAAbD,WACPC,OAAS,CAACC,aAAcC,KAAKC,UAAUJ,YAGpC1B,SAAS+B,aAAa,mBAAoB,kBAAmBT,KAAKlB,UAAWuB,SAGxFxB,WAAWO,UAAUU,eAAiB,SAASF,MAAOc,UAClDd,MAAMe,WAENf,MAAMgB,kBAAkBF,UAGxBd,MAAMiB,UAAUxB,GAAGZ,YAAYqC,OAAQd,KAAKe,QAAQhB,KAAKC,OAEzDJ,MAAMoB,QAAQhB,KAAKG,WAInBP,MAAMiB,UAAUxB,GAAGZ,YAAYwC,KAAMjB,KAAKkB,WAAWnB,KAAKC,OAE1DJ,MAAMiB,UAAUxB,GAAG,SAAU,OAAQW,KAAKmB,eAAepB,KAAKC,YAEzDJ,MAAQA,MAEbA,MAAMwB,QAUVvC,WAAWO,UAAU8B,WAAa,SAASG,GACvCA,EAAEC,sBACG1B,MAAMiB,UAAUU,KAAK,QAAQC,UAGtC3C,WAAWO,UAAU+B,eAAiB,SAASE,GAE3CA,EAAEC,qBAGEG,SAAWzB,
KAAKJ,MAAMiB,UAAUU,KAAK,QAAQG,YAEjDpD,KAAKqD,KAAK,CAAC,CACPC,WAAY,uCACZC,KAAM,CAACvB,aAAcC,KAAKC,UAAUiB,WACpCK,KAAM,SAASC,MACPA,KAAKC,sBACApC,MAAMoB,QAAQhB,KAAKG,QAAQsB,gBAE3BQ,SAEXlC,KAAKC,MAEPkC,KAAM3D,aAAa2B,cAI3BrB,WAAWO,UAAU6C,MAAQ,gBACpBlB,UACLoB,SAASC,SAASC,UAGtBxD,WAAWO,UAAU2B,QAAU,WAC3BpC,kBAAkB2D,+BACb1C,MAAMmB,WAGflC,WAAWO,UAAUmD,gBAAkB,WACnCnE,EAAEQ,wBAAwB4D,IAAI,UAGuB,CACrDC,YAAa,SAAS3D,kBACX,IAAID,WAAWC"}