MDL-68442 user: Add notifications on unenrol/update

This commit is contained in:
Andrew Nicols 2020-04-19 12:21:48 +08:00
parent 478039f99a
commit 829f860321
4 changed files with 32 additions and 9 deletions

View File

@ -64,6 +64,7 @@ $string['enrolmentnewuser'] = '{$a->user} has enrolled in course "{$a->course}"'
$string['enrolmentmethod'] = 'Enrolment method';
$string['enrolments'] = 'Enrolments';
$string['enrolmentoptions'] = 'Enrolment options';
$string['enrolmentupdatedforuser'] = 'The enrolment for user "{$a->fullname}" has been updated';
$string['enrolnotpermitted'] = 'You do not have permission or are not allowed to enrol someone in this course';
$string['enrolperiod'] = 'Enrolment duration';
$string['enrolusage'] = 'Instances / enrolments';
@ -136,6 +137,7 @@ $string['totalunenrolledusers'] = '{$a} unenrolled users';
$string['totalotherusers'] = '{$a} other users';
$string['unassignnotpermitted'] = 'You do not have permission to unassign roles in this course';
$string['unenrol'] = 'Unenrol';
$string['unenrolleduser'] = 'The user "{$a->fullname}" was unenrolled from the course';
$string['unenrolconfirm'] = 'Do you really want to unenrol "{$a->user}" (previously enrolled via "{$a->enrolinstancename}") from "{$a->course}"?';
$string['unenrolme'] = 'Unenrol me from {$a}';
$string['unenrolnotpermitted'] = 'You do not have permission or can not unenrol this user from this course.';

View File

