Files
cms-core/Documentation/Changelog/11.4/Deprecation-94762-DeprecateJavaScriptTopfsModState.rst
T

77 lines
2.4 KiB
ReStructuredText

.. include:: /Includes.rst.txt
.. _deprecation-94762:
==========================================================
Deprecation: #94762 - Deprecate JavaScript top.fsMod state
==========================================================
See :issue:`94762`
Description
===========
The JavaScript object :js:`top.fsMod` manages the "state" for page-tree and
file-tree related contexts in the backend user-interface like this:
* :js:`top.fsMod.recentIds.web` contained the current ("recent")
page or file related identifier details were shown for
* :js:`top.fsMod.navFrameHighlightedID.web` contained the currently
selected identifier that was highlighted in page-tree or file-tree
* :js:`top.fsMod.currentBank` contained the current mount point or
file mount ("bank") used in page-tree or file-tree
To get rid of inline JavaScript and reduce usage of JavaScript :js:`top.*`,
mentioned :js:`top.fsMod` has been marked as deprecated and replaced by new component
:js:`TYPO3/CMS/Backend/Storage/ModuleStateStorage`.
Impact
======
As fall-back, reading from :js:`top.fsMod` is still possible, changing
data will cause a JavaScript exception.
Affected Installations
======================
Sites using custom modifications for JavaScript aspects in the backend user
interface relying on :js:`top.fsMod`.
Migration
=========
New :js:`ModuleStorage` component is capable of providing similar behavior,
corresponding state is written to `sessionStorage` and available for current
client user session (per browser tab).
.. code-block:: javascript
import {ModuleStateStorage} from '../Storage/ModuleStateStorage';
let identifier: string, selection: string|null, mount: string|null;
// reading state
// -------------
const currentState = ModuleStateStorage.current('web');
identifier = top.fsMod.recentIds.web; // deprecated
identifier = currentState.identifier; // replacement
selection = top.fsMod.navFrameHighlightedID.web; // deprecated
selection = currentState.selection; // replacement
mount = top.fsMod.currentBank; // deprecated
mount = currentState.mount; // replacement
// updating state
// --------------
// ModuleStateStorage.update(module, identifier, selected, mount?)
ModuleStateStorage.update('web', 123, true, '0');
// ModuleStateStorage.updateWithCurrentMount(module, identifier, selected)
ModuleStateStorage.updateWithCurrentMount('web', 123, true);
.. index:: Backend, JavaScript, NotScanned, ext:backend