").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=b(d).find("[name=\"status\"]").val(),h={courseid:this.courseid,ueid:e,status:g},i=b(d).find("[name=\"timestart[enabled]\"]");if(i.is(":checked")){var k=b(d).find("[name=\"timestart[year]\"]").val(),l=b(d).find("[name=\"timestart[month]\"]").val()-1,m=b(d).find("[name=\"timestart[day]\"]").val(),n=b(d).find("[name=\"timestart[hour]\"]").val(),o=b(d).find("[name=\"timestart[minute]\"]").val(),p=new Date(k,l,m,n,o);h.timestart=p.getTime()/1e3}var q=b(d).find("[name=\"timeend[enabled]\"]");if(q.is(":checked")){var r=b(d).find("[name=\"timeend[year]\"]").val(),s=b(d).find("[name=\"timeend[month]\"]").val()-1,t=b(d).find("[name=\"timeend[day]\"]").val(),u=b(d).find("[name=\"timeend[hour]\"]").val(),v=b(d).find("[name=\"timeend[minute]\"]").val(),w=new Date(r,s,t,u,v);h.timeend=w.getTime()/1e3}var x=b(d).find("[name=\"duration\"]");if(x.is(":enabled")){h.timeend=h.timestart+parseInt(x.val())}j.call([{methodname:"core_enrol_edit_user_enrolment",args:h}])[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",["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("
").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)}}});
//# sourceMappingURL=status_field.min.js.map
diff --git a/user/amd/build/status_field.min.js.map b/user/amd/build/status_field.min.js.map
index e0fe66a33fc..5dd1fb95d57 100644
--- a/user/amd/build/status_field.min.js.map
+++ b/user/amd/build/status_field.min.js.map
@@ -1 +1 @@
-{"version":3,"sources":["../src/status_field.js"],"names":["define","Template","$","Str","Config","Notification","ModalFactory","ModalEvents","Fragment","Ajax","SELECTORS","EDIT_ENROLMENT","SHOW_DETAILS","UNENROL","StatusFieldActions","options","contextid","courseid","bindEditEnrol","bindUnenrol","bindStatusDetails","prototype","statusFieldInstsance","click","e","preventDefault","clickedEditTrigger","parentContainer","parent","fullname","data","ueid","attr","when","get_string","then","modalTitle","create","large","title","type","types","SAVE_CANCEL","done","modal","getRoot","on","save","submitEditFormAjax","hidden","destroy","setBody","getBody","show","fail","exception","unenrolLink","strings","key","component","param","user","course","enrolinstancename","deleteModalPromise","get_strings","results","confirmMessage","setTitle","setSaveButtonText","unenrolParams","submitUnenrolFormAjax","detailsButton","context","find","editEnrolLink","next","length","editenrollink","append","clone","html","modalStringsPromise","modalPromise","CANCEL","modalBodyPromise","render","hide","trigger","form","val","status","params","timeStartEnabled","is","timeStartYear","timeStartMonth","timeStartDay","timeStartHour","timeStartMinute","timeStart","Date","timestart","getTime","timeEndEnabled","timeEndYear","timeEndMonth","timeEndDay","timeEndHour","timeEndMinute","timeEnd","timeend","enrolDuration","parseInt","call","methodname","args","result","window","M","core_formchangechecker","reset_form_dirty_state","location","reload","formData","JSON","stringify","serialize","alert","errors","message","formdata","loadFragment","init","config"],"mappings":"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","sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see
.\n\n/**\n * AMD module for the user enrolment status field in the course participants page.\n *\n * @module core_user/status_field\n * @copyright 2017 Jun Pataleta\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\ndefine(['core/templates',\n 'jquery',\n 'core/str',\n 'core/config',\n 'core/notification',\n 'core/modal_factory',\n 'core/modal_events',\n 'core/fragment',\n 'core/ajax'\n ],\n function(Template, $, Str, Config, Notification, ModalFactory, ModalEvents, Fragment, Ajax) {\n\n /**\n * Action selectors.\n *\n * @access private\n * @type {{EDIT_ENROLMENT: string, SHOW_DETAILS: string, UNENROL: string}}\n */\n var SELECTORS = {\n EDIT_ENROLMENT: '[data-action=\"editenrolment\"]',\n SHOW_DETAILS: '[data-action=\"showdetails\"]',\n UNENROL: '[data-action=\"unenrol\"]'\n };\n\n /**\n * Constructor\n *\n * @param {Object} options Object containing options. The only valid option at this time is contextid.\n * Each call to templates.render gets it's own instance of this class.\n */\n var StatusFieldActions = function(options) {\n this.contextid = options.contextid;\n this.courseid = options.courseid;\n\n // Bind click event to editenrol buttons.\n this.bindEditEnrol();\n\n // Bind click event to unenrol buttons.\n this.bindUnenrol();\n\n // Bind click event to status details buttons.\n this.bindStatusDetails();\n };\n // Class variables and functions.\n\n /** @var {number} courseid The course ID. */\n StatusFieldActions.prototype.courseid = 0;\n\n /**\n * Private method\n *\n * @method initModal\n * @private\n */\n StatusFieldActions.prototype.bindEditEnrol = function() {\n var statusFieldInstsance = this;\n\n $(SELECTORS.EDIT_ENROLMENT).click(function(e) {\n e.preventDefault();\n\n // The particular edit button that was clicked.\n var clickedEditTrigger = $(this);\n // Get the parent container (it contains the data attributes associated with the status field).\n var parentContainer = clickedEditTrigger.parent();\n // Get the name of the user whose enrolment status is being edited.\n var fullname = parentContainer.data('fullname');\n // Get the user enrolment ID.\n var ueid = clickedEditTrigger.attr('rel');\n\n $.when(Str.get_string('edituserenrolment', 'enrol', fullname)).then(function(modalTitle) {\n return ModalFactory.create({\n large: true,\n title: modalTitle,\n type: ModalFactory.types.SAVE_CANCEL\n });\n }).done(function(modal) {\n // Handle save event.\n modal.getRoot().on(ModalEvents.save, function(e) {\n // Don't close the modal yet.\n e.preventDefault();\n // Submit form data.\n statusFieldInstsance.submitEditFormAjax(modal);\n });\n\n // Handle hidden event.\n modal.getRoot().on(ModalEvents.hidden, function() {\n // Destroy when hidden.\n modal.destroy();\n });\n\n // Set the modal body.\n modal.setBody(statusFieldInstsance.getBody(ueid));\n\n // Show the modal!\n modal.show();\n }).fail(Notification.exception);\n });\n };\n\n /**\n * Private method\n *\n * @method bindUnenrol\n * @private\n */\n StatusFieldActions.prototype.bindUnenrol = function() {\n var statusFieldInstsance = this;\n\n $(SELECTORS.UNENROL).click(function(e) {\n e.preventDefault();\n var unenrolLink = $(this);\n var parentContainer = unenrolLink.parent();\n var strings = [\n {\n key: 'unenrol',\n component: 'enrol'\n },\n {\n key: 'unenrolconfirm',\n component: 'enrol',\n param: {\n user: parentContainer.data('fullname'),\n course: parentContainer.data('coursename'),\n enrolinstancename: parentContainer.data('enrolinstancename')\n }\n }\n ];\n\n var deleteModalPromise = ModalFactory.create({\n type: ModalFactory.types.SAVE_CANCEL\n });\n\n $.when(Str.get_strings(strings), deleteModalPromise).done(function(results, modal) {\n var title = results[0];\n var confirmMessage = results[1];\n modal.setTitle(title);\n modal.setBody(confirmMessage);\n modal.setSaveButtonText(title);\n\n // Handle confirm event.\n modal.getRoot().on(ModalEvents.save, function() {\n // Build params.\n var unenrolParams = {\n 'ueid': $(unenrolLink).attr('rel')\n };\n // Don't close the modal yet.\n e.preventDefault();\n // Submit data.\n statusFieldInstsance.submitUnenrolFormAjax(modal, unenrolParams);\n });\n\n // Handle hidden event.\n modal.getRoot().on(ModalEvents.hidden, function() {\n // Destroy when hidden.\n modal.destroy();\n });\n\n // Display the delete confirmation modal.\n modal.show();\n }).fail(Notification.exception);\n });\n };\n\n /**\n * Private method\n *\n * @method bindStatusDetails\n * @private\n */\n StatusFieldActions.prototype.bindStatusDetails = function() {\n $(SELECTORS.SHOW_DETAILS).click(function(e) {\n e.preventDefault();\n\n var detailsButton = $(this);\n var parentContainer = detailsButton.parent();\n var context = {\n \"fullname\": parentContainer.data('fullname'),\n \"coursename\": parentContainer.data('coursename'),\n \"enrolinstancename\": parentContainer.data('enrolinstancename'),\n \"status\": parentContainer.data('status'),\n \"statusclass\": parentContainer.find('span').attr('class'),\n \"timestart\": parentContainer.data('timestart'),\n \"timeend\": parentContainer.data('timeend'),\n \"timeenrolled\": parentContainer.data('timeenrolled')\n };\n\n // Get default string for the modal and modal type.\n var strings = [\n {\n key: 'enroldetails',\n component: 'enrol'\n }\n ];\n\n // Find the edit enrolment link.\n var editEnrolLink = detailsButton.next(SELECTORS.EDIT_ENROLMENT);\n if (editEnrolLink.length) {\n // If there's an edit enrolment link for this user, clone it into the context for the modal.\n context.editenrollink = $('
').append(editEnrolLink.clone()).html();\n }\n\n var modalStringsPromise = Str.get_strings(strings);\n var modalPromise = ModalFactory.create({large: true, type: ModalFactory.types.CANCEL});\n $.when(modalStringsPromise, modalPromise).done(function(strings, modal) {\n var modalBodyPromise = Template.render('core_user/status_details', context);\n modal.setTitle(strings[0]);\n modal.setBody(modalBodyPromise);\n\n if (editEnrolLink.length) {\n modal.getRoot().on('click', SELECTORS.EDIT_ENROLMENT, function(e) {\n e.preventDefault();\n modal.hide();\n // Trigger click event for the edit enrolment link to show the edit enrolment modal.\n $(editEnrolLink).trigger('click');\n });\n }\n\n modal.show();\n\n // Handle hidden event.\n modal.getRoot().on(ModalEvents.hidden, function() {\n // Destroy when hidden.\n modal.destroy();\n });\n }).fail(Notification.exception);\n });\n };\n\n /**\n * Private method\n *\n * @method submitEditFormAjax\n * @param {Object} modal The the AMD modal object containing the form.\n * @private\n */\n StatusFieldActions.prototype.submitEditFormAjax = function(modal) {\n var statusFieldInstsance = this;\n var form = modal.getRoot().find('form');\n\n // User enrolment ID.\n var ueid = $(form).find('[name=\"ue\"]').val();\n // Status.\n var status = $(form).find('[name=\"status\"]').val();\n\n var params = {\n 'courseid': this.courseid,\n 'ueid': ueid,\n 'status': status\n };\n\n // Enrol time start.\n var timeStartEnabled = $(form).find('[name=\"timestart[enabled]\"]');\n if (timeStartEnabled.is(':checked')) {\n var timeStartYear = $(form).find('[name=\"timestart[year]\"]').val();\n var timeStartMonth = $(form).find('[name=\"timestart[month]\"]').val() - 1;\n var timeStartDay = $(form).find('[name=\"timestart[day]\"]').val();\n var timeStartHour = $(form).find('[name=\"timestart[hour]\"]').val();\n var timeStartMinute = $(form).find('[name=\"timestart[minute]\"]').val();\n var timeStart = new Date(timeStartYear, timeStartMonth, timeStartDay, timeStartHour, timeStartMinute);\n params.timestart = timeStart.getTime() / 1000;\n }\n\n // Enrol time end.\n var timeEndEnabled = $(form).find('[name=\"timeend[enabled]\"]');\n if (timeEndEnabled.is(':checked')) {\n var timeEndYear = $(form).find('[name=\"timeend[year]\"]').val();\n var timeEndMonth = $(form).find('[name=\"timeend[month]\"]').val() - 1;\n var timeEndDay = $(form).find('[name=\"timeend[day]\"]').val();\n var timeEndHour = $(form).find('[name=\"timeend[hour]\"]').val();\n var timeEndMinute = $(form).find('[name=\"timeend[minute]\"]').val();\n var timeEnd = new Date(timeEndYear, timeEndMonth, timeEndDay, timeEndHour, timeEndMinute);\n params.timeend = timeEnd.getTime() / 1000;\n }\n\n // Enrol duration.\n var enrolDuration = $(form).find('[name=\"duration\"]');\n if (enrolDuration.is(':enabled')) {\n params.timeend = params.timestart + parseInt(enrolDuration.val());\n }\n\n var request = {\n methodname: 'core_enrol_edit_user_enrolment',\n args: params\n };\n\n Ajax.call([request])[0].done(function(data) {\n if (data.result) {\n // Dismiss the modal.\n modal.hide();\n\n // Reload the page, don't show changed data warnings.\n if (typeof window.M.core_formchangechecker !== \"undefined\") {\n window.M.core_formchangechecker.reset_form_dirty_state();\n }\n window.location.reload();\n } else {\n // Serialise the form data and reload the form fragment to show validation errors.\n var formData = JSON.stringify(form.serialize());\n modal.setBody(statusFieldInstsance.getBody(ueid, formData));\n }\n }).fail(Notification.exception);\n };\n\n /**\n * Private method\n *\n * @method submitUnenrolFormAjax\n * @param {Object} modal The the AMD modal object containing the form.\n * @param {Object} unenrolParams The unenrol parameters.\n * @private\n */\n StatusFieldActions.prototype.submitUnenrolFormAjax = function(modal, unenrolParams) {\n var request = {\n methodname: 'core_enrol_unenrol_user_enrolment',\n args: unenrolParams\n };\n\n Ajax.call([request])[0].done(function(data) {\n if (data.result) {\n // Dismiss the modal.\n modal.hide();\n\n // Reload the page, don't show changed data warnings.\n if (typeof window.M.core_formchangechecker !== \"undefined\") {\n window.M.core_formchangechecker.reset_form_dirty_state();\n }\n window.location.reload();\n } else {\n // Display an alert containing the error message\n Notification.alert(data.errors[0].key, data.errors[0].message);\n }\n }).fail(Notification.exception);\n };\n\n /**\n * Private method\n *\n * @method getBody\n * @private\n * @param {Number} ueid The user enrolment ID associated with the user.\n * @param {string} formData Serialized string of the edit enrolment form data.\n * @return {Promise}\n */\n StatusFieldActions.prototype.getBody = function(ueid, formData) {\n var params = {\n 'ueid': ueid\n };\n if (typeof formData !== 'undefined') {\n params.formdata = formData;\n }\n return Fragment.loadFragment('enrol', 'user_enrolment_form', this.contextid, params).fail(Notification.exception);\n };\n\n return /** @alias module:core_user/editenrolment */ {\n // Public variables and functions.\n /**\n * Every call to init creates a new instance of the class with it's own event listeners etc.\n *\n * @method init\n * @public\n * @param {object} config - config variables for the module.\n */\n init: function(config) {\n (new StatusFieldActions(config));\n }\n };\n });\n"],"file":"status_field.min.js"}
\ No newline at end of file
+{"version":3,"sources":["../src/status_field.js"],"names":["define","Template","$","Str","Config","Notification","ModalFactory","ModalEvents","Fragment","Ajax","SELECTORS","EDIT_ENROLMENT","SHOW_DETAILS","UNENROL","StatusFieldActions","options","contextid","courseid","bindEditEnrol","bindUnenrol","bindStatusDetails","prototype","statusFieldInstsance","click","e","preventDefault","clickedEditTrigger","parentContainer","parent","fullname","data","ueid","attr","when","get_string","then","modalTitle","create","large","title","type","types","SAVE_CANCEL","done","modal","getRoot","on","save","submitEditFormAjax","hidden","destroy","setBody","getBody","show","fail","exception","unenrolLink","strings","key","component","param","user","course","enrolinstancename","deleteModalPromise","get_strings","results","confirmMessage","setTitle","setSaveButtonText","unenrolParams","submitUnenrolFormAjax","detailsButton","context","find","editEnrolLink","next","length","editenrollink","append","clone","html","modalStringsPromise","modalPromise","CANCEL","modalBodyPromise","render","hide","trigger","form","val","request","methodname","args","formdata","serialize","call","result","window","M","core_formchangechecker","reset_form_dirty_state","location","reload","formData","JSON","stringify","alert","errors","message","params","loadFragment","init","config"],"mappings":"AAsBAA,OAAM,0BAAC,CAAC,gBAAD,CACC,QADD,CAEC,UAFD,CAGC,aAHD,CAIC,mBAJD,CAKC,oBALD,CAMC,mBAND,CAOC,eAPD,CAQC,WARD,CAAD,CAUF,SAASC,CAAT,CAAmBC,CAAnB,CAAsBC,CAAtB,CAA2BC,CAA3B,CAAmCC,CAAnC,CAAiDC,CAAjD,CAA+DC,CAA/D,CAA4EC,CAA5E,CAAsFC,CAAtF,CAA4F,IAQpFC,CAAAA,CAAS,CAAG,CACZC,cAAc,CAAE,iCADJ,CAEZC,YAAY,CAAE,+BAFF,CAGZC,OAAO,CAAE,2BAHG,CARwE,CAoBpFC,CAAkB,CAAG,SAASC,CAAT,CAAkB,CACvC,KAAKC,SAAL,CAAiBD,CAAO,CAACC,SAAzB,CACA,KAAKC,QAAL,CAAgBF,CAAO,CAACE,QAAxB,CAGA,KAAKC,aAAL,GAGA,KAAKC,WAAL,GAGA,KAAKC,iBAAL,EACH,CAhCuF,CAoCxFN,CAAkB,CAACO,SAAnB,CAA6BJ,QAA7B,CAAwC,CAAxC,CAQAH,CAAkB,CAACO,SAAnB,CAA6BH,aAA7B,CAA6C,UAAW,CACpD,GAAII,CAAAA,CAAoB,CAAG,IAA3B,CAEApB,CAAC,CAACQ,CAAS,CAACC,cAAX,CAAD,CAA4BY,KAA5B,CAAkC,SAASC,CAAT,CAAY,CAC1CA,CAAC,CAACC,cAAF,GAD0C,GAItCC,CAAAA,CAAkB,CAAGxB,CAAC,CAAC,IAAD,CAJgB,CAMtCyB,CAAe,CAAGD,CAAkB,CAACE,MAAnB,EANoB,CAQtCC,CAAQ,CAAGF,CAAe,CAACG,IAAhB,CAAqB,UAArB,CAR2B,CAUtCC,CAAI,CAAGL,CAAkB,CAACM,IAAnB,CAAwB,KAAxB,CAV+B,CAY1C9B,CAAC,CAAC+B,IAAF,CAAO9B,CAAG,CAAC+B,UAAJ,CAAe,mBAAf,CAAoC,OAApC,CAA6CL,CAA7C,CAAP,EAA+DM,IAA/D,CAAoE,SAASC,CAAT,CAAqB,CACrF,MAAO9B,CAAAA,CAAY,CAAC+B,MAAb,CAAoB,CACvBC,KAAK,GADkB,CAEvBC,KAAK,CAAEH,CAFgB,CAGvBI,IAAI,CAAElC,CAAY,CAACmC,KAAb,CAAmBC,WAHF,CAApB,CAKV,CAND,EAMGC,IANH,CAMQ,SAASC,CAAT,CAAgB,CAEpBA,CAAK,CAACC,OAAN,GAAgBC,EAAhB,CAAmBvC,CAAW,CAACwC,IAA/B,CAAqC,SAASvB,CAAT,CAAY,CAE7CA,CAAC,CAACC,cAAF,GAEAH,CAAoB,CAAC0B,kBAArB,CAAwCJ,CAAxC,CACH,CALD,EAQAA,CAAK,CAACC,OAAN,GAAgBC,EAAhB,CAAmBvC,CAAW,CAAC0C,MAA/B,CAAuC,UAAW,CAE9CL,CAAK,CAACM,OAAN,EACH,CAHD,EAMAN,CAAK,CAACO,OAAN,CAAc7B,CAAoB,CAAC8B,OAArB,CAA6BrB,CAA7B,CAAd,EAGAa,CAAK,CAACS,IAAN,EACH,CA1BD,EA0BGC,IA1BH,CA0BQjD,CAAY,CAACkD,SA1BrB,CA2BH,CAvCD,CAwCH,CA3CD,CAmDAzC,CAAkB,CAACO,SAAnB,CAA6BF,WAA7B,CAA2C,UAAW,CAClD,GAAIG,CAAAA,CAAoB,CAAG,IAA3B,CAEApB,CAAC,CAACQ,CAAS,CAACG,OAAX,CAAD,CAAqBU,KAArB,CAA2B,SAASC,CAAT,CAAY,CACnCA,CAAC,CAACC,cAAF,GADmC,GAE/B+B,CAAAA,CAAW,CAAGtD,CAAC,CAAC,IAAD,CAFgB,CAG/ByB,CAAe,CAAG6B,CAAW,CAAC5B,MAAZ,EAHa,CAI/B6B,CAAO,CAAG,CACV,CACIC,GAAG,CAAE,SADT,CAEIC,SAAS,CAAE,OAFf,CADU,CAKV,CACID,GAAG,CAAE,gBADT,CAEIC,SAAS,CAAE,OAFf,CAGIC,KAAK,CAAE,CACHC,IAAI,CAAElC,CAAe,CAACG,IAAhB,CAAqB,UAArB,CADH,CAEHgC,MAAM,CAAEnC,CAAe,CAACG,IAAhB,CAAqB,YAArB,CAFL,CAGHiC,iBAAiB,CAAEpC,CAAe,CAACG,IAAhB,CAAqB,mBAArB,CAHhB,CAHX,CALU,CAJqB,CAoB/BkC,CAAkB,CAAG1D,CAAY,CAAC+B,MAAb,CAAoB,CACzCG,IAAI,CAAElC,CAAY,CAACmC,KAAb,CAAmBC,WADgB,CAApB,CApBU,CAwBnCxC,CAAC,CAAC+B,IAAF,CAAO9B,CAAG,CAAC8D,WAAJ,CAAgBR,CAAhB,CAAP,CAAiCO,CAAjC,EAAqDrB,IAArD,CAA0D,SAASuB,CAAT,CAAkBtB,CAAlB,CAAyB,IAC3EL,CAAAA,CAAK,CAAG2B,CAAO,CAAC,CAAD,CAD4D,CAE3EC,CAAc,CAAGD,CAAO,CAAC,CAAD,CAFmD,CAG/EtB,CAAK,CAACwB,QAAN,CAAe7B,CAAf,EACAK,CAAK,CAACO,OAAN,CAAcgB,CAAd,EACAvB,CAAK,CAACyB,iBAAN,CAAwB9B,CAAxB,EAGAK,CAAK,CAACC,OAAN,GAAgBC,EAAhB,CAAmBvC,CAAW,CAACwC,IAA/B,CAAqC,UAAW,CAE5C,GAAIuB,CAAAA,CAAa,CAAG,CAChB,KAAQpE,CAAC,CAACsD,CAAD,CAAD,CAAexB,IAAf,CAAoB,KAApB,CADQ,CAApB,CAIAR,CAAC,CAACC,cAAF,GAEAH,CAAoB,CAACiD,qBAArB,CAA2C3B,CAA3C,CAAkD0B,CAAlD,CACH,CATD,EAYA1B,CAAK,CAACC,OAAN,GAAgBC,EAAhB,CAAmBvC,CAAW,CAAC0C,MAA/B,CAAuC,UAAW,CAE9CL,CAAK,CAACM,OAAN,EACH,CAHD,EAMAN,CAAK,CAACS,IAAN,EACH,CA3BD,EA2BGC,IA3BH,CA2BQjD,CAAY,CAACkD,SA3BrB,CA4BH,CApDD,CAqDH,CAxDD,CAgEAzC,CAAkB,CAACO,SAAnB,CAA6BD,iBAA7B,CAAiD,UAAW,CACxDlB,CAAC,CAACQ,CAAS,CAACE,YAAX,CAAD,CAA0BW,KAA1B,CAAgC,SAASC,CAAT,CAAY,CACxCA,CAAC,CAACC,cAAF,GADwC,GAGpC+C,CAAAA,CAAa,CAAGtE,CAAC,CAAC,IAAD,CAHmB,CAIpCyB,CAAe,CAAG6C,CAAa,CAAC5C,MAAd,EAJkB,CAKpC6C,CAAO,CAAG,CACV,SAAY9C,CAAe,CAACG,IAAhB,CAAqB,UAArB,CADF,CAEV,WAAcH,CAAe,CAACG,IAAhB,CAAqB,YAArB,CAFJ,CAGV,kBAAqBH,CAAe,CAACG,IAAhB,CAAqB,mBAArB,CAHX,CAIV,OAAUH,CAAe,CAACG,IAAhB,CAAqB,QAArB,CAJA,CAKV,YAAeH,CAAe,CAAC+C,IAAhB,CAAqB,MAArB,EAA6B1C,IAA7B,CAAkC,OAAlC,CALL,CAMV,UAAaL,CAAe,CAACG,IAAhB,CAAqB,WAArB,CANH,CAOV,QAAWH,CAAe,CAACG,IAAhB,CAAqB,SAArB,CAPD,CAQV,aAAgBH,CAAe,CAACG,IAAhB,CAAqB,cAArB,CARN,CAL0B,CAyBpC6C,CAAa,CAAGH,CAAa,CAACI,IAAd,CAAmBlE,CAAS,CAACC,cAA7B,CAzBoB,CA0BxC,GAAIgE,CAAa,CAACE,MAAlB,CAA0B,CAEtBJ,CAAO,CAACK,aAAR,CAAwB5E,CAAC,CAAC,OAAD,CAAD,CAAW6E,MAAX,CAAkBJ,CAAa,CAACK,KAAd,EAAlB,EAAyCC,IAAzC,EAC3B,CA7BuC,GA+BpCC,CAAAA,CAAmB,CAAG/E,CAAG,CAAC8D,WAAJ,CAdZ,CACV,CACIP,GAAG,CAAE,cADT,CAEIC,SAAS,CAAE,OAFf,CADU,CAcY,CA/Bc,CAgCpCwB,CAAY,CAAG7E,CAAY,CAAC+B,MAAb,CAAoB,CAACC,KAAK,GAAN,CAAcE,IAAI,CAAElC,CAAY,CAACmC,KAAb,CAAmB2C,MAAvC,CAApB,CAhCqB,CAiCxClF,CAAC,CAAC+B,IAAF,CAAOiD,CAAP,CAA4BC,CAA5B,EAA0CxC,IAA1C,CAA+C,SAASc,CAAT,CAAkBb,CAAlB,CAAyB,CACpE,GAAIyC,CAAAA,CAAgB,CAAGpF,CAAQ,CAACqF,MAAT,CAAgB,0BAAhB,CAA4Cb,CAA5C,CAAvB,CACA7B,CAAK,CAACwB,QAAN,CAAeX,CAAO,CAAC,CAAD,CAAtB,EACAb,CAAK,CAACO,OAAN,CAAckC,CAAd,EAEA,GAAIV,CAAa,CAACE,MAAlB,CAA0B,CACtBjC,CAAK,CAACC,OAAN,GAAgBC,EAAhB,CAAmB,OAAnB,CAA4BpC,CAAS,CAACC,cAAtC,CAAsD,SAASa,CAAT,CAAY,CAC9DA,CAAC,CAACC,cAAF,GACAmB,CAAK,CAAC2C,IAAN,GAEArF,CAAC,CAACyE,CAAD,CAAD,CAAiBa,OAAjB,CAAyB,OAAzB,CACH,CALD,CAMH,CAED5C,CAAK,CAACS,IAAN,GAGAT,CAAK,CAACC,OAAN,GAAgBC,EAAhB,CAAmBvC,CAAW,CAAC0C,MAA/B,CAAuC,UAAW,CAE9CL,CAAK,CAACM,OAAN,EACH,CAHD,CAIH,CArBD,EAqBGI,IArBH,CAqBQjD,CAAY,CAACkD,SArBrB,CAsBH,CAvDD,CAwDH,CAzDD,CAkEAzC,CAAkB,CAACO,SAAnB,CAA6B2B,kBAA7B,CAAkD,SAASJ,CAAT,CAAgB,IAC1DtB,CAAAA,CAAoB,CAAG,IADmC,CAE1DmE,CAAI,CAAG7C,CAAK,CAACC,OAAN,GAAgB6B,IAAhB,CAAqB,MAArB,CAFmD,CAK1D3C,CAAI,CAAG7B,CAAC,CAACuF,CAAD,CAAD,CAAQf,IAAR,CAAa,eAAb,EAA4BgB,GAA5B,EALmD,CAO1DC,CAAO,CAAG,CACVC,UAAU,CAAE,uCADF,CAEVC,IAAI,CAAE,CACFC,QAAQ,CAAEL,CAAI,CAACM,SAAL,EADR,CAFI,CAPgD,CAc9DtF,CAAI,CAACuF,IAAL,CAAU,CAACL,CAAD,CAAV,EAAqB,CAArB,EAAwBhD,IAAxB,CAA6B,SAASb,CAAT,CAAe,CACxC,GAAIA,CAAI,CAACmE,MAAT,CAAiB,CAEbrD,CAAK,CAAC2C,IAAN,GAGA,GAA+C,WAA3C,QAAOW,CAAAA,MAAM,CAACC,CAAP,CAASC,sBAApB,CAA4D,CACxDF,MAAM,CAACC,CAAP,CAASC,sBAAT,CAAgCC,sBAAhC,EACH,CACDH,MAAM,CAACI,QAAP,CAAgBC,MAAhB,EACH,CATD,IASO,CAEH,GAAIC,CAAAA,CAAQ,CAAGC,IAAI,CAACC,SAAL,CAAejB,CAAI,CAACM,SAAL,EAAf,CAAf,CACAnD,CAAK,CAACO,OAAN,CAAc7B,CAAoB,CAAC8B,OAArB,CAA6BrB,CAA7B,CAAmCyE,CAAnC,CAAd,CACH,CACJ,CAfD,EAeGlD,IAfH,CAeQjD,CAAY,CAACkD,SAfrB,CAgBH,CA9BD,CAwCAzC,CAAkB,CAACO,SAAnB,CAA6BkD,qBAA7B,CAAqD,SAAS3B,CAAT,CAAgB0B,CAAhB,CAA+B,CAMhF7D,CAAI,CAACuF,IAAL,CAAU,CALI,CACVJ,UAAU,CAAE,mCADF,CAEVC,IAAI,CAAEvB,CAFI,CAKJ,CAAV,EAAqB,CAArB,EAAwB3B,IAAxB,CAA6B,SAASb,CAAT,CAAe,CACxC,GAAIA,CAAI,CAACmE,MAAT,CAAiB,CAEbrD,CAAK,CAAC2C,IAAN,GAGA,GAA+C,WAA3C,QAAOW,CAAAA,MAAM,CAACC,CAAP,CAASC,sBAApB,CAA4D,CACxDF,MAAM,CAACC,CAAP,CAASC,sBAAT,CAAgCC,sBAAhC,EACH,CACDH,MAAM,CAACI,QAAP,CAAgBC,MAAhB,EACH,CATD,IASO,CAEHlG,CAAY,CAACsG,KAAb,CAAmB7E,CAAI,CAAC8E,MAAL,CAAY,CAAZ,EAAelD,GAAlC,CAAuC5B,CAAI,CAAC8E,MAAL,CAAY,CAAZ,EAAeC,OAAtD,CACH,CACJ,CAdD,EAcGvD,IAdH,CAcQjD,CAAY,CAACkD,SAdrB,CAeH,CArBD,CAgCAzC,CAAkB,CAACO,SAAnB,CAA6B+B,OAA7B,CAAuC,SAASrB,CAAT,CAAeyE,CAAf,CAAyB,CAC5D,GAAIM,CAAAA,CAAM,CAAG,CACT,KAAQ/E,CADC,CAAb,CAGA,GAAwB,WAApB,QAAOyE,CAAAA,CAAX,CAAqC,CACjCM,CAAM,CAAChB,QAAP,CAAkBU,CACrB,CACD,MAAOhG,CAAAA,CAAQ,CAACuG,YAAT,CAAsB,OAAtB,CAA+B,qBAA/B,CAAsD,KAAK/F,SAA3D,CAAsE8F,CAAtE,EAA8ExD,IAA9E,CAAmFjD,CAAY,CAACkD,SAAhG,CACV,CARD,CAUA,MAAoD,CAShDyD,IAAI,CAAE,cAASC,CAAT,CAAiB,CAClB,GAAInG,CAAAA,CAAJ,CAAuBmG,CAAvB,CACJ,CAX+C,CAavD,CA1UC,CAAN","sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see
.\n\n/**\n * AMD module for the user enrolment status field in the course participants page.\n *\n * @module core_user/status_field\n * @copyright 2017 Jun Pataleta\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\ndefine(['core/templates',\n 'jquery',\n 'core/str',\n 'core/config',\n 'core/notification',\n 'core/modal_factory',\n 'core/modal_events',\n 'core/fragment',\n 'core/ajax'\n ],\n function(Template, $, Str, Config, Notification, ModalFactory, ModalEvents, Fragment, Ajax) {\n\n /**\n * Action selectors.\n *\n * @access private\n * @type {{EDIT_ENROLMENT: string, SHOW_DETAILS: string, UNENROL: string}}\n */\n var SELECTORS = {\n EDIT_ENROLMENT: '[data-action=\"editenrolment\"]',\n SHOW_DETAILS: '[data-action=\"showdetails\"]',\n UNENROL: '[data-action=\"unenrol\"]'\n };\n\n /**\n * Constructor\n *\n * @param {Object} options Object containing options. The only valid option at this time is contextid.\n * Each call to templates.render gets it's own instance of this class.\n */\n var StatusFieldActions = function(options) {\n this.contextid = options.contextid;\n this.courseid = options.courseid;\n\n // Bind click event to editenrol buttons.\n this.bindEditEnrol();\n\n // Bind click event to unenrol buttons.\n this.bindUnenrol();\n\n // Bind click event to status details buttons.\n this.bindStatusDetails();\n };\n // Class variables and functions.\n\n /** @var {number} courseid The course ID. */\n StatusFieldActions.prototype.courseid = 0;\n\n /**\n * Private method\n *\n * @method initModal\n * @private\n */\n StatusFieldActions.prototype.bindEditEnrol = function() {\n var statusFieldInstsance = this;\n\n $(SELECTORS.EDIT_ENROLMENT).click(function(e) {\n e.preventDefault();\n\n // The particular edit button that was clicked.\n var clickedEditTrigger = $(this);\n // Get the parent container (it contains the data attributes associated with the status field).\n var parentContainer = clickedEditTrigger.parent();\n // Get the name of the user whose enrolment status is being edited.\n var fullname = parentContainer.data('fullname');\n // Get the user enrolment ID.\n var ueid = clickedEditTrigger.attr('rel');\n\n $.when(Str.get_string('edituserenrolment', 'enrol', fullname)).then(function(modalTitle) {\n return ModalFactory.create({\n large: true,\n title: modalTitle,\n type: ModalFactory.types.SAVE_CANCEL\n });\n }).done(function(modal) {\n // Handle save event.\n modal.getRoot().on(ModalEvents.save, function(e) {\n // Don't close the modal yet.\n e.preventDefault();\n // Submit form data.\n statusFieldInstsance.submitEditFormAjax(modal);\n });\n\n // Handle hidden event.\n modal.getRoot().on(ModalEvents.hidden, function() {\n // Destroy when hidden.\n modal.destroy();\n });\n\n // Set the modal body.\n modal.setBody(statusFieldInstsance.getBody(ueid));\n\n // Show the modal!\n modal.show();\n }).fail(Notification.exception);\n });\n };\n\n /**\n * Private method\n *\n * @method bindUnenrol\n * @private\n */\n StatusFieldActions.prototype.bindUnenrol = function() {\n var statusFieldInstsance = this;\n\n $(SELECTORS.UNENROL).click(function(e) {\n e.preventDefault();\n var unenrolLink = $(this);\n var parentContainer = unenrolLink.parent();\n var strings = [\n {\n key: 'unenrol',\n component: 'enrol'\n },\n {\n key: 'unenrolconfirm',\n component: 'enrol',\n param: {\n user: parentContainer.data('fullname'),\n course: parentContainer.data('coursename'),\n enrolinstancename: parentContainer.data('enrolinstancename')\n }\n }\n ];\n\n var deleteModalPromise = ModalFactory.create({\n type: ModalFactory.types.SAVE_CANCEL\n });\n\n $.when(Str.get_strings(strings), deleteModalPromise).done(function(results, modal) {\n var title = results[0];\n var confirmMessage = results[1];\n modal.setTitle(title);\n modal.setBody(confirmMessage);\n modal.setSaveButtonText(title);\n\n // Handle confirm event.\n modal.getRoot().on(ModalEvents.save, function() {\n // Build params.\n var unenrolParams = {\n 'ueid': $(unenrolLink).attr('rel')\n };\n // Don't close the modal yet.\n e.preventDefault();\n // Submit data.\n statusFieldInstsance.submitUnenrolFormAjax(modal, unenrolParams);\n });\n\n // Handle hidden event.\n modal.getRoot().on(ModalEvents.hidden, function() {\n // Destroy when hidden.\n modal.destroy();\n });\n\n // Display the delete confirmation modal.\n modal.show();\n }).fail(Notification.exception);\n });\n };\n\n /**\n * Private method\n *\n * @method bindStatusDetails\n * @private\n */\n StatusFieldActions.prototype.bindStatusDetails = function() {\n $(SELECTORS.SHOW_DETAILS).click(function(e) {\n e.preventDefault();\n\n var detailsButton = $(this);\n var parentContainer = detailsButton.parent();\n var context = {\n \"fullname\": parentContainer.data('fullname'),\n \"coursename\": parentContainer.data('coursename'),\n \"enrolinstancename\": parentContainer.data('enrolinstancename'),\n \"status\": parentContainer.data('status'),\n \"statusclass\": parentContainer.find('span').attr('class'),\n \"timestart\": parentContainer.data('timestart'),\n \"timeend\": parentContainer.data('timeend'),\n \"timeenrolled\": parentContainer.data('timeenrolled')\n };\n\n // Get default string for the modal and modal type.\n var strings = [\n {\n key: 'enroldetails',\n component: 'enrol'\n }\n ];\n\n // Find the edit enrolment link.\n var editEnrolLink = detailsButton.next(SELECTORS.EDIT_ENROLMENT);\n if (editEnrolLink.length) {\n // If there's an edit enrolment link for this user, clone it into the context for the modal.\n context.editenrollink = $('
').append(editEnrolLink.clone()).html();\n }\n\n var modalStringsPromise = Str.get_strings(strings);\n var modalPromise = ModalFactory.create({large: true, type: ModalFactory.types.CANCEL});\n $.when(modalStringsPromise, modalPromise).done(function(strings, modal) {\n var modalBodyPromise = Template.render('core_user/status_details', context);\n modal.setTitle(strings[0]);\n modal.setBody(modalBodyPromise);\n\n if (editEnrolLink.length) {\n modal.getRoot().on('click', SELECTORS.EDIT_ENROLMENT, function(e) {\n e.preventDefault();\n modal.hide();\n // Trigger click event for the edit enrolment link to show the edit enrolment modal.\n $(editEnrolLink).trigger('click');\n });\n }\n\n modal.show();\n\n // Handle hidden event.\n modal.getRoot().on(ModalEvents.hidden, function() {\n // Destroy when hidden.\n modal.destroy();\n });\n }).fail(Notification.exception);\n });\n };\n\n /**\n * Private method\n *\n * @method submitEditFormAjax\n * @param {Object} modal The the AMD modal object containing the form.\n * @private\n */\n StatusFieldActions.prototype.submitEditFormAjax = function(modal) {\n var statusFieldInstsance = this;\n var form = modal.getRoot().find('form');\n\n // User enrolment ID.\n var ueid = $(form).find('[name=\"ue\"]').val();\n\n var request = {\n methodname: 'core_enrol_submit_user_enrolment_form',\n args: {\n formdata: form.serialize()\n }\n };\n\n Ajax.call([request])[0].done(function(data) {\n if (data.result) {\n // Dismiss the modal.\n modal.hide();\n\n // Reload the page, don't show changed data warnings.\n if (typeof window.M.core_formchangechecker !== \"undefined\") {\n window.M.core_formchangechecker.reset_form_dirty_state();\n }\n window.location.reload();\n } else {\n // Serialise the form data and reload the form fragment to show validation errors.\n var formData = JSON.stringify(form.serialize());\n modal.setBody(statusFieldInstsance.getBody(ueid, formData));\n }\n }).fail(Notification.exception);\n };\n\n /**\n * Private method\n *\n * @method submitUnenrolFormAjax\n * @param {Object} modal The the AMD modal object containing the form.\n * @param {Object} unenrolParams The unenrol parameters.\n * @private\n */\n StatusFieldActions.prototype.submitUnenrolFormAjax = function(modal, unenrolParams) {\n var request = {\n methodname: 'core_enrol_unenrol_user_enrolment',\n args: unenrolParams\n };\n\n Ajax.call([request])[0].done(function(data) {\n if (data.result) {\n // Dismiss the modal.\n modal.hide();\n\n // Reload the page, don't show changed data warnings.\n if (typeof window.M.core_formchangechecker !== \"undefined\") {\n window.M.core_formchangechecker.reset_form_dirty_state();\n }\n window.location.reload();\n } else {\n // Display an alert containing the error message\n Notification.alert(data.errors[0].key, data.errors[0].message);\n }\n }).fail(Notification.exception);\n };\n\n /**\n * Private method\n *\n * @method getBody\n * @private\n * @param {Number} ueid The user enrolment ID associated with the user.\n * @param {string} formData Serialized string of the edit enrolment form data.\n * @return {Promise}\n */\n StatusFieldActions.prototype.getBody = function(ueid, formData) {\n var params = {\n 'ueid': ueid\n };\n if (typeof formData !== 'undefined') {\n params.formdata = formData;\n }\n return Fragment.loadFragment('enrol', 'user_enrolment_form', this.contextid, params).fail(Notification.exception);\n };\n\n return /** @alias module:core_user/editenrolment */ {\n // Public variables and functions.\n /**\n * Every call to init creates a new instance of the class with it's own event listeners etc.\n *\n * @method init\n * @public\n * @param {object} config - config variables for the module.\n */\n init: function(config) {\n (new StatusFieldActions(config));\n }\n };\n });\n"],"file":"status_field.min.js"}
\ No newline at end of file
diff --git a/user/amd/src/status_field.js b/user/amd/src/status_field.js
index 438941b690b..c03d9de31cf 100644
--- a/user/amd/src/status_field.js
+++ b/user/amd/src/status_field.js
@@ -261,48 +261,12 @@ define(['core/templates',
// User enrolment ID.
var ueid = $(form).find('[name="ue"]').val();
- // Status.
- var status = $(form).find('[name="status"]').val();
-
- var params = {
- 'courseid': this.courseid,
- 'ueid': ueid,
- 'status': status
- };
-
- // Enrol time start.
- var timeStartEnabled = $(form).find('[name="timestart[enabled]"]');
- if (timeStartEnabled.is(':checked')) {
- var timeStartYear = $(form).find('[name="timestart[year]"]').val();
- var timeStartMonth = $(form).find('[name="timestart[month]"]').val() - 1;
- var timeStartDay = $(form).find('[name="timestart[day]"]').val();
- var timeStartHour = $(form).find('[name="timestart[hour]"]').val();
- var timeStartMinute = $(form).find('[name="timestart[minute]"]').val();
- var timeStart = new Date(timeStartYear, timeStartMonth, timeStartDay, timeStartHour, timeStartMinute);
- params.timestart = timeStart.getTime() / 1000;
- }
-
- // Enrol time end.
- var timeEndEnabled = $(form).find('[name="timeend[enabled]"]');
- if (timeEndEnabled.is(':checked')) {
- var timeEndYear = $(form).find('[name="timeend[year]"]').val();
- var timeEndMonth = $(form).find('[name="timeend[month]"]').val() - 1;
- var timeEndDay = $(form).find('[name="timeend[day]"]').val();
- var timeEndHour = $(form).find('[name="timeend[hour]"]').val();
- var timeEndMinute = $(form).find('[name="timeend[minute]"]').val();
- var timeEnd = new Date(timeEndYear, timeEndMonth, timeEndDay, timeEndHour, timeEndMinute);
- params.timeend = timeEnd.getTime() / 1000;
- }
-
- // Enrol duration.
- var enrolDuration = $(form).find('[name="duration"]');
- if (enrolDuration.is(':enabled')) {
- params.timeend = params.timestart + parseInt(enrolDuration.val());
- }
var request = {
- methodname: 'core_enrol_edit_user_enrolment',
- args: params
+ methodname: 'core_enrol_submit_user_enrolment_form',
+ args: {
+ formdata: form.serialize()
+ }
};
Ajax.call([request])[0].done(function(data) {
@@ -323,7 +287,7 @@ define(['core/templates',
}).fail(Notification.exception);
};
- /**
+ /**
* Private method
*
* @method submitUnenrolFormAjax
diff --git a/version.php b/version.php
index 07689510546..55e99caceac 100644
--- a/version.php
+++ b/version.php
@@ -29,7 +29,7 @@
defined('MOODLE_INTERNAL') || die();
-$version = 2019090500.01; // YYYYMMDD = weekly release date of this DEV branch.
+$version = 2019090500.02; // YYYYMMDD = weekly release date of this DEV branch.
// RR = release increments - 00 in DEV branches.
// .XX = incremental changes.