Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
{"version":3,"file":"quickenrolment.min.js","sources":["../src/quickenrolment.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 * 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 */\nimport * as DynamicTable from 'core_table/dynamic';\nimport * as Str from 'core/str';\nimport * as Toast from 'core/toast';\nimport Config from 'core/config';\nimport Fragment from 'core/fragment';\nimport ModalEvents from 'core/modal_events';\nimport Notification from 'core/notification';\nimport jQuery from 'jquery';\nimport Pending from 'core/pending';\nimport Prefetch from 'core/prefetch';\nimport ModalSaveCancel from 'core/modal_save_cancel';\n\nconst Selectors = {\n    cohortSelector: \"#id_cohortlist\",\n    triggerButtons: \".enrolusersbutton.enrol_manual_plugin [type='submit']\",\n    unwantedHiddenFields: \"input[value='_qf__force_multiselect_submission']\",\n    buttonWrapper: '[data-region=\"wrapper\"]',\n};\n\n/**\n * Get the content of the body for the specified context.\n *\n * @param {Number} contextId\n * @returns {Promise}\n */\nconst getBodyForContext = contextId => {\n    return Fragment.loadFragment('enrol_manual', 'enrol_users_form', contextId, {});\n};\n\n/**\n * Get the dynamic table for the button.\n *\n * @param {HTMLElement} element\n * @returns {HTMLElement}\n */\nconst getDynamicTableForElement = element => {\n    const wrapper = element.closest(Selectors.buttonWrapper);\n\n    return DynamicTable.getTableFromId(wrapper.dataset.tableUniqueid);\n};\n\n/**\n * Register the event listeners for this contextid.\n *\n * @param {Number} contextId\n */\nconst registerEventListeners = contextId => {\n    document.addEventListener('click', e => {\n        if (e.target.closest(Selectors.triggerButtons)) {\n            e.preventDefault();\n\n            showModal(getDynamicTableForElement(e.target), contextId);\n\n            return;\n        }\n    });\n};\n\n/**\n * Display the modal for this contextId.\n *\n * @param {HTMLElement} dynamicTable The table to beb refreshed when changes are made\n * @param {Number} contextId\n * @returns {Promise}\n */\nconst showModal = (dynamicTable, contextId) => {\n    const pendingPromise = new Pending('enrol_manual/quickenrolment:showModal');\n\n    return ModalSaveCancel.create({\n        large: true,\n        title: Str.get_string('enrolusers', 'enrol_manual'),\n        body: getBodyForContext(contextId),\n        buttons: {\n            save: Str.get_string('enrolusers', 'enrol_manual'),\n        },\n        show: true,\n    })\n    .then(modal => {\n        modal.getRoot().on(ModalEvents.save, e => {\n            // Trigger a form submission, so that any mform elements can do final tricks before the form submission\n            // is processed.\n            // The actual submit even tis captured in the next handler.\n\n            e.preventDefault();\n            modal.getRoot().find('form').submit();\n        });\n\n        modal.getRoot().on('submit', 'form', e => {\n            e.preventDefault();\n\n            submitFormAjax(dynamicTable, modal);\n        });\n\n        modal.getRoot().on(ModalEvents.hidden, () => {\n            modal.destroy();\n        });\n\n        return modal;\n    })\n    .then(modal => Promise.all([modal, modal.getBodyPromise()]))\n    .then(([modal, body]) => {\n        if (body.get(0).querySelector(Selectors.cohortSelector)) {\n            return modal.setSaveButtonText(Str.get_string('enroluserscohorts', 'enrol_manual')).then(() => modal);\n        }\n\n        return modal;\n    })\n    .then(modal => {\n        pendingPromise.resolve();\n\n        return modal;\n    })\n    .catch(Notification.exception);\n};\n\n/**\n * Submit the form via ajax.\n *\n * @param {HTMLElement} dynamicTable\n * @param {Object} modal\n */\nconst submitFormAjax = (dynamicTable, modal) => {\n    // Note: We use a jQuery object here so that we can use its serialize functionality.\n    const form = 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    form.get(0).querySelectorAll(Selectors.unwantedHiddenFields).forEach(hiddenField => hiddenField.remove());\n\n    modal.hide();\n    modal.destroy();\n\n    jQuery.ajax(\n        `${Config.wwwroot}/enrol/manual/ajax.php?${form.serialize()}`,\n        {\n            type: 'GET',\n            processData: false,\n            contentType: \"application/json\",\n        }\n    )\n    .then(response => {\n        if (response.error) {\n            throw new Error(response.error);\n        }\n\n        return response.count;\n    })\n    .then(count => {\n        return Promise.all([\n            Str.get_string('totalenrolledusers', 'enrol', count),\n            DynamicTable.refreshTableContent(dynamicTable),\n        ]);\n    })\n    .then(([notificationBody]) => notificationBody)\n    .then(notificationBody => Toast.add(notificationBody))\n    .catch(error => {\n        Notification.addNotification({\n            message: error.message,\n            type: 'error',\n        });\n    });\n};\n\n/**\n * Set up quick enrolment for the manual enrolment plugin.\n *\n * @param {Number} contextid The context id to setup for\n */\nexport const init = ({contextid}) => {\n    registerEventListeners(contextid);\n\n    Prefetch.prefetchStrings('enrol_manual', [\n        'enrolusers',\n        'enroluserscohorts',\n    ]);\n\n    Prefetch.prefetchString('enrol', 'totalenrolledusers');\n};\n"],"names":["Selectors","getBodyForContext","contextId","Fragment","loadFragment","registerEventListeners","document","addEventListener","e","target","closest","preventDefault","showModal","element","wrapper","DynamicTable","getTableFromId","dataset","tableUniqueid","getDynamicTableForElement","dynamicTable","pendingPromise","Pending","ModalSaveCancel","create","large","title","Str","get_string","body","buttons","save","show","then","modal","getRoot","on","ModalEvents","find","submit","submitFormAjax","hidden","destroy","Promise","all","getBodyPromise","_ref","get","querySelector","setSaveButtonText","resolve","catch","Notification","exception","form","querySelectorAll","forEach","hiddenField","remove","hide","ajax","Config","wwwroot","serialize","type","processData","contentType","response","error","Error","count","refreshTableContent","_ref2","notificationBody","Toast","add","addNotification","message","_ref3","contextid","prefetchStrings","prefetchString"],"mappings":";;;;;;;ykBAkCMA,yBACc,iBADdA,yBAEc,wDAFdA,+BAGoB,mDAHpBA,wBAIa,0BASbC,kBAAoBC,WACfC,kBAASC,aAAa,eAAgB,mBAAoBF,UAAW,IAoB1EG,uBAAyBH,YAC3BI,SAASC,iBAAiB,SAASC,OAC3BA,EAAEC,OAAOC,QAAQV,iCACjBQ,EAAEG,sBAEFC,UAhBsBC,CAAAA,gBACxBC,QAAUD,QAAQH,QAAQV,gCAEzBe,aAAaC,eAAeF,QAAQG,QAAQC,gBAajCC,CAA0BX,EAAEC,QAASP,eAcrDU,UAAY,CAACQ,aAAclB,mBACvBmB,eAAiB,IAAIC,iBAAQ,gDAE5BC,2BAAgBC,OAAO,CAC1BC,OAAO,EACPC,MAAOC,IAAIC,WAAW,aAAc,gBACpCC,KAAM5B,kBAAkBC,WACxB4B,QAAS,CACLC,KAAMJ,IAAIC,WAAW,aAAc,iBAEvCI,MAAM,IAETC,MAAKC,QACFA,MAAMC,UAAUC,GAAGC,sBAAYN,MAAMvB,IAKjCA,EAAEG,iBACFuB,MAAMC,UAAUG,KAAK,QAAQC,YAGjCL,MAAMC,UAAUC,GAAG,SAAU,QAAQ5B,IACjCA,EAAEG,iBAEF6B,eAAepB,aAAcc,UAGjCA,MAAMC,UAAUC,GAAGC,sBAAYI,QAAQ,KACnCP,MAAMQ,aAGHR,SAEVD,MAAKC,OAASS,QAAQC,IAAI,CAACV,MAAOA,MAAMW,qBACxCZ,MAAKa,WAAEZ,MAAOL,kBACPA,KAAKkB,IAAI,GAAGC,cAAchD,0BACnBkC,MAAMe,kBAAkBtB,IAAIC,WAAW,oBAAqB,iBAAiBK,MAAK,IAAMC,QAG5FA,SAEVD,MAAKC,QACFb,eAAe6B,UAERhB,SAEViB,MAAMC,sBAAaC,YASlBb,eAAiB,CAACpB,aAAcc,eAE5BoB,KAAOpB,MAAMC,UAAUG,KAAK,QAIlCgB,KAAKP,IAAI,GAAGQ,iBAAiBvD,gCAAgCwD,SAAQC,aAAeA,YAAYC,WAEhGxB,MAAMyB,OACNzB,MAAMQ,0BAECkB,eACAC,gBAAOC,0CAAiCR,KAAKS,aAChD,CACIC,KAAM,MACNC,aAAa,EACbC,YAAa,qBAGpBjC,MAAKkC,cACEA,SAASC,YACH,IAAIC,MAAMF,SAASC,cAGtBD,SAASG,SAEnBrC,MAAKqC,OACK3B,QAAQC,IAAI,CACfjB,IAAIC,WAAW,qBAAsB,QAAS0C,OAC9CvD,aAAawD,oBAAoBnD,kBAGxCa,MAAKuC,YAAEC,+BAAsBA,oBAC7BxC,MAAKwC,kBAAoBC,MAAMC,IAAIF,oBACnCtB,OAAMiB,8BACUQ,gBAAgB,CACzBC,QAAST,MAAMS,QACfb,KAAM,4BAUEc,YAACC,UAACA,iBAClB1E,uBAAuB0E,6BAEdC,gBAAgB,eAAgB,CACrC,aACA,wCAGKC,eAAe,QAAS"}