[BUGFIX] Failing cascaded delete action of localized elements

Having a record in live workspace with an accordant localization
leads to the fact that actions to the default language also have
an impact to all localizations.

In a workspace, first deleting the localization, then deleting
the record of the default language, ends up in actually having
reverted the previous deletion of the localization.

The solution is to check for delete placeholders in
DataHandler::deleteL10nOverlayRecords().

Resolves: #59113
Releases: 6.2, 6.3
Change-Id: I888c83a58d591f57bc2ea75a49fa603a56a7f722
[BUGFIX] Wrong nesting of deleted versioned child records

If deleting an IRRE child reference, the nesting leving in the
workspace module is not shown correctly. The reason for that is,
that the sys_refindex entry points to the live id of the deleted
child record.

This change takes care of correct visualization only, but does not
touch the sys_refindex behavior in this case.

Resolves: #59853
Releases: 6.2, 6.3
Change-Id: I09970d12ba10e528c150275952ec4c9ff8333a0a
[BUGFIX] Publishing delete placeholder affects other workspaces

On publishing a delete placeholder all other versions shall be
deleted as well, since the original record will be deleted after
that action. However, this is only valid for the live workspace
and using the legacy version behavior there.

DataHandler::deleteVersionsForRecord() calls
BackendUtility::selectVersionsOfRecord(), but without the
additional, but required, $workspace argument. Thus, all other
versions in other workspaces are deleted as well. The SQL query
to determine versions needs to be limited to either the live
workspace (for legacy versions) and the current workspace.

Resolves: #60249
Releases: 6.2, 6.3
Change-Id: If90511dc4ac2bc3dde6e58570e6bf10e4ac949db
[BUGFIX] PageTree cannot select/expand hidden nodes

TYPO3.Backend.NavigationContainer.PageTree.select(64) does not
select the correct page, but tries to determine the correct node
levels, fakes the local node states and reloads the page tree.
One thing that might not be considered there is the fact that
pages are represented in hex-values with a leading "p", thus
the integer "64" with be converted to "p40" as node id.

To overcome this scenario and enable custom handling there,
a new generic method is introduced:
TYPO3.Backend.NavigationContainer.PageTree
	.invokePageId(pageId, callback, allResults);

The methods "selectPageId" and "expandPageId" show how this
is actually used.

Resolves: #60405
Releases: 6.3, 6.2
Change-Id: If24b1a0ec261e9bcf00d214bf10c4b4a0aa5bed5
[BUGFIX] Cannot use slot to modify grid data in workspace module

Using slots in GridDataService does not work since passing
arguments by reference does not work. Since TYPO3 CMS 6.2
it's possible that the SignalSlotDispatcher returns
(modified) arguments.

Resolves: #60926
Releases: master, 6.2
Change-Id: If7f3a782bf8870bfb158c566df01cf2311fce048
[TASK] Integrate collection selection behavior in workspace module

Since TYPO3 6.2 parent-child structures are visualized in
the workspace module. However, this representation lacks
the possibility to select all elements of that accordant
collection by one click.

A new event "holdclick" is integrated that is fired after
holding the mousedown event for 400ms. This event then
leads to have all records of the collection selected.

The regular mousedown (click) behavior still stays the same.

Resolves: #60010
Releases: 6.2, 6.3
Change-Id: I98d26f125428446157294866484f8be7106b0c51
[TASK] Simplify record icons in workspace module

The record details view renders record icons for both live and
versioned record. However, this representation is shown rather
stand-alone and can be combined with the accordant headers.

Resolves: #60015
Releases: 6.2, 6.3
Change-Id: I2f468a06271f335c491d90d825f7bcef7a9db9f6
[TASK] Possibility to disable grouping in workspace module

The workspace modules uses the ExtJS component GroupingStore
per default to group and nest version by page path. However,
this behavior get unhandy if all versions of all pages shall
be sorted by a particular column.

A new checkbox "group by path" shall be added to the top
columns menu to individually disable/enable this behavior.
Changes to that state are stored with the preferences of
a backend user for the accordant workspace.

Resolves: #60037
Releases: master, 6.2
Change-Id: I8e9a2f3f14870c90ea5988a0182a54b22762390e
[TASK] Refactor file references relations retrieval

The retrieval of file references in BackendUtility
is currently bound to the thumbCode() method but
is useful for other components as well.

Resolves: #60054
Releases: 6.2, 6.3
Change-Id: Id92bdeaed24d8924285a640f905ffd55db21da4d
[TASK] Add possibility to enable/disable record nesting

Releases: 6.2, 6.3
Change-Id: I548cb1944e2793abed8ac9e210345be95cf3c853
[TASK] Streamline row selection in workspaces row expander

Releases: 6.2, 6.3
Change-Id: I50a3593ae0dcc96023cae0856a4f2be554fa127d
[FEATURE] Ease previewing custom record data in workspace module

Currently only pages, pages_language_overlay and tt_content have
the possibility to open a preview in the website frontend.
A hook needs to be used to open the preview for custom records
(since possibly the location of the rendering plugin and its
page needs to be resolved).

To ease that behaviour a new Page TSconfig setting is added:
options.workspaces.previewPageId

Possibilities:
* options.workspaces.previewPageId = 123
* options.workspaces.previewPageId = field:pid
* options.workspaces.previewPageId.tx_myext_table = 123
* options.workspaces.previewPageId.tx_myext_table = field:pid

Resolves: #59144
Releases: 6.3
Change-Id: I44fffa6fffb1ccc8af79e6dea48415cdf281cb01
[FEATURE] Highlight page tree depending on current workspace element

The workspace module show various workspace elements that can be
grouped by the accordant page already. However, on dealing with
a lot of elements there, highlighting the workspace element in
the page tree as well, seems to be helpful.

Resolves: #60406
Releases: 6.3
Change-Id: Ib9d2636156b200a21b3de5c08954a2bc1a3217a3
[FEATURE] Add workspace stage filter to grid columns

Releases: 6.3
Change-Id: I22b5e0eeef259f85a919f6a636aa7f9f1a35d8e1
[WIP][TASK] Extract overlay handling to common class

Change-Id: I6af332f1044011ffb84e57398d91a140806b6f03
[WIP][FEATURE] Rework workspace notification settings

Integrate a more flexible notification behaviour.

Resolves: #35245
Releases: master
Change-Id: Icb680fe85fab61a51d53e3afb94b51a4930e180c
[WIP][TASK] Missing visual representation of sys_file_reference

Resolves: #60011
Change-Id: I6d22619c264ff0e5411a47b2d566ec2c9b7c2607