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