Merge branch 'MDL-78306-master' of https://github.com/andrewnicols/moodle
This commit is contained in:
@@ -185,7 +185,7 @@
|
||||
'promise/always-return': 'warn',
|
||||
'promise/no-return-wrap': 'warn',
|
||||
'promise/param-names': 'warn',
|
||||
'promise/catch-or-return': ['warn', {terminationMethod: ['catch', 'fail']}],
|
||||
'promise/catch-or-return': ['warn', {terminationMethod: ['catch', 'fail', 'always'], allowFinally: true}],
|
||||
'promise/no-native': 'warn',
|
||||
'promise/no-promise-in-callback': 'warn',
|
||||
'promise/no-callback-in-promise': 'warn',
|
||||
|
||||
@@ -1,10 +1,3 @@
|
||||
/**
|
||||
* Request actions.
|
||||
*
|
||||
* @module tool_dataprivacy/data_request_modal
|
||||
* @copyright 2018 Jun Pataleta
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
define("tool_dataprivacy/data_request_modal",["jquery","core/notification","core/custom_interaction_events","core/modal","core/modal_registry","tool_dataprivacy/events"],(function($,Notification,CustomEvents,Modal,ModalRegistry,DataPrivacyEvents){var registered=!1,SELECTORS_APPROVE_BUTTON='[data-action="approve"]',SELECTORS_DENY_BUTTON='[data-action="deny"]',SELECTORS_COMPLETE_BUTTON='[data-action="complete"]',ModalDataRequest=function(root){Modal.call(this,root)};return ModalDataRequest.TYPE="tool_dataprivacy-data_request",(ModalDataRequest.prototype=Object.create(Modal.prototype)).constructor=ModalDataRequest,ModalDataRequest.prototype.registerEventListeners=function(){Modal.prototype.registerEventListeners.call(this),this.getModal().on(CustomEvents.events.activate,SELECTORS_APPROVE_BUTTON,function(e,data){var approveEvent=$.Event(DataPrivacyEvents.approve);this.getRoot().trigger(approveEvent,this),approveEvent.isDefaultPrevented()||(this.hide(),data.originalEvent.preventDefault())}.bind(this)),this.getModal().on(CustomEvents.events.activate,SELECTORS_DENY_BUTTON,function(e,data){var denyEvent=$.Event(DataPrivacyEvents.deny);this.getRoot().trigger(denyEvent,this),denyEvent.isDefaultPrevented()||(this.hide(),data.originalEvent.preventDefault())}.bind(this)),this.getModal().on(CustomEvents.events.activate,SELECTORS_COMPLETE_BUTTON,function(e,data){var completeEvent=$.Event(DataPrivacyEvents.complete);this.getRoot().trigger(completeEvent,this),completeEvent.isDefaultPrevented()||(this.hide(),data.originalEvent.preventDefault())}.bind(this))},registered||(ModalRegistry.register(ModalDataRequest.TYPE,ModalDataRequest,"tool_dataprivacy/data_request_modal"),registered=!0),ModalDataRequest}));
|
||||
define("tool_dataprivacy/data_request_modal",["exports","jquery","core/custom_interaction_events","core/modal","./events"],(function(_exports,_jquery,CustomEvents,_modal,_events){function _getRequireWildcardCache(nodeInterop){if("function"!=typeof WeakMap)return null;var cacheBabelInterop=new WeakMap,cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_jquery=_interopRequireDefault(_jquery),CustomEvents=function(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule)return obj;if(null===obj||"object"!=typeof obj&&"function"!=typeof obj)return{default:obj};var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj))return cache.get(obj);var newObj={},hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj)if("default"!==key&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;desc&&(desc.get||desc.set)?Object.defineProperty(newObj,key,desc):newObj[key]=obj[key]}newObj.default=obj,cache&&cache.set(obj,newObj);return newObj}(CustomEvents),_modal=_interopRequireDefault(_modal),_events=_interopRequireDefault(_events);const SELECTORS_APPROVE_BUTTON='[data-action="approve"]',SELECTORS_DENY_BUTTON='[data-action="deny"]',SELECTORS_COMPLETE_BUTTON='[data-action="complete"]';class ModalDataRequest extends _modal.default{registerEventListeners(){super.registerEventListeners(this),this.getModal().on(CustomEvents.events.activate,SELECTORS_APPROVE_BUTTON,((e,data)=>{const approveEvent=_jquery.default.Event(_events.default.approve);this.getRoot().trigger(approveEvent,this),approveEvent.isDefaultPrevented()||(this.hide(),data.originalEvent.preventDefault())})),this.getModal().on(CustomEvents.events.activate,SELECTORS_DENY_BUTTON,((e,data)=>{const denyEvent=_jquery.default.Event(_events.default.deny);this.getRoot().trigger(denyEvent,this),denyEvent.isDefaultPrevented()||(this.hide(),data.originalEvent.preventDefault())})),this.getModal().on(CustomEvents.events.activate,SELECTORS_COMPLETE_BUTTON,((e,data)=>{const completeEvent=_jquery.default.Event(_events.default.complete);this.getRoot().trigger(completeEvent,this),completeEvent.isDefaultPrevented()||(this.hide(),data.originalEvent.preventDefault())}))}}return _exports.default=ModalDataRequest,_defineProperty(ModalDataRequest,"TYPE","tool_dataprivacy-data_request"),_defineProperty(ModalDataRequest,"TEMPLATE","tool_dataprivacy/data_request_modal"),ModalDataRequest.registerModalType(),_exports.default}));
|
||||
|
||||
//# sourceMappingURL=data_request_modal.min.js.map
|
||||
File diff suppressed because one or more lines are too long
+1
-8
@@ -1,10 +1,3 @@
|
||||
/**
|
||||
* Contain the events the data privacy tool can fire.
|
||||
*
|
||||
* @module tool_dataprivacy/events
|
||||
* @copyright 2018 Jun Pataleta
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
define("tool_dataprivacy/events",[],(function(){return{approve:"tool_dataprivacy-data_request:approve",bulkApprove:"tool_dataprivacy-data_request:bulk_approve",deny:"tool_dataprivacy-data_request:deny",bulkDeny:"tool_dataprivacy-data_request:bulk_deny",complete:"tool_dataprivacy-data_request:complete"}}));
|
||||
define("tool_dataprivacy/events",["exports"],(function(_exports){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0;return _exports.default={approve:"tool_dataprivacy-data_request:approve",bulkApprove:"tool_dataprivacy-data_request:bulk_approve",deny:"tool_dataprivacy-data_request:deny",bulkDeny:"tool_dataprivacy-data_request:bulk_deny",complete:"tool_dataprivacy-data_request:complete"},_exports.default}));
|
||||
|
||||
//# sourceMappingURL=events.min.js.map
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"events.min.js","sources":["../src/events.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Contain the events the data privacy tool can fire.\n *\n * @module tool_dataprivacy/events\n * @copyright 2018 Jun Pataleta\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\ndefine([], function() {\n return {\n approve: 'tool_dataprivacy-data_request:approve',\n bulkApprove: 'tool_dataprivacy-data_request:bulk_approve',\n deny: 'tool_dataprivacy-data_request:deny',\n bulkDeny: 'tool_dataprivacy-data_request:bulk_deny',\n complete: 'tool_dataprivacy-data_request:complete'\n };\n});\n"],"names":["define","approve","bulkApprove","deny","bulkDeny","complete"],"mappings":";;;;;;;AAsBAA,iCAAO,IAAI,iBACA,CACHC,QAAS,wCACTC,YAAa,6CACbC,KAAM,qCACNC,SAAU,0CACVC,SAAU"}
|
||||
{"version":3,"file":"events.min.js","sources":["../src/events.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Contain the events the data privacy tool can fire.\n *\n * @module tool_dataprivacy/events\n * @copyright 2018 Jun Pataleta\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\nexport default {\n approve: 'tool_dataprivacy-data_request:approve',\n bulkApprove: 'tool_dataprivacy-data_request:bulk_approve',\n deny: 'tool_dataprivacy-data_request:deny',\n bulkDeny: 'tool_dataprivacy-data_request:bulk_deny',\n complete: 'tool_dataprivacy-data_request:complete',\n};\n"],"names":["approve","bulkApprove","deny","bulkDeny","complete"],"mappings":"yKAsBe,CACXA,QAAS,wCACTC,YAAa,6CACbC,KAAM,qCACNC,SAAU,0CACVC,SAAU"}
|
||||
@@ -20,76 +20,59 @@
|
||||
* @copyright 2018 Jun Pataleta
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
define(['jquery', 'core/notification', 'core/custom_interaction_events', 'core/modal', 'core/modal_registry',
|
||||
'tool_dataprivacy/events'],
|
||||
function($, Notification, CustomEvents, Modal, ModalRegistry, DataPrivacyEvents) {
|
||||
|
||||
var registered = false;
|
||||
var SELECTORS = {
|
||||
APPROVE_BUTTON: '[data-action="approve"]',
|
||||
DENY_BUTTON: '[data-action="deny"]',
|
||||
COMPLETE_BUTTON: '[data-action="complete"]'
|
||||
};
|
||||
import $ from 'jquery';
|
||||
import * as CustomEvents from 'core/custom_interaction_events';
|
||||
import Modal from 'core/modal';
|
||||
import DataPrivacyEvents from './events';
|
||||
|
||||
/**
|
||||
* Constructor for the Modal.
|
||||
*
|
||||
* @param {object} root The root jQuery element for the modal
|
||||
*/
|
||||
var ModalDataRequest = function(root) {
|
||||
Modal.call(this, root);
|
||||
};
|
||||
const SELECTORS = {
|
||||
APPROVE_BUTTON: '[data-action="approve"]',
|
||||
DENY_BUTTON: '[data-action="deny"]',
|
||||
COMPLETE_BUTTON: '[data-action="complete"]',
|
||||
};
|
||||
|
||||
ModalDataRequest.TYPE = 'tool_dataprivacy-data_request';
|
||||
ModalDataRequest.prototype = Object.create(Modal.prototype);
|
||||
ModalDataRequest.prototype.constructor = ModalDataRequest;
|
||||
export default class ModalDataRequest extends Modal {
|
||||
static TYPE = 'tool_dataprivacy-data_request';
|
||||
static TEMPLATE = 'tool_dataprivacy/data_request_modal';
|
||||
|
||||
/**
|
||||
* Set up all of the event handling for the modal.
|
||||
*
|
||||
* @method registerEventListeners
|
||||
*/
|
||||
ModalDataRequest.prototype.registerEventListeners = function() {
|
||||
// Apply parent event listeners.
|
||||
Modal.prototype.registerEventListeners.call(this);
|
||||
/**
|
||||
* Set up all of the event handling for the modal.
|
||||
*/
|
||||
registerEventListeners() {
|
||||
// Apply parent event listeners.
|
||||
super.registerEventListeners(this);
|
||||
|
||||
this.getModal().on(CustomEvents.events.activate, SELECTORS.APPROVE_BUTTON, function(e, data) {
|
||||
var approveEvent = $.Event(DataPrivacyEvents.approve);
|
||||
this.getRoot().trigger(approveEvent, this);
|
||||
this.getModal().on(CustomEvents.events.activate, SELECTORS.APPROVE_BUTTON, (e, data) => {
|
||||
const approveEvent = $.Event(DataPrivacyEvents.approve);
|
||||
this.getRoot().trigger(approveEvent, this);
|
||||
|
||||
if (!approveEvent.isDefaultPrevented()) {
|
||||
this.hide();
|
||||
data.originalEvent.preventDefault();
|
||||
}
|
||||
}.bind(this));
|
||||
if (!approveEvent.isDefaultPrevented()) {
|
||||
this.hide();
|
||||
data.originalEvent.preventDefault();
|
||||
}
|
||||
});
|
||||
|
||||
this.getModal().on(CustomEvents.events.activate, SELECTORS.DENY_BUTTON, function(e, data) {
|
||||
var denyEvent = $.Event(DataPrivacyEvents.deny);
|
||||
this.getRoot().trigger(denyEvent, this);
|
||||
this.getModal().on(CustomEvents.events.activate, SELECTORS.DENY_BUTTON, (e, data) => {
|
||||
const denyEvent = $.Event(DataPrivacyEvents.deny);
|
||||
this.getRoot().trigger(denyEvent, this);
|
||||
|
||||
if (!denyEvent.isDefaultPrevented()) {
|
||||
this.hide();
|
||||
data.originalEvent.preventDefault();
|
||||
}
|
||||
}.bind(this));
|
||||
if (!denyEvent.isDefaultPrevented()) {
|
||||
this.hide();
|
||||
data.originalEvent.preventDefault();
|
||||
}
|
||||
});
|
||||
|
||||
this.getModal().on(CustomEvents.events.activate, SELECTORS.COMPLETE_BUTTON, function(e, data) {
|
||||
var completeEvent = $.Event(DataPrivacyEvents.complete);
|
||||
this.getRoot().trigger(completeEvent, this);
|
||||
this.getModal().on(CustomEvents.events.activate, SELECTORS.COMPLETE_BUTTON, (e, data) => {
|
||||
const completeEvent = $.Event(DataPrivacyEvents.complete);
|
||||
this.getRoot().trigger(completeEvent, this);
|
||||
|
||||
if (!completeEvent.isDefaultPrevented()) {
|
||||
this.hide();
|
||||
data.originalEvent.preventDefault();
|
||||
}
|
||||
}.bind(this));
|
||||
};
|
||||
if (!completeEvent.isDefaultPrevented()) {
|
||||
this.hide();
|
||||
data.originalEvent.preventDefault();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// Automatically register with the modal registry the first time this module is imported so that you can create modals
|
||||
// of this type using the modal factory.
|
||||
if (!registered) {
|
||||
ModalRegistry.register(ModalDataRequest.TYPE, ModalDataRequest, 'tool_dataprivacy/data_request_modal');
|
||||
registered = true;
|
||||
}
|
||||
|
||||
return ModalDataRequest;
|
||||
});
|
||||
ModalDataRequest.registerModalType();
|
||||
|
||||
@@ -20,12 +20,10 @@
|
||||
* @copyright 2018 Jun Pataleta
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
define([], function() {
|
||||
return {
|
||||
approve: 'tool_dataprivacy-data_request:approve',
|
||||
bulkApprove: 'tool_dataprivacy-data_request:bulk_approve',
|
||||
deny: 'tool_dataprivacy-data_request:deny',
|
||||
bulkDeny: 'tool_dataprivacy-data_request:bulk_deny',
|
||||
complete: 'tool_dataprivacy-data_request:complete'
|
||||
};
|
||||
});
|
||||
export default {
|
||||
approve: 'tool_dataprivacy-data_request:approve',
|
||||
bulkApprove: 'tool_dataprivacy-data_request:bulk_approve',
|
||||
deny: 'tool_dataprivacy-data_request:deny',
|
||||
bulkDeny: 'tool_dataprivacy-data_request:bulk_deny',
|
||||
complete: 'tool_dataprivacy-data_request:complete',
|
||||
};
|
||||
|
||||
Vendored
+1
-1
@@ -5,6 +5,6 @@
|
||||
* @copyright 2017 Andrew Nicols <andrew@nicols.co.uk>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
define("core_calendar/crud",["jquery","core/str","core/notification","core/custom_interaction_events","core/modal","core/modal_registry","core/modal_factory","core/modal_events","core_calendar/modal_event_form","core_calendar/repository","core_calendar/events","core_calendar/modal_delete","core_calendar/selectors","core/pending"],(function($,Str,Notification,CustomEvents,Modal,ModalRegistry,ModalFactory,ModalEvents,ModalEventForm,CalendarRepository,CalendarEvents,ModalDelete,CalendarSelectors,Pending){return{registerRemove:function(root){root.on("click",CalendarSelectors.actions.remove,(function(e){var eventSource=$(this).closest(CalendarSelectors.eventItem);!function(eventId,eventTitle,eventCount){var deletePromise,pendingPromise=new Pending("core_calendar/crud:confirmDeletion"),deleteStrings=[{key:"deleteevent",component:"calendar"}],isRepeatedEvent=(eventCount=parseInt(eventCount,10))>1;isRepeatedEvent?(deleteStrings.push({key:"confirmeventseriesdelete",component:"calendar",param:{name:eventTitle,count:eventCount}}),deletePromise=ModalFactory.create({type:ModalDelete.TYPE})):(deleteStrings.push({key:"confirmeventdelete",component:"calendar",param:eventTitle}),deletePromise=ModalFactory.create({type:ModalFactory.types.SAVE_CANCEL}));var stringsPromise=Str.get_strings(deleteStrings);$.when(stringsPromise,deletePromise).then((function(strings,deleteModal){return deleteModal.setRemoveOnClose(!0),deleteModal.setTitle(strings[0]),deleteModal.setBody(strings[1]),isRepeatedEvent||deleteModal.setSaveButtonText(strings[0]),deleteModal.show(),deleteModal.getRoot().on(ModalEvents.save,(function(){var pendingPromise=new Pending("calendar/crud:initModal:deletedevent");CalendarRepository.deleteEvent(eventId,!1).then((function(){$("body").trigger(CalendarEvents.deleted,[eventId,!1])})).then(pendingPromise.resolve).catch(Notification.exception)})),deleteModal.getRoot().on(CalendarEvents.deleteAll,(function(){var pendingPromise=new Pending("calendar/crud:initModal:deletedallevent");CalendarRepository.deleteEvent(eventId,!0).then((function(){$("body").trigger(CalendarEvents.deleted,[eventId,!0])})).then(pendingPromise.resolve).catch(Notification.exception)})),deleteModal})).then((function(modal){return pendingPromise.resolve(),modal})).catch(Notification.exception)}(eventSource.data("eventId"),eventSource.data("eventTitle"),eventSource.data("eventCount")),e.preventDefault()}))},registerEditListeners:function(root,eventFormModalPromise){var pendingPromise=new Pending("core_calendar/crud:registerEditListeners");return eventFormModalPromise.then((function(modal){return $("body").on(CalendarEvents.editEvent,(function(e,eventId){var target=root.find("[data-event-id=".concat(eventId,"]")),calendarWrapper=root.find(CalendarSelectors.wrapper);modal.setEventId(eventId),modal.setContextId(calendarWrapper.data("contextId")),modal.setReturnElement(target),modal.show(),e.stopImmediatePropagation()})),modal})).then((function(modal){return pendingPromise.resolve(),modal})).catch(Notification.exception)},registerEventFormModal:function(root){var eventFormPromise=ModalFactory.create({type:ModalEventForm.TYPE,large:!0});return root.on("click",CalendarSelectors.actions.create,(function(e){eventFormPromise.then((function(modal){var wrapper=root.find(CalendarSelectors.wrapper),categoryId=wrapper.data("categoryid");void 0!==categoryId&&modal.setCategoryId(categoryId);var today=root.find(CalendarSelectors.today),firstDay=root.find(CalendarSelectors.day);!today.length&&firstDay.length&&modal.setStartTime(firstDay.data("newEventTimestamp")),modal.setContextId(wrapper.data("contextId")),modal.setCourseId(wrapper.data("courseid")),modal.show()})).fail(Notification.exception),e.preventDefault()})),root.on("click",CalendarSelectors.actions.edit,(function(e){e.preventDefault();var target=$(e.currentTarget),calendarWrapper=target.closest(CalendarSelectors.wrapper),eventWrapper=target.closest(CalendarSelectors.eventItem);eventFormPromise.then((function(modal){modal.setEventId(eventWrapper.data("eventId")),modal.setContextId(calendarWrapper.data("contextId")),modal.setCourseId(eventWrapper.data("courseId")),modal.show(),e.stopImmediatePropagation()})).fail(Notification.exception)})),eventFormPromise}}}));
|
||||
define("core_calendar/crud",["jquery","core/str","core/notification","core/modal_factory","core/modal_events","core_calendar/modal_event_form","core_calendar/repository","core_calendar/events","core_calendar/modal_delete","core_calendar/selectors","core/pending"],(function($,Str,Notification,ModalFactory,ModalEvents,ModalEventForm,CalendarRepository,CalendarEvents,ModalDelete,CalendarSelectors,Pending){return{registerRemove:function(root){root.on("click",CalendarSelectors.actions.remove,(function(e){var eventSource=$(this).closest(CalendarSelectors.eventItem);!function(eventId,eventTitle,eventCount){var deletePromise,pendingPromise=new Pending("core_calendar/crud:confirmDeletion"),deleteStrings=[{key:"deleteevent",component:"calendar"}],isRepeatedEvent=(eventCount=parseInt(eventCount,10))>1;isRepeatedEvent?(deleteStrings.push({key:"confirmeventseriesdelete",component:"calendar",param:{name:eventTitle,count:eventCount}}),deletePromise=ModalFactory.create({type:ModalDelete.TYPE})):(deleteStrings.push({key:"confirmeventdelete",component:"calendar",param:eventTitle}),deletePromise=ModalFactory.create({type:ModalFactory.types.SAVE_CANCEL}));var stringsPromise=Str.get_strings(deleteStrings);$.when(stringsPromise,deletePromise).then((function(strings,deleteModal){return deleteModal.setRemoveOnClose(!0),deleteModal.setTitle(strings[0]),deleteModal.setBody(strings[1]),isRepeatedEvent||deleteModal.setSaveButtonText(strings[0]),deleteModal.show(),deleteModal.getRoot().on(ModalEvents.save,(function(){var pendingPromise=new Pending("calendar/crud:initModal:deletedevent");CalendarRepository.deleteEvent(eventId,!1).then((function(){$("body").trigger(CalendarEvents.deleted,[eventId,!1])})).then(pendingPromise.resolve).catch(Notification.exception)})),deleteModal.getRoot().on(CalendarEvents.deleteAll,(function(){var pendingPromise=new Pending("calendar/crud:initModal:deletedallevent");CalendarRepository.deleteEvent(eventId,!0).then((function(){$("body").trigger(CalendarEvents.deleted,[eventId,!0])})).then(pendingPromise.resolve).catch(Notification.exception)})),deleteModal})).then((function(modal){return pendingPromise.resolve(),modal})).catch(Notification.exception)}(eventSource.data("eventId"),eventSource.data("eventTitle"),eventSource.data("eventCount")),e.preventDefault()}))},registerEditListeners:function(root,eventFormModalPromise){var pendingPromise=new Pending("core_calendar/crud:registerEditListeners");return eventFormModalPromise.then((function(modal){return $("body").on(CalendarEvents.editEvent,(function(e,eventId){var target=root.find("[data-event-id=".concat(eventId,"]")),calendarWrapper=root.find(CalendarSelectors.wrapper);modal.setEventId(eventId),modal.setContextId(calendarWrapper.data("contextId")),modal.setReturnElement(target),modal.show(),e.stopImmediatePropagation()})),modal})).then((function(modal){return pendingPromise.resolve(),modal})).catch(Notification.exception)},registerEventFormModal:function(root){var eventFormPromise=ModalFactory.create({type:ModalEventForm.TYPE,large:!0});return root.on("click",CalendarSelectors.actions.create,(function(e){eventFormPromise.then((function(modal){var wrapper=root.find(CalendarSelectors.wrapper),categoryId=wrapper.data("categoryid");void 0!==categoryId&&modal.setCategoryId(categoryId);var today=root.find(CalendarSelectors.today),firstDay=root.find(CalendarSelectors.day);!today.length&&firstDay.length&&modal.setStartTime(firstDay.data("newEventTimestamp")),modal.setContextId(wrapper.data("contextId")),modal.setCourseId(wrapper.data("courseid")),modal.show()})).fail(Notification.exception),e.preventDefault()})),root.on("click",CalendarSelectors.actions.edit,(function(e){e.preventDefault();var target=$(e.currentTarget),calendarWrapper=target.closest(CalendarSelectors.wrapper),eventWrapper=target.closest(CalendarSelectors.eventItem);eventFormPromise.then((function(modal){modal.setEventId(eventWrapper.data("eventId")),modal.setContextId(calendarWrapper.data("contextId")),modal.setCourseId(eventWrapper.data("courseId")),modal.show(),e.stopImmediatePropagation()})).fail(Notification.exception)})),eventFormPromise}}}));
|
||||
|
||||
//# sourceMappingURL=crud.min.js.map
|
||||
File diff suppressed because one or more lines are too long
Vendored
+1
-8
@@ -1,10 +1,3 @@
|
||||
/**
|
||||
* Contain the events the calendar component can fire.
|
||||
*
|
||||
* @module core_calendar/events
|
||||
* @copyright 2017 Simey Lameze <simey@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
define("core_calendar/events",[],(function(){return{created:"calendar-events:created",deleted:"calendar-events:deleted",deleteAll:"calendar-events:delete_all",updated:"calendar-events:updated",editEvent:"calendar-events:edit_event",editActionEvent:"calendar-events:edit_action_event",eventMoved:"calendar-events:event_moved",dayChanged:"calendar-events:day_changed",monthChanged:"calendar-events:month_changed",moveEvent:"calendar-events:move_event",filterChanged:"calendar-events:filter_changed",courseChanged:"calendar-events:course_changed",viewUpdated:"calendar-events:view_updated"}}));
|
||||
define("core_calendar/events",["exports"],(function(_exports){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0;return _exports.default={created:"calendar-events:created",deleted:"calendar-events:deleted",deleteAll:"calendar-events:delete_all",updated:"calendar-events:updated",editEvent:"calendar-events:edit_event",editActionEvent:"calendar-events:edit_action_event",eventMoved:"calendar-events:event_moved",dayChanged:"calendar-events:day_changed",monthChanged:"calendar-events:month_changed",moveEvent:"calendar-events:move_event",filterChanged:"calendar-events:filter_changed",courseChanged:"calendar-events:course_changed",viewUpdated:"calendar-events:view_updated"},_exports.default}));
|
||||
|
||||
//# sourceMappingURL=events.min.js.map
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"events.min.js","sources":["../src/events.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Contain the events the calendar component can fire.\n *\n * @module core_calendar/events\n * @copyright 2017 Simey Lameze <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\ndefine([], function() {\n return {\n created: 'calendar-events:created',\n deleted: 'calendar-events:deleted',\n deleteAll: 'calendar-events:delete_all',\n updated: 'calendar-events:updated',\n editEvent: 'calendar-events:edit_event',\n editActionEvent: 'calendar-events:edit_action_event',\n eventMoved: 'calendar-events:event_moved',\n dayChanged: 'calendar-events:day_changed',\n monthChanged: 'calendar-events:month_changed',\n moveEvent: 'calendar-events:move_event',\n filterChanged: 'calendar-events:filter_changed',\n courseChanged: 'calendar-events:course_changed',\n viewUpdated: 'calendar-events:view_updated',\n };\n});\n"],"names":["define","created","deleted","deleteAll","updated","editEvent","editActionEvent","eventMoved","dayChanged","monthChanged","moveEvent","filterChanged","courseChanged","viewUpdated"],"mappings":";;;;;;;AAsBAA,8BAAO,IAAI,iBACA,CACHC,QAAS,0BACTC,QAAS,0BACTC,UAAW,6BACXC,QAAS,0BACTC,UAAW,6BACXC,gBAAiB,oCACjBC,WAAY,8BACZC,WAAY,8BACZC,aAAc,gCACdC,UAAW,6BACXC,cAAe,iCACfC,cAAe,iCACfC,YAAa"}
|
||||
{"version":3,"file":"events.min.js","sources":["../src/events.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Contain the events the calendar component can fire.\n *\n * @module core_calendar/events\n * @copyright 2017 Simey Lameze <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\nexport default {\n created: 'calendar-events:created',\n deleted: 'calendar-events:deleted',\n deleteAll: 'calendar-events:delete_all',\n updated: 'calendar-events:updated',\n editEvent: 'calendar-events:edit_event',\n editActionEvent: 'calendar-events:edit_action_event',\n eventMoved: 'calendar-events:event_moved',\n dayChanged: 'calendar-events:day_changed',\n monthChanged: 'calendar-events:month_changed',\n moveEvent: 'calendar-events:move_event',\n filterChanged: 'calendar-events:filter_changed',\n courseChanged: 'calendar-events:course_changed',\n viewUpdated: 'calendar-events:view_updated',\n};\n"],"names":["created","deleted","deleteAll","updated","editEvent","editActionEvent","eventMoved","dayChanged","monthChanged","moveEvent","filterChanged","courseChanged","viewUpdated"],"mappings":"sKAsBe,CACXA,QAAS,0BACTC,QAAS,0BACTC,UAAW,6BACXC,QAAS,0BACTC,UAAW,6BACXC,gBAAiB,oCACjBC,WAAY,8BACZC,WAAY,8BACZC,aAAc,gCACdC,UAAW,6BACXC,cAAe,iCACfC,cAAe,iCACfC,YAAa"}
|
||||
+1
-8
@@ -1,10 +1,3 @@
|
||||
/**
|
||||
* Contain the logic for the delete modal.
|
||||
*
|
||||
* @module core_calendar/modal_delete
|
||||
* @copyright 2017 Andrew Nicols <andrew@nicols.co.uk>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
define("core_calendar/modal_delete",["jquery","core/notification","core/custom_interaction_events","core/modal","core/modal_events","core/modal_registry","core_calendar/events"],(function($,Notification,CustomEvents,Modal,ModalEvents,ModalRegistry,CalendarEvents){var registered=!1,SELECTORS_DELETE_ONE_BUTTON='[data-action="deleteone"]',SELECTORS_DELETE_ALL_BUTTON='[data-action="deleteall"]',SELECTORS_CANCEL_BUTTON='[data-action="cancel"]',ModalDelete=function(root){Modal.call(this,root),this.setRemoveOnClose(!0)};return ModalDelete.TYPE="core_calendar-modal_delete",(ModalDelete.prototype=Object.create(Modal.prototype)).constructor=ModalDelete,ModalDelete.prototype.registerEventListeners=function(){Modal.prototype.registerEventListeners.call(this),this.getModal().on(CustomEvents.events.activate,SELECTORS_DELETE_ONE_BUTTON,function(e,data){var saveEvent=$.Event(ModalEvents.save);this.getRoot().trigger(saveEvent,this),saveEvent.isDefaultPrevented()||(this.hide(),data.originalEvent.preventDefault())}.bind(this)),this.getModal().on(CustomEvents.events.activate,SELECTORS_DELETE_ALL_BUTTON,function(e,data){var saveEvent=$.Event(CalendarEvents.deleteAll);this.getRoot().trigger(saveEvent,this),saveEvent.isDefaultPrevented()||(this.hide(),data.originalEvent.preventDefault())}.bind(this)),this.getModal().on(CustomEvents.events.activate,SELECTORS_CANCEL_BUTTON,function(e,data){var cancelEvent=$.Event(ModalEvents.cancel);this.getRoot().trigger(cancelEvent,this),cancelEvent.isDefaultPrevented()||(this.hide(),data.originalEvent.preventDefault())}.bind(this))},registered||(ModalRegistry.register(ModalDelete.TYPE,ModalDelete,"calendar/event_delete_modal"),registered=!0),ModalDelete}));
|
||||
define("core_calendar/modal_delete",["exports","jquery","core/custom_interaction_events","core/modal","core/modal_events","./events"],(function(_exports,_jquery,CustomEvents,_modal,_modal_events,_events){function _getRequireWildcardCache(nodeInterop){if("function"!=typeof WeakMap)return null;var cacheBabelInterop=new WeakMap,cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_jquery=_interopRequireDefault(_jquery),CustomEvents=function(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule)return obj;if(null===obj||"object"!=typeof obj&&"function"!=typeof obj)return{default:obj};var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj))return cache.get(obj);var newObj={},hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj)if("default"!==key&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;desc&&(desc.get||desc.set)?Object.defineProperty(newObj,key,desc):newObj[key]=obj[key]}newObj.default=obj,cache&&cache.set(obj,newObj);return newObj}(CustomEvents),_modal=_interopRequireDefault(_modal),_modal_events=_interopRequireDefault(_modal_events),_events=_interopRequireDefault(_events);const SELECTORS_DELETE_ONE_BUTTON='[data-action="deleteone"]',SELECTORS_DELETE_ALL_BUTTON='[data-action="deleteall"]',SELECTORS_CANCEL_BUTTON='[data-action="cancel"]';class ModalDelete extends _modal.default{constructor(root){super(root),this.setRemoveOnClose(!0)}registerEventListeners(){super.registerEventListeners(this),this.getModal().on(CustomEvents.events.activate,SELECTORS_DELETE_ONE_BUTTON,((e,data)=>{const saveEvent=_jquery.default.Event(_modal_events.default.save);this.getRoot().trigger(saveEvent,this),saveEvent.isDefaultPrevented()||(this.hide(),data.originalEvent.preventDefault())})),this.getModal().on(CustomEvents.events.activate,SELECTORS_DELETE_ALL_BUTTON,((e,data)=>{const saveEvent=_jquery.default.Event(_events.default.deleteAll);this.getRoot().trigger(saveEvent,this),saveEvent.isDefaultPrevented()||(this.hide(),data.originalEvent.preventDefault())})),this.getModal().on(CustomEvents.events.activate,SELECTORS_CANCEL_BUTTON,((e,data)=>{const cancelEvent=_jquery.default.Event(_modal_events.default.cancel);this.getRoot().trigger(cancelEvent,this),cancelEvent.isDefaultPrevented()||(this.hide(),data.originalEvent.preventDefault())}))}}return _exports.default=ModalDelete,_defineProperty(ModalDelete,"TYPE","core_calendar-modal_delete"),_defineProperty(ModalDelete,"TEMPLATE","calendar/event_delete_modal"),ModalDelete.registerModalType(),_exports.default}));
|
||||
|
||||
//# sourceMappingURL=modal_delete.min.js.map
|
||||
File diff suppressed because one or more lines are too long
+1
-8
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-8
@@ -1,10 +1,3 @@
|
||||
/**
|
||||
* A javascript module to handle summary modal.
|
||||
*
|
||||
* @module core_calendar/summary_modal
|
||||
* @copyright 2017 Simey Lameze <simey@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
define("core_calendar/summary_modal",["jquery","core/str","core/notification","core/custom_interaction_events","core/modal","core/modal_registry","core/modal_factory","core/modal_events","core_calendar/repository","core_calendar/events","core_calendar/crud"],(function($,Str,Notification,CustomEvents,Modal,ModalRegistry,ModalFactory,ModalEvents,CalendarRepository,CalendarEvents,CalendarCrud){var registered=!1,SELECTORS_ROOT="[data-region='summary-modal-container']",SELECTORS_EDIT_BUTTON='[data-action="edit"]',SELECTORS_DELETE_BUTTON='[data-action="delete"]',ModalEventSummary=function(root){Modal.call(this,root)};return ModalEventSummary.TYPE="core_calendar-event_summary",(ModalEventSummary.prototype=Object.create(Modal.prototype)).constructor=ModalEventSummary,ModalEventSummary.prototype.getEditButton=function(){return void 0===this.editButton&&(this.editButton=this.getFooter().find(SELECTORS_EDIT_BUTTON)),this.editButton},ModalEventSummary.prototype.getDeleteButton=function(){return void 0===this.deleteButton&&(this.deleteButton=this.getFooter().find(SELECTORS_DELETE_BUTTON)),this.deleteButton},ModalEventSummary.prototype.getEventId=function(){return this.getBody().find(SELECTORS_ROOT).attr("data-event-id")},ModalEventSummary.prototype.getEventTitle=function(){return this.getBody().find(SELECTORS_ROOT).attr("data-event-title")},ModalEventSummary.prototype.getEventCount=function(){return this.getBody().find(SELECTORS_ROOT).attr("data-event-count")},ModalEventSummary.prototype.getEditUrl=function(){return this.getBody().find(SELECTORS_ROOT).attr("data-edit-url")},ModalEventSummary.prototype.isActionEvent=function(){return"true"==this.getBody().find(SELECTORS_ROOT).attr("data-action-event")},ModalEventSummary.prototype.registerEventListeners=function(){Modal.prototype.registerEventListeners.call(this),M.util.js_pending("core_calendar/summary_modal:registerEventListeners:bodyRendered"),this.getRoot().on(ModalEvents.bodyRendered,function(){this.getModal().data({eventTitle:this.getEventTitle(),eventId:this.getEventId(),eventCount:this.getEventCount()}).attr("data-type","event"),CalendarCrud.registerRemove(this.getModal()),M.util.js_complete("core_calendar/summary_modal:registerEventListeners:bodyRendered")}.bind(this)),$("body").on(CalendarEvents.deleted,function(){this.hide()}.bind(this)),CustomEvents.define(this.getEditButton(),[CustomEvents.events.activate]),this.getEditButton().on(CustomEvents.events.activate,function(e,data){this.isActionEvent()?$("body").trigger(CalendarEvents.editActionEvent,[this.getEditUrl()]):$("body").trigger(CalendarEvents.editEvent,[this.getEventId()]),this.hide(),e.preventDefault(),e.stopPropagation(),data.originalEvent.preventDefault(),data.originalEvent.stopPropagation()}.bind(this))},registered||(ModalRegistry.register(ModalEventSummary.TYPE,ModalEventSummary,"core_calendar/event_summary_modal"),registered=!0),ModalEventSummary}));
|
||||
define("core_calendar/summary_modal",["exports","jquery","core/custom_interaction_events","core/modal","./events","core_calendar/crud","core/modal_events"],(function(_exports,_jquery,CustomEvents,_modal,_events,CalendarCrud,ModalEvents){function _getRequireWildcardCache(nodeInterop){if("function"!=typeof WeakMap)return null;var cacheBabelInterop=new WeakMap,cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule)return obj;if(null===obj||"object"!=typeof obj&&"function"!=typeof obj)return{default:obj};var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj))return cache.get(obj);var newObj={},hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj)if("default"!==key&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;desc&&(desc.get||desc.set)?Object.defineProperty(newObj,key,desc):newObj[key]=obj[key]}return newObj.default=obj,cache&&cache.set(obj,newObj),newObj}function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_jquery=_interopRequireDefault(_jquery),CustomEvents=_interopRequireWildcard(CustomEvents),_modal=_interopRequireDefault(_modal),_events=_interopRequireDefault(_events),CalendarCrud=_interopRequireWildcard(CalendarCrud),ModalEvents=_interopRequireWildcard(ModalEvents);const SELECTORS_ROOT="[data-region='summary-modal-container']",SELECTORS_EDIT_BUTTON='[data-action="edit"]',SELECTORS_DELETE_BUTTON='[data-action="delete"]';class ModalEventSummary extends _modal.default{getEditButton(){return void 0===this.editButton&&(this.editButton=this.getFooter().find(SELECTORS_EDIT_BUTTON)),this.editButton}getDeleteButton(){return void 0===this.deleteButton&&(this.deleteButton=this.getFooter().find(SELECTORS_DELETE_BUTTON)),this.deleteButton}getEventId(){return this.getBody().find(SELECTORS_ROOT).attr("data-event-id")}getEventTitle(){return this.getBody().find(SELECTORS_ROOT).attr("data-event-title")}getEventCount(){return this.getBody().find(SELECTORS_ROOT).attr("data-event-count")}getEditUrl(){return this.getBody().find(SELECTORS_ROOT).attr("data-edit-url")}isActionEvent(){return"true"==this.getBody().find(SELECTORS_ROOT).attr("data-action-event")}registerEventListeners(){super.registerEventListeners(this),M.util.js_pending("core_calendar/summary_modal:registerEventListeners:bodyRendered"),this.getRoot().on(ModalEvents.bodyRendered,function(){this.getModal().data({eventTitle:this.getEventTitle(),eventId:this.getEventId(),eventCount:this.getEventCount()}).attr("data-type","event"),CalendarCrud.registerRemove(this.getModal()),M.util.js_complete("core_calendar/summary_modal:registerEventListeners:bodyRendered")}.bind(this)),(0,_jquery.default)("body").on(_events.default.deleted,function(){this.hide()}.bind(this)),CustomEvents.define(this.getEditButton(),[CustomEvents.events.activate]),this.getEditButton().on(CustomEvents.events.activate,function(e,data){this.isActionEvent()?(0,_jquery.default)("body").trigger(_events.default.editActionEvent,[this.getEditUrl()]):(0,_jquery.default)("body").trigger(_events.default.editEvent,[this.getEventId()]),this.hide(),e.preventDefault(),e.stopPropagation(),data.originalEvent.preventDefault(),data.originalEvent.stopPropagation()}.bind(this))}}return _exports.default=ModalEventSummary,_defineProperty(ModalEventSummary,"TEMPLATE","core_calendar/event_summary_modal"),_defineProperty(ModalEventSummary,"TYPE","core_calendar-event_summary"),ModalEventSummary.registerModalType(),_exports.default}));
|
||||
|
||||
//# sourceMappingURL=summary_modal.min.js.map
|
||||
File diff suppressed because one or more lines are too long
@@ -24,9 +24,6 @@ define([
|
||||
'jquery',
|
||||
'core/str',
|
||||
'core/notification',
|
||||
'core/custom_interaction_events',
|
||||
'core/modal',
|
||||
'core/modal_registry',
|
||||
'core/modal_factory',
|
||||
'core/modal_events',
|
||||
'core_calendar/modal_event_form',
|
||||
@@ -40,9 +37,6 @@ function(
|
||||
$,
|
||||
Str,
|
||||
Notification,
|
||||
CustomEvents,
|
||||
Modal,
|
||||
ModalRegistry,
|
||||
ModalFactory,
|
||||
ModalEvents,
|
||||
ModalEventForm,
|
||||
|
||||
+15
-17
@@ -20,20 +20,18 @@
|
||||
* @copyright 2017 Simey Lameze <[email protected]>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
define([], function() {
|
||||
return {
|
||||
created: 'calendar-events:created',
|
||||
deleted: 'calendar-events:deleted',
|
||||
deleteAll: 'calendar-events:delete_all',
|
||||
updated: 'calendar-events:updated',
|
||||
editEvent: 'calendar-events:edit_event',
|
||||
editActionEvent: 'calendar-events:edit_action_event',
|
||||
eventMoved: 'calendar-events:event_moved',
|
||||
dayChanged: 'calendar-events:day_changed',
|
||||
monthChanged: 'calendar-events:month_changed',
|
||||
moveEvent: 'calendar-events:move_event',
|
||||
filterChanged: 'calendar-events:filter_changed',
|
||||
courseChanged: 'calendar-events:course_changed',
|
||||
viewUpdated: 'calendar-events:view_updated',
|
||||
};
|
||||
});
|
||||
export default {
|
||||
created: 'calendar-events:created',
|
||||
deleted: 'calendar-events:deleted',
|
||||
deleteAll: 'calendar-events:delete_all',
|
||||
updated: 'calendar-events:updated',
|
||||
editEvent: 'calendar-events:edit_event',
|
||||
editActionEvent: 'calendar-events:edit_action_event',
|
||||
eventMoved: 'calendar-events:event_moved',
|
||||
dayChanged: 'calendar-events:day_changed',
|
||||
monthChanged: 'calendar-events:month_changed',
|
||||
moveEvent: 'calendar-events:move_event',
|
||||
filterChanged: 'calendar-events:filter_changed',
|
||||
courseChanged: 'calendar-events:course_changed',
|
||||
viewUpdated: 'calendar-events:view_updated',
|
||||
};
|
||||
|
||||
@@ -20,94 +20,73 @@
|
||||
* @copyright 2017 Andrew Nicols <[email protected]>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
define([
|
||||
'jquery',
|
||||
'core/notification',
|
||||
'core/custom_interaction_events',
|
||||
'core/modal',
|
||||
'core/modal_events',
|
||||
'core/modal_registry',
|
||||
'core_calendar/events',
|
||||
],
|
||||
function(
|
||||
$,
|
||||
Notification,
|
||||
CustomEvents,
|
||||
Modal,
|
||||
ModalEvents,
|
||||
ModalRegistry,
|
||||
CalendarEvents
|
||||
) {
|
||||
|
||||
var registered = false;
|
||||
var SELECTORS = {
|
||||
DELETE_ONE_BUTTON: '[data-action="deleteone"]',
|
||||
DELETE_ALL_BUTTON: '[data-action="deleteall"]',
|
||||
CANCEL_BUTTON: '[data-action="cancel"]',
|
||||
};
|
||||
import $ from 'jquery';
|
||||
import * as CustomEvents from 'core/custom_interaction_events';
|
||||
import Modal from 'core/modal';
|
||||
import ModalEvents from 'core/modal_events';
|
||||
import CalendarEvents from './events';
|
||||
|
||||
/**
|
||||
* Constructor for the Modal.
|
||||
*
|
||||
* @class
|
||||
* @param {object} root The root jQuery element for the modal
|
||||
*/
|
||||
var ModalDelete = function(root) {
|
||||
Modal.call(this, root);
|
||||
const SELECTORS = {
|
||||
DELETE_ONE_BUTTON: '[data-action="deleteone"]',
|
||||
DELETE_ALL_BUTTON: '[data-action="deleteall"]',
|
||||
CANCEL_BUTTON: '[data-action="cancel"]',
|
||||
};
|
||||
|
||||
/**
|
||||
* Constructor for the Modal.
|
||||
*
|
||||
* @class
|
||||
* @param {object} root The root jQuery element for the modal
|
||||
*/
|
||||
export default class ModalDelete extends Modal {
|
||||
static TYPE = 'core_calendar-modal_delete';
|
||||
static TEMPLATE = 'calendar/event_delete_modal';
|
||||
|
||||
constructor(root) {
|
||||
super(root);
|
||||
this.setRemoveOnClose(true);
|
||||
};
|
||||
|
||||
ModalDelete.TYPE = 'core_calendar-modal_delete';
|
||||
ModalDelete.prototype = Object.create(Modal.prototype);
|
||||
ModalDelete.prototype.constructor = ModalDelete;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set up all of the event handling for the modal.
|
||||
*
|
||||
* @method registerEventListeners
|
||||
*/
|
||||
ModalDelete.prototype.registerEventListeners = function() {
|
||||
registerEventListeners() {
|
||||
// Apply parent event listeners.
|
||||
Modal.prototype.registerEventListeners.call(this);
|
||||
super.registerEventListeners(this);
|
||||
|
||||
this.getModal().on(CustomEvents.events.activate, SELECTORS.DELETE_ONE_BUTTON, function(e, data) {
|
||||
var saveEvent = $.Event(ModalEvents.save);
|
||||
this.getModal().on(CustomEvents.events.activate, SELECTORS.DELETE_ONE_BUTTON, (e, data) => {
|
||||
const saveEvent = $.Event(ModalEvents.save);
|
||||
this.getRoot().trigger(saveEvent, this);
|
||||
|
||||
if (!saveEvent.isDefaultPrevented()) {
|
||||
this.hide();
|
||||
data.originalEvent.preventDefault();
|
||||
}
|
||||
}.bind(this));
|
||||
});
|
||||
|
||||
this.getModal().on(CustomEvents.events.activate, SELECTORS.DELETE_ALL_BUTTON, function(e, data) {
|
||||
var saveEvent = $.Event(CalendarEvents.deleteAll);
|
||||
this.getModal().on(CustomEvents.events.activate, SELECTORS.DELETE_ALL_BUTTON, (e, data) => {
|
||||
const saveEvent = $.Event(CalendarEvents.deleteAll);
|
||||
this.getRoot().trigger(saveEvent, this);
|
||||
|
||||
if (!saveEvent.isDefaultPrevented()) {
|
||||
this.hide();
|
||||
data.originalEvent.preventDefault();
|
||||
}
|
||||
}.bind(this));
|
||||
});
|
||||
|
||||
this.getModal().on(CustomEvents.events.activate, SELECTORS.CANCEL_BUTTON, function(e, data) {
|
||||
var cancelEvent = $.Event(ModalEvents.cancel);
|
||||
this.getModal().on(CustomEvents.events.activate, SELECTORS.CANCEL_BUTTON, (e, data) => {
|
||||
const cancelEvent = $.Event(ModalEvents.cancel);
|
||||
this.getRoot().trigger(cancelEvent, this);
|
||||
|
||||
if (!cancelEvent.isDefaultPrevented()) {
|
||||
this.hide();
|
||||
data.originalEvent.preventDefault();
|
||||
}
|
||||
}.bind(this));
|
||||
};
|
||||
|
||||
// Automatically register with the modal registry the first time this module is imported so that you can create modals
|
||||
// of this type using the modal factory.
|
||||
if (!registered) {
|
||||
ModalRegistry.register(ModalDelete.TYPE, ModalDelete, 'calendar/event_delete_modal');
|
||||
registered = true;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return ModalDelete;
|
||||
});
|
||||
ModalDelete.registerModalType();
|
||||
|
||||
@@ -20,45 +20,34 @@
|
||||
* @copyright 2017 Ryan Wyllie <[email protected]>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
define([
|
||||
'jquery',
|
||||
'core_form/events',
|
||||
'core/str',
|
||||
'core/notification',
|
||||
'core/templates',
|
||||
'core/custom_interaction_events',
|
||||
'core/modal',
|
||||
'core/modal_registry',
|
||||
'core/fragment',
|
||||
'core_calendar/events',
|
||||
'core_calendar/repository'
|
||||
],
|
||||
function(
|
||||
$,
|
||||
FormEvents,
|
||||
Str,
|
||||
Notification,
|
||||
Templates,
|
||||
CustomEvents,
|
||||
Modal,
|
||||
ModalRegistry,
|
||||
Fragment,
|
||||
CalendarEvents,
|
||||
Repository
|
||||
) {
|
||||
var registered = false;
|
||||
var SELECTORS = {
|
||||
SAVE_BUTTON: '[data-action="save"]',
|
||||
LOADING_ICON_CONTAINER: '[data-region="loading-icon-container"]',
|
||||
};
|
||||
|
||||
import $ from 'jquery';
|
||||
import * as CustomEvents from 'core/custom_interaction_events';
|
||||
import Modal from 'core/modal';
|
||||
import * as FormEvents from 'core_form/events';
|
||||
import CalendarEvents from './events';
|
||||
import * as Str from 'core/str';
|
||||
import * as Notification from 'core/notification';
|
||||
import * as Fragment from 'core/fragment';
|
||||
import * as Repository from 'core_calendar/repository';
|
||||
|
||||
const SELECTORS = {
|
||||
SAVE_BUTTON: '[data-action="save"]',
|
||||
LOADING_ICON_CONTAINER: '[data-region="loading-icon-container"]',
|
||||
};
|
||||
|
||||
export default class ModalEventForm extends Modal {
|
||||
static TYPE = 'core_calendar-modal_event_form';
|
||||
static TEMPLATE = 'calendar/modal_event_form';
|
||||
|
||||
/**
|
||||
* Constructor for the Modal.
|
||||
*
|
||||
* @param {object} root The root jQuery element for the modal
|
||||
*/
|
||||
var ModalEventForm = function(root) {
|
||||
Modal.call(this, root);
|
||||
constructor(root) {
|
||||
super(root);
|
||||
|
||||
this.eventId = null;
|
||||
this.startTime = null;
|
||||
this.courseId = null;
|
||||
@@ -67,11 +56,7 @@ function(
|
||||
this.reloadingBody = false;
|
||||
this.reloadingTitle = false;
|
||||
this.saveButton = this.getFooter().find(SELECTORS.SAVE_BUTTON);
|
||||
};
|
||||
|
||||
ModalEventForm.TYPE = 'core_calendar-modal_event_form';
|
||||
ModalEventForm.prototype = Object.create(Modal.prototype);
|
||||
ModalEventForm.prototype.constructor = ModalEventForm;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the context id to the given value.
|
||||
@@ -79,9 +64,9 @@ function(
|
||||
* @method setContextId
|
||||
* @param {Number} id The event id
|
||||
*/
|
||||
ModalEventForm.prototype.setContextId = function(id) {
|
||||
setContextId(id) {
|
||||
this.contextId = id;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the current context id, if any.
|
||||
@@ -89,49 +74,49 @@ function(
|
||||
* @method getContextId
|
||||
* @return {Number|null} The event id
|
||||
*/
|
||||
ModalEventForm.prototype.getContextId = function() {
|
||||
getContextId() {
|
||||
return this.contextId;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the course id to the given value.
|
||||
*
|
||||
* @method setCourseId
|
||||
* @param {int} id The event id
|
||||
* @param {Number} id The event id
|
||||
*/
|
||||
ModalEventForm.prototype.setCourseId = function(id) {
|
||||
setCourseId(id) {
|
||||
this.courseId = id;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the current course id, if any.
|
||||
*
|
||||
* @method getCourseId
|
||||
* @return {int|null} The event id
|
||||
* @return {Number|null} The event id
|
||||
*/
|
||||
ModalEventForm.prototype.getCourseId = function() {
|
||||
getCourseId() {
|
||||
return this.courseId;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the category id to the given value.
|
||||
*
|
||||
* @method setCategoryId
|
||||
* @param {int} id The event id
|
||||
* @param {Number} id The event id
|
||||
*/
|
||||
ModalEventForm.prototype.setCategoryId = function(id) {
|
||||
setCategoryId(id) {
|
||||
this.categoryId = id;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the current category id, if any.
|
||||
*
|
||||
* @method getCategoryId
|
||||
* @return {int|null} The event id
|
||||
* @return {Number|null} The event id
|
||||
*/
|
||||
ModalEventForm.prototype.getCategoryId = function() {
|
||||
getCategoryId() {
|
||||
return this.categoryId;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the modal has an course id.
|
||||
@@ -139,9 +124,9 @@ function(
|
||||
* @method hasCourseId
|
||||
* @return {bool}
|
||||
*/
|
||||
ModalEventForm.prototype.hasCourseId = function() {
|
||||
hasCourseId() {
|
||||
return this.courseId !== null;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the modal has an category id.
|
||||
@@ -149,29 +134,29 @@ function(
|
||||
* @method hasCategoryId
|
||||
* @return {bool}
|
||||
*/
|
||||
ModalEventForm.prototype.hasCategoryId = function() {
|
||||
hasCategoryId() {
|
||||
return this.categoryId !== null;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the event id to the given value.
|
||||
*
|
||||
* @method setEventId
|
||||
* @param {int} id The event id
|
||||
* @param {Number} id The event id
|
||||
*/
|
||||
ModalEventForm.prototype.setEventId = function(id) {
|
||||
setEventId(id) {
|
||||
this.eventId = id;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the current event id, if any.
|
||||
*
|
||||
* @method getEventId
|
||||
* @return {int|null} The event id
|
||||
* @return {Number|null} The event id
|
||||
*/
|
||||
ModalEventForm.prototype.getEventId = function() {
|
||||
getEventId() {
|
||||
return this.eventId;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the modal has an event id.
|
||||
@@ -179,29 +164,29 @@ function(
|
||||
* @method hasEventId
|
||||
* @return {bool}
|
||||
*/
|
||||
ModalEventForm.prototype.hasEventId = function() {
|
||||
hasEventId() {
|
||||
return this.eventId !== null;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the start time to the given value.
|
||||
*
|
||||
* @method setStartTime
|
||||
* @param {int} time The start time
|
||||
* @param {Number} time The start time
|
||||
*/
|
||||
ModalEventForm.prototype.setStartTime = function(time) {
|
||||
setStartTime(time) {
|
||||
this.startTime = time;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the current start time, if any.
|
||||
*
|
||||
* @method getStartTime
|
||||
* @return {int|null} The start time
|
||||
* @return {Number|null} The start time
|
||||
*/
|
||||
ModalEventForm.prototype.getStartTime = function() {
|
||||
getStartTime() {
|
||||
return this.startTime;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the modal has start time.
|
||||
@@ -209,9 +194,9 @@ function(
|
||||
* @method hasStartTime
|
||||
* @return {bool}
|
||||
*/
|
||||
ModalEventForm.prototype.hasStartTime = function() {
|
||||
hasStartTime() {
|
||||
return this.startTime !== null;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the form element from the modal.
|
||||
@@ -219,27 +204,27 @@ function(
|
||||
* @method getForm
|
||||
* @return {object}
|
||||
*/
|
||||
ModalEventForm.prototype.getForm = function() {
|
||||
getForm() {
|
||||
return this.getBody().find('form');
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Disable the buttons in the footer.
|
||||
*
|
||||
* @method disableButtons
|
||||
*/
|
||||
ModalEventForm.prototype.disableButtons = function() {
|
||||
disableButtons() {
|
||||
this.saveButton.prop('disabled', true);
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable the buttons in the footer.
|
||||
*
|
||||
* @method enableButtons
|
||||
*/
|
||||
ModalEventForm.prototype.enableButtons = function() {
|
||||
enableButtons() {
|
||||
this.saveButton.prop('disabled', false);
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Reload the title for the modal to the appropriate value
|
||||
@@ -249,7 +234,7 @@ function(
|
||||
* @method reloadTitleContent
|
||||
* @return {object} A promise resolved with the new title text
|
||||
*/
|
||||
ModalEventForm.prototype.reloadTitleContent = function() {
|
||||
reloadTitleContent() {
|
||||
if (this.reloadingTitle) {
|
||||
return this.titlePromise;
|
||||
}
|
||||
@@ -262,18 +247,18 @@ function(
|
||||
this.titlePromise = Str.get_string('newevent', 'calendar');
|
||||
}
|
||||
|
||||
this.titlePromise.then(function(string) {
|
||||
this.titlePromise.then((string) => {
|
||||
this.setTitle(string);
|
||||
return string;
|
||||
}.bind(this))
|
||||
.always(function() {
|
||||
})
|
||||
.catch(Notification.exception)
|
||||
.always(() => {
|
||||
this.reloadingTitle = false;
|
||||
return;
|
||||
}.bind(this))
|
||||
.fail(Notification.exception);
|
||||
});
|
||||
|
||||
return this.titlePromise;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Send a request to the server to get the event_form in a fragment
|
||||
@@ -288,7 +273,7 @@ function(
|
||||
* @param {string} formData The serialised form data
|
||||
* @return {object} A promise resolved with the fragment html and js from
|
||||
*/
|
||||
ModalEventForm.prototype.reloadBodyContent = function(formData) {
|
||||
reloadBodyContent(formData) {
|
||||
if (this.reloadingBody) {
|
||||
return this.bodyPromise;
|
||||
}
|
||||
@@ -296,7 +281,7 @@ function(
|
||||
this.reloadingBody = true;
|
||||
this.disableButtons();
|
||||
|
||||
var args = {};
|
||||
const args = {};
|
||||
|
||||
if (this.hasEventId()) {
|
||||
args.eventid = this.getEventId();
|
||||
@@ -322,19 +307,18 @@ function(
|
||||
|
||||
this.setBody(this.bodyPromise);
|
||||
|
||||
this.bodyPromise.then(function() {
|
||||
this.bodyPromise.then(() => {
|
||||
this.enableButtons();
|
||||
return;
|
||||
}.bind(this))
|
||||
.fail(Notification.exception)
|
||||
.always(function() {
|
||||
})
|
||||
.catch(Notification.exception)
|
||||
.always(() => {
|
||||
this.reloadingBody = false;
|
||||
return;
|
||||
}.bind(this))
|
||||
.fail(Notification.exception);
|
||||
});
|
||||
|
||||
return this.bodyPromise;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Reload both the title and body content.
|
||||
@@ -342,9 +326,9 @@ function(
|
||||
* @method reloadAllContent
|
||||
* @return {object} promise
|
||||
*/
|
||||
ModalEventForm.prototype.reloadAllContent = function() {
|
||||
reloadAllContent() {
|
||||
return $.when(this.reloadTitleContent(), this.reloadBodyContent());
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Kick off a reload the modal content before showing it. This
|
||||
@@ -357,10 +341,10 @@ function(
|
||||
*
|
||||
* @method show
|
||||
*/
|
||||
ModalEventForm.prototype.show = function() {
|
||||
show() {
|
||||
this.reloadAllContent();
|
||||
Modal.prototype.show.call(this);
|
||||
};
|
||||
super.show(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear the event id from the modal when it's closed so
|
||||
@@ -371,13 +355,13 @@ function(
|
||||
*
|
||||
* @method hide
|
||||
*/
|
||||
ModalEventForm.prototype.hide = function() {
|
||||
Modal.prototype.hide.call(this);
|
||||
hide() {
|
||||
super.hide(this);
|
||||
this.setEventId(null);
|
||||
this.setStartTime(null);
|
||||
this.setCourseId(null);
|
||||
this.setCategoryId(null);
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the serialised form data.
|
||||
@@ -385,9 +369,9 @@ function(
|
||||
* @method getFormData
|
||||
* @return {string} serialised form data
|
||||
*/
|
||||
ModalEventForm.prototype.getFormData = function() {
|
||||
getFormData() {
|
||||
return this.getForm().serialize();
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Send the form data to the server to create or update
|
||||
@@ -403,12 +387,11 @@ function(
|
||||
* @method save
|
||||
* @return {object} A promise
|
||||
*/
|
||||
ModalEventForm.prototype.save = function() {
|
||||
var invalid,
|
||||
loadingContainer = this.saveButton.find(SELECTORS.LOADING_ICON_CONTAINER);
|
||||
save() {
|
||||
const loadingContainer = this.saveButton.find(SELECTORS.LOADING_ICON_CONTAINER);
|
||||
|
||||
// Now the change events have run, see if there are any "invalid" form fields.
|
||||
invalid = this.getForm().find('[aria-invalid="true"]');
|
||||
const invalid = this.getForm().find('[aria-invalid="true"]');
|
||||
|
||||
// If we found invalid fields, focus on the first one and do not submit via ajax.
|
||||
if (invalid.length) {
|
||||
@@ -419,10 +402,10 @@ function(
|
||||
loadingContainer.removeClass('hidden');
|
||||
this.disableButtons();
|
||||
|
||||
var formData = this.getFormData();
|
||||
const formData = this.getFormData();
|
||||
// Send the form data to the server for processing.
|
||||
return Repository.submitCreateUpdateForm(formData)
|
||||
.then(function(response) {
|
||||
.then((response) => {
|
||||
if (response.validationerror) {
|
||||
// If there was a server side validation error then
|
||||
// we need to re-request the rendered form from the server
|
||||
@@ -432,7 +415,7 @@ function(
|
||||
} else {
|
||||
// Check whether this was a new event or not.
|
||||
// The hide function unsets the form data so grab this before the hide.
|
||||
var isExisting = this.hasEventId();
|
||||
const isExisting = this.hasEventId();
|
||||
|
||||
// No problemo! Our work here is done.
|
||||
this.hide();
|
||||
@@ -446,17 +429,17 @@ function(
|
||||
}
|
||||
|
||||
return;
|
||||
}.bind(this))
|
||||
.always(function() {
|
||||
})
|
||||
.catch(Notification.exception)
|
||||
.always(() => {
|
||||
// Regardless of success or error we should always stop
|
||||
// the loading icon and re-enable the buttons.
|
||||
loadingContainer.addClass('hidden');
|
||||
this.enableButtons();
|
||||
|
||||
return;
|
||||
}.bind(this))
|
||||
.fail(Notification.exception);
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Set up all of the event handling for the modal.
|
||||
@@ -465,22 +448,22 @@ function(
|
||||
* @fires event:uploadStarted
|
||||
* @fires event:formSubmittedByJavascript
|
||||
*/
|
||||
ModalEventForm.prototype.registerEventListeners = function() {
|
||||
registerEventListeners() {
|
||||
// Apply parent event listeners.
|
||||
Modal.prototype.registerEventListeners.call(this);
|
||||
super.registerEventListeners(this);
|
||||
|
||||
// When the user clicks the save button we trigger the form submission. We need to
|
||||
// trigger an actual submission because there is some JS code in the form that is
|
||||
// listening for this event and doing some stuff (e.g. saving draft areas etc).
|
||||
this.getModal().on(CustomEvents.events.activate, SELECTORS.SAVE_BUTTON, function(e, data) {
|
||||
this.getModal().on(CustomEvents.events.activate, SELECTORS.SAVE_BUTTON, (e, data) => {
|
||||
this.getForm().submit();
|
||||
data.originalEvent.preventDefault();
|
||||
e.stopPropagation();
|
||||
}.bind(this));
|
||||
});
|
||||
|
||||
// Catch the submit event before it is actually processed by the browser and
|
||||
// prevent the submission. We'll take it from here.
|
||||
this.getModal().on('submit', function(e) {
|
||||
this.getModal().on('submit', (e) => {
|
||||
FormEvents.notifyFormSubmittedByJavascript(this.getForm()[0]);
|
||||
|
||||
this.save();
|
||||
@@ -489,15 +472,8 @@ function(
|
||||
// propagation because we have already handled the event.
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
}.bind(this));
|
||||
};
|
||||
|
||||
// Automatically register with the modal registry the first time this module is imported so that you can create modals
|
||||
// of this type using the modal factory.
|
||||
if (!registered) {
|
||||
ModalRegistry.register(ModalEventForm.TYPE, ModalEventForm, 'calendar/modal_event_form');
|
||||
registered = true;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return ModalEventForm;
|
||||
});
|
||||
ModalEventForm.registerModalType();
|
||||
|
||||
@@ -20,52 +20,23 @@
|
||||
* @copyright 2017 Simey Lameze <[email protected]>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
define([
|
||||
'jquery',
|
||||
'core/str',
|
||||
'core/notification',
|
||||
'core/custom_interaction_events',
|
||||
'core/modal',
|
||||
'core/modal_registry',
|
||||
'core/modal_factory',
|
||||
'core/modal_events',
|
||||
'core_calendar/repository',
|
||||
'core_calendar/events',
|
||||
'core_calendar/crud',
|
||||
],
|
||||
function(
|
||||
$,
|
||||
Str,
|
||||
Notification,
|
||||
CustomEvents,
|
||||
Modal,
|
||||
ModalRegistry,
|
||||
ModalFactory,
|
||||
ModalEvents,
|
||||
CalendarRepository,
|
||||
CalendarEvents,
|
||||
CalendarCrud
|
||||
) {
|
||||
|
||||
var registered = false;
|
||||
var SELECTORS = {
|
||||
ROOT: "[data-region='summary-modal-container']",
|
||||
EDIT_BUTTON: '[data-action="edit"]',
|
||||
DELETE_BUTTON: '[data-action="delete"]',
|
||||
};
|
||||
import $ from 'jquery';
|
||||
import * as CustomEvents from 'core/custom_interaction_events';
|
||||
import Modal from 'core/modal';
|
||||
import CalendarEvents from './events';
|
||||
import * as CalendarCrud from 'core_calendar/crud';
|
||||
import * as ModalEvents from 'core/modal_events';
|
||||
|
||||
/**
|
||||
* Constructor for the Modal.
|
||||
*
|
||||
* @param {object} root The root jQuery element for the modal
|
||||
*/
|
||||
var ModalEventSummary = function(root) {
|
||||
Modal.call(this, root);
|
||||
};
|
||||
const SELECTORS = {
|
||||
ROOT: "[data-region='summary-modal-container']",
|
||||
EDIT_BUTTON: '[data-action="edit"]',
|
||||
DELETE_BUTTON: '[data-action="delete"]',
|
||||
};
|
||||
|
||||
ModalEventSummary.TYPE = 'core_calendar-event_summary';
|
||||
ModalEventSummary.prototype = Object.create(Modal.prototype);
|
||||
ModalEventSummary.prototype.constructor = ModalEventSummary;
|
||||
export default class ModalEventSummary extends Modal {
|
||||
static TEMPLATE = 'core_calendar/event_summary_modal';
|
||||
static TYPE = 'core_calendar-event_summary';
|
||||
|
||||
/**
|
||||
* Get the edit button element from the footer. The button is cached
|
||||
@@ -74,13 +45,13 @@ function(
|
||||
* @method getEditButton
|
||||
* @return {object} button element
|
||||
*/
|
||||
ModalEventSummary.prototype.getEditButton = function() {
|
||||
getEditButton() {
|
||||
if (typeof this.editButton == 'undefined') {
|
||||
this.editButton = this.getFooter().find(SELECTORS.EDIT_BUTTON);
|
||||
}
|
||||
|
||||
return this.editButton;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the delete button element from the footer. The button is cached
|
||||
@@ -89,13 +60,13 @@ function(
|
||||
* @method getDeleteButton
|
||||
* @return {object} button element
|
||||
*/
|
||||
ModalEventSummary.prototype.getDeleteButton = function() {
|
||||
getDeleteButton() {
|
||||
if (typeof this.deleteButton == 'undefined') {
|
||||
this.deleteButton = this.getFooter().find(SELECTORS.DELETE_BUTTON);
|
||||
}
|
||||
|
||||
return this.deleteButton;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the id for the event being shown in this modal. This value is
|
||||
@@ -105,9 +76,9 @@ function(
|
||||
* @method getEventId
|
||||
* @return {int}
|
||||
*/
|
||||
ModalEventSummary.prototype.getEventId = function() {
|
||||
getEventId() {
|
||||
return this.getBody().find(SELECTORS.ROOT).attr('data-event-id');
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the title for the event being shown in this modal. This value is
|
||||
@@ -117,9 +88,9 @@ function(
|
||||
* @method getEventTitle
|
||||
* @return {String}
|
||||
*/
|
||||
ModalEventSummary.prototype.getEventTitle = function() {
|
||||
getEventTitle() {
|
||||
return this.getBody().find(SELECTORS.ROOT).attr('data-event-title');
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the number of events in the series for the event being shown in
|
||||
@@ -129,9 +100,9 @@ function(
|
||||
* @method getEventCount
|
||||
* @return {int}
|
||||
*/
|
||||
ModalEventSummary.prototype.getEventCount = function() {
|
||||
getEventCount() {
|
||||
return this.getBody().find(SELECTORS.ROOT).attr('data-event-count');
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the url for the event being shown in this modal.
|
||||
@@ -139,9 +110,9 @@ function(
|
||||
* @method getEventUrl
|
||||
* @return {String}
|
||||
*/
|
||||
ModalEventSummary.prototype.getEditUrl = function() {
|
||||
getEditUrl() {
|
||||
return this.getBody().find(SELECTORS.ROOT).attr('data-edit-url');
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Is this an action event.
|
||||
@@ -149,18 +120,18 @@ function(
|
||||
* @method getEventUrl
|
||||
* @return {String}
|
||||
*/
|
||||
ModalEventSummary.prototype.isActionEvent = function() {
|
||||
isActionEvent() {
|
||||
return (this.getBody().find(SELECTORS.ROOT).attr('data-action-event') == 'true');
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Set up all of the event handling for the modal.
|
||||
*
|
||||
* @method registerEventListeners
|
||||
*/
|
||||
ModalEventSummary.prototype.registerEventListeners = function() {
|
||||
registerEventListeners() {
|
||||
// Apply parent event listeners.
|
||||
Modal.prototype.registerEventListeners.call(this);
|
||||
super.registerEventListeners(this);
|
||||
|
||||
// We have to wait for the modal to finish rendering in order to ensure that
|
||||
// the data-event-title property is available to use as the modal title.
|
||||
@@ -204,14 +175,7 @@ function(
|
||||
data.originalEvent.preventDefault();
|
||||
data.originalEvent.stopPropagation();
|
||||
}.bind(this));
|
||||
};
|
||||
|
||||
// Automatically register with the modal registry the first time this module is imported so that you can create modals
|
||||
// of this type using the modal factory.
|
||||
if (!registered) {
|
||||
ModalRegistry.register(ModalEventSummary.TYPE, ModalEventSummary, 'core_calendar/event_summary_modal');
|
||||
registered = true;
|
||||
}
|
||||
}
|
||||
|
||||
return ModalEventSummary;
|
||||
});
|
||||
ModalEventSummary.registerModalType();
|
||||
|
||||
Vendored
+9
-8
@@ -1,11 +1,12 @@
|
||||
define("core/config",["exports"],(function(_exports){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0;
|
||||
/**
|
||||
* Expose the M.cfg global variable.
|
||||
*
|
||||
* @module core/config
|
||||
* @copyright 2015 Damyon Wiese <damyon@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
* @since 2.9
|
||||
*/
|
||||
define("core/config",(function(){return M.cfg}));
|
||||
* Expose the M.cfg global variable.
|
||||
*
|
||||
* @module core/config
|
||||
* @copyright 2015 Damyon Wiese <damyon@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
* @since 2.9
|
||||
*/
|
||||
var _default=M.cfg;return _exports.default=_default,_exports.default}));
|
||||
|
||||
//# sourceMappingURL=config.min.js.map
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"config.min.js","sources":["../src/config.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Expose the M.cfg global variable.\n *\n * @module core/config\n * @copyright 2015 Damyon Wiese <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n * @since 2.9\n */\ndefine(function() {\n // This module exposes only the raw data from M.cfg;\n return M.cfg;\n});\n"],"names":["define","M","cfg"],"mappings":";;;;;;;;AAuBAA,sBAAO,kBAEIC,EAAEC"}
|
||||
{"version":3,"file":"config.min.js","sources":["../src/config.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Expose the M.cfg global variable.\n *\n * @module core/config\n * @copyright 2015 Damyon Wiese <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n * @since 2.9\n */\n// This module exposes only the raw data from M.cfg;\nexport default M.cfg;\n"],"names":["M","cfg"],"mappings":";;;;;;;;;aAwBeA,EAAEC"}
|
||||
Vendored
+13
-13
@@ -1,16 +1,16 @@
|
||||
define("core/first",["jquery"],(function(_jquery){var obj;
|
||||
/**
|
||||
* This is an empty module, that is required before all other modules.
|
||||
* Because every module is returned from a request for any other module, this
|
||||
* forces the loading of all modules with a single request.
|
||||
*
|
||||
* This function also sets up the listeners for ajax requests so we can tell
|
||||
* if any requests are still in progress.
|
||||
*
|
||||
* @module core/first
|
||||
* @copyright 2015 Damyon Wiese <damyon@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
* @since 2.9
|
||||
*/
|
||||
define("core/first",["jquery"],(function($){$(document).bind("ajaxStart",(function(){M.util.js_pending("jq")})).bind("ajaxStop",(function(){M.util.js_complete("jq")}))}));
|
||||
* This is an empty module, that is required before all other modules.
|
||||
* Because every module is returned from a request for any other module, this
|
||||
* forces the loading of all modules with a single request.
|
||||
*
|
||||
* This function also sets up the listeners for ajax requests so we can tell
|
||||
* if any requests are still in progress.
|
||||
*
|
||||
* @module core/first
|
||||
* @copyright 2015 Damyon Wiese <damyon@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
* @since 2.9
|
||||
*/(0,(_jquery=(obj=_jquery)&&obj.__esModule?obj:{default:obj}).default)(document).bind("ajaxStart",(function(){M.util.js_pending("jq")})).bind("ajaxStop",(function(){M.util.js_complete("jq")}))}));
|
||||
|
||||
//# sourceMappingURL=first.min.js.map
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"first.min.js","sources":["../src/first.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * This is an empty module, that is required before all other modules.\n * Because every module is returned from a request for any other module, this\n * forces the loading of all modules with a single request.\n *\n * This function also sets up the listeners for ajax requests so we can tell\n * if any requests are still in progress.\n *\n * @module core/first\n * @copyright 2015 Damyon Wiese <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n * @since 2.9\n */\ndefine(['jquery'], function($) {\n $(document).bind(\"ajaxStart\", function() {\n M.util.js_pending('jq');\n }).bind(\"ajaxStop\", function() {\n M.util.js_complete('jq');\n });\n});\n"],"names":["define","$","document","bind","M","util","js_pending","js_complete"],"mappings":";;;;;;;;;;;;;AA4BAA,oBAAO,CAAC,WAAW,SAASC,GACxBA,EAAEC,UAAUC,KAAK,aAAa,WAC1BC,EAAEC,KAAKC,WAAW,SACnBH,KAAK,YAAY,WAChBC,EAAEC,KAAKE,YAAY"}
|
||||
{"version":3,"file":"first.min.js","sources":["../src/first.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * This is an empty module, that is required before all other modules.\n * Because every module is returned from a request for any other module, this\n * forces the loading of all modules with a single request.\n *\n * This function also sets up the listeners for ajax requests so we can tell\n * if any requests are still in progress.\n *\n * @module core/first\n * @copyright 2015 Damyon Wiese <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n * @since 2.9\n */\n\nimport $ from 'jquery';\n\n$(document)\n.bind(\"ajaxStart\", function() {\n M.util.js_pending('jq');\n})\n.bind(\"ajaxStop\", function() {\n M.util.js_complete('jq');\n});\n"],"names":["document","bind","M","util","js_pending","js_complete"],"mappings":";;;;;;;;;;;;;2EA+BEA,UACDC,KAAK,aAAa,WACfC,EAAEC,KAAKC,WAAW,SAErBH,KAAK,YAAY,WACdC,EAAEC,KAAKE,YAAY"}
|
||||
+1
-8
@@ -1,10 +1,3 @@
|
||||
define("core/local/modal/alert",["exports","core/modal"],(function(_exports,_modal){var obj;
|
||||
/**
|
||||
* Alert modal.
|
||||
*
|
||||
* @module core/local/modal/alert
|
||||
* @copyright 2020 Andrew Nicols <andrew@nicols.co.uk>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_modal=(obj=_modal)&&obj.__esModule?obj:{default:obj};class _default extends _modal.default{registerEventListeners(){super.registerEventListeners(),this.registerCloseOnCancel()}}return _exports.default=_default,_exports.default}));
|
||||
define("core/local/modal/alert",["exports","core/modal"],(function(_exports,_modal){var obj;function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_modal=(obj=_modal)&&obj.__esModule?obj:{default:obj};class ModalAlert extends _modal.default{registerEventListeners(){super.registerEventListeners(),this.registerCloseOnCancel()}}return _exports.default=ModalAlert,_defineProperty(ModalAlert,"TYPE","ALERT"),_defineProperty(ModalAlert,"TEMPLATE","core/local/modal/alert"),ModalAlert.registerModalType(),_exports.default}));
|
||||
|
||||
//# sourceMappingURL=alert.min.js.map
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"alert.min.js","sources":["../../../src/local/modal/alert.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Alert modal.\n *\n * @module core/local/modal/alert\n * @copyright 2020 Andrew Nicols <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport Modal from 'core/modal';\n\n/**\n * The Alert Modal\n *\n * @class\n * @extends Modal\n */\nexport default class extends Modal {\n /**\n * Register all event listeners.\n */\n registerEventListeners() {\n // Call the parent registration.\n super.registerEventListeners();\n\n // Register to close on cancel.\n this.registerCloseOnCancel();\n }\n}\n"],"names":["Modal","registerEventListeners","registerCloseOnCancel"],"mappings":";;;;;;;kKA+B6BA,eAIzBC,+BAEUA,8BAGDC"}
|
||||
{"version":3,"file":"alert.min.js","sources":["../../../src/local/modal/alert.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Alert modal.\n *\n * @module core/local/modal/alert\n * @copyright 2020 Andrew Nicols <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport Modal from 'core/modal';\n\n/**\n * The Alert Modal\n *\n * @class\n * @extends Modal\n */\nexport default class ModalAlert extends Modal {\n static TYPE = 'ALERT';\n static TEMPLATE = 'core/local/modal/alert';\n\n /**\n * Register all event listeners.\n */\n registerEventListeners() {\n // Call the parent registration.\n super.registerEventListeners();\n\n // Register to close on cancel.\n this.registerCloseOnCancel();\n }\n}\n\nModalAlert.registerModalType();\n"],"names":["ModalAlert","Modal","registerEventListeners","registerCloseOnCancel","registerModalType"],"mappings":"4YA+BqBA,mBAAmBC,eAOpCC,+BAEUA,8BAGDC,4EAZQH,kBACH,yBADGA,sBAEC,0BActBA,WAAWI"}
|
||||
Vendored
+1
-9
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Vendored
+1
-8
@@ -1,10 +1,3 @@
|
||||
/**
|
||||
* Contain the logic for modal backdrops.
|
||||
*
|
||||
* @module core/modal_backdrop
|
||||
* @copyright 2016 Ryan Wyllie <ryan@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
define("core/modal_backdrop",["jquery","core/templates","core/notification","core/fullscreen"],(function($,Templates,Notification,Fullscreen){var SELECTORS_ROOT='[data-region="modal-backdrop"]',ModalBackdrop=function(root){this.root=$(root),this.isAttached=!1,this.attachmentPoint=document.createElement("div"),document.body.append(this.attachmentPoint),this.root.is(SELECTORS_ROOT)||Notification.exception({message:"Element is not a modal backdrop"})};return ModalBackdrop.prototype.getRoot=function(){return this.root},ModalBackdrop.prototype.getAttachmentPoint=function(){return $(Fullscreen.getElement()||this.attachmentPoint)},ModalBackdrop.prototype.attachToDOM=function(){this.getAttachmentPoint().append(this.root),this.isAttached||(this.isAttached=!0)},ModalBackdrop.prototype.setZIndex=function(value){this.root.css("z-index",value)},ModalBackdrop.prototype.isVisible=function(){return this.root.hasClass("show")},ModalBackdrop.prototype.hasTransitions=function(){return this.getRoot().hasClass("fade")},ModalBackdrop.prototype.show=function(){this.isVisible()||(this.attachToDOM(),this.root.removeClass("hide").addClass("show"))},ModalBackdrop.prototype.hide=function(){this.isVisible()&&(this.hasTransitions()?this.getRoot().one("transitionend webkitTransitionEnd oTransitionEnd",function(){this.getRoot().removeClass("show").addClass("hide")}.bind(this)):this.getRoot().removeClass("show").addClass("hide"),$(document.body).find(this.getRoot()).length&&$(document.body).append(this.getRoot()))},ModalBackdrop.prototype.destroy=function(){this.root.remove(),this.attachmentPoint.remove()},ModalBackdrop}));
|
||||
define("core/modal_backdrop",["exports","jquery","./notification","./fullscreen"],(function(_exports,_jquery,Notification,Fullscreen){var obj;function _getRequireWildcardCache(nodeInterop){if("function"!=typeof WeakMap)return null;var cacheBabelInterop=new WeakMap,cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule)return obj;if(null===obj||"object"!=typeof obj&&"function"!=typeof obj)return{default:obj};var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj))return cache.get(obj);var newObj={},hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj)if("default"!==key&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;desc&&(desc.get||desc.set)?Object.defineProperty(newObj,key,desc):newObj[key]=obj[key]}return newObj.default=obj,cache&&cache.set(obj,newObj),newObj}function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_jquery=(obj=_jquery)&&obj.__esModule?obj:{default:obj},Notification=_interopRequireWildcard(Notification),Fullscreen=_interopRequireWildcard(Fullscreen);const SELECTORS_ROOT='[data-region="modal-backdrop"]';return _exports.default=class{constructor(root){_defineProperty(this,"root",null),_defineProperty(this,"isAttached",!1),_defineProperty(this,"attachmentPoint",null),this.root=(0,_jquery.default)(root),this.isAttached=!1,this.attachmentPoint=document.createElement("div"),document.body.append(this.attachmentPoint),this.root.is(SELECTORS_ROOT)||Notification.exception({message:"Element is not a modal backdrop"})}getRoot(){return this.root}getAttachmentPoint(){return(0,_jquery.default)(Fullscreen.getElement()||this.attachmentPoint)}attachToDOM(){this.getAttachmentPoint().append(this.root),this.isAttached||(this.isAttached=!0)}setZIndex(value){this.root.css("z-index",value)}isVisible(){return this.root.hasClass("show")}hasTransitions(){return this.getRoot().hasClass("fade")}show(){this.isVisible()||(this.attachToDOM(),this.root.removeClass("hide").addClass("show"))}hide(){this.isVisible()&&(this.hasTransitions()?this.getRoot().one("transitionend webkitTransitionEnd oTransitionEnd",(()=>{this.getRoot().removeClass("show").addClass("hide")})):this.getRoot().removeClass("show").addClass("hide"),(0,_jquery.default)(document.body).find(this.getRoot()).length&&(0,_jquery.default)(document.body).append(this.getRoot()))}destroy(){this.root.remove(),this.attachmentPoint.remove()}},_exports.default}));
|
||||
|
||||
//# sourceMappingURL=modal_backdrop.min.js.map
|
||||
File diff suppressed because one or more lines are too long
Vendored
+1
-8
@@ -1,10 +1,3 @@
|
||||
define("core/modal_cancel",["exports","core/modal","core/notification"],(function(_exports,_modal,_notification){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}
|
||||
/**
|
||||
* Contain the logic for the cancel modal.
|
||||
*
|
||||
* @module core/modal_cancel
|
||||
* @copyright 2016 Ryan Wyllie <ryan@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_modal=_interopRequireDefault(_modal),_notification=_interopRequireDefault(_notification);class _default extends _modal.default{constructor(root){super(root),this.getFooter().find(this.getActionSelector("cancel")).length||_notification.default.exception({message:"No cancel button found"})}registerEventListeners(){super.registerEventListeners(),this.registerCloseOnCancel()}}return _exports.default=_default,_exports.default}));
|
||||
define("core/modal_cancel",["exports","core/modal","core/notification"],(function(_exports,_modal,_notification){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_modal=_interopRequireDefault(_modal),_notification=_interopRequireDefault(_notification);class ModalCancel extends _modal.default{constructor(root){super(root),this.getFooter().find(this.getActionSelector("cancel")).length||_notification.default.exception({message:"No cancel button found"})}registerEventListeners(){super.registerEventListeners(),this.registerCloseOnCancel()}}return _exports.default=ModalCancel,_defineProperty(ModalCancel,"TYPE","CANCEL"),_defineProperty(ModalCancel,"TEMPLATE","core/modal_cancel"),ModalCancel.registerModalType(),_exports.default}));
|
||||
|
||||
//# sourceMappingURL=modal_cancel.min.js.map
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"modal_cancel.min.js","sources":["../src/modal_cancel.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Contain the logic for the cancel modal.\n *\n * @module core/modal_cancel\n * @copyright 2016 Ryan Wyllie <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport Modal from 'core/modal';\nimport Notification from 'core/notification';\n\n/**\n * @class\n * @extends module:core/modal\n */\nexport default class extends Modal {\n constructor(root) {\n super(root);\n\n if (!this.getFooter().find(this.getActionSelector('cancel')).length) {\n Notification.exception({message: 'No cancel button found'});\n }\n }\n\n /**\n * Register all event listeners.\n */\n registerEventListeners() {\n // Call the parent registration.\n super.registerEventListeners();\n\n // Register to close on cancel.\n this.registerCloseOnCancel();\n }\n}\n"],"names":["Modal","constructor","root","this","getFooter","find","getActionSelector","length","exception","message","registerEventListeners","registerCloseOnCancel"],"mappings":";;;;;;;sMA8B6BA,eACzBC,YAAYC,YACFA,MAEDC,KAAKC,YAAYC,KAAKF,KAAKG,kBAAkB,WAAWC,8BAC5CC,UAAU,CAACC,QAAS,2BAOzCC,+BAEUA,8BAGDC"}
|
||||
{"version":3,"file":"modal_cancel.min.js","sources":["../src/modal_cancel.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Contain the logic for the cancel modal.\n *\n * @module core/modal_cancel\n * @copyright 2016 Ryan Wyllie <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport Modal from 'core/modal';\nimport Notification from 'core/notification';\n\n/**\n * @class\n * @extends module:core/modal\n */\nexport default class ModalCancel extends Modal {\n static TYPE = 'CANCEL';\n static TEMPLATE = 'core/modal_cancel';\n\n constructor(root) {\n super(root);\n\n if (!this.getFooter().find(this.getActionSelector('cancel')).length) {\n Notification.exception({message: 'No cancel button found'});\n }\n }\n\n /**\n * Register all event listeners.\n */\n registerEventListeners() {\n // Call the parent registration.\n super.registerEventListeners();\n\n // Register to close on cancel.\n this.registerCloseOnCancel();\n }\n}\n\nModalCancel.registerModalType();\n"],"names":["ModalCancel","Modal","constructor","root","this","getFooter","find","getActionSelector","length","exception","message","registerEventListeners","registerCloseOnCancel","registerModalType"],"mappings":"uhBA8BqBA,oBAAoBC,eAIrCC,YAAYC,YACFA,MAEDC,KAAKC,YAAYC,KAAKF,KAAKG,kBAAkB,WAAWC,8BAC5CC,UAAU,CAACC,QAAS,2BAOzCC,+BAEUA,8BAGDC,6EApBQZ,mBACH,0BADGA,uBAEC,qBAsBtBA,YAAYa"}
|
||||
+1
-1
@@ -1,3 +1,3 @@
|
||||
define("core/modal_copy_to_clipboard",["exports","core/modal","core/modal_registry","core/modal_factory","core/copy_to_clipboard"],(function(_exports,_modal,_modal_registry,_modal_factory,_copy_to_clipboard){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_modal=_interopRequireDefault(_modal),_modal_registry=_interopRequireDefault(_modal_registry),_modal_factory=_interopRequireDefault(_modal_factory);class CopyToClipboardModal extends _modal.default{constructor(){super(...arguments),this.setRemoveOnClose(!0)}registerEventListeners(){super.registerEventListeners(...arguments),this.getRoot().get(0).addEventListener("click",(e=>{e.target.closest('[data-action="copytoclipboard"]')&&this.getRoot().get(0).contains(e.target)&&setTimeout(this.destroy.bind(this))}))}static async create(){let{text:text,useTextArea:useTextArea=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},title=arguments.length>1?arguments[1]:void 0;_modal_registry.default.get(this.TYPE)||_modal_registry.default.register(this.TYPE,this,this.TEMPLATE);const modal=await _modal_factory.default.create({type:this.TYPE,templateContext:{text:text,useTextArea:useTextArea}});title&&modal.setTitle(title),modal.show()}}return _exports.default=CopyToClipboardModal,_defineProperty(CopyToClipboardModal,"TYPE","core/copytoclipboard"),_defineProperty(CopyToClipboardModal,"TEMPLATE","core/modal_copytoclipboard"),_exports.default}));
|
||||
define("core/modal_copy_to_clipboard",["exports","core/modal","core/modal_factory","core/copy_to_clipboard"],(function(_exports,_modal,_modal_factory,_copy_to_clipboard){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_modal=_interopRequireDefault(_modal),_modal_factory=_interopRequireDefault(_modal_factory);class CopyToClipboardModal extends _modal.default{constructor(){super(...arguments),this.setRemoveOnClose(!0)}registerEventListeners(){super.registerEventListeners(...arguments),this.getRoot().get(0).addEventListener("click",(e=>{e.target.closest('[data-action="copytoclipboard"]')&&this.getRoot().get(0).contains(e.target)&&setTimeout(this.destroy.bind(this))}))}static async create(){let{text:text,useTextArea:useTextArea=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},title=arguments.length>1?arguments[1]:void 0;this.registerModalType();const modal=await _modal_factory.default.create({type:this.TYPE,templateContext:{text:text,useTextArea:useTextArea}});title&&modal.setTitle(title),modal.show()}}return _exports.default=CopyToClipboardModal,_defineProperty(CopyToClipboardModal,"TYPE","core/copytoclipboard"),_defineProperty(CopyToClipboardModal,"TEMPLATE","core/modal_copytoclipboard"),_exports.default}));
|
||||
|
||||
//# sourceMappingURL=modal_copy_to_clipboard.min.js.map
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"modal_copy_to_clipboard.min.js","sources":["../src/modal_copy_to_clipboard.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Contain the logic for the copy to clipboard modal, i.e. the modal contains a\n * readonly input text field, that contains a value. Clicking on the single\n * button \"Copy to clipboard\" in the footer, puts the content of the input\n * text field into the clipboard and closes the modal.\n *\n * Usage:\n * ModalCopyToClipboard.create(string:<stringToCopy>, string:<modalTitle>|null);\n *\n * @module core/modal_copy_to_clipboard\n * @copyright 2023 Stephan Robotta <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport Modal from 'core/modal';\nimport ModalRegistry from 'core/modal_registry';\nimport ModalFactory from 'core/modal_factory';\nimport 'core/copy_to_clipboard';\n\nexport default class CopyToClipboardModal extends Modal {\n static TYPE = 'core/copytoclipboard';\n static TEMPLATE = 'core/modal_copytoclipboard';\n\n constructor(...config) {\n // Override the constructor to set the removeOnClose property, and show the modal.\n super(...config);\n this.setRemoveOnClose(true);\n }\n\n /**\n * Set up all the event handling for the modal.\n * This is an override of the parent method, adding an event listener to close upon the action.\n *\n * @param {array} args\n */\n registerEventListeners(...args) {\n super.registerEventListeners(...args);\n\n this.getRoot().get(0).addEventListener('click', (e) => {\n if (!e.target.closest('[data-action=\"copytoclipboard\"]')) {\n return;\n }\n\n if (!this.getRoot().get(0).contains(e.target)) {\n return;\n }\n\n // Note: We must call destroy() here, because the copy-to-clipboard action listens on the document,\n // which will be processed after this event listener has been processed.\n // By placing this in a setTimeout we move its processing to after the event loop has finished.\n setTimeout(this.destroy.bind(this));\n });\n }\n\n /**\n * Create a new instance of the Modal. Set the text that is being copied. By default, the text is put into the\n * value of an input readonly field. If useTextArea is set to true, the text is rendered in a textarea element.\n * The optional title argument is for the modal title. If not set, the generic string \"copy to clipboard\" is used.\n *\n * @param {Object} data used in the template\n * @param {string} data.text the text to copy to the clipboard\n * @param {boolean} data.useTextArea when the text to copy is displayed in a textarea, default is input\n * @param {string|null} title\n * @returns {Promise<void>}\n */\n static async create(\n {\n text,\n useTextArea = false,\n } = {},\n title\n ) {\n if (!ModalRegistry.get(this.TYPE)) {\n ModalRegistry.register(this.TYPE, this, this.TEMPLATE);\n }\n\n const modal = await ModalFactory.create({\n type: this.TYPE,\n templateContext: {\n text: text,\n useTextArea: useTextArea,\n },\n });\n if (title) {\n modal.setTitle(title);\n }\n modal.show();\n }\n}"],"names":["CopyToClipboardModal","Modal","constructor","setRemoveOnClose","registerEventListeners","getRoot","get","addEventListener","e","target","closest","this","contains","setTimeout","destroy","bind","text","useTextArea","title","ModalRegistry","TYPE","register","TEMPLATE","modal","ModalFactory","create","type","templateContext","setTitle","show"],"mappings":"grBAkCqBA,6BAA6BC,eAI9CC,uCAGSC,kBAAiB,GAS1BC,+BACUA,0CAEDC,UAAUC,IAAI,GAAGC,iBAAiB,SAAUC,IACxCA,EAAEC,OAAOC,QAAQ,oCAIjBC,KAAKN,UAAUC,IAAI,GAAGM,SAASJ,EAAEC,SAOtCI,WAAWF,KAAKG,QAAQC,KAAKJ,oCAgBjCK,KACIA,KADJC,YAEIA,aAAc,0DACd,GACJC,6CAEKC,wBAAcb,IAAIK,KAAKS,+BACVC,SAASV,KAAKS,KAAMT,KAAMA,KAAKW,gBAG3CC,YAAcC,uBAAaC,OAAO,CACpCC,KAAMf,KAAKS,KACXO,gBAAiB,CACbX,KAAMA,KACNC,YAAaA,eAGjBC,OACAK,MAAMK,SAASV,OAEnBK,MAAMM,qEAnEO7B,4BACH,wCADGA,gCAEC"}
|
||||
{"version":3,"file":"modal_copy_to_clipboard.min.js","sources":["../src/modal_copy_to_clipboard.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Contain the logic for the copy to clipboard modal, i.e. the modal contains a\n * readonly input text field, that contains a value. Clicking on the single\n * button \"Copy to clipboard\" in the footer, puts the content of the input\n * text field into the clipboard and closes the modal.\n *\n * Usage:\n * ModalCopyToClipboard.create(string:<stringToCopy>, string:<modalTitle>|null);\n *\n * @module core/modal_copy_to_clipboard\n * @copyright 2023 Stephan Robotta <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport Modal from 'core/modal';\nimport ModalFactory from 'core/modal_factory';\nimport 'core/copy_to_clipboard';\n\nexport default class CopyToClipboardModal extends Modal {\n static TYPE = 'core/copytoclipboard';\n static TEMPLATE = 'core/modal_copytoclipboard';\n\n constructor(...config) {\n // Override the constructor to set the removeOnClose property, and show the modal.\n super(...config);\n this.setRemoveOnClose(true);\n }\n\n /**\n * Set up all the event handling for the modal.\n * This is an override of the parent method, adding an event listener to close upon the action.\n *\n * @param {array} args\n */\n registerEventListeners(...args) {\n super.registerEventListeners(...args);\n\n this.getRoot().get(0).addEventListener('click', (e) => {\n if (!e.target.closest('[data-action=\"copytoclipboard\"]')) {\n return;\n }\n\n if (!this.getRoot().get(0).contains(e.target)) {\n return;\n }\n\n // Note: We must call destroy() here, because the copy-to-clipboard action listens on the document,\n // which will be processed after this event listener has been processed.\n // By placing this in a setTimeout we move its processing to after the event loop has finished.\n setTimeout(this.destroy.bind(this));\n });\n }\n\n /**\n * Create a new instance of the Modal. Set the text that is being copied. By default, the text is put into the\n * value of an input readonly field. If useTextArea is set to true, the text is rendered in a textarea element.\n * The optional title argument is for the modal title. If not set, the generic string \"copy to clipboard\" is used.\n *\n * @param {Object} data used in the template\n * @param {string} data.text the text to copy to the clipboard\n * @param {boolean} data.useTextArea when the text to copy is displayed in a textarea, default is input\n * @param {string|null} title\n * @returns {Promise<void>}\n */\n static async create(\n {\n text,\n useTextArea = false,\n } = {},\n title\n ) {\n this.registerModalType();\n\n const modal = await ModalFactory.create({\n type: this.TYPE,\n templateContext: {\n text: text,\n useTextArea: useTextArea,\n },\n });\n if (title) {\n modal.setTitle(title);\n }\n modal.show();\n }\n}\n"],"names":["CopyToClipboardModal","Modal","constructor","setRemoveOnClose","registerEventListeners","getRoot","get","addEventListener","e","target","closest","this","contains","setTimeout","destroy","bind","text","useTextArea","title","registerModalType","modal","ModalFactory","create","type","TYPE","templateContext","setTitle","show"],"mappings":"klBAiCqBA,6BAA6BC,eAI9CC,uCAGSC,kBAAiB,GAS1BC,+BACUA,0CAEDC,UAAUC,IAAI,GAAGC,iBAAiB,SAAUC,IACxCA,EAAEC,OAAOC,QAAQ,oCAIjBC,KAAKN,UAAUC,IAAI,GAAGM,SAASJ,EAAEC,SAOtCI,WAAWF,KAAKG,QAAQC,KAAKJ,oCAgBjCK,KACIA,KADJC,YAEIA,aAAc,0DACd,GACJC,kDAEKC,0BAECC,YAAcC,uBAAaC,OAAO,CACpCC,KAAMZ,KAAKa,KACXC,gBAAiB,CACbT,KAAMA,KACNC,YAAaA,eAGjBC,OACAE,MAAMM,SAASR,OAEnBE,MAAMO,qEAjEO3B,4BACH,wCADGA,gCAEC"}
|
||||
+1
-8
@@ -1,10 +1,3 @@
|
||||
define("core/modal_delete_cancel",["exports","core/modal","core/notification"],(function(_exports,_modal,_notification){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}
|
||||
/**
|
||||
* Contain the logic for the delete/cancel modal.
|
||||
*
|
||||
* @module core/modal_delete_cancel
|
||||
* @copyright 2022 Laurent David <laurent.david@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_modal=_interopRequireDefault(_modal),_notification=_interopRequireDefault(_notification);class _default extends _modal.default{constructor(root){super(root),this.getFooter().find(this.getActionSelector("delete")).length||_notification.default.exception({message:"No delete button found"}),this.getFooter().find(this.getActionSelector("cancel")).length||_notification.default.exception({message:"No cancel button found"})}registerEventListeners(){super.registerEventListeners(),this.registerCloseOnDelete(),this.registerCloseOnCancel()}setFooter(){_notification.default.exception({message:"Can not change the footer of a delete cancel modal"})}setDeleteButtonText(value){return this.setButtonText("delete",value)}}return _exports.default=_default,_exports.default}));
|
||||
define("core/modal_delete_cancel",["exports","core/modal","core/notification"],(function(_exports,_modal,_notification){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_modal=_interopRequireDefault(_modal),_notification=_interopRequireDefault(_notification);class ModalDeleteCancel extends _modal.default{constructor(root){super(root),this.getFooter().find(this.getActionSelector("delete")).length||_notification.default.exception({message:"No delete button found"}),this.getFooter().find(this.getActionSelector("cancel")).length||_notification.default.exception({message:"No cancel button found"})}registerEventListeners(){super.registerEventListeners(),this.registerCloseOnDelete(),this.registerCloseOnCancel()}setFooter(){_notification.default.exception({message:"Can not change the footer of a delete cancel modal"})}setDeleteButtonText(value){return this.setButtonText("delete",value)}}return _exports.default=ModalDeleteCancel,_defineProperty(ModalDeleteCancel,"TYPE","DELETE_CANCEL"),_defineProperty(ModalDeleteCancel,"TEMPLATE","core/modal_delete_cancel"),ModalDeleteCancel.registerModalType(),_exports.default}));
|
||||
|
||||
//# sourceMappingURL=modal_delete_cancel.min.js.map
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"modal_delete_cancel.min.js","sources":["../src/modal_delete_cancel.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Contain the logic for the delete/cancel modal.\n *\n * @module core/modal_delete_cancel\n * @copyright 2022 Laurent David <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\nimport Modal from 'core/modal';\nimport Notification from 'core/notification';\n\n/**\n * The Delete/Cancel Modal.\n *\n * @class\n * @extends module:core/modal\n */\nexport default class extends Modal {\n constructor(root) {\n super(root);\n\n if (!this.getFooter().find(this.getActionSelector('delete')).length) {\n Notification.exception({message: 'No delete button found'});\n }\n\n if (!this.getFooter().find(this.getActionSelector('cancel')).length) {\n Notification.exception({message: 'No cancel button found'});\n }\n }\n\n /**\n * Register all event listeners.\n */\n registerEventListeners() {\n // Call the parent registration.\n super.registerEventListeners();\n\n // Register to close on delete/cancel.\n this.registerCloseOnDelete();\n this.registerCloseOnCancel();\n }\n\n /**\n * Override parent implementation to prevent changing the footer content.\n */\n setFooter() {\n Notification.exception({message: 'Can not change the footer of a delete cancel modal'});\n }\n\n /**\n * Set the title of the delete button.\n *\n * @param {String|Promise} value The button text, or a Promise which will resolve it\n * @returns{Promise}\n */\n setDeleteButtonText(value) {\n return this.setButtonText('delete', value);\n }\n}\n"],"names":["Modal","constructor","root","this","getFooter","find","getActionSelector","length","exception","message","registerEventListeners","registerCloseOnDelete","registerCloseOnCancel","setFooter","setDeleteButtonText","value","setButtonText"],"mappings":";;;;;;;sMA+B6BA,eACzBC,YAAYC,YACFA,MAEDC,KAAKC,YAAYC,KAAKF,KAAKG,kBAAkB,WAAWC,8BAC5CC,UAAU,CAACC,QAAS,2BAGhCN,KAAKC,YAAYC,KAAKF,KAAKG,kBAAkB,WAAWC,8BAC5CC,UAAU,CAACC,QAAS,2BAOzCC,+BAEUA,8BAGDC,6BACAC,wBAMTC,kCACiBL,UAAU,CAACC,QAAS,uDASrCK,oBAAoBC,cACTZ,KAAKa,cAAc,SAAUD"}
|
||||
{"version":3,"file":"modal_delete_cancel.min.js","sources":["../src/modal_delete_cancel.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Contain the logic for the delete/cancel modal.\n *\n * @module core/modal_delete_cancel\n * @copyright 2022 Laurent David <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\nimport Modal from 'core/modal';\nimport Notification from 'core/notification';\n\n/**\n * The Delete/Cancel Modal.\n *\n * @class\n * @extends module:core/modal\n */\nexport default class ModalDeleteCancel extends Modal {\n static TYPE = 'DELETE_CANCEL';\n static TEMPLATE = 'core/modal_delete_cancel';\n\n constructor(root) {\n super(root);\n\n if (!this.getFooter().find(this.getActionSelector('delete')).length) {\n Notification.exception({message: 'No delete button found'});\n }\n\n if (!this.getFooter().find(this.getActionSelector('cancel')).length) {\n Notification.exception({message: 'No cancel button found'});\n }\n }\n\n /**\n * Register all event listeners.\n */\n registerEventListeners() {\n // Call the parent registration.\n super.registerEventListeners();\n\n // Register to close on delete/cancel.\n this.registerCloseOnDelete();\n this.registerCloseOnCancel();\n }\n\n /**\n * Override parent implementation to prevent changing the footer content.\n */\n setFooter() {\n Notification.exception({message: 'Can not change the footer of a delete cancel modal'});\n }\n\n /**\n * Set the title of the delete button.\n *\n * @param {String|Promise} value The button text, or a Promise which will resolve it\n * @returns{Promise}\n */\n setDeleteButtonText(value) {\n return this.setButtonText('delete', value);\n }\n}\n\nModalDeleteCancel.registerModalType();\n"],"names":["ModalDeleteCancel","Modal","constructor","root","this","getFooter","find","getActionSelector","length","exception","message","registerEventListeners","registerCloseOnDelete","registerCloseOnCancel","setFooter","setDeleteButtonText","value","setButtonText","registerModalType"],"mappings":"8hBA+BqBA,0BAA0BC,eAI3CC,YAAYC,YACFA,MAEDC,KAAKC,YAAYC,KAAKF,KAAKG,kBAAkB,WAAWC,8BAC5CC,UAAU,CAACC,QAAS,2BAGhCN,KAAKC,YAAYC,KAAKF,KAAKG,kBAAkB,WAAWC,8BAC5CC,UAAU,CAACC,QAAS,2BAOzCC,+BAEUA,8BAGDC,6BACAC,wBAMTC,kCACiBL,UAAU,CAACC,QAAS,uDASrCK,oBAAoBC,cACTZ,KAAKa,cAAc,SAAUD,kEA1CvBhB,yBACH,iCADGA,6BAEC,4BA4CtBA,kBAAkBkB"}
|
||||
Vendored
+1
-9
@@ -1,11 +1,3 @@
|
||||
/**
|
||||
* Contain the events a modal can fire.
|
||||
*
|
||||
* @module core/modal_events
|
||||
* @class modal_events
|
||||
* @copyright 2016 Ryan Wyllie <ryan@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
define("core/modal_events",[],(function(){return{shown:"modal:shown",hidden:"modal:hidden",destroyed:"modal:destroyed",bodyRendered:"modal:bodyRendered",outsideClick:"modal:outsideClick",save:"modal-save-cancel:save",delete:"modal-delete-cancel:delete",cancel:"modal-save-cancel:cancel"}}));
|
||||
define("core/modal_events",["exports"],(function(_exports){Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0;return _exports.default={shown:"modal:shown",hidden:"modal:hidden",destroyed:"modal:destroyed",bodyRendered:"modal:bodyRendered",outsideClick:"modal:outsideClick",save:"modal-save-cancel:save",delete:"modal-delete-cancel:delete",cancel:"modal-save-cancel:cancel"},_exports.default}));
|
||||
|
||||
//# sourceMappingURL=modal_events.min.js.map
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"modal_events.min.js","sources":["../src/modal_events.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Contain the events a modal can fire.\n *\n * @module core/modal_events\n * @class modal_events\n * @copyright 2016 Ryan Wyllie <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\ndefine([], function() {\n return {\n // Default events.\n shown: 'modal:shown',\n hidden: 'modal:hidden',\n destroyed: 'modal:destroyed',\n bodyRendered: 'modal:bodyRendered',\n outsideClick: 'modal:outsideClick',\n // ModalSaveCancel events.\n save: 'modal-save-cancel:save',\n 'delete': 'modal-delete-cancel:delete', // Delete is a reserved word.\n cancel: 'modal-save-cancel:cancel',\n };\n});\n"],"names":["define","shown","hidden","destroyed","bodyRendered","outsideClick","save","cancel"],"mappings":";;;;;;;;AAuBAA,2BAAO,IAAI,iBACA,CAEHC,MAAO,cACPC,OAAQ,eACRC,UAAW,kBACXC,aAAc,qBACdC,aAAc,qBAEdC,KAAM,gCACI,6BACVC,OAAQ"}
|
||||
{"version":3,"file":"modal_events.min.js","sources":["../src/modal_events.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Contain the events a modal can fire.\n *\n * @module core/modal_events\n * @class modal_events\n * @copyright 2016 Ryan Wyllie <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\nexport default {\n // Default events.\n shown: 'modal:shown',\n hidden: 'modal:hidden',\n destroyed: 'modal:destroyed',\n bodyRendered: 'modal:bodyRendered',\n outsideClick: 'modal:outsideClick',\n // ModalSaveCancel events.\n save: 'modal-save-cancel:save',\n 'delete': 'modal-delete-cancel:delete', // Delete is a reserved word.\n cancel: 'modal-save-cancel:cancel',\n};\n"],"names":["shown","hidden","destroyed","bodyRendered","outsideClick","save","cancel"],"mappings":"mKAuBe,CAEXA,MAAO,cACPC,OAAQ,eACRC,UAAW,kBACXC,aAAc,qBACdC,aAAc,qBAEdC,KAAM,gCACI,6BACVC,OAAQ"}
|
||||
Vendored
+7
-7
@@ -1,10 +1,10 @@
|
||||
define("core/modal_factory",["exports","jquery","core/modal_events","core/modal_registry","core/modal","core/modal_save_cancel","core/modal_delete_cancel","core/modal_cancel","core/local/modal/alert","core/templates","core/notification","core/custom_interaction_events","core/pending"],(function(_exports,_jquery,_modal_events,ModalRegistry,_modal,_modal_save_cancel,_modal_delete_cancel,_modal_cancel,_alert,Templates,Notification,CustomEvents,_pending){function _getRequireWildcardCache(nodeInterop){if("function"!=typeof WeakMap)return null;var cacheBabelInterop=new WeakMap,cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule)return obj;if(null===obj||"object"!=typeof obj&&"function"!=typeof obj)return{default:obj};var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj))return cache.get(obj);var newObj={},hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj)if("default"!==key&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;desc&&(desc.get||desc.set)?Object.defineProperty(newObj,key,desc):newObj[key]=obj[key]}return newObj.default=obj,cache&&cache.set(obj,newObj),newObj}function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}
|
||||
/**
|
||||
* Create a modal.
|
||||
*
|
||||
* @module core/modal_factory
|
||||
* @copyright 2016 Ryan Wyllie <ryan@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
define("core/modal_factory",["jquery","core/modal_events","core/modal_registry","core/modal","core/modal_save_cancel","core/modal_delete_cancel","core/modal_cancel","core/local/modal/alert","core/templates","core/notification","core/custom_interaction_events","core/pending"],(function($,ModalEvents,ModalRegistry,Modal,ModalSaveCancel,ModalDeleteCancel,ModalCancel,ModalAlert,Templates,Notification,CustomEvents,Pending){var TEMPLATES_DEFAULT="core/modal",TEMPLATES_SAVE_CANCEL="core/modal_save_cancel",TEMPLATES_DELETE_CANCEL="core/modal_delete_cancel",TEMPLATES_CANCEL="core/modal_cancel",TEMPLATES_ALERT="core/local/modal/alert",TYPES={DEFAULT:"DEFAULT",SAVE_CANCEL:"SAVE_CANCEL",DELETE_CANCEL:"DELETE_CANCEL",CANCEL:"CANCEL",ALERT:"ALERT"};ModalRegistry.register(TYPES.DEFAULT,Modal,TEMPLATES_DEFAULT),ModalRegistry.register(TYPES.SAVE_CANCEL,ModalSaveCancel,TEMPLATES_SAVE_CANCEL),ModalRegistry.register(TYPES.DELETE_CANCEL,ModalDeleteCancel,TEMPLATES_DELETE_CANCEL),ModalRegistry.register(TYPES.CANCEL,ModalCancel,TEMPLATES_CANCEL),ModalRegistry.register(TYPES.ALERT,ModalAlert,TEMPLATES_ALERT);var createFromType=function(registryConf,templateContext){var templateName=registryConf.template,modalPromise=Templates.render(templateName,templateContext).then((function(html){var modalElement=$(html);return function(registryConf,modalElement){return modalElement=$(modalElement),new(0,registryConf.module)(modalElement)}(registryConf,modalElement)})).fail(Notification.exception);return modalPromise};return{create:function(modalConfig,triggerElement){var registryConf,type=modalConfig.type||TYPES.DEFAULT,isLarge=!!modalConfig.large,isScrollable=!modalConfig.hasOwnProperty("scrollable")||modalConfig.scrollable,templateContext={};(registryConf=ModalRegistry.get(type))||Notification.exception({message:"Unable to find modal of type: "+type}),void 0!==modalConfig.templateContext&&(templateContext=modalConfig.templateContext);var modalPromise=createFromType(registryConf,templateContext).then((function(modal){return void 0!==modalConfig.title&&modal.setTitle(modalConfig.title),void 0!==modalConfig.body&&modal.setBody(modalConfig.body),void 0!==modalConfig.footer&&modal.setFooter(modalConfig.footer),modalConfig.buttons&&Object.entries(modalConfig.buttons).forEach((function(_ref){let[key,value]=_ref;modal.setButtonText(key,value)})),isLarge&&modal.setLarge(),void 0!==modalConfig.removeOnClose&&modal.setRemoveOnClose(modalConfig.removeOnClose),modal.setScrollable(isScrollable),modal}));return void 0!==triggerElement&&function(modalPromise,triggerElement,modalConfig){var actualTriggerElement=null,hasPreShowCallback="function"==typeof modalConfig.preShowCallback,triggeredCallback=function(e,data){var pendingPromise=new Pending("core/modal_factory:setUpTrigger:triggeredCallback");actualTriggerElement=$(e.currentTarget),modalPromise.then((function(modal){return hasPreShowCallback&&modalConfig.preShowCallback(actualTriggerElement,modal),modal.show(),modal})).then(pendingPromise.resolve),data.originalEvent.preventDefault()};if(Array.isArray(triggerElement)){var selector=triggerElement[1];triggerElement=triggerElement[0],CustomEvents.define(triggerElement,[CustomEvents.events.activate]),triggerElement.on(CustomEvents.events.activate,selector,triggeredCallback)}else CustomEvents.define(triggerElement,[CustomEvents.events.activate]),triggerElement.on(CustomEvents.events.activate,triggeredCallback);modalPromise.then((function(modal){return modal.getRoot().on(ModalEvents.hidden,(function(){null!==actualTriggerElement&&actualTriggerElement.focus()})),modal}))}(modalPromise,triggerElement,modalConfig),modalPromise},types:TYPES}}));
|
||||
* Create a modal.
|
||||
*
|
||||
* @module core/modal_factory
|
||||
* @copyright 2016 Ryan Wyllie <ryan@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.types=_exports.default=_exports.create=void 0,_jquery=_interopRequireDefault(_jquery),_modal_events=_interopRequireDefault(_modal_events),ModalRegistry=_interopRequireWildcard(ModalRegistry),_modal=_interopRequireDefault(_modal),_modal_save_cancel=_interopRequireDefault(_modal_save_cancel),_modal_delete_cancel=_interopRequireDefault(_modal_delete_cancel),_modal_cancel=_interopRequireDefault(_modal_cancel),_alert=_interopRequireDefault(_alert),Templates=_interopRequireWildcard(Templates),Notification=_interopRequireWildcard(Notification),CustomEvents=_interopRequireWildcard(CustomEvents),_pending=_interopRequireDefault(_pending);const types={DEFAULT:"DEFAULT",SAVE_CANCEL:_modal_save_cancel.default.TYPE,DELETE_CANCEL:_modal_delete_cancel.default.TYPE,CANCEL:_modal_cancel.default.TYPE,ALERT:_alert.default.TYPE};_exports.types=types,ModalRegistry.register(types.DEFAULT,_modal.default,_modal.default.TEMPLATE);const createFromType=(registryConf,templateContext)=>{const templateName=registryConf.template;return Templates.render(templateName,templateContext).then((html=>((registryConf,modalElement)=>(modalElement=(0,_jquery.default)(modalElement),new(0,registryConf.module)(modalElement)))(registryConf,(0,_jquery.default)(html))))},create=(modalConfig,triggerElement)=>{const type=modalConfig.type||types.DEFAULT,isLarge=!!modalConfig.large,isScrollable=!modalConfig.hasOwnProperty("scrollable")||modalConfig.scrollable,registryConf=ModalRegistry.get(type);registryConf||Notification.exception({message:"Unable to find modal of type: "+type});const templateContext=modalConfig.templateContext||{},modalPromise=createFromType(registryConf,templateContext).then((modal=>(void 0!==modalConfig.title&&modal.setTitle(modalConfig.title),void 0!==modalConfig.body&&modal.setBody(modalConfig.body),void 0!==modalConfig.footer&&modal.setFooter(modalConfig.footer),modalConfig.buttons&&Object.entries(modalConfig.buttons).forEach((function(_ref){let[key,value]=_ref;modal.setButtonText(key,value)})),isLarge&&modal.setLarge(),void 0!==modalConfig.removeOnClose&&modal.setRemoveOnClose(modalConfig.removeOnClose),modal.setScrollable(isScrollable),modal)));return void 0!==triggerElement&&((modalPromise,triggerElement,modalConfig)=>{let actualTriggerElement=null;const hasPreShowCallback="function"==typeof modalConfig.preShowCallback,triggeredCallback=(e,data)=>{const pendingPromise=new _pending.default("core/modal_factory:setUpTrigger:triggeredCallback");actualTriggerElement=(0,_jquery.default)(e.currentTarget),modalPromise.then((function(modal){return hasPreShowCallback&&modalConfig.preShowCallback(actualTriggerElement,modal),modal.show(),modal})).then(pendingPromise.resolve),data.originalEvent.preventDefault()};if(Array.isArray(triggerElement)){const selector=triggerElement[1];triggerElement=triggerElement[0],CustomEvents.define(triggerElement,[CustomEvents.events.activate]),triggerElement.on(CustomEvents.events.activate,selector,triggeredCallback)}else CustomEvents.define(triggerElement,[CustomEvents.events.activate]),triggerElement.on(CustomEvents.events.activate,triggeredCallback);modalPromise.then((function(modal){return modal.getRoot().on(_modal_events.default.hidden,(function(){null!==actualTriggerElement&&actualTriggerElement.focus()})),modal}))})(modalPromise,triggerElement,modalConfig),modalPromise};_exports.create=create;var _default={create:create,types:types};return _exports.default=_default,_exports.default}));
|
||||
|
||||
//# sourceMappingURL=modal_factory.min.js.map
|
||||
File diff suppressed because one or more lines are too long
Vendored
+8
-8
@@ -1,11 +1,11 @@
|
||||
define("core/modal_registry",["exports","core/notification","core/prefetch"],(function(_exports,Notification,Prefetch){function _getRequireWildcardCache(nodeInterop){if("function"!=typeof WeakMap)return null;var cacheBabelInterop=new WeakMap,cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule)return obj;if(null===obj||"object"!=typeof obj&&"function"!=typeof obj)return{default:obj};var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj))return cache.get(obj);var newObj={},hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj)if("default"!==key&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;desc&&(desc.get||desc.set)?Object.defineProperty(newObj,key,desc):newObj[key]=obj[key]}return newObj.default=obj,cache&&cache.set(obj,newObj),newObj}
|
||||
/**
|
||||
* A registry for the different types of modal.
|
||||
*
|
||||
* @module core/modal_registry
|
||||
* @class modal_registry
|
||||
* @copyright 2016 Ryan Wyllie <ryan@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
define("core/modal_registry",["core/notification","core/prefetch"],(function(Notification,Prefetch){var registry={},get=function(type){return registry[type]};return{register:function(type,module,template){get(type)&&Notification.exception({message:"Modal of type '"+type+"' is already registered"}),module&&"function"==typeof module||Notification.exception({message:"You must provide a modal module"}),template||Notification.exception({message:"You must provide a modal template"}),registry[type]={module:module,template:template},Prefetch.prefetchTemplate(template)},get:get}}));
|
||||
* A registry for the different types of modal.
|
||||
*
|
||||
* @module core/modal_registry
|
||||
* @class modal_registry
|
||||
* @copyright 2016 Ryan Wyllie <ryan@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.register=_exports.get=_exports.default=void 0,Notification=_interopRequireWildcard(Notification),Prefetch=_interopRequireWildcard(Prefetch);const registry=new Map,get=type=>registry.get(type);_exports.get=get;const register=(type,module,template)=>{const existing=get(type);existing&&existing.module!==module&&Notification.exception({message:"Modal of type '".concat(type,"' is already registered")}),module&&"function"==typeof module||Notification.exception({message:"You must provide a modal module"}),template||Notification.exception({message:"You must provide a modal template"}),registry.set(type,{module:module,template:template}),Prefetch.prefetchTemplate(template)};_exports.register=register;var _default={register:register,get:get};return _exports.default=_default,_exports.default}));
|
||||
|
||||
//# sourceMappingURL=modal_registry.min.js.map
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"modal_registry.min.js","sources":["../src/modal_registry.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * A registry for the different types of modal.\n *\n * @module core/modal_registry\n * @class modal_registry\n * @copyright 2016 Ryan Wyllie <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\ndefine(['core/notification', 'core/prefetch'], function(Notification, Prefetch) {\n\n // A singleton registry for all modules to access. Allows types to be\n // added at runtime.\n var registry = {};\n\n /**\n * Get a registered type of modal.\n *\n * @method get\n * @param {string} type The type of modal to get\n * @return {object} The registered config for the modal\n */\n var get = function(type) {\n return registry[type];\n };\n\n /**\n * Register a modal with the registry.\n *\n * @method register\n * @param {string} type The type of modal (must be unique)\n * @param {function} module The modal module (must be a constructor function of type core/modal)\n * @param {string} template The template name of the modal\n */\n var register = function(type, module, template) {\n if (get(type)) {\n Notification.exception({message: \"Modal of type '\" + type + \"' is already registered\"});\n }\n\n if (!module || typeof module !== 'function') {\n Notification.exception({message: \"You must provide a modal module\"});\n }\n\n if (!template) {\n Notification.exception({message: \"You must provide a modal template\"});\n }\n\n registry[type] = {\n module: module,\n template: template,\n };\n\n // Prefetch the template.\n Prefetch.prefetchTemplate(template);\n };\n\n return {\n register: register,\n get: get,\n };\n});\n"],"names":["define","Notification","Prefetch","registry","get","type","register","module","template","exception","message","prefetchTemplate"],"mappings":";;;;;;;;AAuBAA,6BAAO,CAAC,oBAAqB,kBAAkB,SAASC,aAAcC,cAI9DC,SAAW,GASXC,IAAM,SAASC,aACRF,SAASE,aAiCb,CACHC,SAvBW,SAASD,KAAME,OAAQC,UAC9BJ,IAAIC,OACJJ,aAAaQ,UAAU,CAACC,QAAS,mBAAqBL,KAAO,4BAG5DE,QAA4B,mBAAXA,QAClBN,aAAaQ,UAAU,CAACC,QAAS,oCAGhCF,UACDP,aAAaQ,UAAU,CAACC,QAAS,sCAGrCP,SAASE,MAAQ,CACbE,OAAQA,OACRC,SAAUA,UAIdN,SAASS,iBAAiBH,WAK1BJ,IAAKA"}
|
||||
{"version":3,"file":"modal_registry.min.js","sources":["../src/modal_registry.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * A registry for the different types of modal.\n *\n * @module core/modal_registry\n * @class modal_registry\n * @copyright 2016 Ryan Wyllie <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\nimport * as Notification from 'core/notification';\nimport * as Prefetch from 'core/prefetch';\n\n// A singleton registry for all modules to access. Allows types to be\n// added at runtime.\nconst registry = new Map();\n\n/**\n * Get a registered type of modal.\n *\n * @method get\n * @param {string} type The type of modal to get\n * @return {object} The registered config for the modal\n */\nexport const get = (type) => registry.get(type);\n\n/**\n * Register a modal with the registry.\n *\n * @method register\n * @param {string} type The type of modal (must be unique)\n * @param {function} module The modal module (must be a constructor function of type core/modal)\n * @param {string} template The template name of the modal\n */\nexport const register = (type, module, template) => {\n const existing = get(type);\n if (existing && existing.module !== module) {\n Notification.exception({\n message: `Modal of type '${type}' is already registered`,\n });\n }\n\n if (!module || typeof module !== 'function') {\n Notification.exception({message: \"You must provide a modal module\"});\n }\n\n if (!template) {\n Notification.exception({message: \"You must provide a modal template\"});\n }\n\n registry.set(type, {module, template});\n\n // Prefetch the template.\n Prefetch.prefetchTemplate(template);\n};\n\nexport default {\n register,\n get,\n};\n"],"names":["registry","Map","get","type","register","module","template","existing","Notification","exception","message","set","Prefetch","prefetchTemplate"],"mappings":";;;;;;;;wNA4BMA,SAAW,IAAIC,IASRC,IAAOC,MAASH,SAASE,IAAIC,6BAU7BC,SAAW,CAACD,KAAME,OAAQC,kBAC7BC,SAAWL,IAAIC,MACjBI,UAAYA,SAASF,SAAWA,QAChCG,aAAaC,UAAU,CACnBC,kCAA4BP,kCAI/BE,QAA4B,mBAAXA,QAClBG,aAAaC,UAAU,CAACC,QAAS,oCAGhCJ,UACDE,aAAaC,UAAU,CAACC,QAAS,sCAGrCV,SAASW,IAAIR,KAAM,CAACE,OAAAA,OAAQC,SAAAA,WAG5BM,SAASC,iBAAiBP,mDAGf,CACXF,SAAAA,SACAF,IAAAA"}
|
||||
+1
-8
@@ -1,10 +1,3 @@
|
||||
define("core/modal_save_cancel",["exports","core/modal","core/notification"],(function(_exports,_modal,_notification){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}
|
||||
/**
|
||||
* Contain the logic for the save/cancel modal.
|
||||
*
|
||||
* @module core/modal_save_cancel
|
||||
* @copyright 2016 Ryan Wyllie <ryan@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_modal=_interopRequireDefault(_modal),_notification=_interopRequireDefault(_notification);class _default extends _modal.default{constructor(root){super(root),this.getFooter().find(this.getActionSelector("save")).length||_notification.default.exception({message:"No save button found"}),this.getFooter().find(this.getActionSelector("cancel")).length||_notification.default.exception({message:"No cancel button found"})}registerEventListeners(){super.registerEventListeners(),this.registerCloseOnSave(),this.registerCloseOnCancel()}setFooter(){_notification.default.exception({message:"Can not change the footer of a save cancel modal"})}setSaveButtonText(value){return this.setButtonText("save",value)}}return _exports.default=_default,_exports.default}));
|
||||
define("core/modal_save_cancel",["exports","core/modal","core/notification"],(function(_exports,_modal,_notification){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_modal=_interopRequireDefault(_modal),_notification=_interopRequireDefault(_notification);class ModalSaveCancel extends _modal.default{constructor(root){super(root),this.getFooter().find(this.getActionSelector("save")).length||_notification.default.exception({message:"No save button found"}),this.getFooter().find(this.getActionSelector("cancel")).length||_notification.default.exception({message:"No cancel button found"})}registerEventListeners(){super.registerEventListeners(),this.registerCloseOnSave(),this.registerCloseOnCancel()}setFooter(){_notification.default.exception({message:"Can not change the footer of a save cancel modal"})}setSaveButtonText(value){return this.setButtonText("save",value)}}return _exports.default=ModalSaveCancel,_defineProperty(ModalSaveCancel,"TYPE","SAVE_CANCEL"),_defineProperty(ModalSaveCancel,"TEMPLATE","core/modal_save_cancel"),ModalSaveCancel.registerModalType(),_exports.default}));
|
||||
|
||||
//# sourceMappingURL=modal_save_cancel.min.js.map
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"modal_save_cancel.min.js","sources":["../src/modal_save_cancel.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Contain the logic for the save/cancel modal.\n *\n * @module core/modal_save_cancel\n * @copyright 2016 Ryan Wyllie <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport Modal from 'core/modal';\nimport Notification from 'core/notification';\n\n/**\n * The Save/Cancel Modal.\n *\n * @class\n * @extends module:core/modal\n */\nexport default class extends Modal {\n constructor(root) {\n super(root);\n\n if (!this.getFooter().find(this.getActionSelector('save')).length) {\n Notification.exception({message: 'No save button found'});\n }\n\n if (!this.getFooter().find(this.getActionSelector('cancel')).length) {\n Notification.exception({message: 'No cancel button found'});\n }\n }\n\n /**\n * Register all event listeners.\n */\n registerEventListeners() {\n // Call the parent registration.\n super.registerEventListeners();\n\n // Register to close on save/cancel.\n this.registerCloseOnSave();\n this.registerCloseOnCancel();\n }\n\n /**\n * Override parent implementation to prevent changing the footer content.\n */\n setFooter() {\n Notification.exception({message: 'Can not change the footer of a save cancel modal'});\n return;\n }\n\n /**\n * Set the title of the save button.\n *\n * @param {String|Promise} value The button text, or a Promise which will resolve it\n * @returns{Promise}\n */\n setSaveButtonText(value) {\n return this.setButtonText('save', value);\n }\n}\n"],"names":["Modal","constructor","root","this","getFooter","find","getActionSelector","length","exception","message","registerEventListeners","registerCloseOnSave","registerCloseOnCancel","setFooter","setSaveButtonText","value","setButtonText"],"mappings":";;;;;;;sMAgC6BA,eACzBC,YAAYC,YACFA,MAEDC,KAAKC,YAAYC,KAAKF,KAAKG,kBAAkB,SAASC,8BAC1CC,UAAU,CAACC,QAAS,yBAGhCN,KAAKC,YAAYC,KAAKF,KAAKG,kBAAkB,WAAWC,8BAC5CC,UAAU,CAACC,QAAS,2BAOzCC,+BAEUA,8BAGDC,2BACAC,wBAMTC,kCACiBL,UAAU,CAACC,QAAS,qDAUrCK,kBAAkBC,cACPZ,KAAKa,cAAc,OAAQD"}
|
||||
{"version":3,"file":"modal_save_cancel.min.js","sources":["../src/modal_save_cancel.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Contain the logic for the save/cancel modal.\n *\n * @module core/modal_save_cancel\n * @copyright 2016 Ryan Wyllie <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport Modal from 'core/modal';\nimport Notification from 'core/notification';\n\n/**\n * The Save/Cancel Modal.\n *\n * @class\n * @extends module:core/modal\n */\nexport default class ModalSaveCancel extends Modal {\n static TYPE = 'SAVE_CANCEL';\n static TEMPLATE = 'core/modal_save_cancel';\n\n constructor(root) {\n super(root);\n\n if (!this.getFooter().find(this.getActionSelector('save')).length) {\n Notification.exception({message: 'No save button found'});\n }\n\n if (!this.getFooter().find(this.getActionSelector('cancel')).length) {\n Notification.exception({message: 'No cancel button found'});\n }\n }\n\n /**\n * Register all event listeners.\n */\n registerEventListeners() {\n // Call the parent registration.\n super.registerEventListeners();\n\n // Register to close on save/cancel.\n this.registerCloseOnSave();\n this.registerCloseOnCancel();\n }\n\n /**\n * Override parent implementation to prevent changing the footer content.\n */\n setFooter() {\n Notification.exception({message: 'Can not change the footer of a save cancel modal'});\n return;\n }\n\n /**\n * Set the title of the save button.\n *\n * @param {String|Promise} value The button text, or a Promise which will resolve it\n * @returns{Promise}\n */\n setSaveButtonText(value) {\n return this.setButtonText('save', value);\n }\n}\n\nModalSaveCancel.registerModalType();\n"],"names":["ModalSaveCancel","Modal","constructor","root","this","getFooter","find","getActionSelector","length","exception","message","registerEventListeners","registerCloseOnSave","registerCloseOnCancel","setFooter","setSaveButtonText","value","setButtonText","registerModalType"],"mappings":"4hBAgCqBA,wBAAwBC,eAIzCC,YAAYC,YACFA,MAEDC,KAAKC,YAAYC,KAAKF,KAAKG,kBAAkB,SAASC,8BAC1CC,UAAU,CAACC,QAAS,yBAGhCN,KAAKC,YAAYC,KAAKF,KAAKG,kBAAkB,WAAWC,8BAC5CC,UAAU,CAACC,QAAS,2BAOzCC,+BAEUA,8BAGDC,2BACAC,wBAMTC,kCACiBL,UAAU,CAACC,QAAS,qDAUrCK,kBAAkBC,cACPZ,KAAKa,cAAc,OAAQD,gEA3CrBhB,uBACH,+BADGA,2BAEC,0BA6CtBA,gBAAgBkB"}
|
||||
+1
-1
@@ -1,3 +1,3 @@
|
||||
define("core/moodlenet/send_activity_modal",["exports","core/modal","core/modal_registry"],(function(_exports,_modal,_modal_registry){var _class;function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_modal=_interopRequireDefault(_modal),_modal_registry=_interopRequireDefault(_modal_registry);const SendActivityModal=(_defineProperty(_class=class extends _modal.default{registerEventListeners(){super.registerEventListeners(),this.registerCloseOnSave(),this.registerCloseOnCancel()}},"TYPE","core/moodlenet/send_activity_modal"),_defineProperty(_class,"TEMPLATE","core/moodlenet/send_activity_modal_base"),_class);_modal_registry.default.register(SendActivityModal.TYPE,SendActivityModal,SendActivityModal.TEMPLATE);var _default=SendActivityModal;return _exports.default=_default,_exports.default}));
|
||||
define("core/moodlenet/send_activity_modal",["exports","core/modal"],(function(_exports,_modal){var obj;function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_modal=(obj=_modal)&&obj.__esModule?obj:{default:obj};class SendActivityModal extends _modal.default{registerEventListeners(){super.registerEventListeners(),this.registerCloseOnSave(),this.registerCloseOnCancel()}}return _exports.default=SendActivityModal,_defineProperty(SendActivityModal,"TYPE","core/moodlenet/send_activity_modal"),_defineProperty(SendActivityModal,"TEMPLATE","core/moodlenet/send_activity_modal_base"),SendActivityModal.registerModalType(),_exports.default}));
|
||||
|
||||
//# sourceMappingURL=send_activity_modal.min.js.map
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"send_activity_modal.min.js","sources":["../../src/moodlenet/send_activity_modal.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Send activity modal for MoodleNet.\n *\n * @module core/moodlenet/send_activity_modal\n * @copyright 2023 Huong Nguyen <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n * @since 4.2\n */\n\nimport Modal from 'core/modal';\nimport ModalRegistry from 'core/modal_registry';\n\nconst SendActivityModal = class extends Modal {\n static TYPE = 'core/moodlenet/send_activity_modal';\n static TEMPLATE = 'core/moodlenet/send_activity_modal_base';\n\n registerEventListeners() {\n // Call the parent registration.\n super.registerEventListeners();\n\n // Register to close on save/cancel.\n this.registerCloseOnSave();\n this.registerCloseOnCancel();\n }\n};\n\nModalRegistry.register(SendActivityModal.TYPE, SendActivityModal, SendActivityModal.TEMPLATE);\n\nexport default SendActivityModal;\n"],"names":["SendActivityModal","Modal","registerEventListeners","registerCloseOnSave","registerCloseOnCancel","register","TYPE","TEMPLATE"],"mappings":"2jBA2BMA,0CAAoB,cAAcC,eAIpCC,+BAEUA,8BAGDC,2BACAC,iCATK,wEACI,2EAYRC,SAASL,kBAAkBM,KAAMN,kBAAmBA,kBAAkBO,uBAErEP"}
|
||||
{"version":3,"file":"send_activity_modal.min.js","sources":["../../src/moodlenet/send_activity_modal.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Send activity modal for MoodleNet.\n *\n * @module core/moodlenet/send_activity_modal\n * @copyright 2023 Huong Nguyen <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n * @since 4.2\n */\n\nimport Modal from 'core/modal';\n\nexport default class SendActivityModal extends Modal {\n static TYPE = 'core/moodlenet/send_activity_modal';\n static TEMPLATE = 'core/moodlenet/send_activity_modal_base';\n\n registerEventListeners() {\n // Call the parent registration.\n super.registerEventListeners();\n\n // Register to close on save/cancel.\n this.registerCloseOnSave();\n this.registerCloseOnCancel();\n }\n}\n\nSendActivityModal.registerModalType();\n"],"names":["SendActivityModal","Modal","registerEventListeners","registerCloseOnSave","registerCloseOnCancel","registerModalType"],"mappings":"wZA0BqBA,0BAA0BC,eAI3CC,+BAEUA,8BAGDC,2BACAC,mFAVQJ,yBACH,sDADGA,6BAEC,2CAYtBA,kBAAkBK"}
|
||||
@@ -21,7 +21,5 @@
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
* @since 2.9
|
||||
*/
|
||||
define(function() {
|
||||
// This module exposes only the raw data from M.cfg;
|
||||
return M.cfg;
|
||||
});
|
||||
// This module exposes only the raw data from M.cfg;
|
||||
export default M.cfg;
|
||||
|
||||
@@ -26,10 +26,13 @@
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
* @since 2.9
|
||||
*/
|
||||
define(['jquery'], function($) {
|
||||
$(document).bind("ajaxStart", function() {
|
||||
M.util.js_pending('jq');
|
||||
}).bind("ajaxStop", function() {
|
||||
M.util.js_complete('jq');
|
||||
});
|
||||
|
||||
import $ from 'jquery';
|
||||
|
||||
$(document)
|
||||
.bind("ajaxStart", function() {
|
||||
M.util.js_pending('jq');
|
||||
})
|
||||
.bind("ajaxStop", function() {
|
||||
M.util.js_complete('jq');
|
||||
});
|
||||
|
||||
@@ -29,7 +29,10 @@ import Modal from 'core/modal';
|
||||
* @class
|
||||
* @extends Modal
|
||||
*/
|
||||
export default class extends Modal {
|
||||
export default class ModalAlert extends Modal {
|
||||
static TYPE = 'ALERT';
|
||||
static TEMPLATE = 'core/local/modal/alert';
|
||||
|
||||
/**
|
||||
* Register all event listeners.
|
||||
*/
|
||||
@@ -41,3 +44,5 @@ export default class extends Modal {
|
||||
this.registerCloseOnCancel();
|
||||
}
|
||||
}
|
||||
|
||||
ModalAlert.registerModalType();
|
||||
|
||||
+232
-232
File diff suppressed because it is too large
Load Diff
@@ -20,20 +20,26 @@
|
||||
* @copyright 2016 Ryan Wyllie <[email protected]>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
define(['jquery', 'core/templates', 'core/notification', 'core/fullscreen'],
|
||||
function($, Templates, Notification, Fullscreen) {
|
||||
import $ from 'jquery';
|
||||
import * as Notification from './notification';
|
||||
import * as Fullscreen from './fullscreen';
|
||||
|
||||
var SELECTORS = {
|
||||
ROOT: '[data-region="modal-backdrop"]',
|
||||
};
|
||||
const SELECTORS = {
|
||||
ROOT: '[data-region="modal-backdrop"]',
|
||||
};
|
||||
|
||||
export default class ModalBackdrop {
|
||||
root = null;
|
||||
isAttached = false;
|
||||
attachmentPoint = null;
|
||||
|
||||
/**
|
||||
* Constructor for ModalBackdrop.
|
||||
*
|
||||
* @class core/modal_backdrop
|
||||
* @param {object} root The root element for the modal backdrop
|
||||
* @param {HTMLElement|jQuery} root The root element for the modal backdrop
|
||||
*/
|
||||
var ModalBackdrop = function(root) {
|
||||
constructor(root) {
|
||||
this.root = $(root);
|
||||
this.isAttached = false;
|
||||
this.attachmentPoint = document.createElement('div');
|
||||
@@ -42,7 +48,7 @@ define(['jquery', 'core/templates', 'core/notification', 'core/fullscreen'],
|
||||
if (!this.root.is(SELECTORS.ROOT)) {
|
||||
Notification.exception({message: 'Element is not a modal backdrop'});
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the root element of this modal backdrop.
|
||||
@@ -50,25 +56,25 @@ define(['jquery', 'core/templates', 'core/notification', 'core/fullscreen'],
|
||||
* @method getRoot
|
||||
* @return {object} jQuery object
|
||||
*/
|
||||
ModalBackdrop.prototype.getRoot = function() {
|
||||
getRoot() {
|
||||
return this.root;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the jQuery wrapped node that the Modal should be attached to.
|
||||
*
|
||||
* @returns {jQuery}
|
||||
*/
|
||||
ModalBackdrop.prototype.getAttachmentPoint = function() {
|
||||
return $(Fullscreen.getElement() || this.attachmentPoint);
|
||||
};
|
||||
/**
|
||||
* Gets the jQuery wrapped node that the Modal should be attached to.
|
||||
*
|
||||
* @returns {jQuery}
|
||||
*/
|
||||
getAttachmentPoint() {
|
||||
return $(Fullscreen.getElement() || this.attachmentPoint);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the modal backdrop to the page, if it hasn't already been added.
|
||||
*
|
||||
* @method attachToDOM
|
||||
*/
|
||||
ModalBackdrop.prototype.attachToDOM = function() {
|
||||
attachToDOM() {
|
||||
this.getAttachmentPoint().append(this.root);
|
||||
|
||||
if (this.isAttached) {
|
||||
@@ -76,7 +82,7 @@ define(['jquery', 'core/templates', 'core/notification', 'core/fullscreen'],
|
||||
}
|
||||
|
||||
this.isAttached = true;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the z-index value for this backdrop.
|
||||
@@ -84,9 +90,9 @@ define(['jquery', 'core/templates', 'core/notification', 'core/fullscreen'],
|
||||
* @method setZIndex
|
||||
* @param {int} value The z-index value
|
||||
*/
|
||||
ModalBackdrop.prototype.setZIndex = function(value) {
|
||||
setZIndex(value) {
|
||||
this.root.css('z-index', value);
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if this backdrop is visible.
|
||||
@@ -94,9 +100,9 @@ define(['jquery', 'core/templates', 'core/notification', 'core/fullscreen'],
|
||||
* @method isVisible
|
||||
* @return {bool}
|
||||
*/
|
||||
ModalBackdrop.prototype.isVisible = function() {
|
||||
isVisible() {
|
||||
return this.root.hasClass('show');
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if this backdrop has CSS transitions applied.
|
||||
@@ -104,9 +110,9 @@ define(['jquery', 'core/templates', 'core/notification', 'core/fullscreen'],
|
||||
* @method hasTransitions
|
||||
* @return {bool}
|
||||
*/
|
||||
ModalBackdrop.prototype.hasTransitions = function() {
|
||||
hasTransitions() {
|
||||
return this.getRoot().hasClass('fade');
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Display this backdrop. The backdrop will be attached to the DOM if it hasn't
|
||||
@@ -114,31 +120,30 @@ define(['jquery', 'core/templates', 'core/notification', 'core/fullscreen'],
|
||||
*
|
||||
* @method show
|
||||
*/
|
||||
ModalBackdrop.prototype.show = function() {
|
||||
show() {
|
||||
if (this.isVisible()) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.attachToDOM();
|
||||
|
||||
this.root.removeClass('hide').addClass('show');
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Hide this backdrop.
|
||||
*
|
||||
* @method hide
|
||||
*/
|
||||
ModalBackdrop.prototype.hide = function() {
|
||||
hide() {
|
||||
if (!this.isVisible()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.hasTransitions()) {
|
||||
// Wait for CSS transitions to complete before hiding the element.
|
||||
this.getRoot().one('transitionend webkitTransitionEnd oTransitionEnd', function() {
|
||||
this.getRoot().one('transitionend webkitTransitionEnd oTransitionEnd', () => {
|
||||
this.getRoot().removeClass('show').addClass('hide');
|
||||
}.bind(this));
|
||||
});
|
||||
} else {
|
||||
this.getRoot().removeClass('show').addClass('hide');
|
||||
}
|
||||
@@ -147,17 +152,15 @@ define(['jquery', 'core/templates', 'core/notification', 'core/fullscreen'],
|
||||
if ($(document.body).find(this.getRoot()).length) {
|
||||
$(document.body).append(this.getRoot());
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove this backdrop from the DOM.
|
||||
*
|
||||
* @method destroy
|
||||
*/
|
||||
ModalBackdrop.prototype.destroy = function() {
|
||||
destroy() {
|
||||
this.root.remove();
|
||||
this.attachmentPoint.remove();
|
||||
};
|
||||
|
||||
return ModalBackdrop;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,10 @@ import Notification from 'core/notification';
|
||||
* @class
|
||||
* @extends module:core/modal
|
||||
*/
|
||||
export default class extends Modal {
|
||||
export default class ModalCancel extends Modal {
|
||||
static TYPE = 'CANCEL';
|
||||
static TEMPLATE = 'core/modal_cancel';
|
||||
|
||||
constructor(root) {
|
||||
super(root);
|
||||
|
||||
@@ -48,3 +51,5 @@ export default class extends Modal {
|
||||
this.registerCloseOnCancel();
|
||||
}
|
||||
}
|
||||
|
||||
ModalCancel.registerModalType();
|
||||
|
||||
@@ -28,7 +28,6 @@
|
||||
*/
|
||||
|
||||
import Modal from 'core/modal';
|
||||
import ModalRegistry from 'core/modal_registry';
|
||||
import ModalFactory from 'core/modal_factory';
|
||||
import 'core/copy_to_clipboard';
|
||||
|
||||
@@ -85,9 +84,7 @@ export default class CopyToClipboardModal extends Modal {
|
||||
} = {},
|
||||
title
|
||||
) {
|
||||
if (!ModalRegistry.get(this.TYPE)) {
|
||||
ModalRegistry.register(this.TYPE, this, this.TEMPLATE);
|
||||
}
|
||||
this.registerModalType();
|
||||
|
||||
const modal = await ModalFactory.create({
|
||||
type: this.TYPE,
|
||||
@@ -101,4 +98,4 @@ export default class CopyToClipboardModal extends Modal {
|
||||
}
|
||||
modal.show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,10 @@ import Notification from 'core/notification';
|
||||
* @class
|
||||
* @extends module:core/modal
|
||||
*/
|
||||
export default class extends Modal {
|
||||
export default class ModalDeleteCancel extends Modal {
|
||||
static TYPE = 'DELETE_CANCEL';
|
||||
static TEMPLATE = 'core/modal_delete_cancel';
|
||||
|
||||
constructor(root) {
|
||||
super(root);
|
||||
|
||||
@@ -71,3 +74,5 @@ export default class extends Modal {
|
||||
return this.setButtonText('delete', value);
|
||||
}
|
||||
}
|
||||
|
||||
ModalDeleteCancel.registerModalType();
|
||||
|
||||
+12
-14
@@ -21,17 +21,15 @@
|
||||
* @copyright 2016 Ryan Wyllie <[email protected]>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
define([], function() {
|
||||
return {
|
||||
// Default events.
|
||||
shown: 'modal:shown',
|
||||
hidden: 'modal:hidden',
|
||||
destroyed: 'modal:destroyed',
|
||||
bodyRendered: 'modal:bodyRendered',
|
||||
outsideClick: 'modal:outsideClick',
|
||||
// ModalSaveCancel events.
|
||||
save: 'modal-save-cancel:save',
|
||||
'delete': 'modal-delete-cancel:delete', // Delete is a reserved word.
|
||||
cancel: 'modal-save-cancel:cancel',
|
||||
};
|
||||
});
|
||||
export default {
|
||||
// Default events.
|
||||
shown: 'modal:shown',
|
||||
hidden: 'modal:hidden',
|
||||
destroyed: 'modal:destroyed',
|
||||
bodyRendered: 'modal:bodyRendered',
|
||||
outsideClick: 'modal:outsideClick',
|
||||
// ModalSaveCancel events.
|
||||
save: 'modal-save-cancel:save',
|
||||
'delete': 'modal-delete-cancel:delete', // Delete is a reserved word.
|
||||
cancel: 'modal-save-cancel:cancel',
|
||||
};
|
||||
|
||||
+188
-205
@@ -20,220 +20,203 @@
|
||||
* @copyright 2016 Ryan Wyllie <[email protected]>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
define(['jquery', 'core/modal_events', 'core/modal_registry', 'core/modal',
|
||||
'core/modal_save_cancel', 'core/modal_delete_cancel', 'core/modal_cancel', 'core/local/modal/alert',
|
||||
'core/templates', 'core/notification', 'core/custom_interaction_events',
|
||||
'core/pending'],
|
||||
function($, ModalEvents, ModalRegistry, Modal, ModalSaveCancel, ModalDeleteCancel,
|
||||
ModalCancel, ModalAlert, Templates, Notification, CustomEvents, Pending) {
|
||||
|
||||
// The templates for each type of modal.
|
||||
var TEMPLATES = {
|
||||
DEFAULT: 'core/modal',
|
||||
SAVE_CANCEL: 'core/modal_save_cancel',
|
||||
DELETE_CANCEL: 'core/modal_delete_cancel',
|
||||
CANCEL: 'core/modal_cancel',
|
||||
ALERT: 'core/local/modal/alert',
|
||||
};
|
||||
import $ from 'jquery';
|
||||
import ModalEvents from 'core/modal_events';
|
||||
import * as ModalRegistry from 'core/modal_registry';
|
||||
import Modal from 'core/modal';
|
||||
import ModalSaveCancel from 'core/modal_save_cancel';
|
||||
import ModalDeleteCancel from 'core/modal_delete_cancel';
|
||||
import ModalCancel from 'core/modal_cancel';
|
||||
import ModalAlert from 'core/local/modal/alert';
|
||||
import * as Templates from 'core/templates';
|
||||
import * as Notification from 'core/notification';
|
||||
import * as CustomEvents from 'core/custom_interaction_events';
|
||||
import Pending from 'core/pending';
|
||||
|
||||
/**
|
||||
* The available types of modals.
|
||||
*
|
||||
* @constant
|
||||
* @static
|
||||
* @public
|
||||
* @property {String} DEFAULT The default modal
|
||||
* @property {String} SAVE_CANCEL A modal which can be used to either save, or cancel.
|
||||
* @property {String} DELETE_CANCEL A modal which can be used to either delete, or cancel.
|
||||
* @property {String} CANCEL A modal which displayed a cancel button
|
||||
* @property {String} ALERT An information modal which only displays information.
|
||||
*/
|
||||
var TYPES = {
|
||||
DEFAULT: 'DEFAULT',
|
||||
SAVE_CANCEL: 'SAVE_CANCEL',
|
||||
DELETE_CANCEL: 'DELETE_CANCEL',
|
||||
CANCEL: 'CANCEL',
|
||||
ALERT: 'ALERT',
|
||||
};
|
||||
/**
|
||||
* The available standard modals.
|
||||
*
|
||||
* @property {String} DEFAULT The default modal
|
||||
* @property {String} SAVE_CANCEL A modal which can be used to either save, or cancel.
|
||||
* @property {String} DELETE_CANCEL A modal which can be used to either delete, or cancel.
|
||||
* @property {String} CANCEL A modal which displayed a cancel button
|
||||
* @property {String} ALERT An information modal which only displays information.
|
||||
*/
|
||||
export const types = {
|
||||
DEFAULT: 'DEFAULT',
|
||||
SAVE_CANCEL: ModalSaveCancel.TYPE,
|
||||
DELETE_CANCEL: ModalDeleteCancel.TYPE,
|
||||
CANCEL: ModalCancel.TYPE,
|
||||
ALERT: ModalAlert.TYPE,
|
||||
};
|
||||
|
||||
// Register the common set of modals.
|
||||
ModalRegistry.register(TYPES.DEFAULT, Modal, TEMPLATES.DEFAULT);
|
||||
ModalRegistry.register(TYPES.SAVE_CANCEL, ModalSaveCancel, TEMPLATES.SAVE_CANCEL);
|
||||
ModalRegistry.register(TYPES.DELETE_CANCEL, ModalDeleteCancel, TEMPLATES.DELETE_CANCEL);
|
||||
ModalRegistry.register(TYPES.CANCEL, ModalCancel, TEMPLATES.CANCEL);
|
||||
ModalRegistry.register(TYPES.ALERT, ModalAlert, TEMPLATES.ALERT);
|
||||
// Most modals are self-registering.
|
||||
// We do not self-register the base Modal because we do not want to define a default TYPE
|
||||
// on the class that every other modal extends.
|
||||
ModalRegistry.register(types.DEFAULT, Modal, Modal.TEMPLATE);
|
||||
|
||||
/**
|
||||
* Set up the events required to show the modal and return focus when the modal
|
||||
* is closed.
|
||||
*
|
||||
* @method setUpTrigger
|
||||
* @private
|
||||
* @param {Promise} modalPromise The modal instance
|
||||
* @param {object} triggerElement The jQuery element to open the modal
|
||||
* @param {object} modalConfig The modal configuration given to the factory
|
||||
*/
|
||||
var setUpTrigger = function(modalPromise, triggerElement, modalConfig) {
|
||||
// The element that actually shows the modal.
|
||||
var actualTriggerElement = null;
|
||||
// Check if the client has provided a callback function to be called
|
||||
// before the modal is displayed.
|
||||
var hasPreShowCallback = (typeof modalConfig.preShowCallback == 'function');
|
||||
// Function to handle the trigger element being activated.
|
||||
var triggeredCallback = function(e, data) {
|
||||
var pendingPromise = new Pending('core/modal_factory:setUpTrigger:triggeredCallback');
|
||||
actualTriggerElement = $(e.currentTarget);
|
||||
modalPromise.then(function(modal) {
|
||||
if (hasPreShowCallback) {
|
||||
// If the client provided a pre-show callback then execute
|
||||
// it now before showing the modal.
|
||||
modalConfig.preShowCallback(actualTriggerElement, modal);
|
||||
}
|
||||
|
||||
modal.show();
|
||||
|
||||
return modal;
|
||||
})
|
||||
.then(pendingPromise.resolve);
|
||||
data.originalEvent.preventDefault();
|
||||
};
|
||||
|
||||
// The trigger element can either be a single element or it can be an
|
||||
// element + selector pair to create a delegated event handler to trigger
|
||||
// the modal.
|
||||
if (Array.isArray(triggerElement)) {
|
||||
var selector = triggerElement[1];
|
||||
triggerElement = triggerElement[0];
|
||||
|
||||
CustomEvents.define(triggerElement, [CustomEvents.events.activate]);
|
||||
triggerElement.on(CustomEvents.events.activate, selector, triggeredCallback);
|
||||
} else {
|
||||
CustomEvents.define(triggerElement, [CustomEvents.events.activate]);
|
||||
triggerElement.on(CustomEvents.events.activate, triggeredCallback);
|
||||
}
|
||||
/**
|
||||
* Set up the events required to show the modal and return focus when the modal
|
||||
* is closed.
|
||||
*
|
||||
* @method setUpTrigger
|
||||
* @private
|
||||
* @param {Promise} modalPromise The modal instance
|
||||
* @param {object} triggerElement The jQuery element to open the modal
|
||||
* @param {object} modalConfig The modal configuration given to the factory
|
||||
*/
|
||||
const setUpTrigger = (modalPromise, triggerElement, modalConfig) => {
|
||||
// The element that actually shows the modal.
|
||||
let actualTriggerElement = null;
|
||||
// Check if the client has provided a callback function to be called
|
||||
// before the modal is displayed.
|
||||
const hasPreShowCallback = (typeof modalConfig.preShowCallback == 'function');
|
||||
// Function to handle the trigger element being activated.
|
||||
const triggeredCallback = (e, data) => {
|
||||
const pendingPromise = new Pending('core/modal_factory:setUpTrigger:triggeredCallback');
|
||||
actualTriggerElement = $(e.currentTarget);
|
||||
|
||||
// eslint-disable-next-line promise/catch-or-return
|
||||
modalPromise.then(function(modal) {
|
||||
modal.getRoot().on(ModalEvents.hidden, function() {
|
||||
// Focus on the trigger element that actually launched the modal.
|
||||
if (actualTriggerElement !== null) {
|
||||
actualTriggerElement.focus();
|
||||
}
|
||||
});
|
||||
if (hasPreShowCallback) {
|
||||
// If the client provided a pre-show callback then execute
|
||||
// it now before showing the modal.
|
||||
modalConfig.preShowCallback(actualTriggerElement, modal);
|
||||
}
|
||||
|
||||
modal.show();
|
||||
|
||||
return modal;
|
||||
})
|
||||
.then(pendingPromise.resolve);
|
||||
data.originalEvent.preventDefault();
|
||||
};
|
||||
|
||||
// The trigger element can either be a single element or it can be an
|
||||
// element + selector pair to create a delegated event handler to trigger
|
||||
// the modal.
|
||||
if (Array.isArray(triggerElement)) {
|
||||
const selector = triggerElement[1];
|
||||
triggerElement = triggerElement[0];
|
||||
|
||||
CustomEvents.define(triggerElement, [CustomEvents.events.activate]);
|
||||
triggerElement.on(CustomEvents.events.activate, selector, triggeredCallback);
|
||||
} else {
|
||||
CustomEvents.define(triggerElement, [CustomEvents.events.activate]);
|
||||
triggerElement.on(CustomEvents.events.activate, triggeredCallback);
|
||||
}
|
||||
|
||||
// eslint-disable-next-line promise/catch-or-return
|
||||
modalPromise.then(function(modal) {
|
||||
modal.getRoot().on(ModalEvents.hidden, function() {
|
||||
// Focus on the trigger element that actually launched the modal.
|
||||
if (actualTriggerElement !== null) {
|
||||
actualTriggerElement.focus();
|
||||
}
|
||||
});
|
||||
|
||||
return modal;
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Create the correct instance of a modal based on the givem type. Sets up
|
||||
* the trigger between the modal and the trigger element.
|
||||
*
|
||||
* @method createFromElement
|
||||
* @private
|
||||
* @param {object} registryConf A config from the ModalRegistry
|
||||
* @param {object} modalElement The modal HTML jQuery object
|
||||
* @return {object} Modal instance
|
||||
*/
|
||||
const createFromElement = (registryConf, modalElement) => {
|
||||
modalElement = $(modalElement);
|
||||
const Module = registryConf.module;
|
||||
const modal = new Module(modalElement);
|
||||
|
||||
return modal;
|
||||
};
|
||||
|
||||
/**
|
||||
* Create the correct modal instance for the given type, including loading
|
||||
* the correct template.
|
||||
*
|
||||
* @method createFromType
|
||||
* @private
|
||||
* @param {object} registryConf A config from the ModalRegistry
|
||||
* @param {object} templateContext The context to render the template with
|
||||
* @returns {promise} Resolved with a Modal instance
|
||||
*/
|
||||
const createFromType = (registryConf, templateContext) => {
|
||||
const templateName = registryConf.template;
|
||||
return Templates.render(templateName, templateContext)
|
||||
.then((html) => createFromElement(registryConf, $(html)));
|
||||
};
|
||||
|
||||
/**
|
||||
* Create a Modal instance.
|
||||
*
|
||||
* @method create
|
||||
* @param {object} modalConfig The configuration to create the modal instance
|
||||
* @param {object} triggerElement The trigger HTML jQuery object
|
||||
* @return {promise} Resolved with a Modal instance
|
||||
*/
|
||||
export const create = (modalConfig, triggerElement) => {
|
||||
const type = modalConfig.type || types.DEFAULT;
|
||||
const isLarge = modalConfig.large ? true : false;
|
||||
// If 'scrollable' is not configured, set the modal to be scrollable by default.
|
||||
const isScrollable = modalConfig.hasOwnProperty('scrollable') ? modalConfig.scrollable : true;
|
||||
|
||||
const registryConf = ModalRegistry.get(type);
|
||||
if (!registryConf) {
|
||||
Notification.exception({message: 'Unable to find modal of type: ' + type});
|
||||
}
|
||||
|
||||
const templateContext = modalConfig.templateContext || {};
|
||||
|
||||
const modalPromise = createFromType(registryConf, templateContext)
|
||||
.then((modal) => {
|
||||
if (typeof modalConfig.title !== 'undefined') {
|
||||
modal.setTitle(modalConfig.title);
|
||||
}
|
||||
|
||||
if (typeof modalConfig.body !== 'undefined') {
|
||||
modal.setBody(modalConfig.body);
|
||||
}
|
||||
|
||||
if (typeof modalConfig.footer !== 'undefined') {
|
||||
modal.setFooter(modalConfig.footer);
|
||||
}
|
||||
|
||||
if (modalConfig.buttons) {
|
||||
Object.entries(modalConfig.buttons).forEach(function([key, value]) {
|
||||
modal.setButtonText(key, value);
|
||||
});
|
||||
}
|
||||
|
||||
if (isLarge) {
|
||||
modal.setLarge();
|
||||
}
|
||||
|
||||
if (typeof modalConfig.removeOnClose !== 'undefined') {
|
||||
// If configured remove the modal when hiding it.
|
||||
modal.setRemoveOnClose(modalConfig.removeOnClose);
|
||||
}
|
||||
|
||||
modal.setScrollable(isScrollable);
|
||||
|
||||
return modal;
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Create the correct instance of a modal based on the givem type. Sets up
|
||||
* the trigger between the modal and the trigger element.
|
||||
*
|
||||
* @method createFromElement
|
||||
* @private
|
||||
* @param {object} registryConf A config from the ModalRegistry
|
||||
* @param {object} modalElement The modal HTML jQuery object
|
||||
* @return {object} Modal instance
|
||||
*/
|
||||
var createFromElement = function(registryConf, modalElement) {
|
||||
modalElement = $(modalElement);
|
||||
var Module = registryConf.module;
|
||||
var modal = new Module(modalElement);
|
||||
if (typeof triggerElement !== 'undefined') {
|
||||
setUpTrigger(modalPromise, triggerElement, modalConfig);
|
||||
}
|
||||
|
||||
return modal;
|
||||
};
|
||||
return modalPromise;
|
||||
};
|
||||
|
||||
/**
|
||||
* Create the correct modal instance for the given type, including loading
|
||||
* the correct template.
|
||||
*
|
||||
* @method createFromType
|
||||
* @private
|
||||
* @param {object} registryConf A config from the ModalRegistry
|
||||
* @param {object} templateContext The context to render the template with
|
||||
* @returns {promise} Resolved with a Modal instance
|
||||
*/
|
||||
var createFromType = function(registryConf, templateContext) {
|
||||
var templateName = registryConf.template;
|
||||
|
||||
var modalPromise = Templates.render(templateName, templateContext)
|
||||
.then(function(html) {
|
||||
var modalElement = $(html);
|
||||
return createFromElement(registryConf, modalElement);
|
||||
})
|
||||
.fail(Notification.exception);
|
||||
|
||||
return modalPromise;
|
||||
};
|
||||
|
||||
/**
|
||||
* Create a Modal instance.
|
||||
*
|
||||
* @method create
|
||||
* @param {object} modalConfig The configuration to create the modal instance
|
||||
* @param {object} triggerElement The trigger HTML jQuery object
|
||||
* @return {promise} Resolved with a Modal instance
|
||||
*/
|
||||
var create = function(modalConfig, triggerElement) {
|
||||
var type = modalConfig.type || TYPES.DEFAULT;
|
||||
var isLarge = modalConfig.large ? true : false;
|
||||
// If 'scrollable' is not configured, set the modal to be scrollable by default.
|
||||
var isScrollable = modalConfig.hasOwnProperty('scrollable') ? modalConfig.scrollable : true;
|
||||
var registryConf = null;
|
||||
var templateContext = {};
|
||||
|
||||
registryConf = ModalRegistry.get(type);
|
||||
|
||||
if (!registryConf) {
|
||||
Notification.exception({message: 'Unable to find modal of type: ' + type});
|
||||
}
|
||||
|
||||
if (typeof modalConfig.templateContext != 'undefined') {
|
||||
templateContext = modalConfig.templateContext;
|
||||
}
|
||||
|
||||
var modalPromise = createFromType(registryConf, templateContext)
|
||||
.then(function(modal) {
|
||||
if (typeof modalConfig.title != 'undefined') {
|
||||
modal.setTitle(modalConfig.title);
|
||||
}
|
||||
|
||||
if (typeof modalConfig.body != 'undefined') {
|
||||
modal.setBody(modalConfig.body);
|
||||
}
|
||||
|
||||
if (typeof modalConfig.footer != 'undefined') {
|
||||
modal.setFooter(modalConfig.footer);
|
||||
}
|
||||
|
||||
if (modalConfig.buttons) {
|
||||
Object.entries(modalConfig.buttons).forEach(function([key, value]) {
|
||||
modal.setButtonText(key, value);
|
||||
});
|
||||
}
|
||||
|
||||
if (isLarge) {
|
||||
modal.setLarge();
|
||||
}
|
||||
|
||||
if (typeof modalConfig.removeOnClose !== 'undefined') {
|
||||
// If configured remove the modal when hiding it.
|
||||
modal.setRemoveOnClose(modalConfig.removeOnClose);
|
||||
}
|
||||
|
||||
modal.setScrollable(isScrollable);
|
||||
|
||||
return modal;
|
||||
});
|
||||
|
||||
if (typeof triggerElement != 'undefined') {
|
||||
setUpTrigger(modalPromise, triggerElement, modalConfig);
|
||||
}
|
||||
|
||||
return modalPromise;
|
||||
};
|
||||
|
||||
return {
|
||||
create: create,
|
||||
types: TYPES,
|
||||
};
|
||||
});
|
||||
export default {
|
||||
create,
|
||||
types,
|
||||
};
|
||||
|
||||
@@ -21,55 +21,53 @@
|
||||
* @copyright 2016 Ryan Wyllie <[email protected]>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
define(['core/notification', 'core/prefetch'], function(Notification, Prefetch) {
|
||||
import * as Notification from 'core/notification';
|
||||
import * as Prefetch from 'core/prefetch';
|
||||
|
||||
// A singleton registry for all modules to access. Allows types to be
|
||||
// added at runtime.
|
||||
var registry = {};
|
||||
// A singleton registry for all modules to access. Allows types to be
|
||||
// added at runtime.
|
||||
const registry = new Map();
|
||||
|
||||
/**
|
||||
* Get a registered type of modal.
|
||||
*
|
||||
* @method get
|
||||
* @param {string} type The type of modal to get
|
||||
* @return {object} The registered config for the modal
|
||||
*/
|
||||
var get = function(type) {
|
||||
return registry[type];
|
||||
};
|
||||
/**
|
||||
* Get a registered type of modal.
|
||||
*
|
||||
* @method get
|
||||
* @param {string} type The type of modal to get
|
||||
* @return {object} The registered config for the modal
|
||||
*/
|
||||
export const get = (type) => registry.get(type);
|
||||
|
||||
/**
|
||||
* Register a modal with the registry.
|
||||
*
|
||||
* @method register
|
||||
* @param {string} type The type of modal (must be unique)
|
||||
* @param {function} module The modal module (must be a constructor function of type core/modal)
|
||||
* @param {string} template The template name of the modal
|
||||
*/
|
||||
var register = function(type, module, template) {
|
||||
if (get(type)) {
|
||||
Notification.exception({message: "Modal of type '" + type + "' is already registered"});
|
||||
}
|
||||
/**
|
||||
* Register a modal with the registry.
|
||||
*
|
||||
* @method register
|
||||
* @param {string} type The type of modal (must be unique)
|
||||
* @param {function} module The modal module (must be a constructor function of type core/modal)
|
||||
* @param {string} template The template name of the modal
|
||||
*/
|
||||
export const register = (type, module, template) => {
|
||||
const existing = get(type);
|
||||
if (existing && existing.module !== module) {
|
||||
Notification.exception({
|
||||
message: `Modal of type '${type}' is already registered`,
|
||||
});
|
||||
}
|
||||
|
||||
if (!module || typeof module !== 'function') {
|
||||
Notification.exception({message: "You must provide a modal module"});
|
||||
}
|
||||
if (!module || typeof module !== 'function') {
|
||||
Notification.exception({message: "You must provide a modal module"});
|
||||
}
|
||||
|
||||
if (!template) {
|
||||
Notification.exception({message: "You must provide a modal template"});
|
||||
}
|
||||
if (!template) {
|
||||
Notification.exception({message: "You must provide a modal template"});
|
||||
}
|
||||
|
||||
registry[type] = {
|
||||
module: module,
|
||||
template: template,
|
||||
};
|
||||
registry.set(type, {module, template});
|
||||
|
||||
// Prefetch the template.
|
||||
Prefetch.prefetchTemplate(template);
|
||||
};
|
||||
// Prefetch the template.
|
||||
Prefetch.prefetchTemplate(template);
|
||||
};
|
||||
|
||||
return {
|
||||
register: register,
|
||||
get: get,
|
||||
};
|
||||
});
|
||||
export default {
|
||||
register,
|
||||
get,
|
||||
};
|
||||
|
||||
@@ -30,7 +30,10 @@ import Notification from 'core/notification';
|
||||
* @class
|
||||
* @extends module:core/modal
|
||||
*/
|
||||
export default class extends Modal {
|
||||
export default class ModalSaveCancel extends Modal {
|
||||
static TYPE = 'SAVE_CANCEL';
|
||||
static TEMPLATE = 'core/modal_save_cancel';
|
||||
|
||||
constructor(root) {
|
||||
super(root);
|
||||
|
||||
@@ -73,3 +76,5 @@ export default class extends Modal {
|
||||
return this.setButtonText('save', value);
|
||||
}
|
||||
}
|
||||
|
||||
ModalSaveCancel.registerModalType();
|
||||
|
||||
@@ -23,9 +23,8 @@
|
||||
*/
|
||||
|
||||
import Modal from 'core/modal';
|
||||
import ModalRegistry from 'core/modal_registry';
|
||||
|
||||
const SendActivityModal = class extends Modal {
|
||||
export default class SendActivityModal extends Modal {
|
||||
static TYPE = 'core/moodlenet/send_activity_modal';
|
||||
static TEMPLATE = 'core/moodlenet/send_activity_modal_base';
|
||||
|
||||
@@ -37,8 +36,6 @@ const SendActivityModal = class extends Modal {
|
||||
this.registerCloseOnSave();
|
||||
this.registerCloseOnCancel();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
ModalRegistry.register(SendActivityModal.TYPE, SendActivityModal, SendActivityModal.TEMPLATE);
|
||||
|
||||
export default SendActivityModal;
|
||||
SendActivityModal.registerModalType();
|
||||
|
||||
+1
-1
@@ -1,3 +1,3 @@
|
||||
define("tiny_equation/modal",["exports","core/modal","core/modal_registry"],(function(_exports,_modal,_modal_registry){var _class;function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_modal=_interopRequireDefault(_modal),_modal_registry=_interopRequireDefault(_modal_registry);const EquationModal=(_defineProperty(_class=class extends _modal.default{registerEventListeners(){super.registerEventListeners(),this.registerCloseOnSave(),this.registerCloseOnCancel()}},"TYPE","tiny_equation/modal"),_defineProperty(_class,"TEMPLATE","tiny_equation/modal"),_class);_modal_registry.default.register(EquationModal.TYPE,EquationModal,EquationModal.TEMPLATE);var _default=EquationModal;return _exports.default=_default,_exports.default}));
|
||||
define("tiny_equation/modal",["exports","core/modal"],(function(_exports,_modal){var obj;function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_modal=(obj=_modal)&&obj.__esModule?obj:{default:obj};class EquationModal extends _modal.default{registerEventListeners(){super.registerEventListeners(),this.registerCloseOnSave(),this.registerCloseOnCancel()}}return _exports.default=EquationModal,_defineProperty(EquationModal,"TYPE","tiny_equation/modal"),_defineProperty(EquationModal,"TEMPLATE","tiny_equation/modal"),EquationModal.registerModalType(),_exports.default}));
|
||||
|
||||
//# sourceMappingURL=modal.min.js.map
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"modal.min.js","sources":["../src/modal.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Equation Modal for Tiny.\n *\n * @module tiny_equation/modal\n * @copyright 2022 Huong Nguyen <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport Modal from 'core/modal';\nimport ModalRegistry from 'core/modal_registry';\n\nconst EquationModal = class extends Modal {\n static TYPE = 'tiny_equation/modal';\n static TEMPLATE = 'tiny_equation/modal';\n\n registerEventListeners() {\n // Call the parent registration.\n super.registerEventListeners();\n\n // Register to close on save/cancel.\n this.registerCloseOnSave();\n this.registerCloseOnCancel();\n }\n};\n\nModalRegistry.register(EquationModal.TYPE, EquationModal, EquationModal.TEMPLATE);\n\nexport default EquationModal;\n"],"names":["EquationModal","Modal","registerEventListeners","registerCloseOnSave","registerCloseOnCancel","register","TYPE","TEMPLATE"],"mappings":"4iBA0BMA,sCAAgB,cAAcC,eAIhCC,+BAEUA,8BAGDC,2BACAC,iCATK,yDACI,uDAYRC,SAASL,cAAcM,KAAMN,cAAeA,cAAcO,uBAEzDP"}
|
||||
{"version":3,"file":"modal.min.js","sources":["../src/modal.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Equation Modal for Tiny.\n *\n * @module tiny_equation/modal\n * @copyright 2022 Huong Nguyen <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport Modal from 'core/modal';\n\nexport default class EquationModal extends Modal {\n static TYPE = 'tiny_equation/modal';\n static TEMPLATE = 'tiny_equation/modal';\n\n registerEventListeners() {\n // Call the parent registration.\n super.registerEventListeners();\n\n // Register to close on save/cancel.\n this.registerCloseOnSave();\n this.registerCloseOnCancel();\n }\n}\n\nEquationModal.registerModalType();\n"],"names":["EquationModal","Modal","registerEventListeners","registerCloseOnSave","registerCloseOnCancel","registerModalType"],"mappings":"yYAyBqBA,sBAAsBC,eAIvCC,+BAEUA,8BAGDC,2BACAC,+EAVQJ,qBACH,uCADGA,yBAEC,uBAYtBA,cAAcK"}
|
||||
@@ -22,9 +22,8 @@
|
||||
*/
|
||||
|
||||
import Modal from 'core/modal';
|
||||
import ModalRegistry from 'core/modal_registry';
|
||||
|
||||
const EquationModal = class extends Modal {
|
||||
export default class EquationModal extends Modal {
|
||||
static TYPE = 'tiny_equation/modal';
|
||||
static TEMPLATE = 'tiny_equation/modal';
|
||||
|
||||
@@ -36,8 +35,6 @@ const EquationModal = class extends Modal {
|
||||
this.registerCloseOnSave();
|
||||
this.registerCloseOnCancel();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
ModalRegistry.register(EquationModal.TYPE, EquationModal, EquationModal.TEMPLATE);
|
||||
|
||||
export default EquationModal;
|
||||
EquationModal.registerModalType();
|
||||
|
||||
+1
-1
@@ -1,3 +1,3 @@
|
||||
define("tiny_h5p/modal",["exports","core/modal","core/modal_registry"],(function(_exports,_modal,_modal_registry){var _class;function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_modal=_interopRequireDefault(_modal),_modal_registry=_interopRequireDefault(_modal_registry);const H5PModal=(_defineProperty(_class=class extends _modal.default{registerEventListeners(){super.registerEventListeners(),this.registerCloseOnSave(),this.registerCloseOnCancel()}},"TYPE","tiny_h5p/modal"),_defineProperty(_class,"TEMPLATE","tiny_h5p/modal"),_class);_modal_registry.default.register(H5PModal.TYPE,H5PModal,H5PModal.TEMPLATE);var _default=H5PModal;return _exports.default=_default,_exports.default}));
|
||||
define("tiny_h5p/modal",["exports","core/modal"],(function(_exports,_modal){var obj;function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_modal=(obj=_modal)&&obj.__esModule?obj:{default:obj};class H5PModal extends _modal.default{registerEventListeners(){super.registerEventListeners(),this.registerCloseOnSave(),this.registerCloseOnCancel()}}return _exports.default=H5PModal,_defineProperty(H5PModal,"TYPE","tiny_h5p/modal"),_defineProperty(H5PModal,"TEMPLATE","tiny_h5p/modal"),H5PModal.registerModalType(),_exports.default}));
|
||||
|
||||
//# sourceMappingURL=modal.min.js.map
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"modal.min.js","sources":["../src/modal.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * H5P Management Modal for Tiny.\n *\n * @module tiny_h5p/modal\n * @copyright 2022 Andrew Lyons <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport Modal from 'core/modal';\nimport ModalRegistry from 'core/modal_registry';\n\nconst H5PModal = class extends Modal {\n static TYPE = 'tiny_h5p/modal';\n\n static TEMPLATE = 'tiny_h5p/modal';\n\n registerEventListeners() {\n // Call the parent registration.\n super.registerEventListeners();\n\n // Register to close on save/cancel.\n this.registerCloseOnSave();\n this.registerCloseOnCancel();\n }\n};\n\nModalRegistry.register(H5PModal.TYPE, H5PModal, H5PModal.TEMPLATE);\n\nexport default H5PModal;\n"],"names":["H5PModal","Modal","registerEventListeners","registerCloseOnSave","registerCloseOnCancel","register","TYPE","TEMPLATE"],"mappings":"uiBA0BMA,iCAAW,cAAcC,eAK3BC,+BAEUA,8BAGDC,2BACAC,iCAVK,oDAEI,kDAYRC,SAASL,SAASM,KAAMN,SAAUA,SAASO,uBAE1CP"}
|
||||
{"version":3,"file":"modal.min.js","sources":["../src/modal.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * H5P Management Modal for Tiny.\n *\n * @module tiny_h5p/modal\n * @copyright 2022 Andrew Lyons <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport Modal from 'core/modal';\n\nexport default class H5PModal extends Modal {\n static TYPE = 'tiny_h5p/modal';\n static TEMPLATE = 'tiny_h5p/modal';\n\n registerEventListeners() {\n // Call the parent registration.\n super.registerEventListeners();\n\n // Register to close on save/cancel.\n this.registerCloseOnSave();\n this.registerCloseOnCancel();\n }\n}\n\nH5PModal.registerModalType();\n"],"names":["H5PModal","Modal","registerEventListeners","registerCloseOnSave","registerCloseOnCancel","registerModalType"],"mappings":"oYAyBqBA,iBAAiBC,eAIlCC,+BAEUA,8BAGDC,2BACAC,0EAVQJ,gBACH,kCADGA,oBAEC,kBAYtBA,SAASK"}
|
||||
@@ -22,11 +22,9 @@
|
||||
*/
|
||||
|
||||
import Modal from 'core/modal';
|
||||
import ModalRegistry from 'core/modal_registry';
|
||||
|
||||
const H5PModal = class extends Modal {
|
||||
export default class H5PModal extends Modal {
|
||||
static TYPE = 'tiny_h5p/modal';
|
||||
|
||||
static TEMPLATE = 'tiny_h5p/modal';
|
||||
|
||||
registerEventListeners() {
|
||||
@@ -37,8 +35,6 @@ const H5PModal = class extends Modal {
|
||||
this.registerCloseOnSave();
|
||||
this.registerCloseOnCancel();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
ModalRegistry.register(H5PModal.TYPE, H5PModal, H5PModal.TEMPLATE);
|
||||
|
||||
export default H5PModal;
|
||||
H5PModal.registerModalType();
|
||||
|
||||
+1
-1
@@ -1,3 +1,3 @@
|
||||
define("tiny_link/modal",["exports","core/modal","core/modal_registry"],(function(_exports,_modal,_modal_registry){var _class;function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_modal=_interopRequireDefault(_modal),_modal_registry=_interopRequireDefault(_modal_registry);const LinkModal=(_defineProperty(_class=class extends _modal.default{registerEventListeners(){super.registerEventListeners(),this.registerCloseOnSave(),this.registerCloseOnCancel()}},"TYPE","tiny_link/modal"),_defineProperty(_class,"TEMPLATE","tiny_link/modal"),_class);_modal_registry.default.register(LinkModal.TYPE,LinkModal,LinkModal.TEMPLATE);var _default=LinkModal;return _exports.default=_default,_exports.default}));
|
||||
define("tiny_link/modal",["exports","core/modal"],(function(_exports,_modal){var obj;function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_modal=(obj=_modal)&&obj.__esModule?obj:{default:obj};class LinkModal extends _modal.default{registerEventListeners(){super.registerEventListeners(),this.registerCloseOnSave(),this.registerCloseOnCancel()}}return _exports.default=LinkModal,_defineProperty(LinkModal,"TYPE","tiny_link/modal"),_defineProperty(LinkModal,"TEMPLATE","tiny_link/modal"),LinkModal.registerModalType(),_exports.default}));
|
||||
|
||||
//# sourceMappingURL=modal.min.js.map
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"modal.min.js","sources":["../src/modal.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Link Modal for Tiny.\n *\n * @module tiny_link/modal\n * @copyright 2023 Huong Nguyen <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport Modal from 'core/modal';\nimport ModalRegistry from 'core/modal_registry';\n\nconst LinkModal = class extends Modal {\n static TYPE = 'tiny_link/modal';\n static TEMPLATE = 'tiny_link/modal';\n\n registerEventListeners() {\n // Call the parent registration.\n super.registerEventListeners();\n\n // Register to close on save/cancel.\n this.registerCloseOnSave();\n this.registerCloseOnCancel();\n }\n};\n\nModalRegistry.register(LinkModal.TYPE, LinkModal, LinkModal.TEMPLATE);\n\nexport default LinkModal;\n"],"names":["LinkModal","Modal","registerEventListeners","registerCloseOnSave","registerCloseOnCancel","register","TYPE","TEMPLATE"],"mappings":"wiBA0BMA,kCAAY,cAAcC,eAI5BC,+BAEUA,8BAGDC,2BACAC,iCATK,qDACI,mDAYRC,SAASL,UAAUM,KAAMN,UAAWA,UAAUO,uBAE7CP"}
|
||||
{"version":3,"file":"modal.min.js","sources":["../src/modal.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Link Modal for Tiny.\n *\n * @module tiny_link/modal\n * @copyright 2023 Huong Nguyen <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport Modal from 'core/modal';\n\nexport default class LinkModal extends Modal {\n static TYPE = 'tiny_link/modal';\n static TEMPLATE = 'tiny_link/modal';\n\n registerEventListeners() {\n // Call the parent registration.\n super.registerEventListeners();\n\n // Register to close on save/cancel.\n this.registerCloseOnSave();\n this.registerCloseOnCancel();\n }\n}\n\nLinkModal.registerModalType();\n"],"names":["LinkModal","Modal","registerEventListeners","registerCloseOnSave","registerCloseOnCancel","registerModalType"],"mappings":"qYAyBqBA,kBAAkBC,eAInCC,+BAEUA,8BAGDC,2BACAC,2EAVQJ,iBACH,mCADGA,qBAEC,mBAYtBA,UAAUK"}
|
||||
@@ -22,9 +22,8 @@
|
||||
*/
|
||||
|
||||
import Modal from 'core/modal';
|
||||
import ModalRegistry from 'core/modal_registry';
|
||||
|
||||
const LinkModal = class extends Modal {
|
||||
export default class LinkModal extends Modal {
|
||||
static TYPE = 'tiny_link/modal';
|
||||
static TEMPLATE = 'tiny_link/modal';
|
||||
|
||||
@@ -36,8 +35,6 @@ const LinkModal = class extends Modal {
|
||||
this.registerCloseOnSave();
|
||||
this.registerCloseOnCancel();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
ModalRegistry.register(LinkModal.TYPE, LinkModal, LinkModal.TEMPLATE);
|
||||
|
||||
export default LinkModal;
|
||||
LinkModal.registerModalType();
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
define("tiny_media/embedmodal",["exports","core/modal","core/modal_registry","./common"],(function(_exports,_modal,_modal_registry,_common){var _class;function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_modal=_interopRequireDefault(_modal),_modal_registry=_interopRequireDefault(_modal_registry);const EmbedModal=(_defineProperty(_class=class extends _modal.default{registerEventListeners(){super.registerEventListeners(),this.registerCloseOnSave(),this.registerCloseOnCancel()}},"TYPE","".concat(_common.component,"/modal")),_defineProperty(_class,"TEMPLATE","".concat(_common.component,"/embed_media_modal")),_class);_modal_registry.default.register(EmbedModal.TYPE,EmbedModal,EmbedModal.TEMPLATE);var _default=EmbedModal;return _exports.default=_default,_exports.default}));
|
||||
define("tiny_media/embedmodal",["exports","core/modal","./common"],(function(_exports,_modal,_common){var obj;function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_modal=(obj=_modal)&&obj.__esModule?obj:{default:obj};class EmbedModal extends _modal.default{registerEventListeners(){super.registerEventListeners(),this.registerCloseOnSave(),this.registerCloseOnCancel()}}return _exports.default=EmbedModal,_defineProperty(EmbedModal,"TYPE","".concat(_common.component,"/modal")),_defineProperty(EmbedModal,"TEMPLATE","".concat(_common.component,"/embed_media_modal")),EmbedModal.registerModalType(),_exports.default}));
|
||||
|
||||
//# sourceMappingURL=embedmodal.min.js.map
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"embedmodal.min.js","sources":["../src/embedmodal.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Embedded Media Management Modal for Tiny.\n *\n * @module tiny_media/embedmodal\n * @copyright 2022 Andrew Lyons <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport Modal from 'core/modal';\nimport ModalRegistry from 'core/modal_registry';\nimport {component} from './common';\n\nconst EmbedModal = class extends Modal {\n static TYPE = `${component}/modal`;\n\n static TEMPLATE = `${component}/embed_media_modal`;\n\n registerEventListeners() {\n // Call the parent registration.\n super.registerEventListeners();\n\n // Register to close on save/cancel.\n this.registerCloseOnSave();\n this.registerCloseOnCancel();\n }\n};\n\nModalRegistry.register(EmbedModal.TYPE, EmbedModal, EmbedModal.TEMPLATE);\n\nexport default EmbedModal;\n"],"names":["EmbedModal","Modal","registerEventListeners","registerCloseOnSave","registerCloseOnCancel","component","register","TYPE","TEMPLATE"],"mappings":"ikBA2BMA,mCAAa,cAAcC,eAK7BC,+BAEUA,8BAGDC,2BACAC,2CAVQC,yEAEIA,yEAYXC,SAASN,WAAWO,KAAMP,WAAYA,WAAWQ,uBAEhDR"}
|
||||
{"version":3,"file":"embedmodal.min.js","sources":["../src/embedmodal.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Embedded Media Management Modal for Tiny.\n *\n * @module tiny_media/embedmodal\n * @copyright 2022 Andrew Lyons <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport Modal from 'core/modal';\nimport {component} from './common';\n\nexport default class EmbedModal extends Modal {\n static TYPE = `${component}/modal`;\n static TEMPLATE = `${component}/embed_media_modal`;\n\n registerEventListeners() {\n // Call the parent registration.\n super.registerEventListeners();\n\n // Register to close on save/cancel.\n this.registerCloseOnSave();\n this.registerCloseOnCancel();\n }\n}\n\nEmbedModal.registerModalType();\n"],"names":["EmbedModal","Modal","registerEventListeners","registerCloseOnSave","registerCloseOnCancel","component","registerModalType"],"mappings":"8ZA0BqBA,mBAAmBC,eAIpCC,+BAEUA,8BAGDC,2BACAC,4EAVQJ,4BACAK,6CADAL,gCAEIK,yCAYzBL,WAAWM"}
|
||||
@@ -1,3 +1,3 @@
|
||||
define("tiny_media/imagemodal",["exports","core/modal","core/modal_registry","./common"],(function(_exports,_modal,_modal_registry,_common){var _class;function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_modal=_interopRequireDefault(_modal),_modal_registry=_interopRequireDefault(_modal_registry);const ImageModal=(_defineProperty(_class=class extends _modal.default{registerEventListeners(){super.registerEventListeners(),this.registerCloseOnSave(),this.registerCloseOnCancel()}},"TYPE","".concat(_common.component,"/imagemodal")),_defineProperty(_class,"TEMPLATE","".concat(_common.component,"/insert_image_modal")),_class);_modal_registry.default.register(ImageModal.TYPE,ImageModal,ImageModal.TEMPLATE);var _default=ImageModal;return _exports.default=_default,_exports.default}));
|
||||
define("tiny_media/imagemodal",["exports","core/modal","./common"],(function(_exports,_modal,_common){var obj;function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_modal=(obj=_modal)&&obj.__esModule?obj:{default:obj};class ImageModal extends _modal.default{registerEventListeners(){super.registerEventListeners(),this.registerCloseOnSave(),this.registerCloseOnCancel()}}return _exports.default=ImageModal,_defineProperty(ImageModal,"TYPE","".concat(_common.component,"/imagemodal")),_defineProperty(ImageModal,"TEMPLATE","".concat(_common.component,"/insert_image_modal")),ImageModal.registerModalType(),_exports.default}));
|
||||
|
||||
//# sourceMappingURL=imagemodal.min.js.map
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"imagemodal.min.js","sources":["../src/imagemodal.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Image Modal for Tiny.\n *\n * @module tiny_media/imagemodal\n * @copyright 2022 Huong Nguyen <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport Modal from 'core/modal';\nimport ModalRegistry from 'core/modal_registry';\nimport {component} from './common';\n\nconst ImageModal = class extends Modal {\n static TYPE = `${component}/imagemodal`;\n\n static TEMPLATE = `${component}/insert_image_modal`;\n\n registerEventListeners() {\n // Call the parent registration.\n super.registerEventListeners();\n\n // Register to close on save/cancel.\n this.registerCloseOnSave();\n this.registerCloseOnCancel();\n }\n};\n\nModalRegistry.register(ImageModal.TYPE, ImageModal, ImageModal.TEMPLATE);\n\nexport default ImageModal;\n"],"names":["ImageModal","Modal","registerEventListeners","registerCloseOnSave","registerCloseOnCancel","component","register","TYPE","TEMPLATE"],"mappings":"ikBA2BMA,mCAAa,cAAcC,eAK7BC,+BAEUA,8BAGDC,2BACAC,2CAVQC,8EAEIA,0EAYXC,SAASN,WAAWO,KAAMP,WAAYA,WAAWQ,uBAEhDR"}
|
||||
{"version":3,"file":"imagemodal.min.js","sources":["../src/imagemodal.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Image Modal for Tiny.\n *\n * @module tiny_media/imagemodal\n * @copyright 2022 Huong Nguyen <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport Modal from 'core/modal';\nimport {component} from './common';\n\nexport default class ImageModal extends Modal {\n static TYPE = `${component}/imagemodal`;\n static TEMPLATE = `${component}/insert_image_modal`;\n\n registerEventListeners() {\n // Call the parent registration.\n super.registerEventListeners();\n\n // Register to close on save/cancel.\n this.registerCloseOnSave();\n this.registerCloseOnCancel();\n }\n}\n\nImageModal.registerModalType();\n"],"names":["ImageModal","Modal","registerEventListeners","registerCloseOnSave","registerCloseOnCancel","component","registerModalType"],"mappings":"8ZA0BqBA,mBAAmBC,eAIpCC,+BAEUA,8BAGDC,2BACAC,4EAVQJ,4BACAK,kDADAL,gCAEIK,0CAYzBL,WAAWM"}
|
||||
@@ -22,12 +22,10 @@
|
||||
*/
|
||||
|
||||
import Modal from 'core/modal';
|
||||
import ModalRegistry from 'core/modal_registry';
|
||||
import {component} from './common';
|
||||
|
||||
const EmbedModal = class extends Modal {
|
||||
export default class EmbedModal extends Modal {
|
||||
static TYPE = `${component}/modal`;
|
||||
|
||||
static TEMPLATE = `${component}/embed_media_modal`;
|
||||
|
||||
registerEventListeners() {
|
||||
@@ -38,8 +36,6 @@ const EmbedModal = class extends Modal {
|
||||
this.registerCloseOnSave();
|
||||
this.registerCloseOnCancel();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
ModalRegistry.register(EmbedModal.TYPE, EmbedModal, EmbedModal.TEMPLATE);
|
||||
|
||||
export default EmbedModal;
|
||||
EmbedModal.registerModalType();
|
||||
|
||||
@@ -22,12 +22,10 @@
|
||||
*/
|
||||
|
||||
import Modal from 'core/modal';
|
||||
import ModalRegistry from 'core/modal_registry';
|
||||
import {component} from './common';
|
||||
|
||||
const ImageModal = class extends Modal {
|
||||
export default class ImageModal extends Modal {
|
||||
static TYPE = `${component}/imagemodal`;
|
||||
|
||||
static TEMPLATE = `${component}/insert_image_modal`;
|
||||
|
||||
registerEventListeners() {
|
||||
@@ -38,8 +36,6 @@ const ImageModal = class extends Modal {
|
||||
this.registerCloseOnSave();
|
||||
this.registerCloseOnCancel();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
ModalRegistry.register(ImageModal.TYPE, ImageModal, ImageModal.TEMPLATE);
|
||||
|
||||
export default ImageModal;
|
||||
ImageModal.registerModalType();
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
define("tiny_recordrtc/audio_recorder",["exports","./base_recorder","./modal","core/modal_registry","tiny_recordrtc/common"],(function(_exports,_base_recorder,_modal,_modal_registry,_common){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_base_recorder=_interopRequireDefault(_base_recorder),_modal=_interopRequireDefault(_modal),_modal_registry=_interopRequireDefault(_modal_registry);class Audio extends _base_recorder.default{configurePlayer(){return this.modalRoot.querySelector("audio")}getSupportedTypes(){return["audio/webm;codecs=opus","audio/ogg;codecs=opus"]}getParsedRecordingOptions(){return{audioBitsPerSecond:parseInt(this.config.audiobitrate)}}getMediaConstraints(){return{audio:!0}}getRecordingType(){return"audio"}getTimeLimit(){return this.config.audiotimelimit}getEmbedTemplateName(){return"tiny_recordrtc/embed_audio"}getFileName(prefix){return"".concat(prefix,"-audio.ogg")}static getModalClass(){var _class;const modalType="".concat(_common.component,"/audio_recorder"),registration=_modal_registry.default.get(modalType);if(registration)return registration.module;const AudioModal=(_defineProperty(_class=class extends _modal.default{},"TYPE",modalType),_defineProperty(_class,"TEMPLATE","".concat(_common.component,"/audio_recorder")),_class);return _modal_registry.default.register(AudioModal.TYPE,AudioModal,AudioModal.TEMPLATE),AudioModal}}return _exports.default=Audio,_exports.default}));
|
||||
define("tiny_recordrtc/audio_recorder",["exports","./base_recorder","./modal","tiny_recordrtc/common"],(function(_exports,_base_recorder,_modal,_common){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_base_recorder=_interopRequireDefault(_base_recorder),_modal=_interopRequireDefault(_modal);class Audio extends _base_recorder.default{configurePlayer(){return this.modalRoot.querySelector("audio")}getSupportedTypes(){return["audio/webm;codecs=opus","audio/ogg;codecs=opus"]}getParsedRecordingOptions(){return{audioBitsPerSecond:parseInt(this.config.audiobitrate)}}getMediaConstraints(){return{audio:!0}}getRecordingType(){return"audio"}getTimeLimit(){return this.config.audiotimelimit}getEmbedTemplateName(){return"tiny_recordrtc/embed_audio"}getFileName(prefix){return"".concat(prefix,"-audio.ogg")}static getModalClass(){var _class;const AudioModal=(_defineProperty(_class=class extends _modal.default{},"TYPE","".concat(_common.component,"/audio_recorder")),_defineProperty(_class,"TEMPLATE","".concat(_common.component,"/audio_recorder")),_class);return AudioModal.registerModalType(),AudioModal}}return _exports.default=Audio,_exports.default}));
|
||||
|
||||
//# sourceMappingURL=audio_recorder.min.js.map
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"audio_recorder.min.js","sources":["../src/audio_recorder.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Tiny Record RTC - audio recorder configuration.\n *\n * @module tiny_recordrtc/audio_recorder\n * @copyright 2022 Stevani Andolo <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport BaseClass from './base_recorder';\nimport Modal from './modal';\nimport ModalRegistry from 'core/modal_registry';\nimport {component} from 'tiny_recordrtc/common';\n\nexport default class Audio extends BaseClass {\n configurePlayer() {\n return this.modalRoot.querySelector('audio');\n }\n\n getSupportedTypes() {\n return [\n 'audio/webm;codecs=opus',\n 'audio/ogg;codecs=opus',\n ];\n }\n\n getParsedRecordingOptions() {\n return {\n audioBitsPerSecond: parseInt(this.config.audiobitrate),\n };\n }\n\n getMediaConstraints() {\n return {\n audio: true,\n };\n }\n\n getRecordingType() {\n return 'audio';\n }\n\n getTimeLimit() {\n return this.config.audiotimelimit;\n }\n\n getEmbedTemplateName() {\n return 'tiny_recordrtc/embed_audio';\n }\n\n getFileName(prefix) {\n return `${prefix}-audio.ogg`;\n }\n\n static getModalClass() {\n const modalType = `${component}/audio_recorder`;\n const registration = ModalRegistry.get(modalType);\n if (registration) {\n return registration.module;\n }\n\n const AudioModal = class extends Modal {\n static TYPE = modalType;\n static TEMPLATE = `${component}/audio_recorder`;\n };\n\n ModalRegistry.register(AudioModal.TYPE, AudioModal, AudioModal.TEMPLATE);\n return AudioModal;\n }\n}\n"],"names":["Audio","BaseClass","configurePlayer","this","modalRoot","querySelector","getSupportedTypes","getParsedRecordingOptions","audioBitsPerSecond","parseInt","config","audiobitrate","getMediaConstraints","audio","getRecordingType","getTimeLimit","audiotimelimit","getEmbedTemplateName","getFileName","prefix","modalType","component","registration","ModalRegistry","get","module","AudioModal","Modal","register","TYPE","TEMPLATE"],"mappings":"+pBA4BqBA,cAAcC,uBAC/BC,yBACWC,KAAKC,UAAUC,cAAc,SAGxCC,0BACW,CACH,yBACA,yBAIRC,kCACW,CACHC,mBAAoBC,SAASN,KAAKO,OAAOC,eAIjDC,4BACW,CACHC,OAAO,GAIfC,yBACW,QAGXC,sBACWZ,KAAKO,OAAOM,eAGvBC,6BACW,6BAGXC,YAAYC,wBACEA,6DAIJC,oBAAeC,qCACfC,aAAeC,wBAAcC,IAAIJ,cACnCE,oBACOA,aAAaG,aAGlBC,mCAAa,cAAcC,wBACfP,uDACOC,6EAGXO,SAASF,WAAWG,KAAMH,WAAYA,WAAWI,UACxDJ"}
|
||||
{"version":3,"file":"audio_recorder.min.js","sources":["../src/audio_recorder.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Tiny Record RTC - audio recorder configuration.\n *\n * @module tiny_recordrtc/audio_recorder\n * @copyright 2022 Stevani Andolo <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport BaseClass from './base_recorder';\nimport Modal from './modal';\nimport {component} from 'tiny_recordrtc/common';\n\nexport default class Audio extends BaseClass {\n configurePlayer() {\n return this.modalRoot.querySelector('audio');\n }\n\n getSupportedTypes() {\n return [\n 'audio/webm;codecs=opus',\n 'audio/ogg;codecs=opus',\n ];\n }\n\n getParsedRecordingOptions() {\n return {\n audioBitsPerSecond: parseInt(this.config.audiobitrate),\n };\n }\n\n getMediaConstraints() {\n return {\n audio: true,\n };\n }\n\n getRecordingType() {\n return 'audio';\n }\n\n getTimeLimit() {\n return this.config.audiotimelimit;\n }\n\n getEmbedTemplateName() {\n return 'tiny_recordrtc/embed_audio';\n }\n\n getFileName(prefix) {\n return `${prefix}-audio.ogg`;\n }\n\n static getModalClass() {\n const AudioModal = class extends Modal {\n static TYPE = `${component}/audio_recorder`;\n static TEMPLATE = `${component}/audio_recorder`;\n };\n\n AudioModal.registerModalType();\n return AudioModal;\n }\n}\n"],"names":["Audio","BaseClass","configurePlayer","this","modalRoot","querySelector","getSupportedTypes","getParsedRecordingOptions","audioBitsPerSecond","parseInt","config","audiobitrate","getMediaConstraints","audio","getRecordingType","getTimeLimit","audiotimelimit","getEmbedTemplateName","getFileName","prefix","AudioModal","Modal","component","registerModalType"],"mappings":"ikBA2BqBA,cAAcC,uBAC/BC,yBACWC,KAAKC,UAAUC,cAAc,SAGxCC,0BACW,CACH,yBACA,yBAIRC,kCACW,CACHC,mBAAoBC,SAASN,KAAKO,OAAOC,eAIjDC,4BACW,CACHC,OAAO,GAIfC,yBACW,QAGXC,sBACWZ,KAAKO,OAAOM,eAGvBC,6BACW,6BAGXC,YAAYC,wBACEA,6DAIJC,mCAAa,cAAcC,kCACZC,kFACIA,qDAGzBF,WAAWG,oBACJH"}
|
||||
@@ -1,3 +1,3 @@
|
||||
define("tiny_recordrtc/video_recorder",["exports","./base_recorder","tiny_recordrtc/modal","core/modal_registry","tiny_recordrtc/common"],(function(_exports,_base_recorder,_modal,_modal_registry,_common){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_base_recorder=_interopRequireDefault(_base_recorder),_modal=_interopRequireDefault(_modal),_modal_registry=_interopRequireDefault(_modal_registry);class Video extends _base_recorder.default{configurePlayer(){return this.modalRoot.querySelector("video")}getSupportedTypes(){return["video/webm;codecs=vp9,opus","video/webm;codecs=h264,opus","video/webm;codecs=vp8,opus"]}getParsedRecordingOptions(){return{audioBitsPerSecond:parseInt(this.config.audiobitrate),videoBitsPerSecond:parseInt(this.config.videobitrate)}}getMediaConstraints(){return{audio:!0,video:{width:{ideal:640},height:{ideal:480}}}}playOnCapture(){return!0}getRecordingType(){return"video"}getTimeLimit(){return this.config.videotimelimit}getEmbedTemplateName(){return"tiny_recordrtc/embed_video"}getFileName(prefix){return"".concat(prefix,"-video.webm")}static getModalClass(){var _class;const modalType="".concat(_common.component,"/video_recorder"),registration=_modal_registry.default.get(modalType);if(registration)return registration.module;const VideoModal=(_defineProperty(_class=class extends _modal.default{},"TYPE",modalType),_defineProperty(_class,"TEMPLATE","".concat(_common.component,"/video_recorder")),_class);return _modal_registry.default.register(VideoModal.TYPE,VideoModal,VideoModal.TEMPLATE),VideoModal}}return _exports.default=Video,_exports.default}));
|
||||
define("tiny_recordrtc/video_recorder",["exports","./base_recorder","tiny_recordrtc/modal","tiny_recordrtc/common"],(function(_exports,_base_recorder,_modal,_common){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_base_recorder=_interopRequireDefault(_base_recorder),_modal=_interopRequireDefault(_modal);class Video extends _base_recorder.default{configurePlayer(){return this.modalRoot.querySelector("video")}getSupportedTypes(){return["video/webm;codecs=vp9,opus","video/webm;codecs=h264,opus","video/webm;codecs=vp8,opus"]}getParsedRecordingOptions(){return{audioBitsPerSecond:parseInt(this.config.audiobitrate),videoBitsPerSecond:parseInt(this.config.videobitrate)}}getMediaConstraints(){return{audio:!0,video:{width:{ideal:640},height:{ideal:480}}}}playOnCapture(){return!0}getRecordingType(){return"video"}getTimeLimit(){return this.config.videotimelimit}getEmbedTemplateName(){return"tiny_recordrtc/embed_video"}getFileName(prefix){return"".concat(prefix,"-video.webm")}static getModalClass(){var _class;const VideoModal=(_defineProperty(_class=class extends _modal.default{},"TYPE","".concat(_common.component,"/video_recorder")),_defineProperty(_class,"TEMPLATE","".concat(_common.component,"/video_recorder")),_class);return VideoModal.registerModalType(),VideoModal}}return _exports.default=Video,_exports.default}));
|
||||
|
||||
//# sourceMappingURL=video_recorder.min.js.map
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"video_recorder.min.js","sources":["../src/video_recorder.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Tiny Record RTC - Video recorder configuration.\n *\n * @module tiny_recordrtc/video_recorder\n * @copyright 2022 Stevani Andolo <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport BaseClass from './base_recorder';\nimport Modal from 'tiny_recordrtc/modal';\nimport ModalRegistry from 'core/modal_registry';\nimport {component} from 'tiny_recordrtc/common';\n\nexport default class Video extends BaseClass {\n configurePlayer() {\n return this.modalRoot.querySelector('video');\n }\n\n getSupportedTypes() {\n return [\n 'video/webm;codecs=vp9,opus',\n 'video/webm;codecs=h264,opus',\n 'video/webm;codecs=vp8,opus',\n ];\n\n }\n\n getParsedRecordingOptions() {\n return {\n audioBitsPerSecond: parseInt(this.config.audiobitrate),\n videoBitsPerSecond: parseInt(this.config.videobitrate)\n };\n }\n\n getMediaConstraints() {\n return {\n audio: true,\n video: {\n width: {\n ideal: 640,\n },\n height: {\n ideal: 480,\n },\n },\n };\n }\n\n playOnCapture() {\n // Play the recording back on capture.\n return true;\n }\n\n getRecordingType() {\n return 'video';\n }\n\n getTimeLimit() {\n return this.config.videotimelimit;\n }\n\n getEmbedTemplateName() {\n return 'tiny_recordrtc/embed_video';\n }\n\n getFileName(prefix) {\n return `${prefix}-video.webm`;\n }\n\n static getModalClass() {\n const modalType = `${component}/video_recorder`;\n const registration = ModalRegistry.get(modalType);\n if (registration) {\n return registration.module;\n }\n\n const VideoModal = class extends Modal {\n static TYPE = modalType;\n static TEMPLATE = `${component}/video_recorder`;\n };\n\n ModalRegistry.register(VideoModal.TYPE, VideoModal, VideoModal.TEMPLATE);\n return VideoModal;\n }\n}\n"],"names":["Video","BaseClass","configurePlayer","this","modalRoot","querySelector","getSupportedTypes","getParsedRecordingOptions","audioBitsPerSecond","parseInt","config","audiobitrate","videoBitsPerSecond","videobitrate","getMediaConstraints","audio","video","width","ideal","height","playOnCapture","getRecordingType","getTimeLimit","videotimelimit","getEmbedTemplateName","getFileName","prefix","modalType","component","registration","ModalRegistry","get","module","VideoModal","Modal","register","TYPE","TEMPLATE"],"mappings":"4qBA4BqBA,cAAcC,uBAC/BC,yBACWC,KAAKC,UAAUC,cAAc,SAGxCC,0BACW,CACH,6BACA,8BACA,8BAKRC,kCACW,CACHC,mBAAoBC,SAASN,KAAKO,OAAOC,cACzCC,mBAAoBH,SAASN,KAAKO,OAAOG,eAIjDC,4BACW,CACHC,OAAO,EACPC,MAAO,CACHC,MAAO,CACHC,MAAO,KAEXC,OAAQ,CACJD,MAAO,OAMvBE,uBAEW,EAGXC,yBACW,QAGXC,sBACWnB,KAAKO,OAAOa,eAGvBC,6BACW,6BAGXC,YAAYC,wBACEA,8DAIJC,oBAAeC,qCACfC,aAAeC,wBAAcC,IAAIJ,cACnCE,oBACOA,aAAaG,aAGlBC,mCAAa,cAAcC,wBACfP,uDACOC,6EAGXO,SAASF,WAAWG,KAAMH,WAAYA,WAAWI,UACxDJ"}
|
||||
{"version":3,"file":"video_recorder.min.js","sources":["../src/video_recorder.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Tiny Record RTC - Video recorder configuration.\n *\n * @module tiny_recordrtc/video_recorder\n * @copyright 2022 Stevani Andolo <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport BaseClass from './base_recorder';\nimport Modal from 'tiny_recordrtc/modal';\nimport {component} from 'tiny_recordrtc/common';\n\nexport default class Video extends BaseClass {\n configurePlayer() {\n return this.modalRoot.querySelector('video');\n }\n\n getSupportedTypes() {\n return [\n 'video/webm;codecs=vp9,opus',\n 'video/webm;codecs=h264,opus',\n 'video/webm;codecs=vp8,opus',\n ];\n\n }\n\n getParsedRecordingOptions() {\n return {\n audioBitsPerSecond: parseInt(this.config.audiobitrate),\n videoBitsPerSecond: parseInt(this.config.videobitrate)\n };\n }\n\n getMediaConstraints() {\n return {\n audio: true,\n video: {\n width: {\n ideal: 640,\n },\n height: {\n ideal: 480,\n },\n },\n };\n }\n\n playOnCapture() {\n // Play the recording back on capture.\n return true;\n }\n\n getRecordingType() {\n return 'video';\n }\n\n getTimeLimit() {\n return this.config.videotimelimit;\n }\n\n getEmbedTemplateName() {\n return 'tiny_recordrtc/embed_video';\n }\n\n getFileName(prefix) {\n return `${prefix}-video.webm`;\n }\n\n static getModalClass() {\n const VideoModal = class extends Modal {\n static TYPE = `${component}/video_recorder`;\n static TEMPLATE = `${component}/video_recorder`;\n };\n\n VideoModal.registerModalType();\n return VideoModal;\n }\n}\n"],"names":["Video","BaseClass","configurePlayer","this","modalRoot","querySelector","getSupportedTypes","getParsedRecordingOptions","audioBitsPerSecond","parseInt","config","audiobitrate","videoBitsPerSecond","videobitrate","getMediaConstraints","audio","video","width","ideal","height","playOnCapture","getRecordingType","getTimeLimit","videotimelimit","getEmbedTemplateName","getFileName","prefix","VideoModal","Modal","component","registerModalType"],"mappings":"8kBA2BqBA,cAAcC,uBAC/BC,yBACWC,KAAKC,UAAUC,cAAc,SAGxCC,0BACW,CACH,6BACA,8BACA,8BAKRC,kCACW,CACHC,mBAAoBC,SAASN,KAAKO,OAAOC,cACzCC,mBAAoBH,SAASN,KAAKO,OAAOG,eAIjDC,4BACW,CACHC,OAAO,EACPC,MAAO,CACHC,MAAO,CACHC,MAAO,KAEXC,OAAQ,CACJD,MAAO,OAMvBE,uBAEW,EAGXC,yBACW,QAGXC,sBACWnB,KAAKO,OAAOa,eAGvBC,6BACW,6BAGXC,YAAYC,wBACEA,8DAIJC,mCAAa,cAAcC,kCACZC,kFACIA,qDAGzBF,WAAWG,oBACJH"}
|
||||
@@ -23,7 +23,6 @@
|
||||
|
||||
import BaseClass from './base_recorder';
|
||||
import Modal from './modal';
|
||||
import ModalRegistry from 'core/modal_registry';
|
||||
import {component} from 'tiny_recordrtc/common';
|
||||
|
||||
export default class Audio extends BaseClass {
|
||||
@@ -67,18 +66,12 @@ export default class Audio extends BaseClass {
|
||||
}
|
||||
|
||||
static getModalClass() {
|
||||
const modalType = `${component}/audio_recorder`;
|
||||
const registration = ModalRegistry.get(modalType);
|
||||
if (registration) {
|
||||
return registration.module;
|
||||
}
|
||||
|
||||
const AudioModal = class extends Modal {
|
||||
static TYPE = modalType;
|
||||
static TYPE = `${component}/audio_recorder`;
|
||||
static TEMPLATE = `${component}/audio_recorder`;
|
||||
};
|
||||
|
||||
ModalRegistry.register(AudioModal.TYPE, AudioModal, AudioModal.TEMPLATE);
|
||||
AudioModal.registerModalType();
|
||||
return AudioModal;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
|
||||
import BaseClass from './base_recorder';
|
||||
import Modal from 'tiny_recordrtc/modal';
|
||||
import ModalRegistry from 'core/modal_registry';
|
||||
import {component} from 'tiny_recordrtc/common';
|
||||
|
||||
export default class Video extends BaseClass {
|
||||
@@ -83,18 +82,12 @@ export default class Video extends BaseClass {
|
||||
}
|
||||
|
||||
static getModalClass() {
|
||||
const modalType = `${component}/video_recorder`;
|
||||
const registration = ModalRegistry.get(modalType);
|
||||
if (registration) {
|
||||
return registration.module;
|
||||
}
|
||||
|
||||
const VideoModal = class extends Modal {
|
||||
static TYPE = modalType;
|
||||
static TYPE = `${component}/video_recorder`;
|
||||
static TEMPLATE = `${component}/video_recorder`;
|
||||
};
|
||||
|
||||
ModalRegistry.register(VideoModal.TYPE, VideoModal, VideoModal.TEMPLATE);
|
||||
VideoModal.registerModalType();
|
||||
return VideoModal;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,3 @@
|
||||
/**
|
||||
* Load the settings for a message processor.
|
||||
*
|
||||
* @module core_message/notification_processor_settings
|
||||
* @copyright 2016 Ryan Wyllie <ryan@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
define("core_message/notification_processor_settings",["jquery","core/ajax","core/str","core/notification","core/custom_interaction_events","core/modal","core/modal_registry","core/fragment"],(function($,Ajax,Str,Notification,CustomEvents,Modal,ModalRegistry,Fragment){var registered=!1,SELECTORS_SAVE_BUTTON='[data-action="save"]',SELECTORS_CANCEL_BUTTON='[data-action="cancel"]',SELECTORS_PROCESSOR="[data-processor-name]",SELECTORS_PREFERENCE_ROW='[data-region="preference-row"]',NotificationProcessorSettings=function(root){Modal.call(this,root),this.name=null,this.userId=null,this.contextId=null,this.element=null,this.saveButton=this.getFooter().find(SELECTORS_SAVE_BUTTON),this.cancelButton=this.getFooter().find(SELECTORS_CANCEL_BUTTON)};return NotificationProcessorSettings.TYPE="core_message-notification_processor_settings",(NotificationProcessorSettings.prototype=Object.create(Modal.prototype)).constructor=NotificationProcessorSettings,NotificationProcessorSettings.prototype.setUserId=function(id){this.userId=id},NotificationProcessorSettings.prototype.getUserId=function(){return this.userId},NotificationProcessorSettings.prototype.setElement=function(element){this.element=element},NotificationProcessorSettings.prototype.getElement=function(){return this.element},NotificationProcessorSettings.prototype.setName=function(name){this.name=name},NotificationProcessorSettings.prototype.getName=function(){return this.name},NotificationProcessorSettings.prototype.setContextId=function(id){this.contextId=id},NotificationProcessorSettings.prototype.getContextId=function(){return this.contextId},NotificationProcessorSettings.prototype.getForm=function(){return this.getBody().find("form")},NotificationProcessorSettings.prototype.disableButtons=function(){this.saveButton.prop("disabled",!0),this.cancelButton.prop("disabled",!0)},NotificationProcessorSettings.prototype.enableButtons=function(){this.saveButton.prop("disabled",!1),this.cancelButton.prop("disabled",!1)},NotificationProcessorSettings.prototype.loadTitleContent=function(){return this.titlePromise=Str.get_string("processorsettings","message"),this.setTitle(this.titlePromise),this.titlePromise},NotificationProcessorSettings.prototype.loadBodyContent=function(){this.disableButtons();var args={userid:this.getUserId(),type:this.getName()};return this.bodyPromise=Fragment.loadFragment("message","processor_settings",this.getContextId(),args),this.setBody(this.bodyPromise),this.bodyPromise.then(function(){this.enableButtons()}.bind(this)).fail(Notification.exception),this.bodyPromise},NotificationProcessorSettings.prototype.loadAllContent=function(){return $.when(this.loadTitleContent(),this.loadBodyContent())},NotificationProcessorSettings.prototype.show=function(){this.loadAllContent(),Modal.prototype.show.call(this)},NotificationProcessorSettings.prototype.hide=function(){Modal.prototype.hide.call(this),this.setContextId(null),this.setName(null),this.setUserId(null)},NotificationProcessorSettings.prototype.updateConfiguredStatus=function(){var processorHeader=$(this.getElement()).closest(SELECTORS_PROCESSOR);if(!processorHeader.hasClass("unconfigured"))return!1;var processorName=processorHeader.attr("data-processor-name"),request={methodname:"core_message_get_message_processor",args:{name:processorName,userid:this.userId}};return Ajax.call([request])[0].fail(Notification.exception).done((function(result){if(result.userconfigured){var notifications=$(SELECTORS_PREFERENCE_ROW+' [data-processor-name="'+processorName+'"]');processorHeader.removeClass("unconfigured"),notifications.removeClass("disabled")}}))},NotificationProcessorSettings.prototype.registerEventListeners=function(){Modal.prototype.registerEventListeners.call(this),this.getModal().on(CustomEvents.events.activate,SELECTORS_SAVE_BUTTON,function(e,data){this.getForm().submit(),data.originalEvent.preventDefault()}.bind(this)),this.getModal().on("mpp:formsubmitted",function(e){this.hide(),this.updateConfiguredStatus(),e.stopPropagation()}.bind(this)),this.getModal().on(CustomEvents.events.activate,SELECTORS_CANCEL_BUTTON,function(e,data){this.hide(),data.originalEvent.preventDefault(),e.stopPropagation()}.bind(this))},registered||(ModalRegistry.register(NotificationProcessorSettings.TYPE,NotificationProcessorSettings,"core/modal_save_cancel"),registered=!0),NotificationProcessorSettings}));
|
||||
define("core_message/notification_processor_settings",["exports","jquery","core/ajax","core/str","core/notification","core/custom_interaction_events","core/modal","core/fragment"],(function(_exports,_jquery,Ajax,Str,Notification,CustomEvents,_modal,Fragment){function _getRequireWildcardCache(nodeInterop){if("function"!=typeof WeakMap)return null;var cacheBabelInterop=new WeakMap,cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule)return obj;if(null===obj||"object"!=typeof obj&&"function"!=typeof obj)return{default:obj};var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj))return cache.get(obj);var newObj={},hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj)if("default"!==key&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;desc&&(desc.get||desc.set)?Object.defineProperty(newObj,key,desc):newObj[key]=obj[key]}return newObj.default=obj,cache&&cache.set(obj,newObj),newObj}function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_jquery=_interopRequireDefault(_jquery),Ajax=_interopRequireWildcard(Ajax),Str=_interopRequireWildcard(Str),Notification=_interopRequireWildcard(Notification),CustomEvents=_interopRequireWildcard(CustomEvents),_modal=_interopRequireDefault(_modal),Fragment=_interopRequireWildcard(Fragment);const SELECTORS_SAVE_BUTTON='[data-action="save"]',SELECTORS_CANCEL_BUTTON='[data-action="cancel"]',SELECTORS_PROCESSOR="[data-processor-name]",SELECTORS_PREFERENCE_ROW='[data-region="preference-row"]';class NotificationProcessorSettings extends _modal.default{constructor(root){super(root),this.name=null,this.userId=null,this.contextId=null,this.element=null,this.saveButton=this.getFooter().find(SELECTORS_SAVE_BUTTON),this.cancelButton=this.getFooter().find(SELECTORS_CANCEL_BUTTON)}setUserId(id){this.userId=id}getUserId(){return this.userId}setElement(element){this.element=element}getElement(){return this.element}setName(name){this.name=name}getName(){return this.name}setContextId(id){this.contextId=id}getContextId(){return this.contextId}getForm(){return this.getBody().find("form")}disableButtons(){this.saveButton.prop("disabled",!0),this.cancelButton.prop("disabled",!0)}enableButtons(){this.saveButton.prop("disabled",!1),this.cancelButton.prop("disabled",!1)}loadTitleContent(){return this.titlePromise=Str.get_string("processorsettings","message"),this.setTitle(this.titlePromise),this.titlePromise}loadBodyContent(){this.disableButtons();const args={userid:this.getUserId(),type:this.getName()};return this.bodyPromise=Fragment.loadFragment("message","processor_settings",this.getContextId(),args),this.setBody(this.bodyPromise),this.bodyPromise.then((()=>{this.enableButtons()})).catch(Notification.exception),this.bodyPromise}loadAllContent(){return _jquery.default.when(this.loadTitleContent(),this.loadBodyContent())}show(){this.loadAllContent(),super.show(this)}hide(){super.hide(this),this.setContextId(null),this.setName(null),this.setUserId(null)}updateConfiguredStatus(){const processorHeader=(0,_jquery.default)(this.getElement()).closest(SELECTORS_PROCESSOR);if(!processorHeader.hasClass("unconfigured"))return!1;const processorName=processorHeader.attr("data-processor-name"),request={methodname:"core_message_get_message_processor",args:{name:processorName,userid:this.userId}};return Ajax.call([request])[0].then((result=>{if(result.userconfigured){const notifications=(0,_jquery.default)(SELECTORS_PREFERENCE_ROW+' [data-processor-name="'+processorName+'"]');processorHeader.removeClass("unconfigured"),notifications.removeClass("disabled")}return result}))}registerEventListeners(){super.registerEventListeners(this),this.getModal().on(CustomEvents.events.activate,SELECTORS_SAVE_BUTTON,((e,data)=>{this.getForm().submit(),data.originalEvent.preventDefault()})),this.getModal().on("mpp:formsubmitted",(e=>{this.hide(),this.updateConfiguredStatus(),e.stopPropagation()})),this.getModal().on(CustomEvents.events.activate,SELECTORS_CANCEL_BUTTON,((e,data)=>{this.hide(),data.originalEvent.preventDefault(),e.stopPropagation()}))}}return _exports.default=NotificationProcessorSettings,_defineProperty(NotificationProcessorSettings,"TYPE","core_message-notification_processor_settings"),_defineProperty(NotificationProcessorSettings,"TEMPLATE","core/modal_save_cancel"),NotificationProcessorSettings.registerModalType(),_exports.default}));
|
||||
|
||||
//# sourceMappingURL=notification_processor_settings.min.js.map
|
||||
File diff suppressed because one or more lines are too long
@@ -20,34 +20,26 @@
|
||||
* @copyright 2016 Ryan Wyllie <[email protected]>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
define([
|
||||
'jquery',
|
||||
'core/ajax',
|
||||
'core/str',
|
||||
'core/notification',
|
||||
'core/custom_interaction_events',
|
||||
'core/modal',
|
||||
'core/modal_registry',
|
||||
'core/fragment',
|
||||
],
|
||||
function(
|
||||
$,
|
||||
Ajax,
|
||||
Str,
|
||||
Notification,
|
||||
CustomEvents,
|
||||
Modal,
|
||||
ModalRegistry,
|
||||
Fragment
|
||||
) {
|
||||
|
||||
var registered = false;
|
||||
var SELECTORS = {
|
||||
SAVE_BUTTON: '[data-action="save"]',
|
||||
CANCEL_BUTTON: '[data-action="cancel"]',
|
||||
PROCESSOR: '[data-processor-name]',
|
||||
PREFERENCE_ROW: '[data-region="preference-row"]',
|
||||
};
|
||||
|
||||
import $ from 'jquery';
|
||||
import * as Ajax from 'core/ajax';
|
||||
import * as Str from 'core/str';
|
||||
import * as Notification from 'core/notification';
|
||||
import * as CustomEvents from 'core/custom_interaction_events';
|
||||
import Modal from 'core/modal';
|
||||
import * as Fragment from 'core/fragment';
|
||||
|
||||
const SELECTORS = {
|
||||
SAVE_BUTTON: '[data-action="save"]',
|
||||
CANCEL_BUTTON: '[data-action="cancel"]',
|
||||
PROCESSOR: '[data-processor-name]',
|
||||
PREFERENCE_ROW: '[data-region="preference-row"]',
|
||||
};
|
||||
|
||||
export default class NotificationProcessorSettings extends Modal {
|
||||
static TYPE = 'core_message-notification_processor_settings';
|
||||
static TEMPLATE = 'core/modal_save_cancel';
|
||||
|
||||
/**
|
||||
* Constructor for the Modal.
|
||||
@@ -55,19 +47,15 @@ define([
|
||||
* @class
|
||||
* @param {object} root The root jQuery element for the modal.
|
||||
*/
|
||||
var NotificationProcessorSettings = function(root) {
|
||||
Modal.call(this, root);
|
||||
constructor(root) {
|
||||
super(root);
|
||||
this.name = null;
|
||||
this.userId = null;
|
||||
this.contextId = null;
|
||||
this.element = null;
|
||||
this.saveButton = this.getFooter().find(SELECTORS.SAVE_BUTTON);
|
||||
this.cancelButton = this.getFooter().find(SELECTORS.CANCEL_BUTTON);
|
||||
};
|
||||
|
||||
NotificationProcessorSettings.TYPE = 'core_message-notification_processor_settings';
|
||||
NotificationProcessorSettings.prototype = Object.create(Modal.prototype);
|
||||
NotificationProcessorSettings.prototype.constructor = NotificationProcessorSettings;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the userid to the given value.
|
||||
@@ -75,9 +63,9 @@ define([
|
||||
* @method setUserId
|
||||
* @param {int} id The notification userid
|
||||
*/
|
||||
NotificationProcessorSettings.prototype.setUserId = function(id) {
|
||||
setUserId(id) {
|
||||
this.userId = id;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the current userid, if any.
|
||||
@@ -85,9 +73,9 @@ define([
|
||||
* @method getUserId
|
||||
* @return {int|null} The notification userid
|
||||
*/
|
||||
NotificationProcessorSettings.prototype.getUserId = function() {
|
||||
getUserId() {
|
||||
return this.userId;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the object to the given value.
|
||||
@@ -95,9 +83,9 @@ define([
|
||||
* @method setElement
|
||||
* @param {object} element The notification node element.
|
||||
*/
|
||||
NotificationProcessorSettings.prototype.setElement = function(element) {
|
||||
setElement(element) {
|
||||
this.element = element;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the current element, if any.
|
||||
@@ -105,9 +93,9 @@ define([
|
||||
* @method getElement
|
||||
* @return {object|null} The notification node element.
|
||||
*/
|
||||
NotificationProcessorSettings.prototype.getElement = function() {
|
||||
getElement() {
|
||||
return this.element;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the name to the given value.
|
||||
@@ -115,9 +103,9 @@ define([
|
||||
* @method setName
|
||||
* @param {string} name The notification name.
|
||||
*/
|
||||
NotificationProcessorSettings.prototype.setName = function(name) {
|
||||
setName(name) {
|
||||
this.name = name;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the current name, if any.
|
||||
@@ -125,18 +113,18 @@ define([
|
||||
* @method getName
|
||||
* @return {string|null} The notification name.
|
||||
*/
|
||||
NotificationProcessorSettings.prototype.getName = function() {
|
||||
getName() {
|
||||
return this.name;
|
||||
};
|
||||
}
|
||||
/**
|
||||
* Set the context id to the given value.
|
||||
*
|
||||
* @method setContextId
|
||||
* @param {Number} id The notification context id
|
||||
*/
|
||||
NotificationProcessorSettings.prototype.setContextId = function(id) {
|
||||
setContextId(id) {
|
||||
this.contextId = id;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the current context id, if any.
|
||||
@@ -144,9 +132,9 @@ define([
|
||||
* @method getContextId
|
||||
* @return {Number|null} The notification context id
|
||||
*/
|
||||
NotificationProcessorSettings.prototype.getContextId = function() {
|
||||
getContextId() {
|
||||
return this.contextId;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the form element from the modal.
|
||||
@@ -154,29 +142,29 @@ define([
|
||||
* @method getForm
|
||||
* @return {object}
|
||||
*/
|
||||
NotificationProcessorSettings.prototype.getForm = function() {
|
||||
getForm() {
|
||||
return this.getBody().find('form');
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Disable the buttons in the footer.
|
||||
*
|
||||
* @method disableButtons
|
||||
*/
|
||||
NotificationProcessorSettings.prototype.disableButtons = function() {
|
||||
disableButtons() {
|
||||
this.saveButton.prop('disabled', true);
|
||||
this.cancelButton.prop('disabled', true);
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable the buttons in the footer.
|
||||
*
|
||||
* @method enableButtons
|
||||
*/
|
||||
NotificationProcessorSettings.prototype.enableButtons = function() {
|
||||
enableButtons() {
|
||||
this.saveButton.prop('disabled', false);
|
||||
this.cancelButton.prop('disabled', false);
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Load the title for the modal to the appropriate value
|
||||
@@ -185,12 +173,12 @@ define([
|
||||
* @method loadTitleContent
|
||||
* @return {object} A promise resolved with the new title text.
|
||||
*/
|
||||
NotificationProcessorSettings.prototype.loadTitleContent = function() {
|
||||
loadTitleContent() {
|
||||
this.titlePromise = Str.get_string('processorsettings', 'message');
|
||||
this.setTitle(this.titlePromise);
|
||||
|
||||
return this.titlePromise;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Load the body for the modal to the appropriate value
|
||||
@@ -199,10 +187,10 @@ define([
|
||||
* @method loadBodyContent
|
||||
* @return {object} A promise resolved with the fragment html and js from
|
||||
*/
|
||||
NotificationProcessorSettings.prototype.loadBodyContent = function() {
|
||||
loadBodyContent() {
|
||||
this.disableButtons();
|
||||
|
||||
var args = {
|
||||
const args = {
|
||||
userid: this.getUserId(),
|
||||
type: this.getName(),
|
||||
};
|
||||
@@ -210,14 +198,14 @@ define([
|
||||
this.bodyPromise = Fragment.loadFragment('message', 'processor_settings', this.getContextId(), args);
|
||||
this.setBody(this.bodyPromise);
|
||||
|
||||
this.bodyPromise.then(function() {
|
||||
this.bodyPromise.then(() => {
|
||||
this.enableButtons();
|
||||
return;
|
||||
}.bind(this))
|
||||
.fail(Notification.exception);
|
||||
})
|
||||
.catch(Notification.exception);
|
||||
|
||||
return this.bodyPromise;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Load both the title and body content.
|
||||
@@ -225,9 +213,9 @@ define([
|
||||
* @method loadAllContent
|
||||
* @return {object} promise
|
||||
*/
|
||||
NotificationProcessorSettings.prototype.loadAllContent = function() {
|
||||
loadAllContent() {
|
||||
return $.when(this.loadTitleContent(), this.loadBodyContent());
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Load the modal content before showing it. This
|
||||
@@ -236,10 +224,10 @@ define([
|
||||
*
|
||||
* @method show
|
||||
*/
|
||||
NotificationProcessorSettings.prototype.show = function() {
|
||||
show() {
|
||||
this.loadAllContent();
|
||||
Modal.prototype.show.call(this);
|
||||
};
|
||||
super.show(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear the notification from the modal when it's closed so
|
||||
@@ -247,12 +235,12 @@ define([
|
||||
*
|
||||
* @method hide
|
||||
*/
|
||||
NotificationProcessorSettings.prototype.hide = function() {
|
||||
Modal.prototype.hide.call(this);
|
||||
hide() {
|
||||
super.hide(this);
|
||||
this.setContextId(null);
|
||||
this.setName(null);
|
||||
this.setUserId(null);
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the processor has been configured. If so then remove the unconfigured
|
||||
@@ -261,15 +249,15 @@ define([
|
||||
* @method updateConfiguredStatus
|
||||
* @return {Promise|boolean}
|
||||
*/
|
||||
NotificationProcessorSettings.prototype.updateConfiguredStatus = function() {
|
||||
var processorHeader = $(this.getElement()).closest(SELECTORS.PROCESSOR);
|
||||
updateConfiguredStatus() {
|
||||
const processorHeader = $(this.getElement()).closest(SELECTORS.PROCESSOR);
|
||||
|
||||
if (!processorHeader.hasClass('unconfigured')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var processorName = processorHeader.attr('data-processor-name');
|
||||
var request = {
|
||||
const processorName = processorHeader.attr('data-processor-name');
|
||||
const request = {
|
||||
methodname: 'core_message_get_message_processor',
|
||||
args: {
|
||||
name: processorName,
|
||||
@@ -278,56 +266,45 @@ define([
|
||||
};
|
||||
|
||||
return Ajax.call([request])[0]
|
||||
.fail(Notification.exception)
|
||||
.done(function(result) {
|
||||
.then((result) => {
|
||||
// Check if the user has figured configuring the processor.
|
||||
if (result.userconfigured) {
|
||||
// If they have then we can enable the settings.
|
||||
var notifications = $(SELECTORS.PREFERENCE_ROW + ' [data-processor-name="' + processorName + '"]');
|
||||
const notifications = $(SELECTORS.PREFERENCE_ROW + ' [data-processor-name="' + processorName + '"]');
|
||||
processorHeader.removeClass('unconfigured');
|
||||
notifications.removeClass('disabled');
|
||||
}
|
||||
return result;
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Set up all of the event handling for the modal.
|
||||
*
|
||||
* @method registerEventListeners
|
||||
*/
|
||||
NotificationProcessorSettings.prototype.registerEventListeners = function() {
|
||||
registerEventListeners() {
|
||||
// Apply parent event listeners.
|
||||
Modal.prototype.registerEventListeners.call(this);
|
||||
super.registerEventListeners(this);
|
||||
|
||||
// When the user clicks the save button we trigger the form submission.
|
||||
this.getModal().on(CustomEvents.events.activate, SELECTORS.SAVE_BUTTON, function(e, data) {
|
||||
this.getModal().on(CustomEvents.events.activate, SELECTORS.SAVE_BUTTON, (e, data) => {
|
||||
this.getForm().submit();
|
||||
data.originalEvent.preventDefault();
|
||||
}.bind(this));
|
||||
});
|
||||
|
||||
this.getModal().on('mpp:formsubmitted', function(e) {
|
||||
this.getModal().on('mpp:formsubmitted', (e) => {
|
||||
this.hide();
|
||||
this.updateConfiguredStatus();
|
||||
e.stopPropagation();
|
||||
}.bind(this));
|
||||
});
|
||||
|
||||
this.getModal().on(CustomEvents.events.activate, SELECTORS.CANCEL_BUTTON, function(e, data) {
|
||||
this.getModal().on(CustomEvents.events.activate, SELECTORS.CANCEL_BUTTON, (e, data) => {
|
||||
this.hide();
|
||||
data.originalEvent.preventDefault();
|
||||
e.stopPropagation();
|
||||
}.bind(this));
|
||||
};
|
||||
|
||||
// Automatically register with the modal registry the first time this module is imported
|
||||
// so that you can create modals
|
||||
// of this type using the modal factory.
|
||||
if (!registered) {
|
||||
ModalRegistry.register(
|
||||
NotificationProcessorSettings.TYPE,
|
||||
NotificationProcessorSettings,
|
||||
'core/modal_save_cancel');
|
||||
registered = true;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return NotificationProcessorSettings;
|
||||
});
|
||||
NotificationProcessorSettings.registerModalType();
|
||||
|
||||
+1
-8
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-8
@@ -1,10 +1,3 @@
|
||||
/**
|
||||
* Contain the logic for the question bank modal.
|
||||
*
|
||||
* @module mod_quiz/modal_quiz_question_bank
|
||||
* @copyright 2018 Ryan Wyllie <ryan@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
define("mod_quiz/modal_quiz_question_bank",["jquery","core/notification","core/modal","core/modal_events","core/modal_registry","core/fragment","core_form/changechecker"],(function($,Notification,Modal,ModalEvents,ModalRegistry,Fragment,FormChangeChecker){var registered=!1,SELECTORS_ADD_TO_QUIZ_CONTAINER="td.addtoquizaction",SELECTORS_ANCHOR="a[href]",SELECTORS_PREVIEW_CONTAINER="td.previewaction",SELECTORS_SEARCH_OPTIONS="#advancedsearch",SELECTORS_DISPLAY_OPTIONS="#displayoptions",SELECTORS_ADD_QUESTIONS_FORM="form#questionsubmit",ModalQuizQuestionBank=function(root){Modal.call(this,root),this.contextId=null,this.addOnPageId=null};return ModalQuizQuestionBank.TYPE="mod_quiz-quiz-question-bank",(ModalQuizQuestionBank.prototype=Object.create(Modal.prototype)).constructor=ModalQuizQuestionBank,ModalQuizQuestionBank.prototype.setContextId=function(id){this.contextId=id},ModalQuizQuestionBank.prototype.getContextId=function(){return this.contextId},ModalQuizQuestionBank.prototype.setAddOnPageId=function(id){this.addOnPageId=id},ModalQuizQuestionBank.prototype.getAddOnPageId=function(){return this.addOnPageId},ModalQuizQuestionBank.prototype.show=function(){return this.reloadBodyContent(window.location.search),Modal.prototype.show.call(this)},ModalQuizQuestionBank.prototype.reloadBodyContent=function(queryString){var promise=Fragment.loadFragment("mod_quiz","quiz_question_bank",this.getContextId(),{querystring:queryString}).fail(Notification.exception);this.setBody(promise)},ModalQuizQuestionBank.prototype.handleAddToQuizEvent=function(e,anchorElement){var href=anchorElement.attr("href")+"&addonpage="+this.getAddOnPageId();anchorElement.attr("href",href)},ModalQuizQuestionBank.prototype.handlePreviewContainerEvent=function(e,anchorElement){window.openpopup(e,{url:anchorElement.attr("href"),name:"questionpreview",options:["height=600","width=800","top=0","left=0","menubar=0","location=0","scrollbars","resizable","toolbar","status","directories=0","fullscreen=0","dependent"].join(",")})},ModalQuizQuestionBank.prototype.handleDisplayOptionFormEvent=function(e){e.stopPropagation(),e.preventDefault();var queryString="?"+$(e.target).closest(SELECTORS_DISPLAY_OPTIONS).serialize();this.reloadBodyContent(queryString)},ModalQuizQuestionBank.prototype.registerDisplayOptionListeners=function(){this.getModal().on("change",SELECTORS_DISPLAY_OPTIONS,function(e){$(e.target).attr("aria-autocomplete")||this.handleDisplayOptionFormEvent(e)}.bind(this)),this.getModal().on("submit",SELECTORS_DISPLAY_OPTIONS,function(e){this.handleDisplayOptionFormEvent(e)}.bind(this))},ModalQuizQuestionBank.prototype.registerEventListeners=function(){Modal.prototype.registerEventListeners.call(this),this.registerDisplayOptionListeners(),this.getModal().on("submit",SELECTORS_ADD_QUESTIONS_FORM,function(e){var formElement=$(e.currentTarget);$("<input />").attr("type","hidden").attr("name","addonpage").attr("value",this.getAddOnPageId()).appendTo(formElement)}.bind(this)),this.getModal().on("click",SELECTORS_ANCHOR,function(e){var anchorElement=$(e.currentTarget);anchorElement.closest(SELECTORS_ADD_TO_QUIZ_CONTAINER).length?this.handleAddToQuizEvent(e,anchorElement):anchorElement.closest(SELECTORS_PREVIEW_CONTAINER).length?this.handlePreviewContainerEvent(e,anchorElement):anchorElement.closest(SELECTORS_SEARCH_OPTIONS).length||(e.preventDefault(),this.reloadBodyContent(anchorElement.prop("search")))}.bind(this)),this.getRoot().on(ModalEvents.bodyRendered,(function(){FormChangeChecker.disableAllChecks()}))},registered||(ModalRegistry.register(ModalQuizQuestionBank.TYPE,ModalQuizQuestionBank,"core/modal"),registered=!0),ModalQuizQuestionBank}));
|
||||
define("mod_quiz/modal_quiz_question_bank",["exports","jquery","core/modal","core/fragment","core_form/changechecker","core/modal_events"],(function(_exports,_jquery,_modal,Fragment,FormChangeChecker,ModalEvents){function _getRequireWildcardCache(nodeInterop){if("function"!=typeof WeakMap)return null;var cacheBabelInterop=new WeakMap,cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule)return obj;if(null===obj||"object"!=typeof obj&&"function"!=typeof obj)return{default:obj};var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj))return cache.get(obj);var newObj={},hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj)if("default"!==key&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;desc&&(desc.get||desc.set)?Object.defineProperty(newObj,key,desc):newObj[key]=obj[key]}return newObj.default=obj,cache&&cache.set(obj,newObj),newObj}function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_jquery=_interopRequireDefault(_jquery),_modal=_interopRequireDefault(_modal),Fragment=_interopRequireWildcard(Fragment),FormChangeChecker=_interopRequireWildcard(FormChangeChecker),ModalEvents=_interopRequireWildcard(ModalEvents);const SELECTORS_ADD_TO_QUIZ_CONTAINER="td.addtoquizaction",SELECTORS_ANCHOR="a[href]",SELECTORS_PREVIEW_CONTAINER="td.previewaction",SELECTORS_SEARCH_OPTIONS="#advancedsearch",SELECTORS_DISPLAY_OPTIONS="#displayoptions",SELECTORS_ADD_QUESTIONS_FORM="form#questionsubmit";class ModalQuizQuestionBank extends _modal.default{constructor(root){super(root),this.contextId=null,this.addOnPageId=null}setContextId(id){this.contextId=id}getContextId(){return this.contextId}setAddOnPageId(id){this.addOnPageId=id}getAddOnPageId(){return this.addOnPageId}show(){return this.reloadBodyContent(window.location.search),super.show(this)}reloadBodyContent(querystring){this.setBody(Fragment.loadFragment("mod_quiz","quiz_question_bank",this.getContextId(),{querystring:querystring}))}handleAddToQuizEvent(e,anchorElement){const href=new URL(anchorElement.attr("href"));href.searchParams.set("addonpage",this.getAddOnPageId()),anchorElement.attr("href",href)}handlePreviewContainerEvent(e,anchorElement){window.openpopup(e,{url:anchorElement.attr("href"),name:"questionpreview",options:["height=600","width=800","top=0","left=0","menubar=0","location=0","scrollbars","resizable","toolbar","status","directories=0","fullscreen=0","dependent"].join(",")})}handleDisplayOptionFormEvent(e){e.stopPropagation(),e.preventDefault();const queryString="?"+(0,_jquery.default)(e.target).closest(SELECTORS_DISPLAY_OPTIONS).serialize();this.reloadBodyContent(queryString)}registerDisplayOptionListeners(){this.getModal().on("change",SELECTORS_DISPLAY_OPTIONS,(e=>{(0,_jquery.default)(e.target).attr("aria-autocomplete")||this.handleDisplayOptionFormEvent(e)})),this.getModal().on("submit",SELECTORS_DISPLAY_OPTIONS,(e=>{this.handleDisplayOptionFormEvent(e)}))}registerEventListeners(){super.registerEventListeners(this),this.registerDisplayOptionListeners(),this.getModal().on("submit",SELECTORS_ADD_QUESTIONS_FORM,(e=>{const formElement=(0,_jquery.default)(e.currentTarget);(0,_jquery.default)("<input />").attr("type","hidden").attr("name","addonpage").attr("value",this.getAddOnPageId()).appendTo(formElement)})),this.getModal().on("click",SELECTORS_ANCHOR,(e=>{const anchorElement=(0,_jquery.default)(e.currentTarget);anchorElement.closest(SELECTORS_ADD_TO_QUIZ_CONTAINER).length?this.handleAddToQuizEvent(e,anchorElement):anchorElement.closest(SELECTORS_PREVIEW_CONTAINER).length?this.handlePreviewContainerEvent(e,anchorElement):anchorElement.closest(SELECTORS_SEARCH_OPTIONS).length||(e.preventDefault(),this.reloadBodyContent(anchorElement.prop("search")))})),this.getRoot().on(ModalEvents.bodyRendered,(()=>{FormChangeChecker.disableAllChecks()}))}}var obj,key,value;return _exports.default=ModalQuizQuestionBank,value="mod_quiz-quiz-question-bank",(key="TYPE")in(obj=ModalQuizQuestionBank)?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,ModalQuizQuestionBank.registerModalType(),_exports.default}));
|
||||
|
||||
//# sourceMappingURL=modal_quiz_question_bank.min.js.map
|
||||
File diff suppressed because one or more lines are too long
@@ -20,59 +20,45 @@
|
||||
* @copyright 2018 Ryan Wyllie <[email protected]>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
define([
|
||||
'jquery',
|
||||
'core/notification',
|
||||
'core/modal',
|
||||
'core/modal_events',
|
||||
'core/modal_registry',
|
||||
'core/fragment',
|
||||
'core/templates',
|
||||
'core_form/changechecker',
|
||||
],
|
||||
function(
|
||||
$,
|
||||
Notification,
|
||||
Modal,
|
||||
ModalEvents,
|
||||
ModalRegistry,
|
||||
Fragment,
|
||||
Templates,
|
||||
FormChangeChecker,
|
||||
) {
|
||||
|
||||
var registered = false;
|
||||
var SELECTORS = {
|
||||
EXISTING_CATEGORY_CONTAINER: '[data-region="existing-category-container"]',
|
||||
EXISTING_CATEGORY_FORM_ELEMENT: '#id_existingcategoryheader',
|
||||
NEW_CATEGORY_CONTAINER: '[data-region="new-category-container"]',
|
||||
NEW_CATEGORY_FORM_ELEMENT: '#id_newcategoryheader',
|
||||
TAB_CONTENT: '[data-region="tab-content"]',
|
||||
ADD_ON_PAGE_FORM_ELEMENT: '[name="addonpage"]',
|
||||
SUBMIT_BUTTON_ELEMENT: 'input[type="submit"]',
|
||||
CANCEL_BUTTON_ELEMENT: 'input[type="submit"][name="cancel"]',
|
||||
FORM_HEADER: 'legend',
|
||||
BUTTON_CONTAINER: '.fitem'
|
||||
};
|
||||
import $ from 'jquery';
|
||||
import Modal from 'core/modal';
|
||||
import * as Notification from 'core/notification';
|
||||
import * as Fragment from 'core/fragment';
|
||||
import * as Templates from 'core/templates';
|
||||
import * as FormChangeChecker from 'core_form/changechecker';
|
||||
|
||||
const SELECTORS = {
|
||||
EXISTING_CATEGORY_CONTAINER: '[data-region="existing-category-container"]',
|
||||
EXISTING_CATEGORY_FORM_ELEMENT: '#id_existingcategoryheader',
|
||||
NEW_CATEGORY_CONTAINER: '[data-region="new-category-container"]',
|
||||
NEW_CATEGORY_FORM_ELEMENT: '#id_newcategoryheader',
|
||||
TAB_CONTENT: '[data-region="tab-content"]',
|
||||
ADD_ON_PAGE_FORM_ELEMENT: '[name="addonpage"]',
|
||||
SUBMIT_BUTTON_ELEMENT: 'input[type="submit"]',
|
||||
CANCEL_BUTTON_ELEMENT: 'input[type="submit"][name="cancel"]',
|
||||
FORM_HEADER: 'legend',
|
||||
BUTTON_CONTAINER: '.fitem',
|
||||
};
|
||||
|
||||
export default class ModalAddRandomQuestion extends Modal {
|
||||
static TYPE = 'mod_quiz-quiz-add-random-question';
|
||||
static TEMPLATE = 'mod_quiz/modal_add_random_question';
|
||||
|
||||
/**
|
||||
* Constructor for the Modal.
|
||||
*
|
||||
* @param {object} root The root jQuery element for the modal
|
||||
*/
|
||||
var ModalAddRandomQuestion = function(root) {
|
||||
Modal.call(this, root);
|
||||
constructor(root) {
|
||||
super(root);
|
||||
this.contextId = null;
|
||||
this.addOnPageId = null;
|
||||
this.category = null;
|
||||
this.returnUrl = null;
|
||||
this.cmid = null;
|
||||
this.loadedForm = false;
|
||||
};
|
||||
|
||||
ModalAddRandomQuestion.TYPE = 'mod_quiz-quiz-add-random-question';
|
||||
ModalAddRandomQuestion.prototype = Object.create(Modal.prototype);
|
||||
ModalAddRandomQuestion.prototype.constructor = ModalAddRandomQuestion;
|
||||
}
|
||||
|
||||
/**
|
||||
* Save the Moodle context id that the question bank is being
|
||||
@@ -81,9 +67,9 @@ function(
|
||||
* @method setContextId
|
||||
* @param {int} id
|
||||
*/
|
||||
ModalAddRandomQuestion.prototype.setContextId = function(id) {
|
||||
setContextId(id) {
|
||||
this.contextId = id;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the saved Moodle context id.
|
||||
@@ -91,9 +77,9 @@ function(
|
||||
* @method getContextId
|
||||
* @return {int}
|
||||
*/
|
||||
ModalAddRandomQuestion.prototype.getContextId = function() {
|
||||
getContextId() {
|
||||
return this.contextId;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the id of the page that the question should be added to
|
||||
@@ -102,10 +88,10 @@ function(
|
||||
* @method setAddOnPageId
|
||||
* @param {int} id
|
||||
*/
|
||||
ModalAddRandomQuestion.prototype.setAddOnPageId = function(id) {
|
||||
setAddOnPageId(id) {
|
||||
this.addOnPageId = id;
|
||||
this.getBody().find(SELECTORS.ADD_ON_PAGE_FORM_ELEMENT).val(id);
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the saved page id for the question to be added to.
|
||||
@@ -113,9 +99,9 @@ function(
|
||||
* @method getAddOnPageId
|
||||
* @return {int}
|
||||
*/
|
||||
ModalAddRandomQuestion.prototype.getAddOnPageId = function() {
|
||||
getAddOnPageId() {
|
||||
return this.addOnPageId;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the category for this form. The category is a comma separated
|
||||
@@ -124,9 +110,9 @@ function(
|
||||
* @method setCategory
|
||||
* @param {string} category
|
||||
*/
|
||||
ModalAddRandomQuestion.prototype.setCategory = function(category) {
|
||||
setCategory(category) {
|
||||
this.category = category;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the saved category.
|
||||
@@ -134,9 +120,9 @@ function(
|
||||
* @method getCategory
|
||||
* @return {string}
|
||||
*/
|
||||
ModalAddRandomQuestion.prototype.getCategory = function() {
|
||||
getCategory() {
|
||||
return this.category;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the return URL for the form.
|
||||
@@ -144,9 +130,9 @@ function(
|
||||
* @method setReturnUrl
|
||||
* @param {string} url
|
||||
*/
|
||||
ModalAddRandomQuestion.prototype.setReturnUrl = function(url) {
|
||||
setReturnUrl(url) {
|
||||
this.returnUrl = url;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the return URL for the form.
|
||||
@@ -154,9 +140,9 @@ function(
|
||||
* @method getReturnUrl
|
||||
* @return {string}
|
||||
*/
|
||||
ModalAddRandomQuestion.prototype.getReturnUrl = function() {
|
||||
getReturnUrl() {
|
||||
return this.returnUrl;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the course module id for the form.
|
||||
@@ -164,9 +150,9 @@ function(
|
||||
* @method setCMID
|
||||
* @param {int} id
|
||||
*/
|
||||
ModalAddRandomQuestion.prototype.setCMID = function(id) {
|
||||
setCMID(id) {
|
||||
this.cmid = id;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the course module id for the form.
|
||||
@@ -174,9 +160,9 @@ function(
|
||||
* @method getCMID
|
||||
* @return {int}
|
||||
*/
|
||||
ModalAddRandomQuestion.prototype.getCMID = function() {
|
||||
getCMID() {
|
||||
return this.cmid;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Moves a given form element inside (a child of) a given tab element.
|
||||
@@ -191,9 +177,9 @@ function(
|
||||
* @param {jquery} formElement The form element to move into the tab.
|
||||
* @param {jquey} tabElement The tab element for the form element to move into.
|
||||
*/
|
||||
ModalAddRandomQuestion.prototype.moveFormElementIntoTab = function(formElement, tabElement) {
|
||||
var submitButtons = formElement.find(SELECTORS.SUBMIT_BUTTON_ELEMENT);
|
||||
var footer = $('<div class="modal-footer mt-1" data-region="footer"></div>');
|
||||
moveFormElementIntoTab(formElement, tabElement) {
|
||||
const submitButtons = formElement.find(SELECTORS.SUBMIT_BUTTON_ELEMENT);
|
||||
const footer = $('<div class="modal-footer mt-1" data-region="footer"></div>');
|
||||
// Hide the header because the tabs show us which part of the form we're
|
||||
// looking at.
|
||||
formElement.find(SELECTORS.FORM_HEADER).addClass('hidden');
|
||||
@@ -205,7 +191,7 @@ function(
|
||||
submitButtons.appendTo(footer);
|
||||
// Add the footer to the end of the category form element.
|
||||
footer.appendTo(formElement);
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Empty the tab content container and move all tabs from the form into the
|
||||
@@ -214,12 +200,12 @@ function(
|
||||
* @method moveTabsIntoTabContent
|
||||
* @param {jquery} form The form element.
|
||||
*/
|
||||
ModalAddRandomQuestion.prototype.moveTabsIntoTabContent = function(form) {
|
||||
moveTabsIntoTabContent(form) {
|
||||
// Empty it to remove the loading icon.
|
||||
var tabContent = this.getBody().find(SELECTORS.TAB_CONTENT).empty();
|
||||
const tabContent = this.getBody().find(SELECTORS.TAB_CONTENT).empty();
|
||||
// Make sure all tabs are inside the tab content element.
|
||||
form.find('[role="tabpanel"]').wrapAll(tabContent);
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Make sure all of the tabs have a cancel button in their fotter to sit along
|
||||
@@ -228,13 +214,13 @@ function(
|
||||
* @method moveCancelButtonToTabs
|
||||
* @param {jquey} form The form element.
|
||||
*/
|
||||
ModalAddRandomQuestion.prototype.moveCancelButtonToTabs = function(form) {
|
||||
var cancelButton = form.find(SELECTORS.CANCEL_BUTTON_ELEMENT).addClass('ml-1');
|
||||
var tabFooters = form.find('[data-region="footer"]');
|
||||
moveCancelButtonToTabs(form) {
|
||||
const cancelButton = form.find(SELECTORS.CANCEL_BUTTON_ELEMENT).addClass('ml-1');
|
||||
const tabFooters = form.find('[data-region="footer"]');
|
||||
// Remove the buttons container element.
|
||||
cancelButton.closest(SELECTORS.BUTTON_CONTAINER).remove();
|
||||
cancelButton.clone().appendTo(tabFooters);
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Load the add random question form in a fragement and perform some transformation
|
||||
@@ -243,7 +229,7 @@ function(
|
||||
* @method loadForm
|
||||
* @return {promise} Resolved with form HTML and JS.
|
||||
*/
|
||||
ModalAddRandomQuestion.prototype.loadForm = function() {
|
||||
loadForm() {
|
||||
return Fragment.loadFragment(
|
||||
'mod_quiz',
|
||||
'add_random_question_form',
|
||||
@@ -255,12 +241,12 @@ function(
|
||||
cmid: this.getCMID()
|
||||
}
|
||||
)
|
||||
.then(function(html, js) {
|
||||
var form = $(html);
|
||||
var existingCategoryFormElement = form.find(SELECTORS.EXISTING_CATEGORY_FORM_ELEMENT);
|
||||
var existingCategoryTab = this.getBody().find(SELECTORS.EXISTING_CATEGORY_CONTAINER);
|
||||
var newCategoryFormElement = form.find(SELECTORS.NEW_CATEGORY_FORM_ELEMENT);
|
||||
var newCategoryTab = this.getBody().find(SELECTORS.NEW_CATEGORY_CONTAINER);
|
||||
.then((html, js) =>{
|
||||
const form = $(html);
|
||||
const existingCategoryFormElement = form.find(SELECTORS.EXISTING_CATEGORY_FORM_ELEMENT);
|
||||
const existingCategoryTab = this.getBody().find(SELECTORS.EXISTING_CATEGORY_CONTAINER);
|
||||
const newCategoryFormElement = form.find(SELECTORS.NEW_CATEGORY_FORM_ELEMENT);
|
||||
const newCategoryTab = this.getBody().find(SELECTORS.NEW_CATEGORY_CONTAINER);
|
||||
|
||||
// Transform the form into tabs for better rendering in the modal.
|
||||
this.moveFormElementIntoTab(existingCategoryFormElement, existingCategoryTab);
|
||||
@@ -270,15 +256,15 @@ function(
|
||||
|
||||
Templates.replaceNode(this.getBody().find(SELECTORS.TAB_CONTENT), form, js);
|
||||
return;
|
||||
}.bind(this))
|
||||
.then(function() {
|
||||
})
|
||||
.then(() => {
|
||||
// Make sure the form change checker is disabled otherwise it'll stop the user from navigating away from the
|
||||
// page once the modal is hidden.
|
||||
FormChangeChecker.disableAllChecks();
|
||||
return;
|
||||
})
|
||||
.fail(Notification.exception);
|
||||
};
|
||||
.catch(Notification.exception);
|
||||
}
|
||||
|
||||
/**
|
||||
* Override the modal show function to load the form when this modal is first
|
||||
@@ -286,26 +272,14 @@ function(
|
||||
*
|
||||
* @method show
|
||||
*/
|
||||
ModalAddRandomQuestion.prototype.show = function() {
|
||||
Modal.prototype.show.call(this);
|
||||
show() {
|
||||
super.show(this);
|
||||
|
||||
if (!this.loadedForm) {
|
||||
this.loadForm();
|
||||
this.loadedForm = true;
|
||||
}
|
||||
};
|
||||
|
||||
// Automatically register with the modal registry the first time this module is
|
||||
// imported so that you can create modals of this type using the modal factory.
|
||||
if (!registered) {
|
||||
ModalRegistry.register(
|
||||
ModalAddRandomQuestion.TYPE,
|
||||
ModalAddRandomQuestion,
|
||||
'mod_quiz/modal_add_random_question'
|
||||
);
|
||||
|
||||
registered = true;
|
||||
}
|
||||
}
|
||||
|
||||
return ModalAddRandomQuestion;
|
||||
});
|
||||
ModalAddRandomQuestion.registerModalType();
|
||||
|
||||
@@ -20,50 +20,36 @@
|
||||
* @copyright 2018 Ryan Wyllie <[email protected]>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
define([
|
||||
'jquery',
|
||||
'core/notification',
|
||||
'core/modal',
|
||||
'core/modal_events',
|
||||
'core/modal_registry',
|
||||
'core/fragment',
|
||||
'core_form/changechecker',
|
||||
],
|
||||
function(
|
||||
$,
|
||||
Notification,
|
||||
Modal,
|
||||
ModalEvents,
|
||||
ModalRegistry,
|
||||
Fragment,
|
||||
FormChangeChecker,
|
||||
) {
|
||||
|
||||
var registered = false;
|
||||
var SELECTORS = {
|
||||
ADD_TO_QUIZ_CONTAINER: 'td.addtoquizaction',
|
||||
ANCHOR: 'a[href]',
|
||||
PREVIEW_CONTAINER: 'td.previewaction',
|
||||
SEARCH_OPTIONS: '#advancedsearch',
|
||||
DISPLAY_OPTIONS: '#displayoptions',
|
||||
ADD_QUESTIONS_FORM: 'form#questionsubmit',
|
||||
};
|
||||
import $ from 'jquery';
|
||||
import Modal from 'core/modal';
|
||||
import * as Fragment from 'core/fragment';
|
||||
import * as FormChangeChecker from 'core_form/changechecker';
|
||||
import * as ModalEvents from 'core/modal_events';
|
||||
|
||||
const SELECTORS = {
|
||||
ADD_TO_QUIZ_CONTAINER: 'td.addtoquizaction',
|
||||
ANCHOR: 'a[href]',
|
||||
PREVIEW_CONTAINER: 'td.previewaction',
|
||||
SEARCH_OPTIONS: '#advancedsearch',
|
||||
DISPLAY_OPTIONS: '#displayoptions',
|
||||
ADD_QUESTIONS_FORM: 'form#questionsubmit',
|
||||
};
|
||||
|
||||
export default class ModalQuizQuestionBank extends Modal {
|
||||
static TYPE = 'mod_quiz-quiz-question-bank';
|
||||
|
||||
/**
|
||||
* Constructor for the Modal.
|
||||
*
|
||||
* @param {object} root The root jQuery element for the modal
|
||||
*/
|
||||
var ModalQuizQuestionBank = function(root) {
|
||||
Modal.call(this, root);
|
||||
constructor(root) {
|
||||
super(root);
|
||||
|
||||
this.contextId = null;
|
||||
this.addOnPageId = null;
|
||||
};
|
||||
|
||||
ModalQuizQuestionBank.TYPE = 'mod_quiz-quiz-question-bank';
|
||||
ModalQuizQuestionBank.prototype = Object.create(Modal.prototype);
|
||||
ModalQuizQuestionBank.prototype.constructor = ModalQuizQuestionBank;
|
||||
}
|
||||
|
||||
/**
|
||||
* Save the Moodle context id that the question bank is being
|
||||
@@ -72,9 +58,9 @@ function(
|
||||
* @method setContextId
|
||||
* @param {int} id
|
||||
*/
|
||||
ModalQuizQuestionBank.prototype.setContextId = function(id) {
|
||||
setContextId(id) {
|
||||
this.contextId = id;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the saved Moodle context id.
|
||||
@@ -82,9 +68,9 @@ function(
|
||||
* @method getContextId
|
||||
* @return {int}
|
||||
*/
|
||||
ModalQuizQuestionBank.prototype.getContextId = function() {
|
||||
getContextId() {
|
||||
return this.contextId;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the id of the page that the question should be added to
|
||||
@@ -93,9 +79,9 @@ function(
|
||||
* @method setAddOnPageId
|
||||
* @param {int} id
|
||||
*/
|
||||
ModalQuizQuestionBank.prototype.setAddOnPageId = function(id) {
|
||||
setAddOnPageId(id) {
|
||||
this.addOnPageId = id;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the saved page id for the question to be added it.
|
||||
@@ -103,9 +89,9 @@ function(
|
||||
* @method getAddOnPageId
|
||||
* @return {int}
|
||||
*/
|
||||
ModalQuizQuestionBank.prototype.getAddOnPageId = function() {
|
||||
getAddOnPageId() {
|
||||
return this.addOnPageId;
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Override the parent show function.
|
||||
@@ -117,10 +103,10 @@ function(
|
||||
* @method show
|
||||
* @return {void}
|
||||
*/
|
||||
ModalQuizQuestionBank.prototype.show = function() {
|
||||
show() {
|
||||
this.reloadBodyContent(window.location.search);
|
||||
return Modal.prototype.show.call(this);
|
||||
};
|
||||
return super.show(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Replaces the current body contents with a new version of the question
|
||||
@@ -130,21 +116,19 @@ function(
|
||||
* query string.
|
||||
*
|
||||
* @method reloadBodyContent
|
||||
* @param {string} queryString URL encoded string.
|
||||
* @param {string} querystring URL encoded string.
|
||||
*/
|
||||
ModalQuizQuestionBank.prototype.reloadBodyContent = function(queryString) {
|
||||
reloadBodyContent(querystring) {
|
||||
// Load the question bank fragment to be displayed in the modal.
|
||||
var promise = Fragment.loadFragment(
|
||||
this.setBody(Fragment.loadFragment(
|
||||
'mod_quiz',
|
||||
'quiz_question_bank',
|
||||
this.getContextId(),
|
||||
{
|
||||
querystring: queryString
|
||||
querystring,
|
||||
}
|
||||
).fail(Notification.exception);
|
||||
|
||||
this.setBody(promise);
|
||||
};
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the URL of the anchor element that the user clicked on to make
|
||||
@@ -154,14 +138,15 @@ function(
|
||||
* @param {event} e A JavaScript event
|
||||
* @param {object} anchorElement The anchor element that was triggered
|
||||
*/
|
||||
ModalQuizQuestionBank.prototype.handleAddToQuizEvent = function(e, anchorElement) {
|
||||
handleAddToQuizEvent(e, anchorElement) {
|
||||
// If the user clicks the plus icon to add the question to the page
|
||||
// directly then we need to intercept the click in order to adjust the
|
||||
// href and include the correct add on page id before the page is
|
||||
// redirected.
|
||||
var href = anchorElement.attr('href') + '&addonpage=' + this.getAddOnPageId();
|
||||
const href = new URL(anchorElement.attr('href'));
|
||||
href.searchParams.set('addonpage', this.getAddOnPageId());
|
||||
anchorElement.attr('href', href);
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Open a popup window to show the preview of the question.
|
||||
@@ -170,8 +155,8 @@ function(
|
||||
* @param {event} e A JavaScript event
|
||||
* @param {object} anchorElement The anchor element that was triggered
|
||||
*/
|
||||
ModalQuizQuestionBank.prototype.handlePreviewContainerEvent = function(e, anchorElement) {
|
||||
var popupOptions = [
|
||||
handlePreviewContainerEvent(e, anchorElement) {
|
||||
const popupOptions = [
|
||||
'height=600',
|
||||
'width=800',
|
||||
'top=0',
|
||||
@@ -184,14 +169,14 @@ function(
|
||||
'status',
|
||||
'directories=0',
|
||||
'fullscreen=0',
|
||||
'dependent'
|
||||
'dependent',
|
||||
];
|
||||
window.openpopup(e, {
|
||||
url: anchorElement.attr('href'),
|
||||
name: 'questionpreview',
|
||||
options: popupOptions.join(',')
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Reload the modal body with the new display options the user has selected.
|
||||
@@ -202,16 +187,16 @@ function(
|
||||
* @method handleDisplayOptionFormEvent
|
||||
* @param {event} e A JavaScript event
|
||||
*/
|
||||
ModalQuizQuestionBank.prototype.handleDisplayOptionFormEvent = function(e) {
|
||||
handleDisplayOptionFormEvent(e) {
|
||||
// Stop propagation to prevent other wild event handlers
|
||||
// from submitting the form on change.
|
||||
e.stopPropagation();
|
||||
e.preventDefault();
|
||||
|
||||
var form = $(e.target).closest(SELECTORS.DISPLAY_OPTIONS);
|
||||
var queryString = '?' + form.serialize();
|
||||
const form = $(e.target).closest(SELECTORS.DISPLAY_OPTIONS);
|
||||
const queryString = '?' + form.serialize();
|
||||
this.reloadBodyContent(queryString);
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Listen for changes to the display options form.
|
||||
@@ -224,11 +209,11 @@ function(
|
||||
*
|
||||
* @method registerDisplayOptionListeners
|
||||
*/
|
||||
ModalQuizQuestionBank.prototype.registerDisplayOptionListeners = function() {
|
||||
registerDisplayOptionListeners() {
|
||||
// Listen for changes to the display options form.
|
||||
this.getModal().on('change', SELECTORS.DISPLAY_OPTIONS, function(e) {
|
||||
this.getModal().on('change', SELECTORS.DISPLAY_OPTIONS, (e) => {
|
||||
// Get the element that was changed.
|
||||
var modifiedElement = $(e.target);
|
||||
const modifiedElement = $(e.target);
|
||||
if (modifiedElement.attr('aria-autocomplete')) {
|
||||
// If the element that was change is the autocomplete
|
||||
// input then we should ignore it because that is for
|
||||
@@ -237,41 +222,41 @@ function(
|
||||
}
|
||||
|
||||
this.handleDisplayOptionFormEvent(e);
|
||||
}.bind(this));
|
||||
});
|
||||
|
||||
// Listen for the display options form submission because the tags
|
||||
// filter will submit the form when it is changed.
|
||||
this.getModal().on('submit', SELECTORS.DISPLAY_OPTIONS, function(e) {
|
||||
this.getModal().on('submit', SELECTORS.DISPLAY_OPTIONS, (e) => {
|
||||
this.handleDisplayOptionFormEvent(e);
|
||||
}.bind(this));
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Set up all of the event handling for the modal.
|
||||
*
|
||||
* @method registerEventListeners
|
||||
*/
|
||||
ModalQuizQuestionBank.prototype.registerEventListeners = function() {
|
||||
registerEventListeners() {
|
||||
// Apply parent event listeners.
|
||||
Modal.prototype.registerEventListeners.call(this);
|
||||
super.registerEventListeners(this);
|
||||
|
||||
// Set up the event handlers for all of the display options.
|
||||
this.registerDisplayOptionListeners();
|
||||
|
||||
this.getModal().on('submit', SELECTORS.ADD_QUESTIONS_FORM, function(e) {
|
||||
this.getModal().on('submit', SELECTORS.ADD_QUESTIONS_FORM, (e) => {
|
||||
// If the user clicks on the "Add selected questions to the quiz" button to add some questions to the page
|
||||
// then we need to intercept the submit in order to include the correct "add on page id" before the form is
|
||||
// submitted.
|
||||
var formElement = $(e.currentTarget);
|
||||
const formElement = $(e.currentTarget);
|
||||
|
||||
$('<input />').attr('type', 'hidden')
|
||||
.attr('name', "addonpage")
|
||||
.attr('value', this.getAddOnPageId())
|
||||
.appendTo(formElement);
|
||||
}.bind(this));
|
||||
});
|
||||
|
||||
this.getModal().on('click', SELECTORS.ANCHOR, function(e) {
|
||||
var anchorElement = $(e.currentTarget);
|
||||
this.getModal().on('click', SELECTORS.ANCHOR, (e) => {
|
||||
const anchorElement = $(e.currentTarget);
|
||||
|
||||
// If the anchor element was the add to quiz link.
|
||||
if (anchorElement.closest(SELECTORS.ADD_TO_QUIZ_CONTAINER).length) {
|
||||
@@ -294,27 +279,15 @@ function(
|
||||
// Anything else means reload the pop-up contents.
|
||||
e.preventDefault();
|
||||
this.reloadBodyContent(anchorElement.prop('search'));
|
||||
}.bind(this));
|
||||
});
|
||||
|
||||
// Disable the form change checker when the body is rendered.
|
||||
this.getRoot().on(ModalEvents.bodyRendered, function() {
|
||||
this.getRoot().on(ModalEvents.bodyRendered, () => {
|
||||
// Make sure the form change checker is disabled otherwise it'll stop the user from navigating away from the
|
||||
// page once the modal is hidden.
|
||||
FormChangeChecker.disableAllChecks();
|
||||
});
|
||||
};
|
||||
|
||||
// Automatically register with the modal registry the first time this module is
|
||||
// imported so that you can create modals of this type using the modal factory.
|
||||
if (!registered) {
|
||||
ModalRegistry.register(
|
||||
ModalQuizQuestionBank.TYPE,
|
||||
ModalQuizQuestionBank,
|
||||
'core/modal'
|
||||
);
|
||||
|
||||
registered = true;
|
||||
}
|
||||
}
|
||||
|
||||
return ModalQuizQuestionBank;
|
||||
});
|
||||
ModalQuizQuestionBank.registerModalType();
|
||||
|
||||
+1
-8
@@ -1,10 +1,3 @@
|
||||
define("core_payment/modal_gateways",["exports","jquery","core/custom_interaction_events","core/modal","core/modal_events","core_payment/events","core/modal_registry"],(function(_exports,_jquery,_custom_interaction_events,_modal,_modal_events,_events,_modal_registry){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}
|
||||
/**
|
||||
* Contain the logic for the gateways modal: A modal with proceed and cancel buttons.
|
||||
*
|
||||
* @module core_payment/modal_gateways
|
||||
* @copyright 2020 Shamim Rezaie <shamim@moodle.com>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_jquery=_interopRequireDefault(_jquery),_custom_interaction_events=_interopRequireDefault(_custom_interaction_events),_modal=_interopRequireDefault(_modal),_modal_events=_interopRequireDefault(_modal_events),_events=_interopRequireDefault(_events),_modal_registry=_interopRequireDefault(_modal_registry);let registered=!1;const SELECTORS_PROCEED_BUTTON='[data-action="proceed"]',SELECTORS_CANCEL_BUTTON='[data-action="cancel"]';class ModalGateways extends _modal.default{constructor(root){super(root)}registerEventListeners(){super.registerEventListeners(),this.getModal().on(_custom_interaction_events.default.events.activate,SELECTORS_PROCEED_BUTTON,((e,data)=>{var proceedEvent=_jquery.default.Event(_events.default.proceed);this.getRoot().trigger(proceedEvent,this),proceedEvent.isDefaultPrevented()||(this.hide(),data.originalEvent.preventDefault())})),this.getModal().on(_custom_interaction_events.default.events.activate,SELECTORS_CANCEL_BUTTON,((e,data)=>{var cancelEvent=_jquery.default.Event(_modal_events.default.cancel);this.getRoot().trigger(cancelEvent,this),cancelEvent.isDefaultPrevented()||(this.hide(),data.originalEvent.preventDefault())}))}}return _exports.default=ModalGateways,ModalGateways.TYPE="core_payment-modal_gateways",registered||(_modal_registry.default.register(ModalGateways.TYPE,ModalGateways,"core_payment/modal_gateways"),registered=!0),_exports.default}));
|
||||
define("core_payment/modal_gateways",["exports","jquery","core/custom_interaction_events","core/modal","core/modal_events","core_payment/events"],(function(_exports,_jquery,_custom_interaction_events,_modal,_modal_events,_events){function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}Object.defineProperty(_exports,"__esModule",{value:!0}),_exports.default=void 0,_jquery=_interopRequireDefault(_jquery),_custom_interaction_events=_interopRequireDefault(_custom_interaction_events),_modal=_interopRequireDefault(_modal),_modal_events=_interopRequireDefault(_modal_events),_events=_interopRequireDefault(_events);const SELECTORS_PROCEED_BUTTON='[data-action="proceed"]',SELECTORS_CANCEL_BUTTON='[data-action="cancel"]';class ModalGateways extends _modal.default{constructor(root){super(root)}registerEventListeners(){super.registerEventListeners(),this.getModal().on(_custom_interaction_events.default.events.activate,SELECTORS_PROCEED_BUTTON,((e,data)=>{var proceedEvent=_jquery.default.Event(_events.default.proceed);this.getRoot().trigger(proceedEvent,this),proceedEvent.isDefaultPrevented()||(this.hide(),data.originalEvent.preventDefault())})),this.getModal().on(_custom_interaction_events.default.events.activate,SELECTORS_CANCEL_BUTTON,((e,data)=>{var cancelEvent=_jquery.default.Event(_modal_events.default.cancel);this.getRoot().trigger(cancelEvent,this),cancelEvent.isDefaultPrevented()||(this.hide(),data.originalEvent.preventDefault())}))}}return _exports.default=ModalGateways,_defineProperty(ModalGateways,"TYPE","core_payment-modal_gateways"),_defineProperty(ModalGateways,"TEMPLATE","core_payment/modal_gateways"),ModalGateways.registerModalType(),_exports.default}));
|
||||
|
||||
//# sourceMappingURL=modal_gateways.min.js.map
|
||||
@@ -1 +1 @@
|
||||
{"version":3,"file":"modal_gateways.min.js","sources":["../src/modal_gateways.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Contain the logic for the gateways modal: A modal with proceed and cancel buttons.\n *\n * @module core_payment/modal_gateways\n * @copyright 2020 Shamim Rezaie <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport $ from 'jquery';\nimport CustomEvents from 'core/custom_interaction_events';\nimport Modal from 'core/modal';\nimport ModalEvents from 'core/modal_events';\nimport PaymentEvents from 'core_payment/events';\nimport ModalRegistry from 'core/modal_registry';\n\nlet registered = false;\nconst SELECTORS = {\n PROCEED_BUTTON: '[data-action=\"proceed\"]',\n CANCEL_BUTTON: '[data-action=\"cancel\"]',\n};\n\nexport default class ModalGateways extends Modal {\n\n /**\n * Constructor for the Modal.\n *\n * @param {object} root The root jQuery element for the modal\n */\n constructor(root) {\n super(root);\n }\n\n /**\n * Set up all of the event handling for the modal.\n *\n * @method registerEventListeners\n */\n registerEventListeners() {\n // Apply parent event listeners.\n super.registerEventListeners();\n\n this.getModal().on(CustomEvents.events.activate, SELECTORS.PROCEED_BUTTON, (e, data) => {\n var proceedEvent = $.Event(PaymentEvents.proceed);\n this.getRoot().trigger(proceedEvent, this);\n\n if (!proceedEvent.isDefaultPrevented()) {\n this.hide();\n data.originalEvent.preventDefault();\n }\n });\n\n this.getModal().on(CustomEvents.events.activate, SELECTORS.CANCEL_BUTTON, (e, data) => {\n var cancelEvent = $.Event(ModalEvents.cancel);\n this.getRoot().trigger(cancelEvent, this);\n\n if (!cancelEvent.isDefaultPrevented()) {\n this.hide();\n data.originalEvent.preventDefault();\n }\n });\n }\n}\n\nModalGateways.TYPE = 'core_payment-modal_gateways';\n\n// Automatically register with the modal registry the first time this module is imported so that you can create modals\n// of this type using the modal factory.\nif (!registered) {\n ModalRegistry.register(ModalGateways.TYPE, ModalGateways, 'core_payment/modal_gateways');\n registered = true;\n}\n"],"names":["registered","SELECTORS","ModalGateways","Modal","constructor","root","registerEventListeners","getModal","on","CustomEvents","events","activate","e","data","proceedEvent","$","Event","PaymentEvents","proceed","getRoot","trigger","this","isDefaultPrevented","hide","originalEvent","preventDefault","cancelEvent","ModalEvents","cancel","TYPE","register"],"mappings":";;;;;;;yYA8BIA,YAAa,QACXC,yBACc,0BADdA,wBAEa,+BAGEC,sBAAsBC,eAOvCC,YAAYC,YACFA,MAQVC,+BAEUA,8BAEDC,WAAWC,GAAGC,mCAAaC,OAAOC,SAAUV,0BAA0B,CAACW,EAAGC,YACvEC,aAAeC,gBAAEC,MAAMC,gBAAcC,cACpCC,UAAUC,QAAQN,aAAcO,MAEhCP,aAAaQ,4BACTC,OACLV,KAAKW,cAAcC,0BAItBlB,WAAWC,GAAGC,mCAAaC,OAAOC,SAAUV,yBAAyB,CAACW,EAAGC,YACtEa,YAAcX,gBAAEC,MAAMW,sBAAYC,aACjCT,UAAUC,QAAQM,YAAaL,MAE/BK,YAAYJ,4BACRC,OACLV,KAAKW,cAAcC,4DAMnCvB,cAAc2B,KAAO,8BAIhB7B,qCACa8B,SAAS5B,cAAc2B,KAAM3B,cAAe,+BAC1DF,YAAa"}
|
||||
{"version":3,"file":"modal_gateways.min.js","sources":["../src/modal_gateways.js"],"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 <http://www.gnu.org/licenses/>.\n\n/**\n * Contain the logic for the gateways modal: A modal with proceed and cancel buttons.\n *\n * @module core_payment/modal_gateways\n * @copyright 2020 Shamim Rezaie <[email protected]>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport $ from 'jquery';\nimport CustomEvents from 'core/custom_interaction_events';\nimport Modal from 'core/modal';\nimport ModalEvents from 'core/modal_events';\nimport PaymentEvents from 'core_payment/events';\n\nconst SELECTORS = {\n PROCEED_BUTTON: '[data-action=\"proceed\"]',\n CANCEL_BUTTON: '[data-action=\"cancel\"]',\n};\n\nexport default class ModalGateways extends Modal {\n static TYPE = 'core_payment-modal_gateways';\n static TEMPLATE = 'core_payment/modal_gateways';\n\n /**\n * Constructor for the Modal.\n *\n * @param {object} root The root jQuery element for the modal\n */\n constructor(root) {\n super(root);\n }\n\n /**\n * Set up all of the event handling for the modal.\n *\n * @method registerEventListeners\n */\n registerEventListeners() {\n // Apply parent event listeners.\n super.registerEventListeners();\n\n this.getModal().on(CustomEvents.events.activate, SELECTORS.PROCEED_BUTTON, (e, data) => {\n var proceedEvent = $.Event(PaymentEvents.proceed);\n this.getRoot().trigger(proceedEvent, this);\n\n if (!proceedEvent.isDefaultPrevented()) {\n this.hide();\n data.originalEvent.preventDefault();\n }\n });\n\n this.getModal().on(CustomEvents.events.activate, SELECTORS.CANCEL_BUTTON, (e, data) => {\n var cancelEvent = $.Event(ModalEvents.cancel);\n this.getRoot().trigger(cancelEvent, this);\n\n if (!cancelEvent.isDefaultPrevented()) {\n this.hide();\n data.originalEvent.preventDefault();\n }\n });\n }\n}\n\nModalGateways.registerModalType();\n"],"names":["SELECTORS","ModalGateways","Modal","constructor","root","registerEventListeners","getModal","on","CustomEvents","events","activate","e","data","proceedEvent","$","Event","PaymentEvents","proceed","getRoot","trigger","this","isDefaultPrevented","hide","originalEvent","preventDefault","cancelEvent","ModalEvents","cancel","registerModalType"],"mappings":"0yBA6BMA,yBACc,0BADdA,wBAEa,+BAGEC,sBAAsBC,eASvCC,YAAYC,YACFA,MAQVC,+BAEUA,8BAEDC,WAAWC,GAAGC,mCAAaC,OAAOC,SAAUV,0BAA0B,CAACW,EAAGC,YACvEC,aAAeC,gBAAEC,MAAMC,gBAAcC,cACpCC,UAAUC,QAAQN,aAAcO,MAEhCP,aAAaQ,4BACTC,OACLV,KAAKW,cAAcC,0BAItBlB,WAAWC,GAAGC,mCAAaC,OAAOC,SAAUV,yBAAyB,CAACW,EAAGC,YACtEa,YAAcX,gBAAEC,MAAMW,sBAAYC,aACjCT,UAAUC,QAAQM,YAAaL,MAE/BK,YAAYJ,4BACRC,OACLV,KAAKW,cAAcC,4EAtCdvB,qBACH,+CADGA,yBAEC,+BA0CtBA,cAAc2B"}
|
||||
@@ -26,15 +26,15 @@ import CustomEvents from 'core/custom_interaction_events';
|
||||
import Modal from 'core/modal';
|
||||
import ModalEvents from 'core/modal_events';
|
||||
import PaymentEvents from 'core_payment/events';
|
||||
import ModalRegistry from 'core/modal_registry';
|
||||
|
||||
let registered = false;
|
||||
const SELECTORS = {
|
||||
PROCEED_BUTTON: '[data-action="proceed"]',
|
||||
CANCEL_BUTTON: '[data-action="cancel"]',
|
||||
};
|
||||
|
||||
export default class ModalGateways extends Modal {
|
||||
static TYPE = 'core_payment-modal_gateways';
|
||||
static TEMPLATE = 'core_payment/modal_gateways';
|
||||
|
||||
/**
|
||||
* Constructor for the Modal.
|
||||
@@ -76,11 +76,4 @@ export default class ModalGateways extends Modal {
|
||||
}
|
||||
}
|
||||
|
||||
ModalGateways.TYPE = 'core_payment-modal_gateways';
|
||||
|
||||
// Automatically register with the modal registry the first time this module is imported so that you can create modals
|
||||
// of this type using the modal factory.
|
||||
if (!registered) {
|
||||
ModalRegistry.register(ModalGateways.TYPE, ModalGateways, 'core_payment/modal_gateways');
|
||||
registered = true;
|
||||
}
|
||||
ModalGateways.registerModalType();
|
||||
|
||||
Reference in New Issue
Block a user