%PDF- %PDF-
Direktori : /home/vacivi36/ava/user/amd/build/ |
Current File : /home/vacivi36/ava/user/amd/build/status_field.min.js.map |
{"version":3,"file":"status_field.min.js","sources":["../src/status_field.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 * AMD module for the user enrolment status field in the course participants page.\n *\n * @module core_user/status_field\n * @copyright 2017 Jun Pataleta\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport * as DynamicTable from 'core_table/dynamic';\nimport * as Repository from './repository';\nimport * as Str from 'core/str';\nimport DynamicTableSelectors from 'core_table/local/dynamic/selectors';\nimport Fragment from 'core/fragment';\nimport ModalEvents from 'core/modal_events';\nimport ModalFactory from 'core/modal_factory';\nimport Notification from 'core/notification';\nimport Templates from 'core/templates';\nimport {add as notifyUser} from 'core/toast';\n\nconst Selectors = {\n editEnrolment: '[data-action=\"editenrolment\"]',\n showDetails: '[data-action=\"showdetails\"]',\n unenrol: '[data-action=\"unenrol\"]',\n statusElement: '[data-status]',\n};\n\n/**\n * Get the dynamic table from the specified link.\n *\n * @param {HTMLElement} link\n * @returns {HTMLElement}\n */\nconst getDynamicTableFromLink = link => link.closest(DynamicTableSelectors.main.region);\n\n/**\n * Get the status container from the specified link.\n *\n * @param {HTMLElement} link\n * @returns {HTMLElement}\n */\nconst getStatusContainer = link => link.closest(Selectors.statusElement);\n\n/**\n * Get user enrolment id from the specified link\n *\n * @param {HTMLElement} link\n * @returns {Number}\n */\nconst getUserEnrolmentIdFromLink = link => link.getAttribute('rel');\n\n/**\n * Register all event listeners for the status fields.\n *\n * @param {Number} contextId\n * @param {Number} uniqueId\n */\nconst registerEventListeners = (contextId, uniqueId) => {\n const getBodyFunction = (userEnrolmentId, formData) => getBody(contextId, userEnrolmentId, formData);\n\n document.addEventListener('click', e => {\n const tableRoot = e.target.closest(DynamicTableSelectors.main.fromRegionId(uniqueId));\n if (!tableRoot) {\n return;\n }\n\n const editLink = e.target.closest(Selectors.editEnrolment);\n if (editLink) {\n e.preventDefault();\n\n showEditDialogue(editLink, getBodyFunction);\n }\n\n const unenrolLink = e.target.closest(Selectors.unenrol);\n if (unenrolLink) {\n e.preventDefault();\n\n showUnenrolConfirmation(unenrolLink);\n }\n\n const showDetailsLink = e.target.closest(Selectors.showDetails);\n if (showDetailsLink) {\n e.preventDefault();\n\n showStatusDetails(showDetailsLink);\n }\n });\n};\n\n/**\n * Show the edit dialogue.\n *\n * @param {HTMLElement} link\n * @param {Function} getBody Function to get the body for the specified user enrolment\n */\nconst showEditDialogue = (link, getBody) => {\n const container = getStatusContainer(link);\n const userEnrolmentId = getUserEnrolmentIdFromLink(link);\n\n ModalFactory.create({\n large: true,\n title: Str.get_string('edituserenrolment', 'enrol', container.dataset.fullname),\n type: ModalFactory.types.SAVE_CANCEL,\n body: getBody(userEnrolmentId)\n })\n .then(modal => {\n // Handle save event.\n modal.getRoot().on(ModalEvents.save, e => {\n // Don't close the modal yet.\n e.preventDefault();\n\n // Submit form data.\n submitEditFormAjax(link, getBody, modal, userEnrolmentId, container.dataset);\n });\n\n // Handle hidden event.\n modal.getRoot().on(ModalEvents.hidden, () => {\n // Destroy when hidden.\n modal.destroy();\n });\n\n // Show the modal.\n modal.show();\n\n return modal;\n })\n .catch(Notification.exception);\n};\n\n/**\n * Show and handle the unenrolment confirmation dialogue.\n *\n * @param {HTMLElement} link\n */\nconst showUnenrolConfirmation = link => {\n const container = getStatusContainer(link);\n const userEnrolmentId = getUserEnrolmentIdFromLink(link);\n\n ModalFactory.create({\n type: ModalFactory.types.SAVE_CANCEL,\n })\n .then(modal => {\n // Handle confirm event.\n modal.getRoot().on(ModalEvents.save, e => {\n // Don't close the modal yet.\n e.preventDefault();\n\n // Submit data.\n submitUnenrolFormAjax(\n link,\n modal,\n {\n ueid: userEnrolmentId,\n },\n container.dataset\n );\n });\n\n // Handle hidden event.\n modal.getRoot().on(ModalEvents.hidden, () => {\n // Destroy when hidden.\n modal.destroy();\n });\n\n // Display the delete confirmation modal.\n modal.show();\n\n const stringData = [\n {\n key: 'unenrol',\n component: 'enrol',\n },\n {\n key: 'unenrolconfirm',\n component: 'enrol',\n param: {\n user: container.dataset.fullname,\n course: container.dataset.coursename,\n enrolinstancename: container.dataset.enrolinstancename,\n }\n }\n ];\n\n return Promise.all([Str.get_strings(stringData), modal]);\n })\n .then(([strings, modal]) => {\n modal.setTitle(strings[0]);\n modal.setSaveButtonText(strings[0]);\n modal.setBody(strings[1]);\n\n return modal;\n })\n .catch(Notification.exception);\n};\n\n/**\n * Show the user details dialogue.\n *\n * @param {HTMLElement} link\n */\nconst showStatusDetails = link => {\n const container = getStatusContainer(link);\n\n const context = {\n editenrollink: '',\n statusclass: container.querySelector('span.badge').getAttribute('class'),\n ...container.dataset,\n };\n\n // Find the edit enrolment link.\n const editEnrolLink = container.querySelector(Selectors.editEnrolment);\n if (editEnrolLink) {\n // If there's an edit enrolment link for this user, clone it into the context for the modal.\n context.editenrollink = editEnrolLink.outerHTML;\n }\n\n ModalFactory.create({\n large: true,\n type: ModalFactory.types.CANCEL,\n title: Str.get_string('enroldetails', 'enrol'),\n body: Templates.render('core_user/status_details', context),\n })\n .then(modal => {\n if (editEnrolLink) {\n modal.getRoot().on('click', Selectors.editEnrolment, e => {\n e.preventDefault();\n modal.hide();\n\n // Trigger click event for the edit enrolment link to show the edit enrolment modal.\n editEnrolLink.click();\n });\n }\n\n modal.show();\n\n // Handle hidden event.\n modal.getRoot().on(ModalEvents.hidden, () => modal.destroy());\n\n return modal;\n })\n .catch(Notification.exception);\n};\n\n/**\n * Submit the edit dialogue.\n *\n * @param {HTMLElement} clickedLink\n * @param {Function} getBody\n * @param {Object} modal\n * @param {Number} userEnrolmentId\n * @param {Object} userData\n */\nconst submitEditFormAjax = (clickedLink, getBody, modal, userEnrolmentId, userData) => {\n const form = modal.getRoot().find('form');\n\n Repository.submitUserEnrolmentForm(form.serialize())\n .then(data => {\n if (!data.result) {\n throw data.result;\n }\n\n // Dismiss the modal.\n modal.hide();\n modal.destroy();\n\n return data;\n })\n .then(() => {\n DynamicTable.refreshTableContent(getDynamicTableFromLink(clickedLink))\n .catch(Notification.exception);\n\n return Str.get_string('enrolmentupdatedforuser', 'core_enrol', userData);\n })\n .then(notificationString => {\n notifyUser(notificationString);\n\n return;\n })\n .catch(() => {\n modal.setBody(getBody(userEnrolmentId, JSON.stringify(form.serialize())));\n\n return modal;\n });\n};\n\n/**\n * Submit the unenrolment form.\n *\n * @param {HTMLElement} clickedLink\n * @param {Object} modal\n * @param {Object} args\n * @param {Object} userData\n */\nconst submitUnenrolFormAjax = (clickedLink, modal, args, userData) => {\n Repository.unenrolUser(args.ueid)\n .then(data => {\n if (!data.result) {\n // Display an alert containing the error message\n Notification.alert(data.errors[0].key, data.errors[0].message);\n\n return data;\n }\n\n // Dismiss the modal.\n modal.hide();\n modal.destroy();\n\n return data;\n })\n .then(() => {\n DynamicTable.refreshTableContent(getDynamicTableFromLink(clickedLink))\n .catch(Notification.exception);\n\n return Str.get_string('unenrolleduser', 'core_enrol', userData);\n })\n .then(notificationString => {\n notifyUser(notificationString);\n\n return;\n })\n .catch(Notification.exception);\n};\n\n/**\n * Get the body fragment.\n *\n * @param {Number} contextId\n * @param {Number} ueid The user enrolment id\n * @param {Object} formdata\n * @returns {Promise}\n */\nconst getBody = (contextId, ueid, formdata = null) => Fragment.loadFragment(\n 'enrol',\n 'user_enrolment_form',\n contextId,\n {\n ueid,\n formdata,\n }\n);\n\n/**\n * Initialise the statu field handler.\n *\n * @param {object} param\n * @param {Number} param.contextid\n * @param {Number} param.uniqueid\n */\nexport const init = ({contextid, uniqueid}) => {\n registerEventListeners(contextid, uniqueid);\n};\n"],"names":["Selectors","getDynamicTableFromLink","link","closest","DynamicTableSelectors","main","region","getStatusContainer","getUserEnrolmentIdFromLink","getAttribute","showEditDialogue","getBody","container","userEnrolmentId","create","large","title","Str","get_string","dataset","fullname","type","ModalFactory","types","SAVE_CANCEL","body","then","modal","getRoot","on","ModalEvents","save","e","preventDefault","submitEditFormAjax","hidden","destroy","show","catch","Notification","exception","showUnenrolConfirmation","submitUnenrolFormAjax","ueid","stringData","key","component","param","user","course","coursename","enrolinstancename","Promise","all","get_strings","_ref","strings","setTitle","setSaveButtonText","setBody","showStatusDetails","context","editenrollink","statusclass","querySelector","editEnrolLink","outerHTML","CANCEL","Templates","render","hide","click","clickedLink","userData","form","find","Repository","submitUserEnrolmentForm","serialize","data","result","DynamicTable","refreshTableContent","notificationString","JSON","stringify","args","unenrolUser","alert","errors","message","contextId","formdata","Fragment","loadFragment","_ref2","contextid","uniqueid","uniqueId","getBodyFunction","formData","document","addEventListener","target","fromRegionId","editLink","unenrolLink","showDetailsLink","registerEventListeners"],"mappings":"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"}