mirror of
https://github.com/moodle/moodle.git
synced 2025-04-21 00:12:56 +02:00
MDL-60590 enrol_manual: Fix for race condition in button calculation
This commit is contained in:
parent
c9f995872f
commit
e759c9ed83
2
enrol/manual/amd/build/quickenrolment.min.js
vendored
2
enrol/manual/amd/build/quickenrolment.min.js
vendored
@ -1 +1 @@
|
||||
define(["core/templates","jquery","core/str","core/config","core/notification","core/modal_factory","core/modal_events","core/fragment"],function(a,b,c,d,e,f,g,h){var i={COHORTSELECT:"#id_cohortlist",TRIGGERBUTTONS:".enrolusersbutton.enrol_manual_plugin [type='submit']",UNWANTEDHIDDENFIELDS:":input[value='_qf__force_multiselect_submission']"},j=function(a){this.contextid=a.contextid,this.initModal()};return j.prototype.courseid=0,j.prototype.modal=null,j.prototype.initModal=function(){var a=b(i.TRIGGERBUTTONS),d=c.get_strings([{key:"enroluserscohorts",component:"enrol_manual"},{key:"enrolusers",component:"enrol_manual"}]),h=d.then(function(a){return a[1]});return f.create({type:f.types.SAVE_CANCEL,large:!0,title:h,body:this.getBody()},a).then(function(a){this.modal=a;var b=1;0!==this.modal.getRoot().find("form").find(i.COHORTSELECT).length&&(b=0);var c=d.then(function(a){return a[b]});return this.modal.setSaveButtonText(c),this.modal.getRoot().on(g.hidden,function(){this.modal.setBody(this.getBody())}.bind(this)),this.modal.getRoot().on(g.save,this.submitForm.bind(this)),this.modal.getRoot().on("submit","form",this.submitFormAjax.bind(this)),a}.bind(this)).fail(e.exception)},j.prototype.submitForm=function(a){a.preventDefault(),this.modal.getRoot().find("form").submit()},j.prototype.submitFormAjax=function(a){a.preventDefault();var c=this.modal.getRoot().find("form"),f=c.find(i.UNWANTEDHIDDENFIELDS);f.each(function(){this.remove()});var g=c.serialize();this.modal.hide();var h={type:"GET",processData:!1,contentType:"application/json"},j=d.wwwroot+"/enrol/manual/ajax.php?"+g;b.ajax(j,h).then(function(a){a.error?e.addNotification({message:a.error,type:"error"}):("undefined"!=typeof window.M.core_formchangechecker&&window.M.core_formchangechecker.reset_form_dirty_state(),window.location.reload())}).fail(e.exception)},j.prototype.getBody=function(){return h.loadFragment("enrol_manual","enrol_users_form",this.contextid,{}).fail(e.exception)},j.prototype.getFooter=function(){return a.render("enrol_manual/enrol_modal_footer",{})},{init:function(a){new j(a)}}});
|
||||
define(["core/templates","jquery","core/str","core/config","core/notification","core/modal_factory","core/modal_events","core/fragment"],function(a,b,c,d,e,f,g,h){var i={COHORTSELECT:"#id_cohortlist",TRIGGERBUTTONS:".enrolusersbutton.enrol_manual_plugin [type='submit']",UNWANTEDHIDDENFIELDS:":input[value='_qf__force_multiselect_submission']"},j=function(a){this.contextid=a.contextid,this.initModal()};return j.prototype.courseid=0,j.prototype.modal=null,j.prototype.initModal=function(){var a=b(i.TRIGGERBUTTONS);b.when(c.get_strings([{key:"enroluserscohorts",component:"enrol_manual"},{key:"enrolusers",component:"enrol_manual"}]),f.create({type:f.types.SAVE_CANCEL,large:!0},a)).then(function(a,c){this.modal=c,c.setTitle(a[1]),c.setSaveButtonText(a[1]),c.getRoot().on(g.save,this.submitForm.bind(this)),c.getRoot().on("submit","form",this.submitFormAjax.bind(this)),c.getRoot().on(g.hidden,function(){c.setBody("")}),c.getRoot().on(g.shown,function(){var d=this.getBody();d.then(function(d){var e=b(d).find(i.COHORTSELECT).length?0:1;c.setSaveButtonText(a[e])}).fail(e.exception),c.setBody(d)}.bind(this))}.bind(this)).fail(e.exception)},j.prototype.submitForm=function(a){a.preventDefault(),this.modal.getRoot().find("form").submit()},j.prototype.submitFormAjax=function(a){a.preventDefault();var c=this.modal.getRoot().find("form"),f=c.find(i.UNWANTEDHIDDENFIELDS);f.each(function(){this.remove()});var g=c.serialize();this.modal.hide();var h={type:"GET",processData:!1,contentType:"application/json"},j=d.wwwroot+"/enrol/manual/ajax.php?"+g;b.ajax(j,h).then(function(a){a.error?e.addNotification({message:a.error,type:"error"}):("undefined"!=typeof window.M.core_formchangechecker&&window.M.core_formchangechecker.reset_form_dirty_state(),window.location.reload())}).fail(e.exception)},j.prototype.getBody=function(){return h.loadFragment("enrol_manual","enrol_users_form",this.contextid,{}).fail(e.exception)},j.prototype.getFooter=function(){return a.render("enrol_manual/enrol_modal_footer",{})},{init:function(a){new j(a)}}});
|
@ -66,45 +66,44 @@ define(['core/templates',
|
||||
QuickEnrolment.prototype.initModal = function() {
|
||||
var triggerButtons = $(SELECTORS.TRIGGERBUTTONS);
|
||||
|
||||
var stringsPromise = Str.get_strings([
|
||||
{key: 'enroluserscohorts', component: 'enrol_manual'},
|
||||
{key: 'enrolusers', component: 'enrol_manual'},
|
||||
]);
|
||||
|
||||
var titlePromise = stringsPromise.then(function(strings) {
|
||||
return strings[1];
|
||||
});
|
||||
|
||||
return ModalFactory.create({
|
||||
type: ModalFactory.types.SAVE_CANCEL,
|
||||
large: true,
|
||||
title: titlePromise,
|
||||
body: this.getBody()
|
||||
}, triggerButtons)
|
||||
.then(function(modal) {
|
||||
$.when(
|
||||
Str.get_strings([
|
||||
{key: 'enroluserscohorts', component: 'enrol_manual'},
|
||||
{key: 'enrolusers', component: 'enrol_manual'},
|
||||
]),
|
||||
ModalFactory.create({
|
||||
type: ModalFactory.types.SAVE_CANCEL,
|
||||
large: true,
|
||||
}, triggerButtons)
|
||||
)
|
||||
.then(function(strings, modal) {
|
||||
this.modal = modal;
|
||||
|
||||
// The save button text depends on whether or not cohorts exist.
|
||||
var stringindex = 1;
|
||||
if (this.modal.getRoot().find('form').find(SELECTORS.COHORTSELECT).length !== 0) {
|
||||
stringindex = 0;
|
||||
}
|
||||
modal.setTitle(strings[1]);
|
||||
modal.setSaveButtonText(strings[1]);
|
||||
|
||||
var buttonPromise = stringsPromise.then(function(strings) {
|
||||
return strings[stringindex];
|
||||
});
|
||||
|
||||
this.modal.setSaveButtonText(buttonPromise);
|
||||
modal.getRoot().on(ModalEvents.save, this.submitForm.bind(this));
|
||||
modal.getRoot().on('submit', 'form', this.submitFormAjax.bind(this));
|
||||
|
||||
// We want the reset the form every time it is opened.
|
||||
this.modal.getRoot().on(ModalEvents.hidden, function() {
|
||||
this.modal.setBody(this.getBody());
|
||||
modal.getRoot().on(ModalEvents.hidden, function() {
|
||||
modal.setBody('');
|
||||
});
|
||||
|
||||
modal.getRoot().on(ModalEvents.shown, function() {
|
||||
var bodyPromise = this.getBody();
|
||||
bodyPromise.then(function(html) {
|
||||
var stringIndex = $(html).find(SELECTORS.COHORTSELECT).length ? 0 : 1;
|
||||
modal.setSaveButtonText(strings[stringIndex]);
|
||||
|
||||
return;
|
||||
})
|
||||
.fail(Notification.exception);
|
||||
|
||||
modal.setBody(bodyPromise);
|
||||
}.bind(this));
|
||||
|
||||
this.modal.getRoot().on(ModalEvents.save, this.submitForm.bind(this));
|
||||
this.modal.getRoot().on('submit', 'form', this.submitFormAjax.bind(this));
|
||||
|
||||
return modal;
|
||||
return;
|
||||
}.bind(this))
|
||||
.fail(Notification.exception);
|
||||
};
|
||||
@ -137,7 +136,7 @@ define(['core/templates',
|
||||
// Before send the data through AJAX, we need to parse and remove some unwanted hidden fields.
|
||||
// This hidden fields are added automatically by mforms and when it reaches the AJAX we get an error.
|
||||
var hidden = form.find(SELECTORS.UNWANTEDHIDDENFIELDS);
|
||||
hidden.each(function () {
|
||||
hidden.each(function() {
|
||||
this.remove();
|
||||
});
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user