mirror of
https://github.com/moodle/moodle.git
synced 2025-03-14 04:30:15 +01:00
MDL-68442 user: Rewrite enrolment actions as ES6
This commit is contained in:
parent
9df4a4de18
commit
143ebb9b20
2
user/amd/build/status_field.min.js
vendored
2
user/amd/build/status_field.min.js
vendored
@ -1,2 +1,2 @@
|
||||
define ("core_user/status_field",["core/templates","jquery","core/str","core/config","core/notification","core/modal_factory","core/modal_events","core/fragment","core/ajax"],function(a,b,c,d,f,g,h,i,j){var k={EDIT_ENROLMENT:"[data-action=\"editenrolment\"]",SHOW_DETAILS:"[data-action=\"showdetails\"]",UNENROL:"[data-action=\"unenrol\"]"},l=function(a){this.contextid=a.contextid;this.courseid=a.courseid;this.bindEditEnrol();this.bindUnenrol();this.bindStatusDetails()};l.prototype.courseid=0;l.prototype.bindEditEnrol=function(){var a=this;b(k.EDIT_ENROLMENT).click(function(d){d.preventDefault();var e=b(this),i=e.parent(),j=i.data("fullname"),k=e.attr("rel");b.when(c.get_string("edituserenrolment","enrol",j)).then(function(a){return g.create({large:!0,title:a,type:g.types.SAVE_CANCEL})}).done(function(b){b.getRoot().on(h.save,function(c){c.preventDefault();a.submitEditFormAjax(b)});b.getRoot().on(h.hidden,function(){b.destroy()});b.setBody(a.getBody(k));b.show()}).fail(f.exception)})};l.prototype.bindUnenrol=function(){var a=this;b(k.UNENROL).click(function(d){d.preventDefault();var e=b(this),i=e.parent(),j=[{key:"unenrol",component:"enrol"},{key:"unenrolconfirm",component:"enrol",param:{user:i.data("fullname"),course:i.data("coursename"),enrolinstancename:i.data("enrolinstancename")}}],k=g.create({type:g.types.SAVE_CANCEL});b.when(c.get_strings(j),k).done(function(c,f){var g=c[0],i=c[1];f.setTitle(g);f.setBody(i);f.setSaveButtonText(g);f.getRoot().on(h.save,function(){var c={ueid:b(e).attr("rel")};d.preventDefault();a.submitUnenrolFormAjax(f,c)});f.getRoot().on(h.hidden,function(){f.destroy()});f.show()}).fail(f.exception)})};l.prototype.bindStatusDetails=function(){b(k.SHOW_DETAILS).click(function(d){d.preventDefault();var e=b(this),i=e.parent(),j={fullname:i.data("fullname"),coursename:i.data("coursename"),enrolinstancename:i.data("enrolinstancename"),status:i.data("status"),statusclass:i.find("span").attr("class"),timestart:i.data("timestart"),timeend:i.data("timeend"),timeenrolled:i.data("timeenrolled")},l=e.next(k.EDIT_ENROLMENT);if(l.length){j.editenrollink=b("<div>").append(l.clone()).html()}var m=c.get_strings([{key:"enroldetails",component:"enrol"}]),n=g.create({large:!0,type:g.types.CANCEL});b.when(m,n).done(function(c,d){var e=a.render("core_user/status_details",j);d.setTitle(c[0]);d.setBody(e);if(l.length){d.getRoot().on("click",k.EDIT_ENROLMENT,function(a){a.preventDefault();d.hide();b(l).trigger("click")})}d.show();d.getRoot().on(h.hidden,function(){d.destroy()})}).fail(f.exception)})};l.prototype.submitEditFormAjax=function(a){var c=this,d=a.getRoot().find("form"),e=b(d).find("[name=\"ue\"]").val(),g={methodname:"core_enrol_submit_user_enrolment_form",args:{formdata:d.serialize()}};j.call([g])[0].done(function(b){if(b.result){a.hide();if("undefined"!=typeof window.M.core_formchangechecker){window.M.core_formchangechecker.reset_form_dirty_state()}window.location.reload()}else{var f=JSON.stringify(d.serialize());a.setBody(c.getBody(e,f))}}).fail(f.exception)};l.prototype.submitUnenrolFormAjax=function(a,b){j.call([{methodname:"core_enrol_unenrol_user_enrolment",args:b}])[0].done(function(b){if(b.result){a.hide();if("undefined"!=typeof window.M.core_formchangechecker){window.M.core_formchangechecker.reset_form_dirty_state()}window.location.reload()}else{f.alert(b.errors[0].key,b.errors[0].message)}}).fail(f.exception)};l.prototype.getBody=function(a,b){var c={ueid:a};if("undefined"!=typeof b){c.formdata=b}return i.loadFragment("enrol","user_enrolment_form",this.contextid,c).fail(f.exception)};return{init:function init(a){new l(a)}}});
|
||||
define ("core_user/status_field",["exports","core/ajax","core/fragment","core/modal_events","core/modal_factory","core/notification","core/str","core/templates","jquery"],function(a,b,c,d,f,g,h,i,j){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.init=void 0;b=k(b);c=k(c);d=k(d);f=k(f);g=k(g);h=function(a){if(a&&a.__esModule){return a}else{var b={};if(null!=a){for(var c in a){if(Object.prototype.hasOwnProperty.call(a,c)){var d=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(a,c):{};if(d.get||d.set){Object.defineProperty(b,c,d)}else{b[c]=a[c]}}}}b.default=a;return b}}(h);i=k(i);j=k(j);function k(a){return a&&a.__esModule?a:{default:a}}function l(a,b){if(!(a instanceof b)){throw new TypeError("Cannot call a class as a function")}}function m(a,b){for(var c=0,d;c<b.length;c++){d=b[c];d.enumerable=d.enumerable||!1;d.configurable=!0;if("value"in d)d.writable=!0;Object.defineProperty(a,d.key,d)}}function n(a,b,c){if(b)m(a.prototype,b);if(c)m(a,c);return a}var o={editEnrolment:"[data-action=\"editenrolment\"]",showDetails:"[data-action=\"showdetails\"]",unenrol:"[data-action=\"unenrol\"]"},p=function(){function a(b){l(this,a);this.contextid=b.contextid;this.courseid=b.courseid;this.bindEditEnrol();this.bindUnenrol();this.bindStatusDetails()}n(a,[{key:"bindEditEnrol",value:function bindEditEnrol(){var a=this;(0,j.default)(o.editEnrolment).click(function(b){b.preventDefault();var c=(0,j.default)(this),e=c.parent(),i=e.data("fullname"),k=c.attr("rel");j.default.when(h.get_string("edituserenrolment","enrol",i)).then(function(a){return f.default.create({large:!0,title:a,type:f.default.types.SAVE_CANCEL})}).done(function(b){b.getRoot().on(d.default.save,function(c){c.preventDefault();a.submitEditFormAjax(b)});b.getRoot().on(d.default.hidden,function(){b.destroy()});b.setBody(a.getBody(k));b.show()}).fail(g.default.exception)})}},{key:"bindUnenrol",value:function bindUnenrol(){var a=this;(0,j.default)(o.unenrol).click(function(b){b.preventDefault();var c=(0,j.default)(this),e=c.parent(),i=[{key:"unenrol",component:"enrol"},{key:"unenrolconfirm",component:"enrol",param:{user:e.data("fullname"),course:e.data("coursename"),enrolinstancename:e.data("enrolinstancename")}}],k=f.default.create({type:f.default.types.SAVE_CANCEL});j.default.when(h.get_strings(i),k).done(function(e,f){var g=e[0],h=e[1];f.setTitle(g);f.setBody(h);f.setSaveButtonText(g);f.getRoot().on(d.default.save,function(){var d={ueid:(0,j.default)(c).attr("rel")};b.preventDefault();a.submitUnenrolFormAjax(f,d)});f.getRoot().on(d.default.hidden,function(){f.destroy()});f.show()}).fail(g.default.exception)})}},{key:"bindStatusDetails",value:function bindStatusDetails(){(0,j.default)(o.showDetails).click(function(a){a.preventDefault();var b=(0,j.default)(this),c=b.parent(),e={fullname:c.data("fullname"),coursename:c.data("coursename"),enrolinstancename:c.data("enrolinstancename"),status:c.data("status"),statusclass:c.find("span").attr("class"),timestart:c.data("timestart"),timeend:c.data("timeend"),timeenrolled:c.data("timeenrolled")},k=b.next(o.editEnrolment);if(k.length){e.editenrollink=(0,j.default)("<div>").append(k.clone()).html()}var l=h.get_strings([{key:"enroldetails",component:"enrol"}]),m=f.default.create({large:!0,type:f.default.types.CANCEL});j.default.when(l,m).done(function(a,b){var c=i.default.render("core_user/status_details",e);b.setTitle(a[0]);b.setBody(c);if(k.length){b.getRoot().on("click",o.editEnrolment,function(a){a.preventDefault();b.hide();(0,j.default)(k).trigger("click")})}b.show();b.getRoot().on(d.default.hidden,function(){b.destroy()})}).fail(g.default.exception)})}},{key:"submitEditFormAjax",value:function submitEditFormAjax(a){var c=this,d=a.getRoot().find("form"),e=(0,j.default)(d).find("[name=\"ue\"]").val(),f={methodname:"core_enrol_submit_user_enrolment_form",args:{formdata:d.serialize()}};b.default.call([f])[0].done(function(b){if(b.result){a.hide();if("undefined"!=typeof window.M.core_formchangechecker){window.M.core_formchangechecker.reset_form_dirty_state()}window.location.reload()}else{var f=JSON.stringify(d.serialize());a.setBody(c.getBody(e,f))}}).fail(g.default.exception)}},{key:"submitUnenrolFormAjax",value:function submitUnenrolFormAjax(a,c){b.default.call([{methodname:"core_enrol_unenrol_user_enrolment",args:c}])[0].done(function(b){if(b.result){a.hide();if("undefined"!=typeof window.M.core_formchangechecker){window.M.core_formchangechecker.reset_form_dirty_state()}window.location.reload()}else{g.default.alert(b.errors[0].key,b.errors[0].message)}}).fail(g.default.exception)}},{key:"getBody",value:function getBody(a,b){var d={ueid:a};if("undefined"!=typeof b){d.formdata=b}return c.default.loadFragment("enrol","user_enrolment_form",this.contextid,d).fail(g.default.exception)}}]);return a}();a.init=function init(a){new p(a)}});
|
||||
//# sourceMappingURL=status_field.min.js.map
|
||||
|
File diff suppressed because one or more lines are too long
@ -20,334 +20,271 @@
|
||||
* @copyright 2017 Jun Pataleta
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
define(['core/templates',
|
||||
'jquery',
|
||||
'core/str',
|
||||
'core/config',
|
||||
'core/notification',
|
||||
'core/modal_factory',
|
||||
'core/modal_events',
|
||||
'core/fragment',
|
||||
'core/ajax'
|
||||
],
|
||||
function(Template, $, Str, Config, Notification, ModalFactory, ModalEvents, Fragment, Ajax) {
|
||||
|
||||
/**
|
||||
* Action selectors.
|
||||
*
|
||||
* @access private
|
||||
* @type {{EDIT_ENROLMENT: string, SHOW_DETAILS: string, UNENROL: string}}
|
||||
*/
|
||||
var SELECTORS = {
|
||||
EDIT_ENROLMENT: '[data-action="editenrolment"]',
|
||||
SHOW_DETAILS: '[data-action="showdetails"]',
|
||||
UNENROL: '[data-action="unenrol"]'
|
||||
};
|
||||
import Ajax from 'core/ajax';
|
||||
import Fragment from 'core/fragment';
|
||||
import ModalEvents from 'core/modal_events';
|
||||
import ModalFactory from 'core/modal_factory';
|
||||
import Notification from 'core/notification';
|
||||
import * as Str from 'core/str';
|
||||
import Templates from 'core/templates';
|
||||
import jQuery from 'jquery';
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param {Object} options Object containing options. The only valid option at this time is contextid.
|
||||
* Each call to templates.render gets it's own instance of this class.
|
||||
*/
|
||||
var StatusFieldActions = function(options) {
|
||||
this.contextid = options.contextid;
|
||||
this.courseid = options.courseid;
|
||||
const Selectors = {
|
||||
editEnrolment: '[data-action="editenrolment"]',
|
||||
showDetails: '[data-action="showdetails"]',
|
||||
unenrol: '[data-action="unenrol"]'
|
||||
};
|
||||
|
||||
// Bind click event to editenrol buttons.
|
||||
this.bindEditEnrol();
|
||||
class StatusFieldActions {
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param {Object} options Object containing options. The only valid option at this time is contextid.
|
||||
* Each call to templates.render gets it's own instance of this class.
|
||||
*/
|
||||
constructor(options) {
|
||||
this.contextid = options.contextid;
|
||||
this.courseid = options.courseid;
|
||||
|
||||
// Bind click event to unenrol buttons.
|
||||
this.bindUnenrol();
|
||||
// Bind click event to editenrol buttons.
|
||||
this.bindEditEnrol();
|
||||
|
||||
// Bind click event to status details buttons.
|
||||
this.bindStatusDetails();
|
||||
};
|
||||
// Class variables and functions.
|
||||
// Bind click event to unenrol buttons.
|
||||
this.bindUnenrol();
|
||||
|
||||
/** @var {number} courseid The course ID. */
|
||||
StatusFieldActions.prototype.courseid = 0;
|
||||
// Bind click event to status details buttons.
|
||||
this.bindStatusDetails();
|
||||
}
|
||||
|
||||
/**
|
||||
* Private method
|
||||
*
|
||||
* @method initModal
|
||||
* @private
|
||||
*/
|
||||
StatusFieldActions.prototype.bindEditEnrol = function() {
|
||||
var statusFieldInstsance = this;
|
||||
bindEditEnrol() {
|
||||
var statusFieldInstsance = this;
|
||||
|
||||
$(SELECTORS.EDIT_ENROLMENT).click(function(e) {
|
||||
e.preventDefault();
|
||||
jQuery(Selectors.editEnrolment).click(function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
// The particular edit button that was clicked.
|
||||
var clickedEditTrigger = $(this);
|
||||
// Get the parent container (it contains the data attributes associated with the status field).
|
||||
var parentContainer = clickedEditTrigger.parent();
|
||||
// Get the name of the user whose enrolment status is being edited.
|
||||
var fullname = parentContainer.data('fullname');
|
||||
// Get the user enrolment ID.
|
||||
var ueid = clickedEditTrigger.attr('rel');
|
||||
// The particular edit button that was clicked.
|
||||
var clickedEditTrigger = jQuery(this);
|
||||
// Get the parent container (it contains the data attributes associated with the status field).
|
||||
var parentContainer = clickedEditTrigger.parent();
|
||||
// Get the name of the user whose enrolment status is being edited.
|
||||
var fullname = parentContainer.data('fullname');
|
||||
// Get the user enrolment ID.
|
||||
var ueid = clickedEditTrigger.attr('rel');
|
||||
|
||||
$.when(Str.get_string('edituserenrolment', 'enrol', fullname)).then(function(modalTitle) {
|
||||
return ModalFactory.create({
|
||||
large: true,
|
||||
title: modalTitle,
|
||||
type: ModalFactory.types.SAVE_CANCEL
|
||||
});
|
||||
}).done(function(modal) {
|
||||
// Handle save event.
|
||||
modal.getRoot().on(ModalEvents.save, function(e) {
|
||||
// Don't close the modal yet.
|
||||
e.preventDefault();
|
||||
// Submit form data.
|
||||
statusFieldInstsance.submitEditFormAjax(modal);
|
||||
});
|
||||
|
||||
// Handle hidden event.
|
||||
modal.getRoot().on(ModalEvents.hidden, function() {
|
||||
// Destroy when hidden.
|
||||
modal.destroy();
|
||||
});
|
||||
|
||||
// Set the modal body.
|
||||
modal.setBody(statusFieldInstsance.getBody(ueid));
|
||||
|
||||
// Show the modal!
|
||||
modal.show();
|
||||
}).fail(Notification.exception);
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Private method
|
||||
*
|
||||
* @method bindUnenrol
|
||||
* @private
|
||||
*/
|
||||
StatusFieldActions.prototype.bindUnenrol = function() {
|
||||
var statusFieldInstsance = this;
|
||||
|
||||
$(SELECTORS.UNENROL).click(function(e) {
|
||||
e.preventDefault();
|
||||
var unenrolLink = $(this);
|
||||
var parentContainer = unenrolLink.parent();
|
||||
var strings = [
|
||||
{
|
||||
key: 'unenrol',
|
||||
component: 'enrol'
|
||||
},
|
||||
{
|
||||
key: 'unenrolconfirm',
|
||||
component: 'enrol',
|
||||
param: {
|
||||
user: parentContainer.data('fullname'),
|
||||
course: parentContainer.data('coursename'),
|
||||
enrolinstancename: parentContainer.data('enrolinstancename')
|
||||
}
|
||||
}
|
||||
];
|
||||
|
||||
var deleteModalPromise = ModalFactory.create({
|
||||
jQuery.when(Str.get_string('edituserenrolment', 'enrol', fullname)).then(function(modalTitle) {
|
||||
return ModalFactory.create({
|
||||
large: true,
|
||||
title: modalTitle,
|
||||
type: ModalFactory.types.SAVE_CANCEL
|
||||
});
|
||||
}).done(function(modal) {
|
||||
// Handle save event.
|
||||
modal.getRoot().on(ModalEvents.save, function(e) {
|
||||
// Don't close the modal yet.
|
||||
e.preventDefault();
|
||||
// Submit form data.
|
||||
statusFieldInstsance.submitEditFormAjax(modal);
|
||||
});
|
||||
|
||||
$.when(Str.get_strings(strings), deleteModalPromise).done(function(results, modal) {
|
||||
var title = results[0];
|
||||
var confirmMessage = results[1];
|
||||
modal.setTitle(title);
|
||||
modal.setBody(confirmMessage);
|
||||
modal.setSaveButtonText(title);
|
||||
// Handle hidden event.
|
||||
modal.getRoot().on(ModalEvents.hidden, function() {
|
||||
// Destroy when hidden.
|
||||
modal.destroy();
|
||||
});
|
||||
|
||||
// Handle confirm event.
|
||||
modal.getRoot().on(ModalEvents.save, function() {
|
||||
// Build params.
|
||||
var unenrolParams = {
|
||||
'ueid': $(unenrolLink).attr('rel')
|
||||
};
|
||||
// Don't close the modal yet.
|
||||
e.preventDefault();
|
||||
// Submit data.
|
||||
statusFieldInstsance.submitUnenrolFormAjax(modal, unenrolParams);
|
||||
});
|
||||
// Set the modal body.
|
||||
modal.setBody(statusFieldInstsance.getBody(ueid));
|
||||
|
||||
// Handle hidden event.
|
||||
modal.getRoot().on(ModalEvents.hidden, function() {
|
||||
// Destroy when hidden.
|
||||
modal.destroy();
|
||||
});
|
||||
// Show the modal!
|
||||
modal.show();
|
||||
}).fail(Notification.exception);
|
||||
});
|
||||
}
|
||||
|
||||
// Display the delete confirmation modal.
|
||||
modal.show();
|
||||
}).fail(Notification.exception);
|
||||
});
|
||||
};
|
||||
bindUnenrol() {
|
||||
var statusFieldInstsance = this;
|
||||
|
||||
/**
|
||||
* Private method
|
||||
*
|
||||
* @method bindStatusDetails
|
||||
* @private
|
||||
*/
|
||||
StatusFieldActions.prototype.bindStatusDetails = function() {
|
||||
$(SELECTORS.SHOW_DETAILS).click(function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
var detailsButton = $(this);
|
||||
var parentContainer = detailsButton.parent();
|
||||
var context = {
|
||||
"fullname": parentContainer.data('fullname'),
|
||||
"coursename": parentContainer.data('coursename'),
|
||||
"enrolinstancename": parentContainer.data('enrolinstancename'),
|
||||
"status": parentContainer.data('status'),
|
||||
"statusclass": parentContainer.find('span').attr('class'),
|
||||
"timestart": parentContainer.data('timestart'),
|
||||
"timeend": parentContainer.data('timeend'),
|
||||
"timeenrolled": parentContainer.data('timeenrolled')
|
||||
};
|
||||
|
||||
// Get default string for the modal and modal type.
|
||||
var strings = [
|
||||
{
|
||||
key: 'enroldetails',
|
||||
component: 'enrol'
|
||||
jQuery(Selectors.unenrol).click(function(e) {
|
||||
e.preventDefault();
|
||||
var unenrolLink = jQuery(this);
|
||||
var parentContainer = unenrolLink.parent();
|
||||
var strings = [
|
||||
{
|
||||
key: 'unenrol',
|
||||
component: 'enrol'
|
||||
},
|
||||
{
|
||||
key: 'unenrolconfirm',
|
||||
component: 'enrol',
|
||||
param: {
|
||||
user: parentContainer.data('fullname'),
|
||||
course: parentContainer.data('coursename'),
|
||||
enrolinstancename: parentContainer.data('enrolinstancename')
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
|
||||
var deleteModalPromise = ModalFactory.create({
|
||||
type: ModalFactory.types.SAVE_CANCEL
|
||||
});
|
||||
|
||||
jQuery.when(Str.get_strings(strings), deleteModalPromise).done(function(results, modal) {
|
||||
var title = results[0];
|
||||
var confirmMessage = results[1];
|
||||
modal.setTitle(title);
|
||||
modal.setBody(confirmMessage);
|
||||
modal.setSaveButtonText(title);
|
||||
|
||||
// Handle confirm event.
|
||||
modal.getRoot().on(ModalEvents.save, function() {
|
||||
// Build params.
|
||||
var unenrolParams = {
|
||||
'ueid': jQuery(unenrolLink).attr('rel')
|
||||
};
|
||||
// Don't close the modal yet.
|
||||
e.preventDefault();
|
||||
// Submit data.
|
||||
statusFieldInstsance.submitUnenrolFormAjax(modal, unenrolParams);
|
||||
});
|
||||
|
||||
// Handle hidden event.
|
||||
modal.getRoot().on(ModalEvents.hidden, function() {
|
||||
// Destroy when hidden.
|
||||
modal.destroy();
|
||||
});
|
||||
|
||||
// Display the delete confirmation modal.
|
||||
modal.show();
|
||||
}).fail(Notification.exception);
|
||||
});
|
||||
}
|
||||
|
||||
bindStatusDetails() {
|
||||
jQuery(Selectors.showDetails).click(function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
var detailsButton = jQuery(this);
|
||||
var parentContainer = detailsButton.parent();
|
||||
var context = {
|
||||
"fullname": parentContainer.data('fullname'),
|
||||
"coursename": parentContainer.data('coursename'),
|
||||
"enrolinstancename": parentContainer.data('enrolinstancename'),
|
||||
"status": parentContainer.data('status'),
|
||||
"statusclass": parentContainer.find('span').attr('class'),
|
||||
"timestart": parentContainer.data('timestart'),
|
||||
"timeend": parentContainer.data('timeend'),
|
||||
"timeenrolled": parentContainer.data('timeenrolled')
|
||||
};
|
||||
|
||||
// Get default string for the modal and modal type.
|
||||
var strings = [
|
||||
{
|
||||
key: 'enroldetails',
|
||||
component: 'enrol'
|
||||
}
|
||||
];
|
||||
|
||||
// Find the edit enrolment link.
|
||||
var editEnrolLink = detailsButton.next(Selectors.editEnrolment);
|
||||
if (editEnrolLink.length) {
|
||||
// If there's an edit enrolment link for this user, clone it into the context for the modal.
|
||||
context.editenrollink = jQuery('<div>').append(editEnrolLink.clone()).html();
|
||||
}
|
||||
|
||||
var modalStringsPromise = Str.get_strings(strings);
|
||||
var modalPromise = ModalFactory.create({large: true, type: ModalFactory.types.CANCEL});
|
||||
jQuery.when(modalStringsPromise, modalPromise).done(function(strings, modal) {
|
||||
var modalBodyPromise = Templates.render('core_user/status_details', context);
|
||||
modal.setTitle(strings[0]);
|
||||
modal.setBody(modalBodyPromise);
|
||||
|
||||
// Find the edit enrolment link.
|
||||
var editEnrolLink = detailsButton.next(SELECTORS.EDIT_ENROLMENT);
|
||||
if (editEnrolLink.length) {
|
||||
// If there's an edit enrolment link for this user, clone it into the context for the modal.
|
||||
context.editenrollink = $('<div>').append(editEnrolLink.clone()).html();
|
||||
}
|
||||
|
||||
var modalStringsPromise = Str.get_strings(strings);
|
||||
var modalPromise = ModalFactory.create({large: true, type: ModalFactory.types.CANCEL});
|
||||
$.when(modalStringsPromise, modalPromise).done(function(strings, modal) {
|
||||
var modalBodyPromise = Template.render('core_user/status_details', context);
|
||||
modal.setTitle(strings[0]);
|
||||
modal.setBody(modalBodyPromise);
|
||||
|
||||
if (editEnrolLink.length) {
|
||||
modal.getRoot().on('click', SELECTORS.EDIT_ENROLMENT, function(e) {
|
||||
e.preventDefault();
|
||||
modal.hide();
|
||||
// Trigger click event for the edit enrolment link to show the edit enrolment modal.
|
||||
$(editEnrolLink).trigger('click');
|
||||
});
|
||||
}
|
||||
|
||||
modal.show();
|
||||
|
||||
// Handle hidden event.
|
||||
modal.getRoot().on(ModalEvents.hidden, function() {
|
||||
// Destroy when hidden.
|
||||
modal.destroy();
|
||||
modal.getRoot().on('click', Selectors.editEnrolment, function(e) {
|
||||
e.preventDefault();
|
||||
modal.hide();
|
||||
// Trigger click event for the edit enrolment link to show the edit enrolment modal.
|
||||
jQuery(editEnrolLink).trigger('click');
|
||||
});
|
||||
}).fail(Notification.exception);
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Private method
|
||||
*
|
||||
* @method submitEditFormAjax
|
||||
* @param {Object} modal The the AMD modal object containing the form.
|
||||
* @private
|
||||
*/
|
||||
StatusFieldActions.prototype.submitEditFormAjax = function(modal) {
|
||||
var statusFieldInstsance = this;
|
||||
var form = modal.getRoot().find('form');
|
||||
|
||||
// User enrolment ID.
|
||||
var ueid = $(form).find('[name="ue"]').val();
|
||||
|
||||
var request = {
|
||||
methodname: 'core_enrol_submit_user_enrolment_form',
|
||||
args: {
|
||||
formdata: form.serialize()
|
||||
}
|
||||
};
|
||||
|
||||
Ajax.call([request])[0].done(function(data) {
|
||||
if (data.result) {
|
||||
// Dismiss the modal.
|
||||
modal.hide();
|
||||
modal.show();
|
||||
|
||||
// Reload the page, don't show changed data warnings.
|
||||
if (typeof window.M.core_formchangechecker !== "undefined") {
|
||||
window.M.core_formchangechecker.reset_form_dirty_state();
|
||||
}
|
||||
window.location.reload();
|
||||
} else {
|
||||
// Serialise the form data and reload the form fragment to show validation errors.
|
||||
var formData = JSON.stringify(form.serialize());
|
||||
modal.setBody(statusFieldInstsance.getBody(ueid, formData));
|
||||
}
|
||||
// Handle hidden event.
|
||||
modal.getRoot().on(ModalEvents.hidden, function() {
|
||||
// Destroy when hidden.
|
||||
modal.destroy();
|
||||
});
|
||||
}).fail(Notification.exception);
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Private method
|
||||
*
|
||||
* @method submitUnenrolFormAjax
|
||||
* @param {Object} modal The the AMD modal object containing the form.
|
||||
* @param {Object} unenrolParams The unenrol parameters.
|
||||
* @private
|
||||
*/
|
||||
StatusFieldActions.prototype.submitUnenrolFormAjax = function(modal, unenrolParams) {
|
||||
var request = {
|
||||
methodname: 'core_enrol_unenrol_user_enrolment',
|
||||
args: unenrolParams
|
||||
};
|
||||
submitEditFormAjax(modal) {
|
||||
var statusFieldInstsance = this;
|
||||
var form = modal.getRoot().find('form');
|
||||
|
||||
Ajax.call([request])[0].done(function(data) {
|
||||
if (data.result) {
|
||||
// Dismiss the modal.
|
||||
modal.hide();
|
||||
// User enrolment ID.
|
||||
var ueid = jQuery(form).find('[name="ue"]').val();
|
||||
|
||||
// Reload the page, don't show changed data warnings.
|
||||
if (typeof window.M.core_formchangechecker !== "undefined") {
|
||||
window.M.core_formchangechecker.reset_form_dirty_state();
|
||||
}
|
||||
window.location.reload();
|
||||
} else {
|
||||
// Display an alert containing the error message
|
||||
Notification.alert(data.errors[0].key, data.errors[0].message);
|
||||
}
|
||||
}).fail(Notification.exception);
|
||||
};
|
||||
|
||||
/**
|
||||
* Private method
|
||||
*
|
||||
* @method getBody
|
||||
* @private
|
||||
* @param {Number} ueid The user enrolment ID associated with the user.
|
||||
* @param {string} formData Serialized string of the edit enrolment form data.
|
||||
* @return {Promise}
|
||||
*/
|
||||
StatusFieldActions.prototype.getBody = function(ueid, formData) {
|
||||
var params = {
|
||||
'ueid': ueid
|
||||
};
|
||||
if (typeof formData !== 'undefined') {
|
||||
params.formdata = formData;
|
||||
}
|
||||
return Fragment.loadFragment('enrol', 'user_enrolment_form', this.contextid, params).fail(Notification.exception);
|
||||
};
|
||||
|
||||
return /** @alias module:core_user/editenrolment */ {
|
||||
// Public variables and functions.
|
||||
/**
|
||||
* Every call to init creates a new instance of the class with it's own event listeners etc.
|
||||
*
|
||||
* @method init
|
||||
* @public
|
||||
* @param {object} config - config variables for the module.
|
||||
*/
|
||||
init: function(config) {
|
||||
(new StatusFieldActions(config));
|
||||
var request = {
|
||||
methodname: 'core_enrol_submit_user_enrolment_form',
|
||||
args: {
|
||||
formdata: form.serialize()
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
Ajax.call([request])[0].done(function(data) {
|
||||
if (data.result) {
|
||||
// Dismiss the modal.
|
||||
modal.hide();
|
||||
|
||||
// Reload the page, don't show changed data warnings.
|
||||
if (typeof window.M.core_formchangechecker !== "undefined") {
|
||||
window.M.core_formchangechecker.reset_form_dirty_state();
|
||||
}
|
||||
window.location.reload();
|
||||
} else {
|
||||
// Serialise the form data and reload the form fragment to show validation errors.
|
||||
var formData = JSON.stringify(form.serialize());
|
||||
modal.setBody(statusFieldInstsance.getBody(ueid, formData));
|
||||
}
|
||||
}).fail(Notification.exception);
|
||||
}
|
||||
|
||||
submitUnenrolFormAjax(modal, unenrolParams) {
|
||||
var request = {
|
||||
methodname: 'core_enrol_unenrol_user_enrolment',
|
||||
args: unenrolParams
|
||||
};
|
||||
|
||||
Ajax.call([request])[0].done(function(data) {
|
||||
if (data.result) {
|
||||
// Dismiss the modal.
|
||||
modal.hide();
|
||||
|
||||
// Reload the page, don't show changed data warnings.
|
||||
if (typeof window.M.core_formchangechecker !== "undefined") {
|
||||
window.M.core_formchangechecker.reset_form_dirty_state();
|
||||
}
|
||||
window.location.reload();
|
||||
} else {
|
||||
// Display an alert containing the error message
|
||||
Notification.alert(data.errors[0].key, data.errors[0].message);
|
||||
}
|
||||
}).fail(Notification.exception);
|
||||
}
|
||||
|
||||
getBody(ueid, formData) {
|
||||
var params = {
|
||||
'ueid': ueid
|
||||
};
|
||||
if (typeof formData !== 'undefined') {
|
||||
params.formdata = formData;
|
||||
}
|
||||
return Fragment.loadFragment('enrol', 'user_enrolment_form', this.contextid, params).fail(Notification.exception);
|
||||
}
|
||||
}
|
||||
|
||||
export const init = config => {
|
||||
new StatusFieldActions(config);
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user