diff options
author | Roeland Jago Douma <rullzer@users.noreply.github.com> | 2019-02-01 08:20:03 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-01 08:20:03 +0100 |
commit | dc3b44c02dc316215f10eb1e92d1b09328465470 (patch) | |
tree | a44609185e85074414a60dfe62a0936d75adb600 /core/js/js.js | |
parent | 2124ff65b673698dcb305b835b3ba4bbd438c074 (diff) | |
parent | 3d1a3b66442698601597d4f777d47d5f0ea744c2 (diff) | |
download | nextcloud-server-dc3b44c02dc316215f10eb1e92d1b09328465470.tar.gz nextcloud-server-dc3b44c02dc316215f10eb1e92d1b09328465470.zip |
Merge pull request #13956 from nextcloud/refactor/oc-plugins-msg-notifications-II
Move OC.Plugins, OC.msg and OC.Notification to the server bundle
Diffstat (limited to 'core/js/js.js')
-rw-r--r-- | core/js/js.js | 392 |
1 files changed, 0 insertions, 392 deletions
diff --git a/core/js/js.js b/core/js/js.js index ec2f53d332f..114f51bd535 100644 --- a/core/js/js.js +++ b/core/js/js.js @@ -871,96 +871,6 @@ Object.assign(window.OC, { }); /** - * Current user attributes - * - * @typedef {Object} OC.CurrentUser - * - * @property {String} uid user id - * @property {String} displayName display name - */ - -/** - * @namespace OC.Plugins - */ -OC.Plugins = { - /** - * @type Array.<OC.Plugin> - */ - _plugins: {}, - - /** - * Register plugin - * - * @param {String} targetName app name / class name to hook into - * @param {OC.Plugin} plugin - */ - register: function(targetName, plugin) { - var plugins = this._plugins[targetName]; - if (!plugins) { - plugins = this._plugins[targetName] = []; - } - plugins.push(plugin); - }, - - /** - * Returns all plugin registered to the given target - * name / app name / class name. - * - * @param {String} targetName app name / class name to hook into - * @return {Array.<OC.Plugin>} array of plugins - */ - getPlugins: function(targetName) { - return this._plugins[targetName] || []; - }, - - /** - * Call attach() on all plugins registered to the given target name. - * - * @param {String} targetName app name / class name - * @param {Object} object to be extended - * @param {Object} [options] options - */ - attach: function(targetName, targetObject, options) { - var plugins = this.getPlugins(targetName); - for (var i = 0; i < plugins.length; i++) { - if (plugins[i].attach) { - plugins[i].attach(targetObject, options); - } - } - }, - - /** - * Call detach() on all plugins registered to the given target name. - * - * @param {String} targetName app name / class name - * @param {Object} object to be extended - * @param {Object} [options] options - */ - detach: function(targetName, targetObject, options) { - var plugins = this.getPlugins(targetName); - for (var i = 0; i < plugins.length; i++) { - if (plugins[i].detach) { - plugins[i].detach(targetObject, options); - } - } - }, - - /** - * Plugin - * - * @todo make this a real class in the future - * @typedef {Object} OC.Plugin - * - * @property {String} name plugin name - * @property {Function} attach function that will be called when the - * plugin is attached - * @property {Function} [detach] function that will be called when the - * plugin is detached - */ - -}; - -/** * @namespace OC.search */ OC.search.customResults = {}; @@ -973,308 +883,6 @@ OC.addStyle.loaded=[]; OC.addScript.loaded=[]; /** - * A little class to manage a status field for a "saving" process. - * It can be used to display a starting message (e.g. "Saving...") and then - * replace it with a green success message or a red error message. - * - * @namespace OC.msg - */ -OC.msg = { - /** - * Displayes a "Saving..." message in the given message placeholder - * - * @param {Object} selector Placeholder to display the message in - */ - startSaving: function(selector) { - this.startAction(selector, t('core', 'Saving...')); - }, - - /** - * Displayes a custom message in the given message placeholder - * - * @param {Object} selector Placeholder to display the message in - * @param {string} message Plain text message to display (no HTML allowed) - */ - startAction: function(selector, message) { - $(selector).text(message) - .removeClass('success') - .removeClass('error') - .stop(true, true) - .show(); - }, - - /** - * Displayes an success/error message in the given selector - * - * @param {Object} selector Placeholder to display the message in - * @param {Object} response Response of the server - * @param {Object} response.data Data of the servers response - * @param {string} response.data.message Plain text message to display (no HTML allowed) - * @param {string} response.status is being used to decide whether the message - * is displayed as an error/success - */ - finishedSaving: function(selector, response) { - this.finishedAction(selector, response); - }, - - /** - * Displayes an success/error message in the given selector - * - * @param {Object} selector Placeholder to display the message in - * @param {Object} response Response of the server - * @param {Object} response.data Data of the servers response - * @param {string} response.data.message Plain text message to display (no HTML allowed) - * @param {string} response.status is being used to decide whether the message - * is displayed as an error/success - */ - finishedAction: function(selector, response) { - if (response.status === "success") { - this.finishedSuccess(selector, response.data.message); - } else { - this.finishedError(selector, response.data.message); - } - }, - - /** - * Displayes an success message in the given selector - * - * @param {Object} selector Placeholder to display the message in - * @param {string} message Plain text success message to display (no HTML allowed) - */ - finishedSuccess: function(selector, message) { - $(selector).text(message) - .addClass('success') - .removeClass('error') - .stop(true, true) - .delay(3000) - .fadeOut(900) - .show(); - }, - - /** - * Displayes an error message in the given selector - * - * @param {Object} selector Placeholder to display the message in - * @param {string} message Plain text error message to display (no HTML allowed) - */ - finishedError: function(selector, message) { - $(selector).text(message) - .addClass('error') - .removeClass('success') - .show(); - } -}; - -/** - * @todo Write documentation - * @namespace - */ -OC.Notification={ - queuedNotifications: [], - getDefaultNotificationFunction: null, - - /** - * @type Array<int> - * @description array of notification timers - */ - notificationTimers: [], - - /** - * @param callback - * @todo Write documentation - */ - setDefault: function(callback) { - OC.Notification.getDefaultNotificationFunction = callback; - }, - - /** - * Hides a notification. - * - * If a row is given, only hide that one. - * If no row is given, hide all notifications. - * - * @param {jQuery} [$row] notification row - * @param {Function} [callback] callback - */ - hide: function($row, callback) { - var self = this; - var $notification = $('#notification'); - - if (_.isFunction($row)) { - // first arg is the callback - callback = $row; - $row = undefined; - } - - if (!$row) { - console.warn('Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification'); - // assume that the row to be hidden is the first one - $row = $notification.find('.row:first'); - } - - if ($row && $notification.find('.row').length > 1) { - // remove the row directly - $row.remove(); - if (callback) { - callback.call(); - } - return; - } - - _.defer(function() { - // fade out is supposed to only fade when there is a single row - // however, some code might call hide() and show() directly after, - // which results in more than one element - // in this case, simply delete that one element that was supposed to - // fade out - // - // FIXME: remove once all callers are adjusted to only hide their own notifications - if ($notification.find('.row').length > 1) { - $row.remove(); - return; - } - - // else, fade out whatever was present - $notification.fadeOut('400', function(){ - if (self.isHidden()) { - if (self.getDefaultNotificationFunction) { - self.getDefaultNotificationFunction.call(); - } - } - if (callback) { - callback.call(); - } - $notification.empty(); - }); - }); - }, - - /** - * Shows a notification as HTML without being sanitized before. - * If you pass unsanitized user input this may lead to a XSS vulnerability. - * Consider using show() instead of showHTML() - * - * @param {string} html Message to display - * @param {Object} [options] options - * @param {string} [options.type] notification type - * @param {int} [options.timeout=0] timeout value, defaults to 0 (permanent) - * @return {jQuery} jQuery element for notification row - */ - showHtml: function(html, options) { - options = options || {}; - _.defaults(options, { - timeout: 0 - }); - - var self = this; - var $notification = $('#notification'); - if (this.isHidden()) { - $notification.fadeIn().css('display','inline-block'); - } - var $row = $('<div class="row"></div>'); - if (options.type) { - $row.addClass('type-' + options.type); - } - if (options.type === 'error') { - // add a close button - var $closeButton = $('<a class="action close icon-close" href="#"></a>'); - $closeButton.attr('alt', t('core', 'Dismiss')); - $row.append($closeButton); - $closeButton.one('click', function() { - self.hide($row); - return false; - }); - $row.addClass('closeable'); - } - - $row.prepend(html); - $notification.append($row); - - if(options.timeout > 0) { - // register timeout to vanish notification - this.notificationTimers.push(setTimeout(function() { - self.hide($row); - }, (options.timeout * 1000))); - } - - return $row; - }, - - /** - * Shows a sanitized notification - * - * @param {string} text Message to display - * @param {Object} [options] options - * @param {string} [options.type] notification type - * @param {int} [options.timeout=0] timeout value, defaults to 0 (permanent) - * @return {jQuery} jQuery element for notification row - */ - show: function(text, options) { - return this.showHtml($('<div/>').text(text).html(), options); - }, - - /** - * Updates (replaces) a sanitized notification. - * - * @param {string} text Message to display - * @return {jQuery} JQuery element for notificaiton row - */ - showUpdate: function(text) { - var $notification = $('#notification'); - // sanitise - var $html = $('<div/>').text(text).html(); - - // new notification - if (text && $notification.find('.row').length == 0) { - return this.showHtml($html); - } - - var $row = $('<div class="row"></div>').prepend($html); - - // just update html in notification - $notification.html($row); - - return $row; - }, - - /** - * Shows a notification that disappears after x seconds, default is - * 7 seconds - * - * @param {string} text Message to show - * @param {array} [options] options array - * @param {int} [options.timeout=7] timeout in seconds, if this is 0 it will show the message permanently - * @param {boolean} [options.isHTML=false] an indicator for HTML notifications (true) or text (false) - * @param {string} [options.type] notification type - */ - showTemporary: function(text, options) { - var defaults = { - isHTML: false, - timeout: 7 - }; - options = options || {}; - // merge defaults with passed in options - _.defaults(options, defaults); - - var $row; - if(options.isHTML) { - $row = this.showHtml(text, options); - } else { - $row = this.show(text, options); - } - return $row; - }, - - /** - * Returns whether a notification is hidden. - * @return {boolean} - */ - isHidden: function() { - return !$("#notification").find('.row').length; - } -}; - -/** * Initializes core */ function initCore() { |