[BUGFIX] Page Tree not always updated after workspace actions

After some workspace actions being performed in the workspaces
module in the TYPO3 Backend, the page tree does not get updated:
* discarding a single workspace version
* performing mass actions which output warnings

Resolves: #59828
Releases: 6.2, master
Change-Id: Ic9fb6613e8647ed351246ea18fcb3696e60ef7b2
Reviewed-on: http://review.typo3.org/32136
Reviewed-by: Oliver Hader <oliver.hader@typo3.org>
Tested-by: Oliver Hader <oliver.hader@typo3.org>
[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: master, 6.2
Change-Id: I09970d12ba10e528c150275952ec4c9ff8333a0a
Reviewed-on: http://review.typo3.org/32138
Reviewed-by: Oliver Hader <oliver.hader@typo3.org>
Tested-by: Oliver Hader <oliver.hader@typo3.org>
[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: master, 6.2
Change-Id: If90511dc4ac2bc3dde6e58570e6bf10e4ac949db
Reviewed-on: http://review.typo3.org/32139
Reviewed-by: Oliver Hader <oliver.hader@typo3.org>
Tested-by: Oliver Hader <oliver.hader@typo3.org>
[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: master, 6.2
Change-Id: I888c83a58d591f57bc2ea75a49fa603a56a7f722
Reviewed-on: http://review.typo3.org/32137
Reviewed-by: Oliver Hader <oliver.hader@typo3.org>
Tested-by: Oliver Hader <oliver.hader@typo3.org>
[BUGFIX] Correctly parse suhosin configuration

The system environment check does not properly parse the suhosin
configuration option for whitelist.
Fix this by changing the code to be less strict about the actual syntax
of this option.

Resolves: #60925
Releases: 6.3, 6.2
Change-Id: I6797a313cedaaf1895cf7b4fddaae9811341006b
Reviewed-on: http://review.typo3.org/32144
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
[BUGFIX] Updating "current_version" fails with some DBMS

Updating the field "current_version" fails with some DMBS because
$uidsOfCurrentVersion has too many elements. This patch chunks
the array into multiple parts and updates the uids in each part.

Resolves: #60859
Releases: 6.2, 6.3
Change-Id: If63f855b250bf7c9b6cd7112f60392cfc8ccfd67
Reviewed-on: http://review.typo3.org/32148
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
[BUGFIX] Show properties of stdClass object in <f:debug>

Using fluid's <f:debug> to get dumps of json_decode()d objects
does not work currently. The DebuggerUtility shows only properties
obtainable via ReflectionClass, which does not work for stdClass objects.

The patch introduces special handling of stdClass objects, using the
properties that actually exist in the object.

Change-Id: I3845178f6defdbceae4b867f45e5080f23443766
Fixes: #60912
Releases: master, 6.2
Reviewed-on: http://review.typo3.org/32150
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
[BUGFIX] Use defaultMailFromName setting in install tool

The defaultMailFromName setting is not used for sending
the test mails in the install tool.

Resolves: #60758
Releases: master, 6.2
Change-Id: I35e1b887de6b06bb5f301e037d6d412c18ac0b37
Reviewed-on: http://review.typo3.org/32151
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
[BUGFIX] JavaScript error in Install Tool

When using toggleButton in "Test setup" a JavaScript
error is thrown because the scrolling handler can only
be used if the fixed footer is available.

Add a check to prevent this JavaScript error.

Resolves: #60577
Releases: 6.3,6.2
Change-Id: Ie7628e83280f6af032b364586cdfb6b386663d9d
Reviewed-on: http://review.typo3.org/32149
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
[TASK] Extend install tool suhosin checks

Extend install tool suhosin checks by
* suhosin.get.max_name_length=200
* suhosin.post.max_name_length=200
* suhosin.request.max_varname_length=200

Resolves: #60356
Releases: 6.2, 6.3
Change-Id: I382e44832918799df58a912e95cd4b0c3f0b81a3
Reviewed-on: http://review.typo3.org/32152
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
[BUGFIX] Admin panel shows wrong cache information

When labels were extracted to translation files, a error was made
that changed the meaning of the admin panel entry. But the code
was not modified to reflect the change of the meaning. Thus the
admin panel shows that the page is cached when it is actually not
cached and vice versa. Additionally, it shows 0 and 1 for the
"Page cached" entry. This should be "yes" or "no", not numbers.

Change-Id: I2519593e7da08b71ccdd5d7dc3dd6ced7ecac3ac
Resolves: #56265
Releases: 6.3, 6.2
Reviewed-on: http://review.typo3.org/31868
Reviewed-by: Stefan Neufeind <typo3.neufeind@speedpartner.de>
Reviewed-by: Pascal Dürsteler <pascal.duersteler@gmail.com>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
[TASK] Disable notifications

Change-Id: I245db7b621ecd1d994b833da4a18fe1687a437d0
[BUGFIX] Extbase behaviour concerning workspaces

Issue #26732 introduced some behaviour into Extbase that cannot
work on the long-run. The usual behaviour of TYPO3 is "fetch
live, then overlay". Avoiding that chain might lead to
several side-effects.

This change integrates a new property "_versionedUid" than
contains the specific uid of the versioned record (this is
similar to the already existing _localizedUid property).
Besides that, changes of issue #26732 are reverted.

Functional frontend tests are enabled for live and workspace
for all IRRE ForeignField scenarios.

Resolves: #59107
Releases: 6.2
Change-Id: Idc46fb86830bc3d750972adade178cf9c618ece5
[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