@ -1,2 +1,2 @@
define ("core_user/status_field",["exports","core_table/dynamic","./repository","core/str","core_table/local/dynamic/selectors","core/fragment","core/modal_events","core/modal_factory","core/notification","core/templates"],function(a,b,c,d,f,g,h,i,j,k){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.init=void 0;b=m(b);c=m(c);d=m(d);f=l(f);g=l(g);h=l(h);i=l(i);j=l(j);k=l(k);function l(a){return a&&a.__esModule?a:{default:a}}function m(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}}function n(a){for(var b=1;b<arguments.length;b++){var c=null!=arguments[b]?arguments[b]:{},d=Object.keys(c);if("function"==typeof Object.getOwnPropertySymbols){d=d.concat(Object.getOwnPropertySymbols(c).filter(function(a){return Object.getOwnPropertyDescriptor(c,a).enumerable}))}d.forEach(function(b){o(a,b,c[b])})}return a}function o(a,b,c){if(b in a){Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0})}else{a[b]=c}return a}function p(a,b){return s(a)||r(a,b)||q()}function q(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}function r(a,b){var c=[],d=!0,e=!1,f=void 0;try{for(var g=a[Symbol.iterator](),h;!(d=(h=g.next()).done);d=!0){c.push(h.value);if(b&&c.length===b)break}}catch(a){e=!0;f=a}finally{try{if(!d&&null!=g["return"])g["return"]()}finally{if(e)throw f}}return c}function s(a){if(Array.isArray(a))return a}var t={editEnrolment:"[data-action=\"editenrolment\"]",showDetails:"[data-action=\"showdetails\"]",unenrol:"[data-action=\"unenrol\"]",statusElement:"[data-status]"},u=function(a){return a.closest(f.default.main.region)},v=function(a){return a.closest(t.statusElement)},w=function(a){return a.getAttribute("rel")},x=function(a,b){var c=function(b,c){return D(a,b,c)};document.addEventListener("click",function(a){var d=a.target.closest(f.default.main.fromRegionId(b));if(!d){return}var e=a.target.closest(t.editEnrolment);if(e){a.preventDefault();y(e,c)}var g=a.target.closest(t.unenrol);if(g){a.preventDefault();z(g)}var h=a.target.closest(t.showDetails);if(h){a.preventDefault();A(h)}})},y=function(a,b){var c=v(a),f=w(a);i.default.create({large:!0,title:d.get_string("edituserenrolment","enrol",c.dataset.fullname),type:i.default.types.SAVE_CANCEL,body:b(f)}).then(function(c){c.getRoot().on(h.default.save,function(d){d.preventDefault();B(a,b,c,f)});c.getRoot().on(h.default.hidden,function(){c.destroy()});c.show();return c}).catch(j.default.exception)},z=function(a){var b=v(a),c=w(a);i.default.create({type:i.default.types.SAVE_CANCEL}).then(function(f){f.getRoot().on(h.default.save,function(b){b.preventDefault();C(a,f,{ueid:c})});f.getRoot().on(h.default.hidden,function(){f.destroy()});f.show();var g=[{key:"unenrol",component:"enrol"},{key:"unenrolconfirm",component:"enrol",param:{user:b.dataset.fullname,course:b.dataset.coursename,enrolinstancename:b.dataset.enrolinstancename}}];return Promise.all([d.get_strings(g),f])}).then(function(a){var b=p(a,2),c=b[0],d=b[1];d.setTitle(c[0]);d.setSaveButtonText(c[0]);d.setBody(c[1]);return d}).catch(j.default.exception)},A=function(a){var b=v(a),c=n({editenrollink:"",statusclass:b.querySelector("span.badge").getAttribute("class")},b.dataset),f=b.querySelector(t.editEnrolment);if(f){c.editenrollink=f.outerHTML}i.default.create({large:!0,type:i.default.types.CANCEL,title:d.get_string("enroldetails","enrol"),body:k.default.render("core_user/status_details",c)}).then(function(a){if(f){a.getRoot().on("click",t.editEnrolment,function(b){b.preventDefault();a.hide();f.click()})}a.show();a.getRoot().on(h.default.hidden,function(){return a.destroy()});return a}).catch(j.default.exception)},B=function(a,d,e,f){var g=e.getRoot().find("form");c.submitUserEnrolmentForm(g.serialize()).then(function(c){if(!c.result){throw c.result}e.hide();e.destroy();b.refreshTableContent(u(a));return c}).catch(function(){e.setBody(d(f,JSON.stringify(g.serialize())));return e})},C=function(a,d,e){c.unenrolUser(e.ueid).then(function(c){if(!c.result){j.default.alert(c.errors[0].key,c.errors[0].message);return c}d.hide();d.destroy();b.refreshTableContent(u(a));return c}).catch(j.default.exception)},D=function(a,b){var c=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;return g.default.loadFragment("enrol","user_enrolment_form",a,{ueid:b,formdata:c})};a.init=function init(a){var b=a.contextid,c=a.uniqueid;x(b,c)}});
define ("core_user/status_field",["exports","core_table/dynamic","./repository","core/str","core_table/local/dynamic/selectors","core/fragment","core/modal_events","core/modal_factory","core/notification","core/templates","core/toast"],function(a,b,c,d,f,g,h,i,j,k,l){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.init=void 0;b=n(b);c=n(c);d=n(d);f=m(f);g=m(g);h=m(h);i=m(i);j=m(j);k=m(k);function m(a){return a&&a.__esModule?a:{default:a}}function n(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}}function o(a){for(var b=1;b<arguments.length;b++){var c=null!=arguments[b]?arguments[b]:{},d=Object.keys(c);if("function"==typeof Object.getOwnPropertySymbols){d=d.concat(Object.getOwnPropertySymbols(c).filter(function(a){return Object.getOwnPropertyDescriptor(c,a).enumerable}))}d.forEach(function(b){p(a,b,c[b])})}return a}function p(a,b,c){if(b in a){Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0})}else{a[b]=c}return a}function q(a,b){return t(a)||s(a,b)||r()}function r(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}function s(a,b){var c=[],d=!0,e=!1,f=void 0;try{for(var g=a[Symbol.iterator](),h;!(d=(h=g.next()).done);d=!0){c.push(h.value);if(b&&c.length===b)break}}catch(a){e=!0;f=a}finally{try{if(!d&&null!=g["return"])g["return"]()}finally{if(e)throw f}}return c}function t(a){if(Array.isArray(a))return a}var u={editEnrolment:"[data-action=\"editenrolment\"]",showDetails:"[data-action=\"showdetails\"]",unenrol:"[data-action=\"unenrol\"]",statusElement:"[data-status]"},v=function(a){return a.closest(f.default.main.region)},w=function(a){return a.closest(u.statusElement)},x=function(a){return a.getAttribute("rel")},y=function(a,b){var c=function(b,c){return E(a,b,c)};document.addEventListener("click",function(a){var d=a.target.closest(f.default.main.fromRegionId(b));if(!d){return}var e=a.target.closest(u.editEnrolment);if(e){a.preventDefault();z(e,c)}var g=a.target.closest(u.unenrol);if(g){a.preventDefault();A(g)}var h=a.target.closest(u.showDetails);if(h){a.preventDefault();B(h)}})},z=function(a,b){var c=w(a),f=x(a);i.default.create({large:!0,title:d.get_string("edituserenrolment","enrol",c.dataset.fullname),type:i.default.types.SAVE_CANCEL,body:b(f)}).then(function(d){d.getRoot().on(h.default.save,function(g){g.preventDefault();C(a,b,d,f,c.dataset)});d.getRoot().on(h.default.hidden,function(){d.destroy()});d.show();return d}).catch(j.default.exception)},A=function(a){var b=w(a),c=x(a);i.default.create({type:i.default.types.SAVE_CANCEL}).then(function(f){f.getRoot().on(h.default.save,function(d){d.preventDefault();D(a,f,{ueid:c},b.dataset)});f.getRoot().on(h.default.hidden,function(){f.destroy()});f.show();var g=[{key:"unenrol",component:"enrol"},{key:"unenrolconfirm",component:"enrol",param:{user:b.dataset.fullname,course:b.dataset.coursename,enrolinstancename:b.dataset.enrolinstancename}}];return Promise.all([d.get_strings(g),f])}).then(function(a){var b=q(a,2),c=b[0],d=b[1];d.setTitle(c[0]);d.setSaveButtonText(c[0]);d.setBody(c[1]);return d}).catch(j.default.exception)},B=function(a){var b=w(a),c=o({editenrollink:"",statusclass:b.querySelector("span.badge").getAttribute("class")},b.dataset),f=b.querySelector(u.editEnrolment);if(f){c.editenrollink=f.outerHTML}i.default.create({large:!0,type:i.default.types.CANCEL,title:d.get_string("enroldetails","enrol"),body:k.default.render("core_user/status_details",c)}).then(function(a){if(f){a.getRoot().on("click",u.editEnrolment,function(b){b.preventDefault();a.hide();f.click()})}a.show();a.getRoot().on(h.default.hidden,function(){return a.destroy()});return a}).catch(j.default.exception)},C=function(a,e,f,g,h){var i=f.getRoot().find("form");c.submitUserEnrolmentForm(i.serialize()).then(function(a){if(!a.result){throw a.result}f.hide();f.destroy();return a}).then(function(){b.refreshTableContent(v(a));return d.get_string("enrolmentupdatedforuser","core_enrol",h)}).then(function(a){(0,l.add)(a)}).catch(function(){f.setBody(e(g,JSON.stringify(i.serialize())));return f})},D=function(a,e,f,g){c.unenrolUser(f.ueid).then(function(a){if(!a.result){j.default.alert(a.errors[0].key,a.errors[0].message);return a}e.hide();e.destroy();return a}).then(function(){b.refreshTableContent(v(a));return d.get_string("unenrolleduser","core_enrol",g)}).then(function(a){(0,l.add)(a)}).catch(j.default.exception)},E=function(a,b){var c=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;return g.default.loadFragment("enrol","user_enrolment_form",a,{ueid:b,formdata:c})};a.init=function init(a){var b=a.contextid,c=a.uniqueid;y(b,c)}});
//# sourceMappingURL=status_field.min.js.map

