1{"version":3,"sources":["../src/status_field.js"],"names":["Selectors","editEnrolment","showDetails","unenrol","statusElement","getDynamicTableFromLink","link","closest","DynamicTableSelectors","main","region","getStatusContainer","getUserEnrolmentIdFromLink","getAttribute","registerEventListeners","contextId","uniqueId","getBodyFunction","userEnrolmentId","formData","getBody","document","addEventListener","e","tableRoot","target","fromRegionId","editLink","preventDefault","showEditDialogue","unenrolLink","showUnenrolConfirmation","showDetailsLink","showStatusDetails","container","ModalFactory","create","large","title","Str","get_string","dataset","fullname","type","types","SAVE_CANCEL","body","then","modal","getRoot","on","ModalEvents","save","submitEditFormAjax","hidden","destroy","show","catch","Notification","exception","submitUnenrolFormAjax","ueid","stringData","key","component","param","user","course","coursename","enrolinstancename","Promise","all","get_strings","strings","setTitle","setSaveButtonText","setBody","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","formdata","Fragment","loadFragment","init","contextid","uniqueid"],"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 * 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"],"file":"status_field.min.js"}