Proyectos de Subversion Moodle

Rev

Autoría | Ultima modificación | Ver Log |

{"version":3,"file":"groups.min.js","sources":["../src/groups.js"],"sourcesContent":["\ndefine(['jquery', 'core/str', 'core/modal_factory', 'core/modal_events',\n    'core/fragment', 'core/templates', 'core/ajax', 'core/notification'],\nfunction($, Str, Modal, ModalEvents, Fragment, Templates, AJAX, Notification) {\n\n    return {\n        init: function(contextID) {\n\n            var groupModal = document.getElementsByClassName('group-widget-viewmembers');\n            Array.from(groupModal).forEach(function(element) {\n                element.addEventListener('click', function(e) {\n                    e.preventDefault();\n                    var target = e.target;\n                    var group = target.getAttribute('data-group');\n                    Modal.create({\n                        title: Str.get_string('groups', 'core')\n                    }).then(function(modal) {\n                        modal.show();\n                        var args = JSON.stringify({group: group});\n                        var params = {widget: 'groups', method: 'viewmembers', args: args};\n                        Fragment.loadFragment('block_dash', 'loadwidget', contextID, params).then((html, js) => {\n                            modal.setBody(html);\n                            Templates.runTemplateJS(js);\n                            return html;\n                        }).catch(Notification.exception);\n                        modal.getRoot().on(ModalEvents.hidden, function() {\n                            modal.destroy();\n                        });\n                        return modal;\n                    }).catch(Notification.exception);\n                });\n            });\n\n            var groupUsers = document.getElementsByClassName('add-group-users');\n            Array.from(groupUsers).forEach(function(element) {\n                element.addEventListener('click', function(e) {\n                    e.preventDefault();\n                    addGroupUsers(e);\n                });\n            });\n\n            /**\n             * Modal create for add member to groups menu.\n             * @param {Event} e\n             */\n            function addGroupUsers(e) {\n                var target = e.target;\n                var group = target.getAttribute('data-group');\n                Modal.create({\n                    type: Modal.types.SAVE_CANCEL,\n                    title: Str.get_string('widget:groups:adduser', 'block_dash'),\n                }).then(function(modal) {\n                    modal.setLarge(true);\n                    modal.show();\n\n                    var args = JSON.stringify({group: group});\n                    var params = {widget: 'groups', method: 'addmembers', args: args};\n                    Fragment.loadFragment('block_dash', 'loadwidget', contextID, params).then((html, js) => {\n                        modal.setBody(html);\n                        modal.getRoot().get(0).querySelectorAll('form').forEach(form => {\n                            groupAddEventListeners(form);\n                        });\n\n                        Templates.runTemplateJS(js);\n                        return html;\n                    }).catch(Notification.exception);\n\n                    modal.getRoot().on(ModalEvents.hidden, function() {\n                        modal.destroy();\n                    });\n\n                    // Apply and save method.\n                    modal.getRoot().on(ModalEvents.save, (e) => {\n                        e.preventDefault();\n                        modal.getRoot().get(0).querySelectorAll('form').forEach(form => {\n                            form.querySelector('#id_submitbutton').click();\n                        });\n                    });\n                    return modal;\n                }).catch(Notification.exception);\n            }\n\n            /**\n             * Event listener for add memebers to groups form submit.\n             * @param {Array} form\n             */\n            function groupAddEventListeners(form) {\n                form.addEventListener('submit', function(e) {\n                    e.preventDefault();\n                    var formdata = new FormData(e.target);\n                    if (e.target.querySelector('[name=\"users[]\"]').value == '') {\n                        return false;\n                    }\n                    var formdatastr = new URLSearchParams(formdata).toString();\n                    var promises = AJAX.call([{\n                        methodname: 'block_dash_groups_add_members',\n                        args: {formdata: formdatastr}\n                    }]);\n\n                    promises[0].done((response) => {\n                        if (response == true) {\n                            window.location.reload();\n                        } else {\n                            // TODO: Error Notification.\n                        }\n                    });\n                    return true;\n                });\n            }\n\n            // Leave group.\n            var leaveGroupModal = document.getElementsByClassName('group-widget-leavegroup');\n            Array.from(leaveGroupModal).forEach(function(element) {\n                element.addEventListener('click', function(e) {\n                    e.preventDefault();\n                    leaveGroup(e);\n                });\n            });\n\n            /**\n             * Event observer for leave group menu clicked to trigger the confirmation modal.\n             * @param {event} e\n             */\n            function leaveGroup(e) {\n                var target = e.target;\n                var group = target.getAttribute('data-group');\n                var groupname = target.getAttribute('data-groupname');\n\n                Modal.create({\n                    type: Modal.types.SAVE_CANCEL,\n                    title: Str.get_string('groups', 'core'),\n                }).then(function(modal) {\n                    Str.get_string('confirm', 'core').then((html) => {\n                        modal.setSaveButtonText(html);\n                        return html;\n                    }).catch(Notification.exception);\n                    modal.show();\n\n                    Str.get_string('confirmleavegroup', 'block_dash', groupname).then((html) => {\n                        modal.setBody(html);\n                        return html;\n                    }).catch(Notification.exception);\n\n                    modal.getRoot().on(ModalEvents.save, (e) => {\n                        e.preventDefault();\n                        var promises = AJAX.call([{\n                            methodname: 'block_dash_groups_leave_group',\n                            args: {groupid: group}\n                        }]);\n\n                        promises[0].done((response) => {\n                            if (response == true) {\n                                window.location.reload();\n                            } else {\n                                // TODO: Error Notification.\n                            }\n                        });\n                    });\n\n                    modal.getRoot().on(ModalEvents.hidden, function() {\n                        modal.destroy();\n                    });\n\n                    modal.getRoot().on(ModalEvents.destroyed, function() {\n                        modal.remove();\n                        modal.attachmentPoint.remove();\n                    });\n                    return modal;\n                }).catch(Notification.exception);\n            }\n\n            // Create group.\n            var createGroupModal = document.getElementsByClassName('create-group');\n            Array.from(createGroupModal).forEach(function(element) {\n                element.addEventListener('click', function(e) {\n                    e.preventDefault();\n                    createGroup();\n                });\n            });\n\n            /**\n             * Event listner for create group modal trigger.\n             */\n            function createGroup() {\n\n                Modal.create({\n                    type: Modal.types.SAVE_CANCEL,\n                    title: Str.get_string('groups', 'core'),\n                }).then(function(modal) {\n                    modal.show();\n\n                    var args = \"\";\n                    var params = {widget: 'groups', method: 'creategroup', args: args};\n                    Fragment.loadFragment('block_dash', 'loadwidget', contextID, params).then((html, js) => {\n                        modal.setBody(html);\n                        Templates.runTemplateJS(js);\n                        modal.getRoot().get(0).querySelectorAll('form').forEach(form => {\n                            createGroupEvent(form);\n                        });\n                        return html;\n                    }).catch(Notification.exception);\n\n                    // Apply and save method.\n                    modal.getRoot().on(ModalEvents.save, (e) => {\n                        e.preventDefault();\n                        modal.getRoot().get(0).querySelectorAll('form').forEach(form => {\n                            form.querySelector('#id_submitbutton').click();\n                        });\n                    });\n\n                    modal.getRoot().on(ModalEvents.hidden, function() {\n                        modal.destroy();\n                    });\n                    return modal;\n                }).catch(Notification.exception);\n\n\n            }\n            /**\n             * Event listner for create group forms in modal to init the group creation.\n             * @param {Array} form\n             */\n            function createGroupEvent(form) {\n                form.addEventListener('submit', function(e) {\n                    e.preventDefault();\n                    var formdata = new FormData(e.target);\n                    if (e.target.querySelector('[name=\"name\"]').value == \"\"\n                        || e.target.querySelector('[name=\"courseid\"]').value == '') {\n                        return false;\n                    }\n                    var formdatastr = new URLSearchParams(formdata).toString();\n                    var promises = AJAX.call([{\n                        methodname: 'block_dash_groups_create_group',\n                        args: {formdata: formdatastr}\n                    }]);\n\n                    promises[0].done((response) => {\n                        return (response == true) ? window.location.reload() : '';\n                    });\n                    return true;\n                });\n            }\n        }\n    };\n});\n"],"names":["define","$","Str","Modal","ModalEvents","Fragment","Templates","AJAX","Notification","init","contextID","groupModal","document","getElementsByClassName","Array","from","forEach","element","addEventListener","e","preventDefault","group","target","getAttribute","create","title","get_string","then","modal","show","params","widget","method","args","JSON","stringify","loadFragment","html","js","setBody","runTemplateJS","catch","exception","getRoot","on","hidden","destroy","groupUsers","type","types","SAVE_CANCEL","setLarge","get","querySelectorAll","form","formdata","FormData","querySelector","value","formdatastr","URLSearchParams","toString","call","methodname","done","response","window","location","reload","groupAddEventListeners","save","click","addGroupUsers","leaveGroupModal","groupname","setSaveButtonText","groupid","destroyed","remove","attachmentPoint","leaveGroup","createGroupModal","createGroupEvent"],"mappings":"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"}