Server IP : 68.65.122.142  /  Your IP : 18.116.62.198
Web Server : LiteSpeed
System : Linux server167.web-hosting.com 4.18.0-513.18.1.lve.el8.x86_64 #1 SMP Thu Feb 22 12:55:50 UTC 2024 x86_64
User : glenirhm ( 1318)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON
Directory (0755) :  /home/glenirhm/lms.myglenbow.ca/old/webservice/../customfield/amd/build/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : /home/glenirhm/lms.myglenbow.ca/old/webservice/../customfield/amd/build/form.min.js.map
{"version":3,"file":"form.min.js","sources":["../src/form.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 * Custom Field interaction management for Moodle.\n *\n * @module     core_customfield/form\n * @copyright  2018 Toni Barbera\n * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport 'core/inplace_editable';\nimport {call as fetchMany} from 'core/ajax';\nimport {\n    get_string as getString,\n    get_strings as getStrings,\n} from 'core/str';\nimport ModalForm from 'core_form/modalform';\nimport Notification from 'core/notification';\nimport Pending from 'core/pending';\nimport SortableList from 'core/sortable_list';\nimport Templates from 'core/templates';\nimport jQuery from 'jquery';\n\n/**\n * Display confirmation dialogue\n *\n * @param {Number} id\n * @param {String} type\n * @param {String} component\n * @param {String} area\n * @param {Number} itemid\n */\nconst confirmDelete = (id, type, component, area, itemid) => {\n    const pendingPromise = new Pending('core_customfield/form:confirmDelete');\n\n    getStrings([\n        {'key': 'confirm'},\n        {'key': 'confirmdelete' + type, component: 'core_customfield'},\n        {'key': 'yes'},\n        {'key': 'no'},\n    ])\n    .then(strings => {\n        return Notification.confirm(strings[0], strings[1], strings[2], strings[3], function() {\n            const pendingDeletePromise = new Pending('core_customfield/form:confirmDelete');\n            fetchMany([\n                {\n                    methodname: (type === 'field') ? 'core_customfield_delete_field' : 'core_customfield_delete_category',\n                    args: {id},\n                },\n                {methodname: 'core_customfield_reload_template', args: {component, area, itemid}}\n            ])[1]\n            .then(response => Templates.render('core_customfield/list', response))\n            .then((html, js) => Templates.replaceNode(jQuery('[data-region=\"list-page\"]'), html, js))\n            .then(pendingDeletePromise.resolve)\n            .catch(Notification.exception);\n        });\n    })\n    .then(pendingPromise.resolve)\n    .catch(Notification.exception);\n};\n\n\n/**\n * Creates a new custom fields category with default name and updates the list\n *\n * @param {String} component\n * @param {String} area\n * @param {Number} itemid\n */\nconst createNewCategory = (component, area, itemid) => {\n    const pendingPromise = new Pending('core_customfield/form:createNewCategory');\n    const promises = fetchMany([\n        {methodname: 'core_customfield_create_category', args: {component, area, itemid}},\n        {methodname: 'core_customfield_reload_template', args: {component, area, itemid}}\n    ]);\n\n    promises[1].then(response => Templates.render('core_customfield/list', response))\n    .then((html, js) => Templates.replaceNode(jQuery('[data-region=\"list-page\"]'), html, js))\n    .then(() => pendingPromise.resolve())\n    .catch(Notification.exception);\n};\n\n/**\n * Create new custom field\n *\n * @param {HTMLElement} element\n * @param {String} component\n * @param {String} area\n * @param {Number} itemid\n */\nconst createNewField = (element, component, area, itemid) => {\n    const pendingPromise = new Pending('core_customfield/form:createNewField');\n\n    const returnFocus = element.closest(\".action-menu\").querySelector(\".dropdown-toggle\");\n    const form = new ModalForm({\n        formClass: \"core_customfield\\\\field_config_form\",\n        args: {\n            categoryid: element.getAttribute('data-categoryid'),\n            type: element.getAttribute('data-type'),\n        },\n        modalConfig: {\n            title: getString('addingnewcustomfield', 'core_customfield', element.getAttribute('data-typename')),\n        },\n        returnFocus,\n    });\n\n    form.addEventListener(form.events.FORM_SUBMITTED, () => {\n        const pendingCreatedPromise = new Pending('core_customfield/form:createdNewField');\n        const promises = fetchMany([\n            {methodname: 'core_customfield_reload_template', args: {component: component, area: area, itemid: itemid}}\n        ]);\n\n        promises[0].then(response => Templates.render('core_customfield/list', response))\n        .then((html, js) => Templates.replaceNode(jQuery('[data-region=\"list-page\"]'), html, js))\n        .then(() => pendingCreatedPromise.resolve())\n        .catch(() => window.location.reload());\n    });\n\n    form.show();\n\n    pendingPromise.resolve();\n};\n\n/**\n * Edit custom field\n *\n * @param {HTMLElement} element\n * @param {String} component\n * @param {String} area\n * @param {Number} itemid\n */\nconst editField = (element, component, area, itemid) => {\n    const pendingPromise = new Pending('core_customfield/form:editField');\n\n    const form = new ModalForm({\n        formClass: \"core_customfield\\\\field_config_form\",\n        args: {\n            id: element.getAttribute('data-id'),\n        },\n        modalConfig: {\n            title: getString('editingfield', 'core_customfield', element.getAttribute('data-name')),\n        },\n        returnFocus: element,\n    });\n\n    form.addEventListener(form.events.FORM_SUBMITTED, () => {\n        const pendingCreatedPromise = new Pending('core_customfield/form:createdNewField');\n        const promises = fetchMany([\n            {methodname: 'core_customfield_reload_template', args: {component: component, area: area, itemid: itemid}}\n        ]);\n\n        promises[0].then(response => Templates.render('core_customfield/list', response))\n        .then((html, js) => Templates.replaceNode(jQuery('[data-region=\"list-page\"]'), html, js))\n        .then(() => pendingCreatedPromise.resolve())\n        .catch(() => window.location.reload());\n    });\n\n    form.show();\n\n    pendingPromise.resolve();\n};\n\n/**\n * Fetch the category name from an inplace editable, given a child node of that field.\n *\n * @param {NodeElement} nodeElement\n * @returns {String}\n */\nconst getCategoryNameFor = nodeElement => nodeElement\n    .closest('[data-category-id]')\n    .find('[data-inplaceeditable][data-itemtype=category][data-component=core_customfield]')\n    .attr('data-value');\n\nconst setupSortableLists = rootNode => {\n    // Sort category.\n    const sortCat = new SortableList(\n        '#customfield_catlist .categorieslist',\n        {\n            moveHandlerSelector: '.movecategory [data-drag-type=move]',\n        }\n    );\n    sortCat.getElementName = nodeElement => Promise.resolve(getCategoryNameFor(nodeElement));\n\n    // Note: The sortable list currently uses jQuery events.\n    jQuery('[data-category-id]').on(SortableList.EVENTS.DROP, (evt, info) => {\n        if (info.positionChanged) {\n            const pendingPromise = new Pending('core_customfield/form:categoryid:on:sortablelist-drop');\n            fetchMany([{\n                methodname: 'core_customfield_move_category',\n                args: {\n                    id: info.element.data('category-id'),\n                    beforeid: info.targetNextElement.data('category-id')\n                }\n\n            }])[0]\n            .then(pendingPromise.resolve)\n            .catch(Notification.exception);\n        }\n        evt.stopPropagation(); // Important for nested lists to prevent multiple targets.\n    });\n\n    // Sort fields.\n    var sort = new SortableList(\n        '#customfield_catlist .fieldslist tbody',\n        {\n            moveHandlerSelector: '.movefield [data-drag-type=move]',\n        }\n    );\n\n    sort.getDestinationName = (parentElement, afterElement) => {\n        if (!afterElement.length) {\n            return getString('totopofcategory', 'customfield', getCategoryNameFor(parentElement));\n        } else if (afterElement.attr('data-field-name')) {\n            return getString('afterfield', 'customfield', afterElement.attr('data-field-name'));\n        } else {\n            return Promise.resolve('');\n        }\n    };\n\n    jQuery('[data-field-name]').on(SortableList.EVENTS.DROP, (evt, info) => {\n        if (info.positionChanged) {\n            const pendingPromise = new Pending('core_customfield/form:fieldname:on:sortablelist-drop');\n            fetchMany([{\n                methodname: 'core_customfield_move_field',\n                args: {\n                    id: info.element.data('field-id'),\n                    beforeid: info.targetNextElement.data('field-id'),\n                    categoryid: Number(info.targetList.closest('[data-category-id]').attr('data-category-id'))\n                },\n            }])[0]\n            .then(pendingPromise.resolve)\n            .catch(Notification.exception);\n        }\n        evt.stopPropagation(); // Important for nested lists to prevent multiple targets.\n    });\n\n    jQuery('[data-field-name]').on(SortableList.EVENTS.DRAG, evt => {\n        var pendingPromise = new Pending('core_customfield/form:fieldname:on:sortablelist-drag');\n\n        evt.stopPropagation(); // Important for nested lists to prevent multiple targets.\n\n        // Refreshing fields tables.\n        Templates.render('core_customfield/nofields', {})\n        .then(html => {\n            rootNode.querySelectorAll('.categorieslist > *')\n            .forEach(category => {\n                const fields = category.querySelectorAll('.field:not(.sortable-list-is-dragged)');\n                const noFields = category.querySelector('.nofields');\n\n                if (!fields.length && !noFields) {\n                    category.querySelector('tbody').innerHTML = html;\n                } else if (fields.length && noFields) {\n                    noFields.remove();\n                }\n            });\n            return;\n        })\n        .then(pendingPromise.resolve)\n        .catch(Notification.exception);\n    });\n\n    jQuery('[data-category-id], [data-field-name]').on(SortableList.EVENTS.DRAGSTART, (evt, info) => {\n        setTimeout(() => {\n            jQuery('.sortable-list-is-dragged').width(info.element.width());\n        }, 501);\n    });\n};\n\n/**\n * Initialise the custom fields manager.\n */\nexport const init = () => {\n    const rootNode = document.querySelector('#customfield_catlist');\n\n    const component = rootNode.dataset.component;\n    const area = rootNode.dataset.area;\n    const itemid = rootNode.dataset.itemid;\n\n    rootNode.addEventListener('click', e => {\n        const roleHolder = e.target.closest('[data-role]');\n        if (!roleHolder) {\n            return;\n        }\n\n        if (roleHolder.dataset.role === 'deletefield') {\n            e.preventDefault();\n\n            confirmDelete(roleHolder.dataset.id, 'field', component, area, itemid);\n            return;\n        }\n\n        if (roleHolder.dataset.role === 'deletecategory') {\n            e.preventDefault();\n\n            confirmDelete(roleHolder.dataset.id, 'category', component, area, itemid);\n            return;\n        }\n\n        if (roleHolder.dataset.role === 'addnewcategory') {\n            e.preventDefault();\n            createNewCategory(component, area, itemid);\n\n            return;\n        }\n\n        if (roleHolder.dataset.role === 'addfield') {\n            e.preventDefault();\n            createNewField(roleHolder, component, area, itemid);\n\n            return;\n        }\n\n        if (roleHolder.dataset.role === 'editfield') {\n            e.preventDefault();\n            editField(roleHolder, component, area, itemid);\n\n            return;\n        }\n    });\n\n    setupSortableLists(rootNode, component, area, itemid);\n};\n"],"names":["confirmDelete","id","type","component","area","itemid","pendingPromise","Pending","then","strings","Notification","confirm","pendingDeletePromise","methodname","args","response","Templates","render","html","js","replaceNode","resolve","catch","exception","getCategoryNameFor","nodeElement","closest","find","attr","rootNode","document","querySelector","dataset","addEventListener","e","roleHolder","target","role","preventDefault","createNewCategory","element","returnFocus","form","ModalForm","formClass","categoryid","getAttribute","modalConfig","title","events","FORM_SUBMITTED","pendingCreatedPromise","window","location","reload","show","createNewField","editField","SortableList","moveHandlerSelector","getElementName","Promise","on","EVENTS","DROP","evt","info","positionChanged","data","beforeid","targetNextElement","stopPropagation","getDestinationName","parentElement","afterElement","length","Number","targetList","DRAG","querySelectorAll","forEach","category","fields","noFields","remove","innerHTML","DRAGSTART","setTimeout","width","setupSortableLists"],"mappings":"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"}