HEX
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/8.0.30
System: Linux multiplicar 3.10.0-1160.102.1.el7.x86_64 #1 SMP Tue Oct 17 15:42:21 UTC 2023 x86_64
User: root (0)
PHP: 8.0.30
Disabled: NONE
Upload Files
File: /var/www/html/demo.sumar.com.py/mod/pulse/amd/build/preset.min.js.map
{"version":3,"file":"preset.min.js","sources":["../src/preset.js"],"sourcesContent":["define(['jquery', 'core/modal_factory', 'mod_pulse/modal_preset', 'mod_pulse/events', 'core/str',\n'core/fragment', 'core/ajax', 'core/templates', 'core/loadingicon', 'core/notification', 'core/modal_events'],\n    function($, Modal, ModalPreset, PresetEvents, Str, Fragment, AJAX, Templates, Loadingicon, Notification, ModalEvents) {\n\n    var SELECTOR = {\n        presetAvailability: '.preset-config-params .availability-field'\n    };\n\n    /**\n     * Preset module declaration. Setup the global values.\n     * @param  {int} contextId\n     * @param  {int} courseid\n     * @param  {int} section\n     */\n    var Preset = function(contextId, courseid, section) {\n        this.contextId = contextId;\n        this.courseid = courseid;\n        this.section = section;\n        this.loadPresetsList();\n    };\n\n    Preset.prototype.listElement = {'selector': 'pulse-presets-data', \"loaded\": \"data-listloaded\"};\n\n    Preset.prototype.contextId = 0;\n\n    Preset.prototype.courseid = 0;\n\n    Preset.prototype.section = 0;\n\n    Preset.prototype.pageparams = [];\n\n    Preset.prototype.loadIconElement = '.modal-footer #loader-icon';\n\n    Preset.prototype.actionbuttons = '.modal-footer button';\n\n    /**\n     * Setup the presets modal event listeners.\n     */\n    Preset.prototype.setupmodal = function() {\n\n        var THIS = this;\n\n        var triggerelement = document.querySelectorAll('.pulse-usepreset');\n        // Modal attachment point.\n        var attachmentPoint = document.createElement('div');\n        attachmentPoint.classList.add('modal-preset');\n        triggerelement.forEach((element) => element.addEventListener('click', () => {\n            var presetid = element.getAttribute('data-presetid');\n            var presettitle = element.getAttribute('data-presettitle');\n            var params = {'presetid': presetid, 'courseid': THIS.courseid, 'section': THIS.section};\n\n            document.body.prepend(attachmentPoint);\n            Modal.create({\n                type: ModalPreset.TYPE,\n                title: Str.get_string('presetmodaltitle', 'pulse', {'title': presettitle}),\n                body: Fragment.loadFragment('mod_pulse', 'get_preset_preview', THIS.contextId, params),\n                large: true,\n            }).then(modal => {\n                // Make the modal attachment point to overcome the restriction access condition.\n                modal.attachmentPoint = attachmentPoint;\n                modal.show();\n                modal.getRoot().on(ModalEvents.bodyRendered, function() {\n                    THIS.reinitAvailability(SELECTOR.presetAvailability);\n                    THIS.fieldChangedEvent();\n                });\n                // Destroy the modal on hidden to reload the editors.\n                modal.getRoot().on(ModalEvents.hidden, function() {\n                    modal.destroy.bind(modal);\n                    THIS.reinitAvailability();\n                });\n\n                // Apply and customize method.\n                modal.getRoot().on(PresetEvents.customize, () => {\n                    var modform = document.querySelector('#mod-pulse-form');\n                    var modformdata = new FormData(modform);\n                    modal.getRoot().get(0).querySelectorAll('form').forEach(form => {\n                        var formdata = new FormData(form);\n                        formdata = new URLSearchParams(formdata).toString();\n                        var pageparams = new URLSearchParams(modformdata).toString();\n                        params = {formdata: formdata, pageparams: pageparams};\n\n                        Loadingicon.addIconToContainer(this.loadIconElement);\n                        THIS.disableButtons();\n                        THIS.applyCustomize(params, THIS.contextId, modal);\n                    });\n                });\n                // Apply and save method.\n                modal.getRoot().on(PresetEvents.save, (e) => {\n                    e.preventDefault();\n                    Loadingicon.addIconToContainer(this.loadIconElement);\n                    THIS.disableButtons();\n                    var formdata = {};\n                    modal.getRoot().get(0).querySelectorAll('form').forEach(form => {\n                        formdata = new FormData(form);\n                        this.restorePreset(formdata, THIS.contextId);\n                    });\n                });\n                return true;\n            }).catch(Notification.exception);\n        }));\n    };\n\n\n    Preset.prototype.fieldChangedEvent = () => {\n        var confParam = document.getElementById(\"preset-configurable-params\");\n        var reminders = ['first', 'second', 'recurring'];\n        var methods = ['fixed', 'relative'];\n        var fieldName, changeinput, id, changeName, split;\n        confParam.querySelectorAll('input, select, textarea').forEach(field => {\n            field.addEventListener('change', (event) => {\n                fieldName = event.target.getAttribute('name');\n                if (confParam.querySelector('input[name=\"' + fieldName + '_changed\"]') !== null) {\n                    confParam.querySelector('input[name=\"' + fieldName + '_changed\"]').value = true;\n                }\n            });\n        });\n\n        reminders.forEach(reminder => {\n            confParam.querySelectorAll('[name=\"' + reminder + '_schedule\"').forEach(schedule => {\n                schedule.addEventListener('change', (e) => {\n                    changeName = e.target.getAttribute('name');\n                    changeinput = 'input[name=\"' + changeName + '_arr_changed\"]';\n                    confParam.querySelector(changeinput).value = true;\n                });\n            });\n            methods.forEach(method => {\n                id = reminder + \"_\" + method + \"date\";\n                confParam.querySelectorAll('[name*=\"' + id + '\"]').forEach(opt => {\n                    opt.addEventListener('change', (e) => {\n                        split = e.target.getAttribute('name').split('[');\n                        changeName = (split.hasOwnProperty(1)) ? split[0] : split;\n                        changeinput = 'input[name=\"' + changeName + '_changed\"]';\n                        confParam.querySelector(changeinput).value = true;\n                    });\n                });\n            });\n        });\n    };\n\n    /**\n     * Reinitialize the availability javascript.\n     * @param {string} selector\n     */\n    Preset.prototype.reinitAvailability = function(selector = '.availability-field') {\n        if (typeof M.core_availability.form !== \"undefined\") {\n            this.resetRestrictPlugins();\n            document.querySelectorAll(selector).forEach((field) => field.parentNode.removeChild(field));\n            M.core_availability.form.init();\n        }\n    };\n\n    Preset.prototype.resetRestrictPlugins = function() {\n        if (typeof M.core_availability.form !== \"undefined\" && document.getElementById('id_availabilityconditionsjson') !== null) {\n            M.core_availability.form.restrictByGroup = null;\n            var availabilityPlugins = (typeof M.core_availability.form.plugins !== 'undefined')\n                ? M.core_availability.form.plugins : {};\n            var plugin = '';\n            for (var i in availabilityPlugins) {\n                plugin = \"availability_\" + i;\n                if (M.hasOwnProperty(plugin)) {\n                    M[plugin].form.addedEvents = false;\n                }\n            }\n        }\n    };\n\n    /**\n     * Apply and customize triggered using fragment. Response will replaced with current mod form.\n     * @param  {string} params\n     * @param  {int} contextID\n     * @param  {object} modal\n     */\n    Preset.prototype.applyCustomize = function(params, contextID, modal) {\n        Fragment.loadFragment('mod_pulse', 'apply_preset', contextID, params).done((html, js) => {\n            modal.destroy();\n            // Reset the availability to work for upcoming response html.\n            this.resetRestrictPlugins();\n            this.handleFormSubmissionResponse(html, js);\n        });\n    };\n\n    /**\n     * Disable the modal save and customize buttons to prevent reinit.\n     */\n    Preset.prototype.disableButtons = function() {\n        var buttons = document.querySelectorAll(this.actionbuttons);\n        for (let $i in buttons) {\n            buttons[$i].disabled = true;\n        }\n    };\n\n    /**\n     * Handle the loaded fragment output of customize method pulse mod.\n     * @param  {html} data\n     * @param  {string} js\n     */\n    Preset.prototype.handleFormSubmissionResponse = (data, js) => {\n        var newform = document.createElement('div');\n        newform.innerHTML = data;\n        Templates.replaceNode('[action=\"modedit.php\"]', data, js);\n\n    };\n\n    /**\n     * Initiate the apply and save method to create the pulse module with custom daa.\n     * @param  {FormData} formdata\n     * @param  {int} contextid\n     */\n    Preset.prototype.restorePreset = (formdata, contextid) => {\n        var formdatastr = new URLSearchParams(formdata).toString();\n        var promises = AJAX.call([{\n            methodname: 'mod_pulse_apply_presets',\n            args: {contextid: contextid, formdata: formdatastr}\n        }]);\n\n        promises[0].done((response) => {\n            response = JSON.parse(response);\n            if (typeof response.url != 'undefined') {\n                window.location.href = response.url;\n            }\n        });\n    };\n\n    /**\n     * Load list of available presets.\n     */\n    Preset.prototype.loadPresetsList = function() {\n        var listParent = document.getElementById(this.listElement.selector);\n\n        if (listParent !== null) {\n            if (listParent.getAttribute(this.listElement.loaded) == 'false') {\n                Fragment.loadFragment('mod_pulse', 'get_presetslist', this.contextId, {'courseid': this.courseid})\n                .done((html, js) => {\n                    Templates.replaceNodeContents(listParent, html, js);\n                    listParent.setAttribute(this.listElement.loaded, 'true');\n                    this.setupmodal();\n                });\n            }\n        }\n    };\n\n    return {\n        init: (contextId, courseid, section) => {\n            new Preset(contextId, courseid, section);\n        }\n    };\n});\n"],"names":["define","$","Modal","ModalPreset","PresetEvents","Str","Fragment","AJAX","Templates","Loadingicon","Notification","ModalEvents","SELECTOR","Preset","contextId","courseid","section","loadPresetsList","prototype","listElement","pageparams","loadIconElement","actionbuttons","setupmodal","THIS","this","triggerelement","document","querySelectorAll","attachmentPoint","createElement","classList","add","forEach","element","addEventListener","presetid","getAttribute","presettitle","params","body","prepend","create","type","TYPE","title","get_string","loadFragment","large","then","modal","show","getRoot","on","bodyRendered","reinitAvailability","fieldChangedEvent","hidden","destroy","bind","customize","modform","querySelector","modformdata","FormData","get","form","formdata","URLSearchParams","toString","addIconToContainer","disableButtons","applyCustomize","save","e","preventDefault","restorePreset","catch","exception","fieldName","changeinput","id","changeName","split","confParam","getElementById","methods","field","event","target","value","reminder","schedule","method","opt","hasOwnProperty","selector","M","core_availability","resetRestrictPlugins","parentNode","removeChild","init","restrictByGroup","availabilityPlugins","plugins","plugin","i","addedEvents","contextID","done","html","js","handleFormSubmissionResponse","buttons","$i","disabled","data","innerHTML","replaceNode","contextid","formdatastr","call","methodname","args","response","JSON","parse","url","window","location","href","listParent","loaded","replaceNodeContents","setAttribute"],"mappings":"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"}