[TASK] Use speaking keys for new menu types

The new menu "categories-based tt_content menu" uses a "speaking" key
for its type. The same should be applied to the other new menu type
introduced in TYPO3 CMS 6.2 (i.e. categories-based page menu).

Resolves: #54611
Releases: 6.2
Change-Id: I489a528050dcfeef83c1919155a3b11e599b195c
Reviewed-on: https://review.typo3.org/26566
Reviewed-by: Markus Klein
Reviewed-by: Wouter Wolters
Reviewed-by: Michiel Roos
Reviewed-by: Francois Suter
Tested-by: Francois Suter
[TASK] Only set FE user cookie if session data or user logged in

Currently the FE session cookie is set on every request
and since 4.2 the sessionID is generated again on every
request unless the user is logged in. This is implemented
for avoiding the security problem of the
session fixation (see #19831).

If an installation does not use FE session cookies at all,
an option (TYPO3_CONF_VARS->FE->dontSetCookie)
never sets the cookie.

As the current behavior for non-logged-in FE calls
is not usable, the behaviour is changed to only set
the cookie if the user is logged in or the session data
is modified. The last example is helpful for websites
with e.g. a shopping cart on non-logged-in pages.
Currently, if an extension is trying to implement the
latter, the extension needs to hook or XCLASS the
FrontendUserAuthentication class to set the cookie
whenever needed.

Additionally, the security problem still exists if the
cookie is not set by TYPO3 itself, that's why the
cookie can only be set if there is a valid entry in
fe_user_sessions.

if using external caching (e.g. reverse proxies),
a "unneeded" cookie is always set currently,
which extensions like EXT:moc_varnish or
EXT:cachinfo mock to only set the cookie
if needed.

The attached patch removes the default-setting
of a cookie in the frontend, and only triggers
the setcookie() function when sessionData is
added or a user is logged-in.

Resolves: #55549
Releases: 6.2
Change-Id: If478bc00c2c55dda0cc38a898a1288098891671f
Reviewed-on: https://review.typo3.org/27230
Reviewed-by: Markus Klein
Tested-by: Markus Klein
Reviewed-by: Wouter Wolters
Tested-by: Wouter Wolters
Reviewed-by: Benjamin Mack
Tested-by: Benjamin Mack
[BUGFIX] CE Table does not allow multiple css classes

When using the content element "table", a
field within the flexform shows the possibility
to add an additional css class for the table.
however only one css class can be added.
When adding "myclass1 myclass2" this is not
possible as the evaluation is too strict.

Releases: 6.2
Resolves: #55470
Change-Id: I697184398067add518e750054dd327e741a91de7
Reviewed-on: https://review.typo3.org/27161
Reviewed-by: Benjamin Kott
Tested-by: Benjamin Kott
Reviewed-by: Wouter Wolters
Tested-by: Wouter Wolters
[TASK] Add CSS libs functionality for page renderer

As with JS libraries, the PageRenderer should support
CSS files that should be included above CSS files.
This is necessary for e.g. normalize.css

The patch also adds the same procedure for
"includeCSSLibs" as with "includeCSSLibs" for the
frontend.

Releases: 6.2
Resolves: #55474
Change-Id: I3451b8170daa4fc8cf08f4f96771bed53ac04cdc
Reviewed-on: https://review.typo3.org/27163
Reviewed-by: Wouter Wolters
Tested-by: Wouter Wolters
Reviewed-by: Anja Leichsenring
Tested-by: Anja Leichsenring
[TASK] Add functional test cases to DataHandler (workspace)

In addition to the functional test cases for data handling in
live, these test cases re-use the test scenarios to check the
behaviour in a particular workspace.

The current assertions only check the current behaviour. Parts
that are identified as faults are marked out with the ignore
operator "\*" in the CSV files.

Thus, these tests shall be used to compare the current state
with the target state in combination with accordant bug-fixes
for workspace data handling.

Resolves: #55563
Releases: 6.2
Change-Id: I5e35f0f450093416e5165fc399da3b454715a5d7
Reviewed-on: https://review.typo3.org/27241
Reviewed-by: Peter Kuehn
Tested-by: Peter Kuehn
Reviewed-by: Jigal van Hemert
Reviewed-by: Wouter Wolters
Tested-by: Wouter Wolters
Reviewed-by: Oliver Hader
Tested-by: Oliver Hader
[TASK] Update copyright year to 2014

This patch updates the named constant TYPO3_copyright_year and
updates the second year number to the current year: 1998-2014.

Resolves: #55747
Releases: 6.2
Change-Id: If3b9d9b25b6ec6a7d2c8a0327dc7b330f0f09f8c
Reviewed-on: https://review.typo3.org/27392
Reviewed-by: Stefan Neufeind
Tested-by: Stefan Neufeind
[CLEANUP] $LANG->JScharCode() => quoteJSvalue()

Replace JscharCode() with GeneralUtility::quoteJSvalue()

Instead of making JavaScript use a String.fromCharCode, it will now use
a sanitized quoted string.

Change-Id: Idf81d5524d4bbb60b515670aa13648aa52064905
Resolves: #55009
Releases: 6.2
Reviewed-on: https://review.typo3.org/27380
Reviewed-by: Markus Klein
Tested-by: Markus Klein
Reviewed-by: Michiel Roos
Tested-by: Michiel Roos
Reviewed-by: Stefan Neufeind
Tested-by: Stefan Neufeind
[BUGFIX] Typo in TypoScriptFrontendController

$this->typ needs to be $this->type

Resolves: #55753
Releases: 6.2
Change-Id: I5414de0a00b4d0b7adecd783243990397cccb0b7
Reviewed-on: https://review.typo3.org/27403
Reviewed-by: Markus Klein
Tested-by: Markus Klein
[TASK] Remove rollover functionality from TMENU

The TMENU code has "RO" functionality in its class.
This code might be used from TMENU_LAYERS, but
not from the core itself. The core should remove the
according places. If extensions need this functionality
they could implement their own menu functionality.

The patch itself just removes the functionality of
rollovers, which is currently not documented nor used.

The idea of the content object with its extProc classes
is outdated and should be replaced by hooks and/or
signal slots.

As all methods that are removed, are private, they can
IMHO be removed directly.

In a second patch, there will be a hook interface
in order to manipulate the items.

Releases: 6.2
Resolves: #55751
Change-Id: Ibd5862124a6f8bc9f06254234cfbf179893c27cc
Reviewed-on: https://review.typo3.org/27396
Reviewed-by: Georg Ringer
Tested-by: Georg Ringer
[BUGFIX] Pass path instead of object to fileExistsInFolder

In ResourceStorage in the method getUniqueName second argument
passed to fileExistsInFolder should be string instead of object.

This fixes an exception thrown when trying to insert magic image
in the RTE.

Resolves: #55763
Releases: 6.2
Change-Id: I4ed624d4ea5a3602936cf8493052ef111a391990
Reviewed-on: https://review.typo3.org/27412
Reviewed-by: Michiel Roos
Reviewed-by: Marcin Sągol
Reviewed-by: Frans Saris
Tested-by: Frans Saris
Reviewed-by: Steffen Ritter
Tested-by: Steffen Ritter
[TASK] RTE MagicImage should use FAL processing API

The RTE magic still copies images to the old upload folder and
does not use the processed file functions of FAL.

This patch changes the RTE magic so storage 0 is not used any more
and that the FAL API is used for processing the images.

Resolves: #51807
Releases: 6.2
Change-Id: I07d609f9e638d79e785be4ebfd25631c70e3d141
Reviewed-on: https://review.typo3.org/23663
Reviewed-by: Stanislas Rolland
Tested-by: Stanislas Rolland
[TASK] Update Swift Mailer to 5.0.3

Change-Id: I2fdd722f56e69c2c6b2bae23d9944973eed3c066
Resolves: #55745
Releases: 6.2
Reviewed-on: https://review.typo3.org/27387
Reviewed-by: Stefan Neufeind
Reviewed-by: Markus Klein
Tested-by: Markus Klein
Reviewed-by: Anja Leichsenring
Tested-by: Anja Leichsenring
[BUGFIX] "New page" wizard discloses existence of pages outside DB mount

When creating a new page inside the top level of a DB mount which is
only a sub tree, the pages up and down from the DB mount root will be
displayed in the position selector if the logged-in user has read
permissions for these pages. This is unwanted information disclosure as
the permissions should not matter for pages which are outside the DB
mount.

Resolves: #18797
Releases: 6.2, 6.1, 6.0
Change-Id: I98008bc7f4308c9fb32dae645325e7cb1b44e413
Reviewed-on: https://review.typo3.org/22632
Reviewed-by: Markus Klein
Reviewed-by: Xavier Perseguers
Reviewed-by: Wouter Wolters
Tested-by: Markus Klein
Reviewed-by: Marcin Sągol
Reviewed-by: Stefan Neufeind
Tested-by: Stefan Neufeind
[TASK] Move TCEForms JS Code to external file - part 1

Parts of the JavaScript code used in TCEforms is put
inline, coming from the PHP file. There is no concept of
using HTML5-data attributes  to store information.
Plus, most of the JS functions are inline in the HTML
output and called in onclick etc. handlers in the HTML
elements.

Thus, the functionality cannot be abstracted from the
markup, and the JS functionality cannot be cached by
the browser.

Previously, the JS functionality is based on plain
MSIE4-compatible JS code without any framework
(no prototype, jQuery etc), and are not in any namespace.

This approach extracts TCEforms JS code to an external
file (AMD module / RequireJS), and rewrite it to current
jQuery and JS standards. But since the JS code
of TCEforms is very complicated,
it is hard to do it all at once, and the task is split
into separate parts.

The beginning marks the functionality around select
fields in TCEforms, the functions for importing values
from the Element browser, from any other source.

The patch does this:

* Extract the static functions from the PHP code to
an external JS file, in a new RequireJS module named
"TYPO3/CMS/Backend/FormEngine.js"
* Add options that are page-specific (backPath,
formName, callback fn) to PHP so JS can access it.
* Add classes and data-attributes and remove
onclick... functionality in order to reduce the HTML
code and split the data from the logic.
* Functionality for icons like "move up" etc are rewritten
* Functionality for adding elements from a two-select
(like "Access" element in pages) is rewritten, using
CSS classes and data attributes.

By keeping the global variables for the old functionality,
the old functions still work as expected.

Resolves: #46357
Releases: 6.2
Change-Id: I3b9936143342d99eec3058cd55fefdb006060cd4
Reviewed-on: https://review.typo3.org/18971
Reviewed-by: Andreas Wolf
Reviewed-by: Stefan Neufeind
Tested-by: Stefan Neufeind
Tested-by: Felix Kopp
Reviewed-by: Benjamin Mack
Tested-by: Benjamin Mack
[BUGFIX] Use count on storage after initialization of LazyObjectStorage

The count in LazyObjectStorage for relation type HAS_MANY has
to use the count on storage items after initialization. Otherwise
the wrong count is returned for a not persisted storage.

Resolves: #54724
Releases: 6.2, 6.1, 6.0
Change-Id: I817ce86dde11b175e6a5765a8f6518770ba75f28
Reviewed-on: https://review.typo3.org/27357
Reviewed-by: Wouter Wolters
Reviewed-by: Nico de Haen
Tested-by: Nico de Haen
Tested-by: Peter Beernink
Reviewed-by: Stefan Neufeind
Reviewed-by: Marcin Sągol
Reviewed-by: Marc Bastian Heinrichs
Tested-by: Marc Bastian Heinrichs
[BUGFIX] Typo in drag-drop area

Fixed typo from
"Drop & Drop to upload files"
to
"Drag & drop to upload files"

Resolves: #55756
Releases: 6.2
Change-Id: I35ebde8ee46fe673764c25019551130810241677
Reviewed-on: https://review.typo3.org/27441
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
Reviewed-by: Anja Leichsenring
Tested-by: Anja Leichsenring
[TASK] Add (>) icon to execute button (Scheduler)

Scheduler backend module comes with an execute button.
Add icon to the button.

Change-Id: I842683c4b332a87653474237a893dd65d5bd1b5d
Resolves: #55789
Releases: 6.2
Reviewed-on: https://review.typo3.org/27451
Reviewed-by: Marcin Sągol
Tested-by: Marcin Sągol
Reviewed-by: Wouter Wolters
Tested-by: Wouter Wolters
[BUGFIX] Fix "action" labels in BE log

Add missing label action_1_5 and fix label action_1_4.

Resolves: #55698
Releases: 6.2, 6.1
Change-Id: I7f04aaf9d8b53cbe3109dbf72f4fddb0c089e9ad
Reviewed-on: https://review.typo3.org/27361
Reviewed-by: Wouter Wolters
Reviewed-by: Marcin Sągol
Reviewed-by: Jan Bartnik
Tested-by: Jan Bartnik
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
[TASK] Add mapping between .pps, .ppsx and powerpoint

Add missing mapping between pps, ppsx
and the powerpoint application.

Resolves: #53833
Releases: 6.2
Change-Id: I9ecd8ec899bb24245326ca42a469ee41de9b2c79
Reviewed-on: https://review.typo3.org/27457
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
Reviewed-by: Wouter Wolters
Tested-by: Wouter Wolters
[TASK] Default parameters in ExtensionUtility::registerModule

Adds default parameter array() for controllerActions in registerModule.
This way an own main module group can be added with

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerModule(
	'VENDOR.' . $_EXTKEY,
	'newMainGroup'
);

Change-Id: I1218a5069d7787f65e77d1d23a58d307461f7743
Resolves: #54869
Releases: 6.2
Reviewed-on: https://review.typo3.org/26717
Reviewed-by: Christian Kuhn
Reviewed-by: Marcin Sągol
Tested-by: Christian Kuhn
Reviewed-by: Anja Leichsenring
Tested-by: Anja Leichsenring