From b97848773f6507fe54e6cacebbccec69f7e24ebb Mon Sep 17 00:00:00 2001 From: Andreas Fernandez <a.fernandez@scripting-base.de> Date: Mon, 20 Nov 2017 19:13:17 +0100 Subject: [PATCH] [BUGFIX] Make `top.TYPO3.Storage` available again `top.TYPO3.Storage` is now globally available again, it's not necessary to load this module via RequireJS. Please keep in mind this module is deprecated. Resolves: #83049 Related: #82603 Releases: master Change-Id: I72796f377063c683f024a223818a599edade5367 Reviewed-on: https://review.typo3.org/54704 Tested-by: TYPO3com <no-reply@typo3.com> Reviewed-by: Frank Naegler <frank.naegler@typo3.org> Tested-by: Frank Naegler <frank.naegler@typo3.org> Reviewed-by: Helmut Hummel <typo3@helhum.io> Reviewed-by: Markus Klein <markus.klein@typo3.org> Tested-by: Markus Klein <markus.klein@typo3.org> --- .../Classes/Controller/BackendController.php | 1 + .../Resources/Private/TypeScript/Storage.ts | 64 ++++++++++++++++- .../Resources/Public/JavaScript/Storage.js | 68 +++++++++++++++++-- 3 files changed, 125 insertions(+), 8 deletions(-) diff --git a/typo3/sysext/backend/Classes/Controller/BackendController.php b/typo3/sysext/backend/Classes/Controller/BackendController.php index 1dfc65342655..4ad27830104c 100644 --- a/typo3/sysext/backend/Classes/Controller/BackendController.php +++ b/typo3/sysext/backend/Classes/Controller/BackendController.php @@ -155,6 +155,7 @@ class BackendController $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/ContextMenu'); // load the storage API and fill the UC into the PersistentStorage, so no additional AJAX call is needed + $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/Storage'); $this->pageRenderer->loadRequireJsModule('TYPO3/CMS/Backend/Storage/Persistent', 'function(PersistentStorage) { PersistentStorage.load(' . json_encode($this->getBackendUser()->uc) . '); }'); diff --git a/typo3/sysext/backend/Resources/Private/TypeScript/Storage.ts b/typo3/sysext/backend/Resources/Private/TypeScript/Storage.ts index ae329c0ea99d..6c8a83f6b708 100644 --- a/typo3/sysext/backend/Resources/Private/TypeScript/Storage.ts +++ b/typo3/sysext/backend/Resources/Private/TypeScript/Storage.ts @@ -27,13 +27,71 @@ class Storage { public Persistent: any; constructor() { + this.Client = { + clear: (): any => { + this.logDeprecated('Client', 'clear'); + Client.clear(); + }, + get: (key: string): any => { + this.logDeprecated('Client', 'get'); + return Client.get(key); + }, + isset: (key: string): any => { + this.logDeprecated('Client', 'isset'); + return Client.isset(key); + }, + set: (key: string, value: string): any => { + this.logDeprecated('Client', 'set'); + return Client.set(key, value); + }, + unset: (key: string): any => { + this.logDeprecated('Client', 'unset'); + return Client.unset(key); + }, + }; + this.Persistent = { + addToList: (key: string, value: string): any => { + this.logDeprecated('Persistent', 'addToList'); + return Persistent.addToList(key, value); + }, + clear: (): any => { + this.logDeprecated('Persistent', 'clear'); + Persistent.clear(); + }, + get: (key: string): any => { + this.logDeprecated('Persistent', 'get'); + return Persistent.get(key); + }, + isset: (key: string): any => { + this.logDeprecated('Persistent', 'isset'); + return Persistent.isset(key); + }, + load: (data: any): any => { + this.logDeprecated('Persistent', 'load'); + return Persistent.load(data); + }, + removeFromList: (key: string, value: string): any => { + this.logDeprecated('Persistent', 'removeFromList'); + return Persistent.removeFromList(key, value); + }, + set: (key: string, value: string): any => { + this.logDeprecated('Persistent', 'set'); + return Persistent.set(key, value); + }, + unset: (key: string): any => { + this.logDeprecated('Persistent', 'unset'); + return Persistent.unset(key); + }, + }; + } + + private logDeprecated = (className: string, methodName: string): any => { if (console) { console.warn( - 'TYPO3/CMS/Backend/Storage and TYPO3.Storage are deprecated since TYPO3 v9 and will be removed in TYPO3 v10.', + 'top.TYPO3.Storage.' + className + '.' + methodName + '() is marked as deprecated since TYPO3 v9 and will be ' + + 'removed in TYPO3 v10.', ); } - this.Client = Client; - this.Persistent = Persistent; } } diff --git a/typo3/sysext/backend/Resources/Public/JavaScript/Storage.js b/typo3/sysext/backend/Resources/Public/JavaScript/Storage.js index bf481179129b..5c891e02d18b 100644 --- a/typo3/sysext/backend/Resources/Public/JavaScript/Storage.js +++ b/typo3/sysext/backend/Resources/Public/JavaScript/Storage.js @@ -22,11 +22,69 @@ define(["require", "exports", "./Storage/Client", "./Storage/Persistent"], funct */ var Storage = (function () { function Storage() { - if (console) { - console.warn('TYPO3/CMS/Backend/Storage and TYPO3.Storage are deprecated since TYPO3 v9 and will be removed in TYPO3 v10.'); - } - this.Client = Client; - this.Persistent = Persistent; + var _this = this; + this.logDeprecated = function (className, methodName) { + if (console) { + console.warn('top.TYPO3.Storage.' + className + '.' + methodName + '() is marked as deprecated since TYPO3 v9 and will be ' + + 'removed in TYPO3 v10.'); + } + }; + this.Client = { + clear: function () { + _this.logDeprecated('Client', 'clear'); + Client.clear(); + }, + get: function (key) { + _this.logDeprecated('Client', 'get'); + return Client.get(key); + }, + isset: function (key) { + _this.logDeprecated('Client', 'isset'); + return Client.isset(key); + }, + set: function (key, value) { + _this.logDeprecated('Client', 'set'); + return Client.set(key, value); + }, + unset: function (key) { + _this.logDeprecated('Client', 'unset'); + return Client.unset(key); + }, + }; + this.Persistent = { + addToList: function (key, value) { + _this.logDeprecated('Persistent', 'addToList'); + return Persistent.addToList(key, value); + }, + clear: function () { + _this.logDeprecated('Persistent', 'clear'); + Persistent.clear(); + }, + get: function (key) { + _this.logDeprecated('Persistent', 'get'); + return Persistent.get(key); + }, + isset: function (key) { + _this.logDeprecated('Persistent', 'isset'); + return Persistent.isset(key); + }, + load: function (data) { + _this.logDeprecated('Persistent', 'load'); + return Persistent.load(data); + }, + removeFromList: function (key, value) { + _this.logDeprecated('Persistent', 'removeFromList'); + return Persistent.removeFromList(key, value); + }, + set: function (key, value) { + _this.logDeprecated('Persistent', 'set'); + return Persistent.set(key, value); + }, + unset: function (key) { + _this.logDeprecated('Persistent', 'unset'); + return Persistent.unset(key); + }, + }; } return Storage; }()); -- GitLab