MDL-68442 user: Rewrite enrolment actions as ES6

This commit is contained in:
Andrew Nicols 2020-04-17 13:40:18 +08:00
parent 9df4a4de18
commit 143ebb9b20
3 changed files with 240 additions and 303 deletions

View File

@ -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

View File

@ -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);
};