diff --git a/typo3/sysext/backend/Classes/Controller/BackendController.php b/typo3/sysext/backend/Classes/Controller/BackendController.php index f31c84d76ca0c484dd590591c48efb0296e0c12c..658825a9f5737b3626edc418ef5ca3c294134364 100644 --- a/typo3/sysext/backend/Classes/Controller/BackendController.php +++ b/typo3/sysext/backend/Classes/Controller/BackendController.php @@ -133,8 +133,8 @@ class BackendController { }'); } - // load FlashMessages functionality - $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/FlashMessages'); + // load Notification functionality + $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/Notification'); // load Modals $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/Modal'); diff --git a/typo3/sysext/backend/Resources/Public/JavaScript/AjaxDataHandler.js b/typo3/sysext/backend/Resources/Public/JavaScript/AjaxDataHandler.js index c01d994c5c699b97cc1eca4b53409e093855f9dd..31dbb6fafc59141836cbd4637f3f45e4e801398b 100644 --- a/typo3/sysext/backend/Resources/Public/JavaScript/AjaxDataHandler.js +++ b/typo3/sysext/backend/Resources/Public/JavaScript/AjaxDataHandler.js @@ -14,7 +14,7 @@ /** * AjaxDataHandler - Javascript functions to work with AJAX and interacting with tce_db.php */ -define('TYPO3/CMS/Backend/AjaxDataHandler', ['jquery', 'TYPO3/CMS/Backend/FlashMessages', 'TYPO3/CMS/Backend/Modal'], function ($) { +define('TYPO3/CMS/Backend/AjaxDataHandler', ['jquery', 'TYPO3/CMS/Backend/Notification', 'TYPO3/CMS/Backend/Modal'], function ($) { var AjaxDataHandler = {}; /** @@ -84,7 +84,7 @@ define('TYPO3/CMS/Backend/AjaxDataHandler', ['jquery', 'TYPO3/CMS/Backend/FlashM $(document).on('click', '.t3js-record-delete', function(evt) { evt.preventDefault(); var $anchorElement = $(this); - TYPO3.Modal.confirm($anchorElement.data('title'), $anchorElement.data('message'), TYPO3.Severity.error, [ + TYPO3.Modal.confirm($anchorElement.data('title'), $anchorElement.data('message'), top.TYPO3.Severity.error, [ { text: $(this).data('button-close-text') || TYPO3.lang['button.cancel'] || 'Close', active: true, @@ -166,7 +166,7 @@ define('TYPO3/CMS/Backend/AjaxDataHandler', ['jquery', 'TYPO3/CMS/Backend/FlashM */ AjaxDataHandler.handleErrors = function(result) { $.each(result.messages, function(position, message) { - top.TYPO3.Flashmessage.display(message.severity, message.title, message.message); + top.TYPO3.Notification.error(message.title, message.message); }); }; diff --git a/typo3/sysext/backend/Resources/Public/JavaScript/FlashMessages.js b/typo3/sysext/backend/Resources/Public/JavaScript/FlashMessages.js deleted file mode 100644 index 2e8a2616b67f9c0796b17e8eac18986137d59bc6..0000000000000000000000000000000000000000 --- a/typo3/sysext/backend/Resources/Public/JavaScript/FlashMessages.js +++ /dev/null @@ -1,130 +0,0 @@ -/* - * This file is part of the TYPO3 CMS project. - * - * It is free software; you can redistribute it and/or modify it under - * the terms of the GNU General Public License, either version 2 - * of the License, or any later version. - * - * For the full copyright and license information, please read the - * LICENSE.txt file that was distributed with this source code. - * - * The TYPO3 project - inspiring people to share! - */ - -/** - * FlashMessage rendered by jQuery - * - * @author Steffen Kamper <info@sk-typo3.de> (ExtJS) - * @author Frank Nägler <typo3@naegler.net> (jQuery) - */ - -define('TYPO3/CMS/Backend/FlashMessages', ['jquery'], function ($) { - var Severity = { - notice: -2, - // @deprecated since TYPO3 CMS 7, will be removed in TYPO3 CMS 9, use info instead of information - information: -1, - info: -1, - ok: 0, - warning: 1, - error: 2 - }; - - var Flashmessage = { - messageContainer: null - }; - - /** - * Shows popup - * @member TYPO3.Flashmessage - * @param int severity (TYPO3.Severity.*) - * @param string title - * @param string message - * @param float duration in sec (default 5) - */ - Flashmessage.display = function (severity, title, message, duration) { - var className = ''; - var icon = ''; - switch (severity) { - case TYPO3.Severity.notice: - className = 'notice'; - icon = 'lightbulb-o'; - break; - case TYPO3.Severity.info: - className = 'info'; - icon = 'info'; - break; - case TYPO3.Severity.ok: - className = 'success'; - icon = 'check'; - break; - case TYPO3.Severity.warning: - className = 'warning'; - icon = 'exclamation'; - break; - case TYPO3.Severity.error: - className = 'danger'; - icon = 'times'; - break; - default: - className = 'info'; - icon = 'info'; - } - duration = duration || 5; - if (!this.messageContainer) { - this.messageContainer = $('<div id="alert-container"></div>').appendTo('body'); - } - $box = $( - '<div class="alert alert-' + className + ' alert-dismissible fade" role="alert">' + - '<button type="button" class="close" data-dismiss="alert">' + - '<span aria-hidden="true"><i class="fa fa-times-circle"></i></span>' + - '<span class="sr-only">Close</span>' + - '</button>' + - '<div class="media">' + - '<div class="media-left">' + - '<span class="fa-stack fa-lg">' + - '<i class="fa fa-circle fa-stack-2x"></i>' + - '<i class="fa fa-' + icon + ' fa-stack-1x"></i>' + - '</span>' + - '</div>' + - '<div class="media-body">' + - '<h4 class="alert-title">' + title + '</h4>' + - '<p class="alert-message">' + message + '</p>' + - '</div>' + - '</div>' + - '</div>' + - '</div>' - ); - $box.on('close.bs.alert', function(e) { - e.preventDefault(); - $(this) - .clearQueue() - .queue(function(next) { - $(this).removeClass('in'); - next(); - }) - .slideUp(function () { - $(this).remove(); - }); - }); - $box.appendTo(this.messageContainer); - $box.delay('fast') - .queue(function(next) { - $(this).addClass('in'); - next(); - }) - .delay(duration * 1000) - .queue(function(next) { - $(this).alert('close'); - next(); - }); - }; - - /** - * return the Flashmessage object - */ - return function () { - TYPO3.Severity = Severity; - TYPO3.Flashmessage = Flashmessage; - return Flashmessage; - }(); -}); diff --git a/typo3/sysext/backend/Resources/Public/JavaScript/LoginRefresh.js b/typo3/sysext/backend/Resources/Public/JavaScript/LoginRefresh.js index 86dbd7fbbc7411cf88055a94f9428021e161b299..ef6805a1f3bce9d496c0a0a5aa1db945462adf0e 100644 --- a/typo3/sysext/backend/Resources/Public/JavaScript/LoginRefresh.js +++ b/typo3/sysext/backend/Resources/Public/JavaScript/LoginRefresh.js @@ -348,7 +348,7 @@ define('TYPO3/CMS/Backend/LoginRefresh', ['jquery'], function($) { passwordFieldValue = $passwordField.val(); if (passwordFieldValue === '') { - top.TYPO3.Flashmessage.display(TYPO3.Severity.error, TYPO3.LLL.core.refresh_login_failed, TYPO3.LLL.core.refresh_login_emptyPassword); + top.TYPO3.Notification.error(TYPO3.LLL.core.refresh_login_failed, TYPO3.LLL.core.refresh_login_emptyPassword); $passwordField.focus(); return; } @@ -386,8 +386,7 @@ define('TYPO3/CMS/Backend/LoginRefresh', ['jquery'], function($) { // User is logged in LoginRefresh.hideLoginForm(); } else { - // TODO: add failure to notification system instead of alert - top.TYPO3.Flashmessage.display(TYPO3.Severity.error, TYPO3.LLL.core.refresh_login_failed, TYPO3.LLL.core.refresh_login_failed_message); + top.TYPO3.Notification.error(TYPO3.LLL.core.refresh_login_failed, TYPO3.LLL.core.refresh_login_failed_message); $passwordField.focus(); } } diff --git a/typo3/sysext/backend/Resources/Public/JavaScript/Modal.js b/typo3/sysext/backend/Resources/Public/JavaScript/Modal.js index 0a8f3d961c41225f3d65bf9456739dc361f07868..aabac5aaef247aff98e19d93e3437b694ce9805b 100644 --- a/typo3/sysext/backend/Resources/Public/JavaScript/Modal.js +++ b/typo3/sysext/backend/Resources/Public/JavaScript/Modal.js @@ -13,9 +13,9 @@ /** * API for modal windows powered by Twitter Bootstrap. - * This module depends on TYPO3/CMS/Backend/FlashMessages due to TYPO3.Severity. + * This module depends on TYPO3/CMS/Backend/Notification due to top.TYPO3.Severity. */ -define('TYPO3/CMS/Backend/Modal', ['jquery', 'TYPO3/CMS/Backend/FlashMessages'], function($) { +define('TYPO3/CMS/Backend/Modal', ['jquery', 'TYPO3/CMS/Backend/Notification'], function($) { /** * The main object of the modal API @@ -44,26 +44,26 @@ define('TYPO3/CMS/Backend/Modal', ['jquery', 'TYPO3/CMS/Backend/FlashMessages'], /** * Get the correct css class for given severity * - * @param {int} severity use constants from TYPO3.Severity.* + * @param {int} severity use constants from top.TYPO3.Severity.* * @returns {string} * @private */ Modal.getSeverityClass = function(severity) { var severityClass; switch (severity) { - case TYPO3.Severity.notice: + case top.TYPO3.Severity.notice: severityClass = 'notice'; break; - case TYPO3.Severity.ok: + case top.TYPO3.Severity.ok: severityClass = 'success'; break; - case TYPO3.Severity.warning: + case top.TYPO3.Severity.warning: severityClass = 'warning'; break; - case TYPO3.Severity.error: + case top.TYPO3.Severity.error: severityClass = 'danger'; break; - case TYPO3.Severity.info: + case top.TYPO3.Severity.info: default: severityClass = 'info'; break; @@ -76,11 +76,11 @@ define('TYPO3/CMS/Backend/Modal', ['jquery', 'TYPO3/CMS/Backend/FlashMessages'], * * @param {string} title the title for the confirm modal * @param {string} content the content for the conform modal, e.g. the main question - * @param {int} severity default TYPO3.Severity.info + * @param {int} severity default top.TYPO3.Severity.info * @param {array} buttons an array with buttons, default no buttons */ Modal.confirm = function(title, content, severity, buttons) { - severity = (typeof severity !== 'undefined' ? severity : TYPO3.Severity.info); + severity = (typeof severity !== 'undefined' ? severity : top.TYPO3.Severity.info); buttons = buttons || []; Modal.currentModal = Modal.template.clone(); Modal.currentModal.attr('tabindex', '-1'); @@ -182,7 +182,7 @@ define('TYPO3/CMS/Backend/Modal', ['jquery', 'TYPO3/CMS/Backend/FlashMessages'], var $element = $(this); var title = $element.data('title') || 'Alert'; var content = $element.data('content') || 'Are you sure?'; - var severity = (typeof TYPO3.Severity[$element.data('severity')] !== 'undefined') ? TYPO3.Severity[$element.data('severity')] : TYPO3.Severity.info; + var severity = (typeof top.TYPO3.Severity[$element.data('severity')] !== 'undefined') ? top.TYPO3.Severity[$element.data('severity')] : top.TYPO3.Severity.info; var buttons = [ { text: $element.data('button-close-text') || 'Close', diff --git a/typo3/sysext/backend/Resources/Public/JavaScript/Notification.js b/typo3/sysext/backend/Resources/Public/JavaScript/Notification.js new file mode 100644 index 0000000000000000000000000000000000000000..f49d250307c55e832314423f90f8f2677d31698b --- /dev/null +++ b/typo3/sysext/backend/Resources/Public/JavaScript/Notification.js @@ -0,0 +1,227 @@ +/* + * This file is part of the TYPO3 CMS project. + * + * It is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License, either version 2 + * of the License, or any later version. + * + * For the full copyright and license information, please read the + * LICENSE.txt file that was distributed with this source code. + * + * The TYPO3 project - inspiring people to share! + */ + +/** + * Notification API for the TYPO3 backend + * + * @author Frank Nägler <typo3@naegler.net> + */ + +define('TYPO3/CMS/Backend/Notification', ['jquery'], function ($) { + + /** + * Severity object + * + * @type {{notice: number, information: number, info: number, ok: number, warning: number, error: number}} + */ + var Severity = { + notice: -2, + // @deprecated since TYPO3 CMS 7, will be removed in TYPO3 CMS 9, use info instead of information + information: -1, + info: -1, + ok: 0, + warning: 1, + error: 2 + }; + + /** + * The main Notification object + * + * @type {{NOTICE: number, INFO: number, OK: number, WARNING: number, ERROR: number, messageContainer: null}} + */ + var Notification = { + NOTICE: -2, + INFO: -1, + OK: 0, + WARNING: 1, + ERROR: 2, + messageContainer: null + }; + + /** + * Show a notice notification + * + * @param {string} title The title for the notification + * @param {string} message The message for the notification + * @param {float} duration Time in seconds to show notification before it disappears, default 5, 0 = sticky + * + * @public + */ + Notification.notice = function(title, message, duration) { + Notification.showMessage(title, message, Notification.NOTICE, duration); + }; + + /** + * Show an info notification + * + * @param {string} title The title for the notification + * @param {string} message The message for the notification + * @param {float} duration Time in seconds to show notification before it disappears, default 5, 0 = sticky + * + * @public + */ + Notification.info = function(title, message, duration) { + Notification.showMessage(title, message, Notification.INFO, duration); + }; + + /** + * Show an ok notification + * + * @param {string} title The title for the notification + * @param {string} message The message for the notification + * @param {float} duration Time in seconds to show notification before it disappears, default 5, 0 = sticky + * + * @public + */ + Notification.success = function(title, message, duration) { + Notification.showMessage(title, message, Notification.OK, duration); + }; + + /** + * Show a warning notification + * + * @param {string} title The title for the notification + * @param {string} message The message for the notification + * @param {float} duration Time in seconds to show notification before it disappears, default 5, 0 = sticky + * + * @public + */ + Notification.warning = function(title, message, duration) { + Notification.showMessage(title, message, Notification.WARNING, duration); + }; + + /** + * Show an error notification + *, duration + * @param {string} title The title for the notification + * @param {string} message The message for the notification + * @param {float} duration Time in seconds to show notification before it disappears, default 0, 0 = sticky + * + * @public + */ + Notification.error = function(title, message, duration) { + duration = duration || 0; + Notification.showMessage(title, message, Notification.ERROR, duration); + }; + + /** + * Show message + * + * @param {string} title The title for the notification + * @param {string} message The message for the notification + * @param {int} severity See constants in this object + * @param {float} duration Time in seconds to show notification before it disappears, default 5, 0 = sticky + * + * @private + */ + Notification.showMessage = function(title, message, severity, duration) { + var className = ''; + var icon = ''; + switch (severity) { + case Notification.NOTICE: + className = 'notice'; + icon = 'lightbulb-o'; + break; + case Notification.INFO: + className = 'info'; + icon = 'info'; + break; + case Notification.OK: + className = 'success'; + icon = 'check'; + break; + case Notification.WARNING: + className = 'warning'; + icon = 'exclamation'; + break; + case Notification.ERROR: + className = 'danger'; + icon = 'times'; + break; + default: + className = 'info'; + icon = 'info'; + } + + duration = (typeof duration === 'undefined') ? 5 : parseFloat(duration); + + if (Notification.messageContainer === null) { + Notification.messageContainer = $('<div id="alert-container"></div>').appendTo('body'); + } + $box = $( + '<div class="alert alert-' + className + ' alert-dismissible fade" role="alert">' + + '<button type="button" class="close" data-dismiss="alert">' + + '<span aria-hidden="true"><i class="fa fa-times-circle"></i></span>' + + '<span class="sr-only">Close</span>' + + '</button>' + + '<div class="media">' + + '<div class="media-left">' + + '<span class="fa-stack fa-lg">' + + '<i class="fa fa-circle fa-stack-2x"></i>' + + '<i class="fa fa-' + icon + ' fa-stack-1x"></i>' + + '</span>' + + '</div>' + + '<div class="media-body">' + + '<h4 class="alert-title">' + title + '</h4>' + + '<p class="alert-message">' + message + '</p>' + + '</div>' + + '</div>' + + '</div>' + ); + $box.on('close.bs.alert', function(e) { + e.preventDefault(); + $(this) + .clearQueue() + .queue(function(next) { + $(this).removeClass('in'); + next(); + }) + .slideUp(function () { + $(this).remove(); + }); + }); + $box.appendTo(Notification.messageContainer); + $box.delay('fast') + .queue(function(next) { + $(this).addClass('in'); + next(); + }); + // if duration > 0 dismiss alert + if (duration > 0) { + $box.delay(duration * 1000) + .queue(function(next) { + $(this).alert('close'); + next(); + }); + } + }; + + /** + * return the Notification object + */ + return function () { + if (typeof TYPO3.Severity === 'undefined') { + TYPO3.Severity = Severity; + } + if (typeof top.TYPO3.Severity === 'undefined') { + top.TYPO3.Severity = Severity; + } + if (typeof TYPO3.Notification === 'undefined') { + TYPO3.Notification = Notification; + } + if (typeof top.TYPO3.Notification === 'undefined') { + top.TYPO3.Notification = Notification; + } + return Notification; + }(); +}); diff --git a/typo3/sysext/backend/Resources/Public/JavaScript/extjs/components/pagetree/javascript/actions.js b/typo3/sysext/backend/Resources/Public/JavaScript/extjs/components/pagetree/javascript/actions.js index 743acaaad1077b40764bc4ae8ee0d4715357bc23..c7ec3e4e4a4e5ed3472591b309b436b0cba55aec 100644 --- a/typo3/sysext/backend/Resources/Public/JavaScript/extjs/components/pagetree/javascript/actions.js +++ b/typo3/sysext/backend/Resources/Public/JavaScript/extjs/components/pagetree/javascript/actions.js @@ -31,7 +31,7 @@ TYPO3.Components.PageTree.Actions = { */ evaluateResponse: function(response) { if (response.success === false) { - top.TYPO3.Flashmessage.display(top.TYPO3.Severity.error, 'Exception', response.message); + top.TYPO3.Notification.error('Exception', response.message); return false; } diff --git a/typo3/sysext/backend/Resources/Public/JavaScript/flashmessage_compatibility.js b/typo3/sysext/backend/Resources/Public/JavaScript/flashmessage_compatibility.js index 5f23310bcfad63a4f4857e2b0687792b8d050eff..b5dd6ab938635c1d5f5cced6224a5226736fe5db 100644 --- a/typo3/sysext/backend/Resources/Public/JavaScript/flashmessage_compatibility.js +++ b/typo3/sysext/backend/Resources/Public/JavaScript/flashmessage_compatibility.js @@ -17,18 +17,32 @@ * @deprecated since TYPO3 CMS 7, this file will be removed in TYPO3 CMS 9 */ +// map old Severity object to the new one +var Severity = { + notice: -2, + // @deprecated since TYPO3 CMS 7, will be removed in TYPO3 CMS 9, use info instead of information + information: -1, + info: -1, + ok: 0, + warning: 1, + error: 2 +}; +if (!TYPO3.Severity) { + TYPO3.Severity = Severity; +} +if (!top.TYPO3.Severity) { + top.TYPO3.Severity = Severity; +} + // map old Flashmessage API to the new one if (!TYPO3.Flashmessage) { TYPO3.Flashmessage = {}; TYPO3.Flashmessage.display = function(severity, title, message, duration) { if (console !== undefined) { - console.log('TYPO3.Flashmessage.display is deprecated and will be removed with CMS 9, please use top.TYPO3.Flashmessage.display'); + console.log('TYPO3.Flashmessage.display is deprecated and will be removed with CMS 9, please use top.TYPO3.Notification.*'); } - top.TYPO3.Flashmessage.display(severity, title, message, duration); + // never use showMessage, this only allowed at this place for + // compatibility to the old flashMessage api! showMessage is declared as private! + top.TYPO3.Notification.showMessage(title, message, severity, duration); } } - -// map old Severity object to the new one -if (!TYPO3.Severity) { - TYPO3.Severity = top.TYPO3.Severity; -} diff --git a/typo3/sysext/backend/Resources/Public/JavaScript/jsfunc.inline.js b/typo3/sysext/backend/Resources/Public/JavaScript/jsfunc.inline.js index 6b61c3f80addbab8e17dfac41ebac0839e898a10..02770945099ce01178702cea7a057019f0dcac46 100644 --- a/typo3/sysext/backend/Resources/Public/JavaScript/jsfunc.inline.js +++ b/typo3/sysext/backend/Resources/Public/JavaScript/jsfunc.inline.js @@ -173,7 +173,7 @@ var inline = { if (matches) { title = TYPO3.jQuery('#' + matches[1] + '_records').data('title'); } - top.TYPO3.Flashmessage.display(top.TYPO3.Severity.error, title, message, 5); + top.TYPO3.Notification.error(title, message, 5); } return false; }, @@ -520,7 +520,7 @@ var inline = { } else { var message = TBE_EDITOR.labels.maxItemsAllowed.replace('{0}', this.data.config[objectPrefix].max); var title = $insertObject.data('title'); - top.TYPO3.Flashmessage.display(top.TYPO3.Severity.error, title, message, 500); + top.TYPO3.Notification.error(title, message); } }, diff --git a/typo3/sysext/core/Classes/Page/PageRenderer.php b/typo3/sysext/core/Classes/Page/PageRenderer.php index 939a2181c28ee55af059964abc6500ba15e27df7..2fdfcf3a32351d2f658a916c9468f42a5cc4ee0f 100644 --- a/typo3/sysext/core/Classes/Page/PageRenderer.php +++ b/typo3/sysext/core/Classes/Page/PageRenderer.php @@ -1421,11 +1421,9 @@ class PageRenderer implements \TYPO3\CMS\Core\SingletonInterface { Ext.Direct.on("exception", function(event) { if (event.code === Ext.Direct.exceptions.TRANSPORT && !event.where) { - top.TYPO3.Flashmessage.display( - top.TYPO3.Severity.error, + top.TYPO3.Notification.error( TYPO3.l10n.localize("extDirect_timeoutHeader"), - TYPO3.l10n.localize("extDirect_timeoutMessage"), - 30 + TYPO3.l10n.localize("extDirect_timeoutMessage") ); } else { var backtrace = ""; @@ -1436,11 +1434,9 @@ class PageRenderer implements \TYPO3\CMS\Core\SingletonInterface { "ExtDirect - Exception" ); } else if (event.code === "router") { - top.TYPO3.Flashmessage.display( - top.TYPO3.Severity.error, + top.TYPO3.Notification.error( event.code, - event.message, - 30 + event.message ); } else if (event.where) { backtrace = "<p style=\\"margin-top: 20px;\\">" + diff --git a/typo3/sysext/core/Documentation/Changelog/master/Feature-66047-IntroduceJavascriptNotificationApi.rst b/typo3/sysext/core/Documentation/Changelog/master/Feature-66047-IntroduceJavascriptNotificationApi.rst new file mode 100644 index 0000000000000000000000000000000000000000..3f308ddfc8e3f44f30cdcb23cb07666594a5af14 --- /dev/null +++ b/typo3/sysext/core/Documentation/Changelog/master/Feature-66047-IntroduceJavascriptNotificationApi.rst @@ -0,0 +1,74 @@ +======================================================= +Feature - #66047: Introduce JavaScript notification API +======================================================= + +Description +=========== + +The Flashmessages API has been moved from ``TYPO3.Flashmessages`` to ``top.TYPO3.Flashmessages`` in TYPO3 CMS 7.0. + +Now we introduce the new JavaScript Notification API and remove the refactoring of the FlashMessage API which was made for TYPO3 CMS 7.0. + +The compatibility layer for TYPO3.FlashMessage has changed to use the new Notification API and will be removed with TYPO3 CMS 9 as before. + +The new Notification API works similar to old Flashmessages, you can use it from the Top-Frame, where is it loaded one time for the complete backend. + +Please look at the examples section in this document for more details. + + +Migration +========= + +The affected 3rd party extensions must be modified to use ``top.TYPO3.Notification`` instead of ``top.TYPO3.Flashmessages``. + +Examples: + +1) Old and new syntax in general + +.. code-block:: javascript + + // Old and deprecated: + top.TYPO3.Flashmessages.display(TYPO3.Severity.notice) + + // New and the only correct way: + top.TYPO3.Notification.notice(title, message) + + +2) Notice notification + +.. code-block:: javascript + + // duration is optional, default is 5 seconds + top.TYPO3.Notification.notice(title, message, duration) + + +3) Info notification + +.. code-block:: javascript + + // duration is optional, default is 5 seconds + top.TYPO3.Notification.info(title, message, duration) + + +4) Success notification + +.. code-block:: javascript + + // duration is optional, default is 5 seconds + top.TYPO3.Notification.success(title, message, duration) + + +5) Warning notification + +.. code-block:: javascript + + // duration is optional, default is 5 seconds + top.TYPO3.Notification.warning(title, message, duration) + + +6) Error notification + +.. code-block:: javascript + + // duration is optional, default is 0 seconds which means sticky! + top.TYPO3.Notification.error(title, message, duration) diff --git a/typo3/sysext/extensionmanager/Resources/Public/JavaScript/Main.js b/typo3/sysext/extensionmanager/Resources/Public/JavaScript/Main.js index 9c2ab3cffb7ec1554b288ea40434595973c61adc..dc7fc099f040da48389dfae970d2f6df9c557225 100644 --- a/typo3/sysext/extensionmanager/Resources/Public/JavaScript/Main.js +++ b/typo3/sysext/extensionmanager/Resources/Public/JavaScript/Main.js @@ -388,7 +388,7 @@ define(['jquery', 'datatables', 'jquery/jquery.clearable'], function($) { ]); } else { if(data.hasErrors) { - top.TYPO3.Flashmessage.display(top.TYPO3.Severity.error, data.title, data.message, 15); + top.TYPO3.Notification.error(data.title, data.message, 15); } else { Repository.getResolveDependenciesAndInstallResult(data.url + '&tx_extensionmanager_tools_extensionmanagerextensionmanager[downloadPath]=' + Repository.downloadPath); } @@ -433,7 +433,7 @@ define(['jquery', 'datatables', 'jquery/jquery.clearable'], function($) { }); successMessage += '</ul>'; }); - top.TYPO3.Flashmessage.display(top.TYPO3.Severity.info, TYPO3.lang['extensionList.dependenciesResolveFlashMessage.title' + data.installationTypeLanguageKey].replace(/\{0\}/g, data.extension), successMessage, 15); + top.TYPO3.Notification.info(TYPO3.lang['extensionList.dependenciesResolveFlashMessage.title' + data.installationTypeLanguageKey].replace(/\{0\}/g, data.extension), successMessage, 15); top.TYPO3.ModuleMenu.App.refreshMenu(); } } @@ -509,7 +509,7 @@ define(['jquery', 'datatables', 'jquery/jquery.clearable'], function($) { success: function(data) { // Something went wrong, show message if (data.errorMessage.length) { - top.TYPO3.Flashmessage.display(top.TYPO3.Severity.warning, TYPO3.lang['extensionList.updateFromTerFlashMessage.title'], data.errorMessage, 10); + top.TYPO3.Notification.error(TYPO3.lang['extensionList.updateFromTerFlashMessage.title'], data.errorMessage, 10); } // Message with latest updates @@ -535,8 +535,7 @@ define(['jquery', 'datatables', 'jquery/jquery.clearable'], function($) { // Create an error message with diagnosis info. var errorMessage = textStatus + '(' + errorThrown + '): ' + jqXHR.responseText; - top.TYPO3.Flashmessage.display( - top.TYPO3.Severity.warning, + top.TYPO3.Notification.warning( TYPO3.lang['extensionList.updateFromTerFlashMessage.title'], errorMessage, 10 diff --git a/typo3/sysext/lang/Resources/Public/JavaScript/LanguageModule.js b/typo3/sysext/lang/Resources/Public/JavaScript/LanguageModule.js index c389d55fab52227207d0d222af97f67258034b15..6d02ad1649365b7f2a227b32fc45fc751d6e57ee 100644 --- a/typo3/sysext/lang/Resources/Public/JavaScript/LanguageModule.js +++ b/typo3/sysext/lang/Resources/Public/JavaScript/LanguageModule.js @@ -449,7 +449,7 @@ define('TYPO3/CMS/Lang/LanguageModule', ['jquery', 'datatables', 'jquery/jquery. */ LanguageModule.displayError = function(label) { if (typeof label === 'string' && label !== '') { - top.TYPO3.Flashmessage.display(top.TYPO3.Severity.error, LanguageModule.labels.errorHeader, label, 5); + top.TYPO3.Notification.error(LanguageModule.labels.errorHeader, label); } }; @@ -458,7 +458,7 @@ define('TYPO3/CMS/Lang/LanguageModule', ['jquery', 'datatables', 'jquery/jquery. */ LanguageModule.displayInformation = function(label) { if (typeof label === 'string' && label !== '') { - top.TYPO3.Flashmessage.display(top.TYPO3.Severity.info, LanguageModule.labels.infoHeader, label, 3); + top.TYPO3.Notification.info(LanguageModule.labels.infoHeader, label); } }; @@ -467,7 +467,7 @@ define('TYPO3/CMS/Lang/LanguageModule', ['jquery', 'datatables', 'jquery/jquery. */ LanguageModule.displaySuccess = function(label) { if (typeof label === 'string' && label !== '') { - top.TYPO3.Flashmessage.display(top.TYPO3.Severity.ok, LanguageModule.labels.successHeader, label, 3); + top.TYPO3.Notification.success(LanguageModule.labels.successHeader, label); } }; @@ -563,4 +563,4 @@ define('TYPO3/CMS/Lang/LanguageModule', ['jquery', 'datatables', 'jquery/jquery. TYPO3.LanguageModule = LanguageModule; return LanguageModule; }(); -}); \ No newline at end of file +}); diff --git a/typo3/sysext/recycler/Resources/Public/JavaScript/Recycler.js b/typo3/sysext/recycler/Resources/Public/JavaScript/Recycler.js index da207c5f1da27fbb1381fbc3a2fba10d0f7e070f..80a1965644f553ddd9d51bcdab198457c57b8235 100644 --- a/typo3/sysext/recycler/Resources/Public/JavaScript/Recycler.js +++ b/typo3/sysext/recycler/Resources/Public/JavaScript/Recycler.js @@ -427,8 +427,11 @@ define(['jquery', 'nprogress', 'jquery/jquery.clearable'], function($, NProgress NProgress.start(); }, success: function(data) { - var severity = data.success ? top.TYPO3.Severity.ok : top.TYPO3.Severity.error; - top.TYPO3.Flashmessage.display(severity, '', data.message); + if (data.success) { + top.TYPO3.Notification.success('', data.message); + } else { + top.TYPO3.Notification.error('', data.message); + } // reload recycler data Recycler.paging.currentPage = 1; diff --git a/typo3/sysext/t3editor/res/jslib/t3editor.js b/typo3/sysext/t3editor/res/jslib/t3editor.js index 01edecb409e2a86b6bbd44a3ea7dd0e4f85cd75c..373e785ebc7cd59e5e4cf29020dd92f838ea9af8 100644 --- a/typo3/sysext/t3editor/res/jslib/t3editor.js +++ b/typo3/sysext/t3editor/res/jslib/t3editor.js @@ -173,9 +173,9 @@ T3editor.prototype = { this.textModified = false; } else { if (typeof returnedData.exceptionMessage != 'undefined') { - top.TYPO3.Flashmessage.display(top.TYPO3.Severity.error, T3editor.lang.errorWhileSaving[0]['target'], returnedData.exceptionMessage); + top.TYPO3.Notification.error(T3editor.lang.errorWhileSaving[0]['target'], returnedData.exceptionMessage); } else { - top.TYPO3.Flashmessage.display(top.TYPO3.Severity.error, T3editor.lang.errorWhileSaving[0]['target']); + top.TYPO3.Notification.error(T3editor.lang.errorWhileSaving[0]['target'], ''); } } this.modalOverlay.hide(); @@ -334,4 +334,4 @@ if (!Prototype.Browser.MobileSafari) { } } ); -} \ No newline at end of file +}