File diff suppressed because one or more lines are too long

View File

@ -30,6 +30,7 @@ import ModalEvents from 'core/modal_events';
import ModalFactory from 'core/modal_factory';
import Notification from 'core/notification';
import Templates from 'core/templates';
import {add as notifyUser} from 'core/toast';
const Selectors = {
editEnrolment: '[data-action="editenrolment"]',
@ -123,7 +124,7 @@ const showEditDialogue = (link, getBody) => {
e.preventDefault();
// Submit form data.
submitEditFormAjax(link, getBody, modal, userEnrolmentId);
submitEditFormAjax(link, getBody, modal, userEnrolmentId, container.dataset);
});
// Handle hidden event.
@ -161,9 +162,11 @@ const showUnenrolConfirmation = link => {
// Submit data.
submitUnenrolFormAjax(
link,
modal, {
modal,
{
ueid: userEnrolmentId,
}
},
container.dataset
);
});
@ -259,8 +262,9 @@ const showStatusDetails = link => {
* @param {Function} getBody
* @param {Object} modal
* @param {Number} userEnrolmentId
* @param {Object} userData
*/
const submitEditFormAjax = (clickedLink, getBody, modal, userEnrolmentId) => {
const submitEditFormAjax = (clickedLink, getBody, modal, userEnrolmentId, userData) => {
const form = modal.getRoot().find('form');
Repository.submitUserEnrolmentForm(form.serialize())
@ -273,9 +277,17 @@ const submitEditFormAjax = (clickedLink, getBody, modal, userEnrolmentId) => {
modal.hide();
modal.destroy();
return data;
})
.then(() => {
DynamicTable.refreshTableContent(getDynamicTableFromLink(clickedLink));
return data;
return Str.get_string('enrolmentupdatedforuser', 'core_enrol', userData);
})
.then(notificationString => {
notifyUser(notificationString);
return;
})
.catch(() => {
modal.setBody(getBody(userEnrolmentId, JSON.stringify(form.serialize())));
@ -290,8 +302,9 @@ const submitEditFormAjax = (clickedLink, getBody, modal, userEnrolmentId) => {
* @param {HTMLElement} clickedLink
* @param {Object} modal
* @param {Object} args
* @param {Object} userData
*/
const submitUnenrolFormAjax = (clickedLink, modal, args) => {
const submitUnenrolFormAjax = (clickedLink, modal, args, userData) => {
Repository.unenrolUser(args.ueid)
.then(data => {
if (!data.result) {
@ -305,9 +318,17 @@ const submitUnenrolFormAjax = (clickedLink, modal, args) => {
modal.hide();
modal.destroy();
return data;
})
.then(() => {
DynamicTable.refreshTableContent(getDynamicTableFromLink(clickedLink));
return data;
return Str.get_string('unenrolleduser', 'core_enrol', userData);
})
.then(notificationString => {
notifyUser(notificationString);
return;
})
.catch(Notification.exception);
};