X7ROOT File Manager
Current Path:
/home/cbholdings/pasukulu/lib/amd/src
home
/
cbholdings
/
pasukulu
/
lib
/
amd
/
src
/
📁
..
📄
adapter.js
(123.08 KB)
📄
addblockmodal.js
(4.4 KB)
📄
ajax.js
(11.97 KB)
📄
aria.js
(1011 B)
📄
auto_rows.js
(3.46 KB)
📄
autoscroll.js
(6.49 KB)
📄
backoff_timer.js
(4.98 KB)
📄
chart_axis.js
(7.39 KB)
📄
chart_bar.js
(3.08 KB)
📄
chart_base.js
(11.36 KB)
📄
chart_builder.js
(1.65 KB)
📄
chart_line.js
(2.08 KB)
📄
chart_output.js
(1.08 KB)
📄
chart_output_base.js
(2.03 KB)
📄
chart_output_chartjs.js
(10.86 KB)
📄
chart_output_htmltable.js
(3.3 KB)
📄
chart_pie.js
(3.03 KB)
📄
chart_series.js
(8.35 KB)
📄
chartjs-lazy.js
(488.32 KB)
📄
chartjs.js
(913 B)
📄
checkbox-toggleall.js
(12.78 KB)
📄
config.js
(1002 B)
📄
copy_to_clipboard.js
(7.39 KB)
📄
custom_interaction_events.js
(22.18 KB)
📁
datafilter
📄
datafilter.js
(15.28 KB)
📄
dragdrop.js
(12.92 KB)
📄
drawer.js
(3.49 KB)
📄
drawer_events.js
(967 B)
📄
dynamic_tabs.js
(6.68 KB)
📄
edit_switch.js
(3.45 KB)
📁
emoji
📄
event.js
(3.11 KB)
📄
event_dispatcher.js
(2.79 KB)
📄
first.js
(1.36 KB)
📄
form-autocomplete.js
(51.21 KB)
📄
form-cohort-selector.js
(2.46 KB)
📄
form-course-selector.js
(3.77 KB)
📄
fragment.js
(5.03 KB)
📄
fullscreen.js
(1.62 KB)
📄
icon_system.js
(2.56 KB)
📄
icon_system_fontawesome.js
(4.01 KB)
📄
icon_system_standard.js
(2.3 KB)
📄
inplace_editable.js
(17.25 KB)
📄
key_codes.js
(1.34 KB)
📄
loadingicon.js
(3.88 KB)
📁
local
📄
localstorage.js
(2.08 KB)
📄
log.js
(1.74 KB)
📄
loglevel.js
(10.63 KB)
📄
menu_navigation.js
(9.2 KB)
📄
modal.js
(31.18 KB)
📄
modal_backdrop.js
(4.46 KB)
📄
modal_cancel.js
(1.49 KB)
📄
modal_copy_to_clipboard.js
(3.82 KB)
📄
modal_delete_cancel.js
(2.22 KB)
📄
modal_events.js
(1.35 KB)
📄
modal_factory.js
(8.97 KB)
📄
modal_registry.js
(2.38 KB)
📄
modal_save_cancel.js
(2.21 KB)
📁
moodlenet
📄
moremenu.js
(10.3 KB)
📄
mustache.js
(28.75 KB)
📄
network.js
(9.66 KB)
📄
normalise.js
(1.9 KB)
📄
notification.js
(11.8 KB)
📄
page_global.js
(5.38 KB)
📄
paged_content.js
(2.87 KB)
📄
paged_content_events.js
(1.17 KB)
📄
paged_content_factory.js
(20.93 KB)
📄
paged_content_pages.js
(11.75 KB)
📄
paged_content_paging_bar.js
(20.36 KB)
📄
paged_content_paging_bar_limit_selector.js
(2.36 KB)
📄
paged_content_paging_dropdown.js
(7.36 KB)
📄
pending.js
(4.48 KB)
📄
permissionmanager.js
(9.77 KB)
📄
popover_region_controller.js
(13.04 KB)
📄
popper.js
(79.2 KB)
📄
prefetch.js
(5.85 KB)
📄
process_monitor.js
(3.55 KB)
📄
pubsub.js
(2.17 KB)
📄
reactive.js
(1.38 KB)
📄
scroll_manager.js
(5.5 KB)
📄
sessionstorage.js
(2.22 KB)
📄
showhidesettings.js
(11.82 KB)
📄
sortable_list.js
(29.51 KB)
📄
sticky-footer.js
(2.58 KB)
📄
storagewrapper.js
(5.21 KB)
📄
str.js
(7.84 KB)
📄
tag.js
(19.84 KB)
📄
templates.js
(51.36 KB)
📄
toast.js
(3.32 KB)
📄
tooltip.js
(4.09 KB)
📄
tree.js
(18.39 KB)
📄
truncate.js
(6.56 KB)
📄
url.js
(3.65 KB)
📄
user_date.js
(9.32 KB)
📄
userfeedback.js
(2.91 KB)
📄
usermenu.js
(5.13 KB)
📄
utility.js
(6.15 KB)
📄
utils.js
(2.73 KB)
📄
yui.js
(1.13 KB)
Editing: notification.js
// This file is part of Moodle - http://moodle.org/ // // Moodle is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Moodle is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Moodle. If not, see <http://www.gnu.org/licenses/>. /** * Notification manager for in-page notifications in Moodle. * * @module core/notification * @copyright 2015 Damyon Wiese <damyon@moodle.com> * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later * @since 2.9 */ import Pending from 'core/pending'; import Log from 'core/log'; let currentContextId = M.cfg.contextid; const notificationTypes = { success: 'core/notification_success', info: 'core/notification_info', warning: 'core/notification_warning', error: 'core/notification_error', }; const notificationRegionId = 'user-notifications'; const Selectors = { notificationRegion: `#${notificationRegionId}`, fallbackRegionParents: [ '#region-main', '[role="main"]', 'body', ], }; const setupTargetRegion = () => { let targetRegion = getNotificationRegion(); if (targetRegion) { return false; } const newRegion = document.createElement('span'); newRegion.id = notificationRegionId; return Selectors.fallbackRegionParents.some(selector => { const targetRegion = document.querySelector(selector); if (targetRegion) { targetRegion.prepend(newRegion); return true; } return false; }); }; /** * A notification object displayed to a user. * * @typedef {Object} Notification * @property {string} message The body of the notification * @property {string} type The type of notification to add (error, warning, info, success). * @property {Boolean} closebutton Whether to show the close button. * @property {Boolean} announce Whether to announce to screen readers. */ /** * Poll the server for any new notifications. * * @method * @returns {Promise} */ export const fetchNotifications = async() => { const Ajax = await import('core/ajax'); return Ajax.call([{ methodname: 'core_fetch_notifications', args: { contextid: currentContextId } }])[0] .then(addNotifications); }; /** * Add all of the supplied notifications. * * @method * @param {Notification[]} notifications The list of notificaitons * @returns {Promise} */ const addNotifications = notifications => { if (!notifications.length) { return Promise.resolve(); } const pendingPromise = new Pending('core/notification:addNotifications'); notifications.forEach(notification => renderNotification(notification.template, notification.variables)); return pendingPromise.resolve(); }; /** * Add a notification to the page. * * Note: This does not cause the notification to be added to the session. * * @method * @param {Notification} notification The notification to add. * @returns {Promise} */ export const addNotification = notification => { const pendingPromise = new Pending('core/notification:addNotifications'); let template = notificationTypes.error; notification = { closebutton: true, announce: true, type: 'error', ...notification, }; if (notification.template) { template = notification.template; delete notification.template; } else if (notification.type) { if (typeof notificationTypes[notification.type] !== 'undefined') { template = notificationTypes[notification.type]; } delete notification.type; } return renderNotification(template, notification) .then(pendingPromise.resolve); }; const renderNotification = async(template, variables) => { if (typeof variables.message === 'undefined' || !variables.message) { Log.debug('Notification received without content. Skipping.'); return; } const pendingPromise = new Pending('core/notification:renderNotification'); const Templates = await import('core/templates'); Templates.renderForPromise(template, variables) .then(({html, js = ''}) => { Templates.prependNodeContents(getNotificationRegion(), html, js); return; }) .then(pendingPromise.resolve) .catch(exception); }; const getNotificationRegion = () => document.querySelector(Selectors.notificationRegion); /** * Alert dialogue. * * @method * @param {String|Promise} title * @param {String|Promise} message * @param {String|Promise} cancelText * @returns {Promise} */ export const alert = async(title, message, cancelText) => { var pendingPromise = new Pending('core/notification:alert'); const ModalFactory = await import('core/modal_factory'); return ModalFactory.create({ type: ModalFactory.types.ALERT, body: message, title: title, buttons: { cancel: cancelText, }, removeOnClose: true, }) .then(function(modal) { modal.show(); pendingPromise.resolve(); return modal; }); }; /** * The confirm has now been replaced with a save and cancel dialogue. * * @method * @param {String|Promise} title * @param {String|Promise} question * @param {String|Promise} saveLabel * @param {String|Promise} noLabel * @param {String|Promise} saveCallback * @param {String|Promise} cancelCallback * @returns {Promise} */ export const confirm = (title, question, saveLabel, noLabel, saveCallback, cancelCallback) => saveCancel(title, question, saveLabel, saveCallback, cancelCallback); /** * The Save and Cancel dialogue helper. * * @method * @param {String|Promise} title * @param {String|Promise} question * @param {String|Promise} saveLabel * @param {String|Promise} saveCallback * @param {String|Promise} cancelCallback * @param {Object} options * @param {HTMLElement} [options.triggerElement=null] The element that triggered the modal (will receive the focus after hidden) * @returns {Promise} */ export const saveCancel = async(title, question, saveLabel, saveCallback, cancelCallback, { triggerElement = null, } = {}) => { const pendingPromise = new Pending('core/notification:confirm'); const [ ModalFactory, ModalEvents, ] = await Promise.all([ import('core/modal_factory'), import('core/modal_events'), ]); return ModalFactory.create({ type: ModalFactory.types.SAVE_CANCEL, title: title, body: question, buttons: { // Note: The noLabel is no longer supported. save: saveLabel, }, removeOnClose: true, }) .then(function(modal) { modal.show(); modal.getRoot().on(ModalEvents.save, saveCallback); modal.getRoot().on(ModalEvents.cancel, cancelCallback); modal.getRoot().on(ModalEvents.hidden, () => triggerElement?.focus()); pendingPromise.resolve(); return modal; }); }; /** * The Delete and Cancel dialogue helper. * * @method * @param {String|Promise} title * @param {String|Promise} question * @param {String|Promise} deleteLabel * @param {String|Promise} deleteCallback * @param {String|Promise} cancelCallback * @param {Object} options * @param {HTMLElement} [options.triggerElement=null] The element that triggered the modal (will receive the focus after hidden) * @returns {Promise} */ export const deleteCancel = async(title, question, deleteLabel, deleteCallback, cancelCallback, { triggerElement = null, } = {}) => { const pendingPromise = new Pending('core/notification:confirm'); const [ ModalFactory, ModalEvents, ] = await Promise.all([ import('core/modal_factory'), import('core/modal_events'), ]); return ModalFactory.create({ type: ModalFactory.types.DELETE_CANCEL, title: title, body: question, buttons: { 'delete': deleteLabel }, removeOnClose: true, }) .then(function(modal) { modal.show(); modal.getRoot().on(ModalEvents.delete, deleteCallback); modal.getRoot().on(ModalEvents.cancel, cancelCallback); modal.getRoot().on(ModalEvents.hidden, () => triggerElement?.focus()); pendingPromise.resolve(); return modal; }); }; /** * Add all of the supplied notifications. * * @param {Promise|String} title The header of the modal * @param {Promise|String} question What do we want the user to confirm * @param {Promise|String} saveLabel The modal action link text * @param {Object} options * @param {HTMLElement} [options.triggerElement=null] The element that triggered the modal (will receive the focus after hidden) * @return {Promise} */ export const saveCancelPromise = (title, question, saveLabel, { triggerElement = null, } = {}) => new Promise((resolve, reject) => { saveCancel(title, question, saveLabel, resolve, reject, {triggerElement}); }); /** * Add all of the supplied notifications. * * @param {Promise|String} title The header of the modal * @param {Promise|String} question What do we want the user to confirm * @param {Promise|String} deleteLabel The modal action link text * @param {Object} options * @param {HTMLElement} [options.triggerElement=null] The element that triggered the modal (will receive the focus after hidden) * @return {Promise} */ export const deleteCancelPromise = (title, question, deleteLabel, { triggerElement = null, } = {}) => new Promise((resolve, reject) => { deleteCancel(title, question, deleteLabel, resolve, reject, {triggerElement}); }); /** * Wrap M.core.exception. * * @method * @param {Error} ex */ export const exception = async ex => { const pendingPromise = new Pending('core/notification:displayException'); // Fudge some parameters. if (!ex.stack) { ex.stack = ''; } if (ex.debuginfo) { ex.stack += ex.debuginfo + '\n'; } if (!ex.backtrace && ex.stacktrace) { ex.backtrace = ex.stacktrace; } if (ex.backtrace) { ex.stack += ex.backtrace; const ln = ex.backtrace.match(/line ([^ ]*) of/); const fn = ex.backtrace.match(/ of ([^:]*): /); if (ln && ln[1]) { ex.lineNumber = ln[1]; } if (fn && fn[1]) { ex.fileName = fn[1]; if (ex.fileName.length > 30) { ex.fileName = '...' + ex.fileName.substr(ex.fileName.length - 27); } } } if (typeof ex.name === 'undefined' && ex.errorcode) { ex.name = ex.errorcode; } const Y = await import('core/yui'); Y.use('moodle-core-notification-exception', function() { var modal = new M.core.exception(ex); modal.show(); pendingPromise.resolve(); }); }; /** * Initialise the page for the suppled context, and displaying the supplied notifications. * * @method * @param {Number} contextId * @param {Notification[]} notificationList */ export const init = (contextId, notificationList) => { currentContextId = contextId; // Setup the message target region if it isn't setup already. setupTargetRegion(); // Add provided notifications. addNotifications(notificationList); }; // To maintain backwards compatability we export default here. export default { init, fetchNotifications, addNotification, alert, confirm, saveCancel, saveCancelPromise, deleteCancelPromise, exception, };
Upload File
Create Folder