2.0.0 (2015-08-11)

Base Distribution

[TASK] Remove TYPO3 favicon

[TASK] Update composer manifest for 2.0.x-dev

See https://jenkins.neos.io/job/Neos%20-%20Release/64/

[TASK] Update composer manifest for 2.0.0-RC1

See https://jenkins.neos.io/job/Neos%20-%20Release/64/

[TASK] Require release candidate of Flow 3.0

[TASK] Remove composer dependency on unstable doctrine/migrations

[TASK] Update composer.json information

[TASK] Update composer manifest for 2.0.x-dev

See https://jenkins.neos.io/job/Neos%20-%20Release/63/

[TASK] Update composer manifest for 2.0.0-beta6

See https://jenkins.neos.io/job/Neos%20-%20Release/63/

[BUGFIX] Use more specific version of doctrine/migrations

This pins the version to a release candidate (~1.0.0 is specified in TYPO3.Flow) instead of the dev-master version that is implied by “@dev”.

Fixes: NEOS-1385

[BUGFIX] require 3.0-x-dev of Flow packages

During development of the 2.0 branch, we want to test the upcoming Neos release with the upcoming Flow release. That’s why it makes a lot of sense to require the 3.0.x-dev branch-tip instead of the last Beta version.

(discussed together with Karsten)

[TASK] Update composer manifest for 2.0.x-dev

See https://jenkins.neos.io/job/TYPO3%20Neos%20Release/62/

[TASK] Update composer manifest for 2.0.0-beta5

See https://jenkins.neos.io/job/TYPO3%20Neos%20Release/62/

[TASK] Update composer manifest for 2.0.x-dev

See https://jenkins.neos.io/job/TYPO3%20Neos%20Release/61/

[TASK] Update composer manifest for 2.0.0-beta4

See https://jenkins.neos.io/job/TYPO3%20Neos%20Release/61/

[TASK] Update composer manifest for 2.0.x-dev

See https://ci.neos.typo3.org/job/TYPO3%20Neos%20Release/57/

[TASK] Update composer manifest for 2.0.0-beta3

See https://ci.neos.typo3.org/job/TYPO3%20Neos%20Release/57/

[TASK] Do not require dev-master of doctrine/migrations

With doctrine/migrations not having had a stable branch for years, Flow always required dev-master. Now that 1.0 is being worked on, require @dev instead and delegate the version to the Flow package.

Related: FLOW-300

[TASK] Update composer manifest for 2.0.x-dev

See https://ci.neos.typo3.org/job/TYPO3%20Neos%20Release/51/

[TASK] Update composer manifest for 2.0.0-beta2

See https://ci.neos.typo3.org/job/TYPO3%20Neos%20Release/51/

[TASK] Change dependency handling in branch/release scripts

This change makes sure that the Neos packages always depend on the next significant release of the branch, never a fixed version. The manifest in the distribution pulls in fixed versions and (if needed) allows non-stable versions of the dependencies we have.

After a release, the manifest is reset to require the branch dev version again.

[TASK] Revert composer manifest to dev versions

See https://ci.neos.typo3.org/job/TYPO3%20Neos%20Release/50/

[TASK] Update composer manifest for 2.0.0-beta1

See https://ci.neos.typo3.org/job/TYPO3%20Neos%20Release/50/

[TASK] Adjust set-dependencies script to 2.0-beta1 release

Related: NEOS-1243

[TASK] Depend on Flow 3.0 beta

Related: NEOS-1243

[TASK] Update dependencies in composer manifest

This adjusts the dependencies to require:

  • TYPO3.Neos.Seo as ~1.0
  • TYPO3.Imagine, TYPO3.Twitter.Bootstrap, TYPO3.Form, TYPO3.Setup are required as ~2.0

Related: NEOS-1243

[TASK] Adjust dependencies for the 2.0 branch

[TASK] Update PHPUnit and vfsStream dependencies

This updates PHPUnit from 4.5 to 4.6 and vfsStream from 1.4 to 1.5.

[TASK] Update composer manifest for 2.0.*@dev release

See https://ci.neos.typo3.org/job/typo3-neos-branch/5/

[TASK] Add @dev stability flag for FE Login package

This change sets the @dev stability flag for the Flowpack.Neos.FrontendLogin in order to satisfy the minimum- stability setting.

Related: NEOS-433

[BUGFIX] composer.json includes development versions in stable releases

In Idddd184af48f6d32b995e8d224a7e237aaee84bd the requirements for branch tip versions were introduced to easy development, however that had a bad side effect causing the stable releases to pull unstable versions of packages.

To fix this the release scripts are adjusted to work with dependencies on development branch versions.

Fixes: NEOS-1216 Depends: I791174633d2b1b0fb7263504744901d87bbb1ec6

[!!!][TASK] Move PhpCodesniffer installation to Build folder

This change removes the development requirement to the PhpCodesniffer and moves it to the Build folder like we do with Behat. This prevents problems that the dependent packages need to be updated in case of breaking changes in Flow while the packages are not even running on Flow. This happened now by deprecating the excludeClasses feature.

This change is marked breaking as the bin/phpcs symlink will be gone or a dead link after upgrading. To fix this the following commands have to be executed:

rm -rf bin/phpcs
cd Build/PhpCodesniffer/
composer install

Related: FLOW-103

[!!!][TASK] Pull in stable versions of 3rd party dependencies

This change removes the minimum-stability setting in the manifest and instead sets the @dev stability flag on our own packages. This makes sure only stable releases of 3rd party dependencies are pulled in.

This change is breaking as the Doctrine.Instantiator package will now have different casing the name. For this reason the Configuration/PackageState.php will have to be deleted manually.

[TASK] Update PHPUnit requirement to 4.5.*

Updates PHPUnit to version 4.5.*

[TASK] Add support metadata to composer.json

[TASK] Add date to changelog titles

[TASK] Update PhpUnit to 4.3 and vfsStream to 1.4


[TASK] Update references in documentation

See https://jenkins.neos.io/job/Neos%20-%20Release/65/

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update list of available user interface languages

Only includes languages that are fully translated.

Resolves: NEOS-1486

[BUGFIX] Content item in backend menu panel not fully translated

Fixes: NEOS-1496

[BUGFIX] Missing labels in user settings for save & edit user

Fixes: NEOS-1495

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Translatable content dimensions labels

Enables translating of labels for content dimensions and their presets.

Resolves: NEOS-1397 (cherry picked from commit 73ebcb3dba0f63f650679c913a13dbe19e9195b3)

[TASK] Adjust BackendRedirectionService to UserService->getBackendUser

(cherry picked from commit c328800df38537a67ee54dd4515f69c6bec3f604)

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Make Aloha placeholders translatable

Like all other configurable labels in node type configuration, the Aloha placeholder is made translatable. Same logic as with property labels applies with the magic i18n string, which is transformed into a label id like:


Resolves: NEOS-1494 (cherry picked from commit 1c27bf608e235e1e1a7f2df7804e22233dfa0e22)

[TASK] Translatable title for Edit / Preview modes

Makes the title of Edit / Preview modes translatable.

Related: NEOS-1397 (cherry picked from commit f4c166acf330a61e00e488c57fe7be7e71e3a56c)

[TASK] Translatable node type groups

Makes the labels for the node type groups used in the insert new dialogs and node type editor translatable.

Additionally removes some unused labels using the old format.

Related: NEOS-1397 (cherry picked from commit 573ff5c61820053a369f0a369f3b6ac1d6f66f85)

[BUGFIX] Missing node type configuration causes JS load error

If the node type configuration cannot be found for the current document node a fatal error is thrown in the navigate component. This change makes sure to properly test if the configuration is available before using it, to prevent such errors.

Fixes: NEOS-1478 (cherry picked from commit 4417789175c4476538d4055fc3929f2992288155)

[BUGFIX] ImageVariantGarbageCollector shouldn’t remove used images

The GarbageCollector would remove used instead of unused ImageVariants due to a wrong value comparison. This is fixed with this change.

Fixes: NEOS-1485 (cherry picked from commit 3715d1022d5e30f6d3bfcc2b4ed5d73c2af00dc5)

[TASK] Update 2.0 release notes

Resolves: NEOS-1425 (cherry picked from commit 323ba7cff8cc4af81f116cb4ac1e9813c9a6c323)

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Add changelog for TYPO3 Neos 2.0.0-RC1

See https://jenkins.neos.io/job/Neos%20-%20Release/64/

[TASK] Update references in documentation

See https://jenkins.neos.io/job/Neos%20-%20Release/64/

[TASK] Improve robustness of Media Transformations

Adds extra checks for resource existence to the Media transformations to avoid broken transformation states while upgrading Neos to 2.x.

Fixes: NEOS-1463

[TASK] Adjust documentation to auto-generated node names

Many have trouble with finding a child node by it’s node name due to the change to auto-generating node names. Therefore the examples for getting a child page by a given name is changed to getting by the uriPathSegment instead, which is more visible.

[TASK] Add indices to Eventlog tables

Especially the update query on publishing of nodes is rather complicated and benefits a lot from indices to speed up the process.

This adds two basic indices that should be useful for publishing of nodes and displaying the event list.

[BUGFIX] In select boxes, allow to hard-code the placeholder text (without localization)

Without this change, the “placeholder” can not be hardcoded anymore (which is a 2.0 regression).

[BUGFIX] Node created in new dimension not shown after creation

When a node is created in a new dimension using the content dimension selector, the new node is not shown after creation.

Related: NEOS-1450

[BUGFIX] Show correct tooltips for root nodes in navigate component trees

The title attributes for the root nodes in the navigate component trees (node/structure) didn’t take translation into account leading to labels like “some.label.id” or “undefined”. With this change I18n.translate() is applied to the tooltips fixing that issue.

Fixes: NEOS-1436

[BUGFIX] Avoid mismatching finalImageDimensions on load

Due to the bindings we have, it could happen that the provided metadata for an image contain values for an ResizeAdjustment that are slightly different from the calculated sizes by using a ratio generated from the crop values. This mismatch would lead to a value difference and applicable changes for an image right after selecting it.

The change circumvents that by setting the dimensions straight from the provided metadata (again) after bindings have triggered.

Dimensions will still be updated when cropping so it could happen that the crop area is modified in a way that you end up with the same crop area and still have a modification afterwards due to the calculations done. This is probably acceptable.

Resolves: NEOS-1384

[BUGFIX] Remove usage of NodePaths utility in 2.0

The NodePaths utility was introduced for master and doesn’t exist in the 2.0 branch therefore I5bdbb7424c8575b8075876a4fcfeef64379ab015 introduced a regression by using it.

This changes replaces it with string operations.

[BUGFIX] node:repair generateUriPathSegments should use dimensions

The generateUriPathSegments plugin for node:repair should take all dimensions into consideration and not only language.

This change fixes it by using the new methods added for fixing node:repair in TYPO3CR.

Additionally now applies to root nodes and uses the node label instead if it’s name to generate the URI path segment.

Depends: I995285f22fa5486d5bc53c4f96f68bb9fae831a3 Fixes: NEOS-1466

[TASK] Update translations from translation tool

[BUGFIX] CreateNodeForTheTreeAction needs to filter for tree

The change Id9ea03a3935150b6f81d71ee27ef848e8e15aad1 introduced a regression as the returned children are not correctly filtered for the tree they are displayed in.

This change adds a node type filter based on the trees general base node type filter.

Fixes: NEOS-1469 Related: NEOS-1053 Related: Id9ea03a3935150b6f81d71ee27ef848e8e15aad1

[BUGFIX] Fix flushing of documents when parents subpage layout changes

The entry tag for documents is currently set to DescendantOf_{documentNode.identifier} which will flush a document if _any_ of the descendant nodes changes. This was originally planned to flush the document for parent layout change, but fails to do so and causes lots of unnecessary cache flushes.

With the support of array cache entry tags we can do better by directly referencing all parent document nodes in the tags.

Fixes: NEOS-1317

[BUGFIX] Selected node not active in structure tree after reload

When the context structure tree is reloaded the currently selected node is not activated after reloading the tree. This gives an invalid state of the tree where the inline and structure tree are out of sync, since the root element is active in the structure tree instead.

Fixes: NEOS-1473

[TASK] Update translations from translation tool

[BUGFIX] Load structure tree containing nodes with invalid types

As loading the structure tree doesn’t work at all if any children are of a NodeType that is no longer available you have no possibility to delete invalid nodes.

To solve this issue TYPO3CR introduced a configurable NodeType fallback which is used by Neos to handle those invalid nodes as having the fallback type transparently when loading them into the structure tree.

This way they can be deleted or have their type changed.

Depends: Iec3727f002868398a86984d1f1a1ff6408c931b8 Fixes: NEOS-649 Related: NEOS-1246

[TASK] Prevent infinite loop in JS translations with placeholders

If a label with placeholders isn’t properly used an infinite loop will occur, to prevent that the loop is broken if an error occurs.

Related: NEOS-1264

[BUGFIX] Child nodes missing for newly created nodes in structure tree

When inserting a node type that has auto created child nodes, the child nodes aren’t shown until reloading the tree. This change makes sure all auto generated child nodes are shown for newly inserted nodes.

Fixes: NEOS-1053

[BUGFIX] Reload structure tree after adding new nodes

When nodes were changed in the structure tree the tree would only reflect the current page after having navigated to another document for the second time.

This was caused by a fix added with https://review.typo3.org/26158 and which is no longer needed, since the observer on pageNodePath is not triggered if the same page is reloaded.

Fixes: NEOS-1343

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[BUGFIX] Page reload shouldn’t occur if reloadPageIfChanged is false

If both reloadIfChanged and reloadPageIfChanged are false for a property, no content reload should occur when changing that property in the inspector. Currently they do due to a fallback to handle unexpected server responses.

Related: NEOS-827

[TASK] Update translations from translation tool

[BUGFIX] Title in users management & user settings module broken

The title tag in users management & user settings module contain untranslated translation ids due to a custom title generation.

Fixes: NEOS-1453

[TASK] Update translations from translation tool

[BUGFIX] uriPathSegment logic break non-document nodes with content object proxy

When inserting a new document node on a level that has non-document nodes using content object proxy a fatal error is thrown for not being able to call getUriPathSegment on the content object proxy. This happens due to the uriPathSegment logic tries to find all siblings (regardless of being documents or not) with a certain uriPathSegment. This becomes a problem when the property is fetched from a content object proxy instead of a node, since it calls an undefined getter method.

To fix this issue only document node types are tested for having the same uriPathSegment property.

Fixes: NEOS-1455

[BUGFIX] Typos in a couple of module labels

Related: NEOS-3

[TASK] Remove unused shared accounts partial

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[BUGFIX] Fix double encoding in flash messages of modules

Backend modules had their flash messages escaped twice since the change with id I9b766f12fa84a0f231ef8aa27cc20bfa64423c49.

Fixes: NEOS-1451

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Fix error message in UserInitialsViewHelper

[TASK] Update translations from translation tool

[TASK] Add changelog for TYPO3 Neos 2.0.0-beta6

See https://jenkins.neos.io/job/Neos%20-%20Release/63/

[TASK] Update references in documentation

See https://jenkins.neos.io/job/Neos%20-%20Release/63/

[TASK] Update translations from translation tool

[TASK] Fix version in conf.py

[TASK] Use fallback labels if no translation is available

Related: NEOS-1439

[TASK] Translatable backend modules

Replaces all hardcoded labels with translatable labels for the core backend modules & module menu.

Resolves: NEOS-1439

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[FEATURE] Add Caching EEL helper

Introduce EEL caching helper with methods to allow generating correct caching configuration for multiple nodes. That would allow to fix caching of TYPO3.Neos.NodeTypes:ContentReferences.

Resolves: NEOS-1437

[TASK] Translations for JS labels in media browser/module

Related: NEOS-1264 Depends: I1fc53e11cc8b332d515cf711572582f6cff966da

[FEATURE] Support placeholder parameters in I18n JS helper

Adds support for using placeholders in translation labels in the I18n helper for JavaScript.

Related: NEOS-1264

[TASK] Make menu level available for menu items

This change adds the possibility to access the current menu level in a TYPO3.Neos:Menu TypoScript Object. Use {item.menuLevel} to access the current Level in your fluid template.

Resolves: NEOS-1375

[TASK] Wrong type for DateTime editor in documentation

This change replace the old `date` editor type, with the new `DateTime`.

[BUGFIX] Fix tooltip translations in context bar

The fullscreen and live view buttons are having proper translated labels with this change.

[TASK] Translate labels in media browser and module

Copies all the templates to the Neos package in order to be able to translate the labels using the backend users language setting.

Resolves: NEOS-1264

[TASK] Expose I18n helper in external JS API

Adds the I18n helper for backend translation to the external JavaScript API. Example usage:

window.Typo3Neos.I18n.translate('id', 'Fallback', 'TYPO3.Neos', 'Main');

Related: NEOS-1264

[TASK] Adapt image editor to support change in ResizeImageAdjustment

The ResizeImageAdjustment has been updated to support image upscaling in Ib53a23c07b28baa65ee02a38f00d9d9a0a7f84ad, this change adapact the JS Image Editor to support this new property.

Related: FLOW-297

[TASK] Use Flow TranslationHelper

As functionality has been moved to the Flow TranslationHelper we use that instead of the one that was in Eel.

[BUGFIX] Prevent exception when backend module doesn’t have XLIFF file

When a backend module creates a flash message it’s translated by default and if a module doesn’t have any XLIFF files, an exception will be thrown. This is breaking and unexpected behavior and thus the exception is caught to prevent breaking modules for not having translations.

Related: NEOS-1439

[BUGFIX] Missing $ (jQuery) dependency in storage.js

$ (jQuery) is used in storage.js however that dependency is not included, thus it only works if jQuery is available globally.

Related: NEOS-1368 Related: I50700e30034b33ac95d963f99f258aac1b832194

[TASK] Prevent errors with invalid lastVisitedNode

As the last visited node is not really relevant we can ignore all Exceptions while trying to resolve it. If an Exception happened we will return NULL and redirect to the site root with default dimensions.

Related: NEOS-1330

[TASK] change lastVisitedNode to contextPath

In order to consider the current dimensions when redirecting the user to the backend, we use the entire contextPath, but only change the workspace to the the users afterwards.

Related: NEOS-1330

[TASK] Update translations from translation tool

[TASK] Adjust to new @context TypoScript alias

Related: NEOS-1379

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[BUGFIX] Translate the node type labels in the node type filter

Resolves: NEOS-1435

[BUGFIX] Translate nodetype labels in history view

Depends: I1fc0042cd74f85636c4816def6c81764383e8134 Resolves: NEOS-1428

[TASK] Update translations from translation tool

[BUGFIX] Update content correctly after applying inspector changes

When applying changes in the inspector for properties that require a reload, the element wasn’t updated correctly due to the change I18f86eeaa9f47737506fdb289833c2fe982bcb79 changing the response from a JSON formatted response to a redirect to a HTML response.

This change adjustes the Backbone sync to handle this change and additionally makes the XHR request available for the success callback.

Related: NEOS-1368

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Make initial setup step clearer

Adds an explanation about the image libraries and slightly changes the styling of the alerts to make clearer that it is OK to just have one of the listed libraries. Also warns about the usage of GD in production due to the memory issues experienced.

Additionally removes the “upload” test that in fact just tested if a resource is accessible and if file_get_contents works on remote resources. The second was a reported point of failure and due to the shutup “@” operator nothing would be logged or displayed just the setup would say your configuration is not ready to upload anything (which might or not be true at this point).

We could reintroduce an automatic AJAX upload and display the upload again to prove it worked.

[TASK] Update translations from translation tool

[BUGFIX] fix labels in management / workspaces

Resolves: NEOS-1427

[TASK] Update translations from translation tool

[BUGFIX] fix regression in ImageEditor introduced by I40311648344e1cf3015e4006c035d8d079d0e254

Without this change, the Image Editor is completely broken.

Related: NEOS-1392

(cherry picked from commit 25d96382d6701f981a45c4c3d593000571d4c924)

[BUGFIX] MIssing label for shortcut inspector group

[TASK] Fix various styling issues in content dimension selector

  • Get rid of usage of ”!important”
  • Remove left-border on buttons
  • Fix background-color on dialog close button

[BUGFIX] Translation regression in Content Dimension Selector Dialog

Related: NEOS-3

[TASK] Create new ImageVariants on change

Changing the properties of an ImageVariant in the Neos backend should result in the creation of a new ImageVariant instead of modifying the old one. Otherwise changes would immediately be visible in other workspaces as well.

Fixes: NEOS-1392

(cherry picked from commit c84dcb5e940b53997f9a9052ef2a7ea5c055111c)

[TASK] Disable history by default

As we are in beta we should disable the History module by default as new features are not added anymore before final.

If you want to try out the history module, you need the following configuration:

            enabled: TRUE
      enabled: TRUE

Fixes: NEOS-1270

[TASK] Allow to disable backend modules in Settings

We need this in order to easily disable/re-enable e.g. the history module.

Example usage:

            enabled: FALSE

Resolves: NEOS-1412

(cherry picked from commit 92dfe4748bc86b3f6b1b86566ee730fd2db1e51d)

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[BUGFIX] Avoid side-effects when rendering content for node creation/updating

The Service\\NodeController which is used to render nodes via AJAX in backend operations breaks on inserting plugins as linking in plugins is broken due to a wrong parent request.

This change moves rendering fully to the Frontend\\NodeController so the parent request for plugins is always correct. It triggers a redirect to the showAction with internal arguments needed to render the node out of band.

Fixes: NEOS-1368

[TASK] Update translations from translation tool

[TASK] added a section “Custom TypoScript Objects” to the “Extend Neos” documentation

(cherry picked from commit cde7f62292df65466b0e2182fd0a726853c09b44)

[TASK] added a section “Custom Edit Preview Mode” to the “Extend Neos” documentation

(cherry picked from commit 220c3b1d886d857bfc4fdf1e4a8f83707441995a)

[TASK] added a section “Custom FlowQuery Operations” to “Extend Neos”

(cherry picked from commit faae7f3adebffab80f313c4e4b088efc270adf2b)

[TASK] Update translations from translation tool

[TASK] Clean up Release Notes

The 1.0 release notes are merely links to the Changelogs. The >=1.1 release notes could be useful even when they are for older versions of the docs. So, this archives <1.0 and keeps >1.0.

This also adds a :reversed: flag to the TOC, so that the the release notes can be listed in reverse chronological order.

[BUGFIX] Allow publishing/discarding of removed nodes

This tweaks the propertyMappingConfiguration of “nodes” argument in the Workspaces module allowing submission/reversion of deleted nodes.

Previously they triggered a property mapping exception because the specified nodes weren’t found.

[BUGFIX] Various label translation regressions in

Resolves: NEOS-1407

[TASK] Replace logo with header in backend login screen

Since there isn’t any official logo currently, the logo for the in the backend login screen is replaced with a header with the text: “Login to {siteName}”

[TASK] Display content collections in workspaces module

Previously content collections were not displayed as changes in the workspaces module, since they usually didn’t matter. However now they can be actual content elements as well and are included in the publish counts so they should be shown for consistency reasons.

Related: NEOS-268

[TASK] Remove visible TYPO3 references

Removes the notion of TYPO3 Neos and the TYPO3 logo from visible places in the Neos UI.

Resolves: NEOS-1352

[TASK] Update translations from translation tool

[!!!][TASK] Remove unused Service\NodeController::getPageByNodePathAction

The action is unused and additionally creates a hardcoded live context which would lead to unexpected results anyway.

Resolves: NEOS-1391

[TASK] added a section “Custom ViewHelpers” to the “Extend Neos” documentation

(cherry picked from commit d7e3993ce0abd4dfeac387093d487cb7ecfe4454)

[TASK] added section “Custom EelHelpers” to the “Extend Neos” section.

(cherry picked from commit 6835badeaa0f220cf14bab301418bae35c87b6a2)

[TASK] viewDefinition labels could be translated

Views are introduced as a kind of an abstract Document in TYPO3.Neos.GoogleAnalytics. Translations where possible for properties as the common way.

Related: NEOS-1268 (cherry picked from commit 6a42c02c0a3bc4aab6a6c740f721d708d7ccdcf8)

[BUGFIX] Prevent AssetEditor items to be removed randomly

If you removed an asset from an AssetList using the AssetEditor, other assets were removed too.


Apparently the reason for this behavior is that the remove() function is used by the Ember View implementation and probably it’s called by the framework when redrawing the View.

Fixes: NEOS-959

[TASK] Remove ChangeLogs for other branches from documentation

Having the ChangeLogs of all previous branches only balloons the documentation without a real gain.

[TASK] restructure documentation of NodeType definition

  • Extract NodeTypeDefinition out of ContentStructure
  • Move the PropertyEditorReference from NodeTypeDefinition to the reference-section
  • Extracted CustomValidator and CustomEditor sections to the extend neos section
  • Mentioned DataSources in the CustomizingInspector section

[BUGFIX] Translate various backend services

In order to translate labels correctly based on the backend users language setting for the backend services, we need to set the locale for those requests.

Related: NEOS-3

[BUGFIX] Return backend user even if security context is uninitialized

If the security context has not yet been initialized the user service would return NULL instead of initializing the security context and then check if there was a backend user. Instead of only returning it if it’s already initialized, it checks if it’s possible to initialize or not.

[BUGFIX] Prevent client-side performance issue when refreshing editables

Refreshing an editable should take the same approach as enabling the editing in create.js. There could be sever client-side performance issues when calling midgardEditable on an element that has lots of nested editables because that will end up in many RDFa entity extractions (VIE load).

This changes implements an explicit loading of entities from RDFa from the given element and gives the midgardEditable widget an explicit model.

Fixes: NEOS-1405

[BUGFIX] ChangeType of node must ignore unknown properties

Fixes: NEOS-981

Depends: Ie5ed58d95739bfc171a1ce9f67516c2b9a7e9b79 (cherry picked from commit 56edac3dc00d5ca96d07bb8397c594e132c80b58)

[TASK] Adjust DocTools configuration

Adjusts the DocTools configuration further and moves it to the end of the Settings.yaml (as it’s not that important for everyone).

[TASK] Add documentation for NodeType Translations

Resolves: NEOS-1182 (cherry picked from commit 2d7b85774b3db42e1685479e3940276107f03633)

[TASK] add a short abbreviation of the installation requirements to the neos documentation

(cherry picked from commit bad1434e3251435585d4771a42a641f8f70a7ede)

[TASK] Use methods to get label instead of accessing raw configuration

[TASK] Remove unused ImageController

The Backend\\ImageController is no used anymore as all tasks are fulfilled by the Backend\\ContentController. There is not even a route to access the controller actions therefore it is removed.

Resolves: NEOS-1390

[BUGFIX] Editables and vie are not updated correctly

View and Create entities of child nodes need to be updated after replacing the markup of updated nodes with the new one from the server.

The wrong behavior can be tested by changing the layout of a multi-column element. This will the result in $columnsCount publishable changes but in fact it should be $columnsCount+1 as the content element itself is changed as well. This is only correctly reflected in the UI after reloading. This change fixes that.

Fixes: NEOS-1387

[BUGFIX] Adjust TypoScript rendering tests to removal of TYPO3 mentions

Related: NEOS-1352

[BUGFIX] Manually change workspace in vie model only on update

When inline editing we just update the node to the server without actually changing the dom, so we need to override the node workspace name manually in the vie model to have the correct count of publishable nodes. If we re-render an updated node we replace the markup with the newly rendered so the vie model is already refreshed. In that request the workspace name is not given correctly so the JS updated it to undefined which resulted in wrong change counts.

Fixes: NEOS-1394

[TASK] Don’t trigger check for publishable nodes on vie create

This change improves the performance by omitting unnecessary events in PublishableNodes.

The user interface would trigger updates of the publishable node count as many times as there where vie entities on the page, iterating all the entities as it was bound to the vie create event.

This is replaced by listening to internal events.

[BUGFIX] Rendering of Neos elements only in backend

This is a follow up to I2c48f66716dfee756418f4fdb95b958a2bb24f01 which changed the way it was checked if Neos meta data should be rendered. First of all the cache context should match with used context variables. Now documentNode is used everywhere. Without this fix it could happen that the meta data was rendered in the frontend as well due to evaluation of the not existing context variable. Additionally security checks in the templates can the removed as the context check also checks for backend access permissions.

[TASK] updated the “create a Plugin” docs for Neos 2.0 and Flow 3.0

The following changes are covered in this change:

  • added section headlines
  • updated the documentation of the migration-generation
  • added a basic Policy.yaml
  • altered the suggested route configuration to be compatible with neos
  • added documentation for the configuring of TypoScript autoloading in Settings.yaml
  • added a section about settings variables from TypoScript was added
  • added a section for plugin linking
  • added short sentences regarding routing and view-configuration.

Resolves: NEOS-226

(cherry picked from commit 91fd8b0199858580eff0cb98e79a29b5e289dc22)

[TASK] add a copy of the fluid documentation from flow to neos

(cherry picked from commit 7e87f878c995bf84f3f94edc533b5179c9dea8b6)

[TASK] Rework documentation structure

Also include auto generated docs of more packages.

Structure of the Documentation:

  • Getting Started
  • Technical Principles
  • User Guide
  • Creating a Site
  • Extending Neos
  • Inside of Neos
  • References
  • Contribute
  • How Tos
  • Running Neos
  • Appendixes

The configuration for the auto generated documentations was moved into the settings of the Neos package and was extended to cover all packages that are part of a Neos demo installation.

The existing parts were not altered yet. They were simply moved into the new structure.

Resolves: NEOS-1376

[BUGFIX] Global editableOptions should not get a model set

The change I5dc73d0d09408c9985e309ad7ca24acdec0c9b45 introduced a regression by adding model to the global editableOptions breaking refreshEdit as the model would be a wrong one. This breaks image uploads and crop for example.

Fixes: NEOS-1374

[!!!][TASK] Adjust translation handling code

Adds translation capability for NodeTypes and separate xliff sources.

The translationLabelId is no longer used and can be removed from all NodeType configurations.

NodeType configuration will be automatically amended with translation ids for labels if a label is either specifically set to NULL label: or if it is set exactly to the string 'i18n:auto'. If you modify properties from a superType and you want to keep the label you should not set the label at all. To overwrite it with a autogenerated label matching the inheriting NodeType you can set it to NULL or to a custom label string.

So if the default id format is used only xliff files need to be added to existing packages to translate them.

Valid label id formats are now:


SourceFile will default to “Main” and “Vendor.Package” will default to “TYPO3.Neos” if not set.

You can have any XLIFF files labels included in the user interface by setting:

          'TYPO3.Neos': ['Main', 'Inspector', 'NodeTypes/*']

Where the key is your package key and the array is an array of files with globbing inside of your translation folder. See the Neos package for an example.


To use NodeType translations the XLIFF files must be included by you.

Additionally mutes all missing translation logging on client side.

The following is technical information that is not relevant for integrators.

PackageKeys are now converted to be separated by underscore instead of ”.” which means the package key is always one level in the translation data structure and not multiple. This prevents problems with the source naming. Before the source “NodeTypes” from the TYPO3.Neos package would go into “TYPO3.Neos.NodeTypes” which conflicts with the labels from the “TYPO3.Neos.NodeTypes” package. This happens only for consumption in the JavaScript user interface.

JavaScript code was cleaned up and adjusted to other parts of Neos.

Package and source given in the label id have precedence over package and source given directly to the translate helper.

Fixes the problem of script tags in tag attributes by making the translate helper an unbound helper.

This is only breaking if you used the label id format with a i18n: prefix that was introduced during development of the backend translation feature.

Fixes: NEOS-1277 Resolves: NEOS-1258

[BUGFIX] Render only metadata for removed elements

Removed elements are rendered for detecting publishable changes on the current document. As we do not display them we can as well render only the metadata container.

[BUGFIX] Translate error messages in JS validators

Resolves: NEOS-487

(cherry picked from commit f16e654af3aa3235ee687f418fe224fc2b6772fa)

[TASK] More reliable appending of “neos-backend” css class to body tag

This adds the “neos-backend” class to the body tag via TypoScript if the backend is loaded. This allows reliable to check via JavaScript if the backend is loaded or not, without having to wait for the JS backend to be bootstrapped. It works with existing custom added css classes for the body tag which are already added via TypoScript on:


Resolves: NEOS-1360

[FEATURE] SVG support for image content

This allows upload and usage of SVGs in image elements. SVG images automatically disable resizing and cropping.

Resolves: NEOS-93

[TASK] Display technical node type in title for insert new new options

  • show the nodetype name including the namespace in the hover title

Resolves: NEOS-1123

(cherry picked from commit ffb674ec1774544b9168d54399029834e975c67e)

[BUGFIX] Creating asset collection inside image browser

The regex of the privilege target `TYPO3.Neos:Backend.Module.Media.ManageAssetCollections` doesn’t match the namespace and therefore it is not possible to create collections from inside the image browser.

Related: NEOS-1373

[BUGFIX] Ensure contentElementWrapping processor is executed last

In some cases where integrators add their own @process rules to content, the contentElementWrapping process is not executed last potentially causing the wrapping to be added to a wrong wrapper element.

This is solved by setting the position of the processor to:

@position = 'end 999999999'

Related: NEOS-1326 (cherry picked from commit aeaece7b1fffcc793e5928c6055af7b9b90bdb51)

[BUGFIX] When triggering page reload return from _insertNode

The _reloadPage function in NodeActions.js requires additional JavaScript which makes the reloading deferred. To avoid running into errors in the code following the call to _reloadPage the function should return at this point.

(cherry picked from commit 4466e607c5fc69d293b7a9d890598edf956b4366)

[BUGFIX] Select2 background image visible in high resolution

In I152f6ab8734f5ade6edc56d0ff14d8f55d5ef244 a regression was introduced for high resolution displays since the removed background was shown again due to usage of ”!important” in the high resolution styles.

[BUGFIX] Fix select2x2.png not found error

Adjusts the Gruntfile to fix the path for that file as well.

[BUGFIX] Do not trigger loading of entities when initializing editables

Since we already load all entities on a document after loading, there’s no need to load VIE entities again. This can cause delays of several seconds when entities are nested (e.g. content collections) on complex documents.

[TASK] Make PHP the default language for code blocks

The documentation now uses PHP as default language for code blocks, so that even when using just two colons to start a code-block it is highlighted.

[BUGFIX] Crop values comparison doesn’t rely on property order

The crop property order was important for comparison, this change turns that into a specific compare method that compares all properties separately so the order is no longer important.

(cherry picked from commit bf24cc83ab71aa4b9b65da05998fa2215b747dae)

[TASK] Fix some rST errors in changelog for beta3 and beta4

[TASK] Add support for sphinx-autobuild

This adds support for sphinx-autobuild, which watches the Documentation directory and automatically re-renders docs on change. This allows for a livepreview while editing the docs.

To use it, install sphinx-autobuild (https://github.com/GaretJax/sphinx-autobuild):

pip install sphinx-autobuild

To use livepreview just run make livehtml instead of make html. Then, visit to see the livereload version of the docs. Note, this builds the docs in _build/livehtml instead of _build/html because the docs include some javascript to make livereload work.

[TASK] Add changelog for Neos 1.2.9 & 1.1.7

[TASK] Make PHP highlighting work for snippets

This adds the “official” hack to turn on startinline for all php codeblocks whether they’re a snippet or a full file.

Sphinx and docutils don’t support setting the startinline option for pygments. That means that snippets of PHP code that don’t have “<?php ?>” don’t get highlighted. The hack was documented here: http://mbless.de/blog/2015/03/02/php-syntax-highlighting-in-sphinx.html https://github.com/fabpot/sphinx-php

[TASK] Add changelog for TYPO3 Neos 2.0.0-beta5

See https://jenkins.neos.io/job/TYPO3%20Neos%20Release/62/

[BUGFIX] Fix cache busting for backend modules

After I8672d4ee98e84989714bb5229de8144f1a2dadce resource paths are rawurlencoded, so adding a parameter to the resource view helper results in it being escaped.

This fixes it for backend modules.

Related: FLOW-321

[TASK] Add changelog for TYPO3 Neos 2.0.0-beta4

See https://jenkins.neos.io/job/TYPO3%20Neos%20Release/61/

[TASK] Update references in documentation

See https://jenkins.neos.io/job/TYPO3%20Neos%20Release/61/

[BUGFIX] Remove faulty, old code migration

The removed migration was a pre 1.0 migration changing TypoScript prototypes. The names of the prototypes have changed further and names could be used in userland code and so mess up the TypoScript. Any pre 1.0 projects still in the wild would need to migrate this manually from now.

[BUGFIX] Bust argument for backend assets escaped

After I8672d4ee98e84989714bb5229de8144f1a2dadce resource paths are rawurlencoded, so adding a parameter to the resource view helper results in it being escaped. This breaks the bust argument for the built backend asset files `ContentModule-built.js` and `Includes-built.css`

Related: FLOW-321

[TASK] Make Workspaces module translatable

This change replaces hardcoded labels in the Workspaces module by translation view helpers.

Resolves: NEOS-1363

[BUGFIX] Dimension menu broken on hidden pages

The dimension menu should show the translated version of pages even when they are hidden in menus. A regression with the change I50c5abf9d1dc15a9abad8042b74eee9646e8b166.

Fixes: NEOS-1355

[BUGFIX] Too many missing translation logs

To allow fallbacks to translations configured on supertypes of nodetypes we need to call the translate method twice which would result in a ‘Missing translation’ warning even though the fallback translation is found.

This change overwrites the default Ember.Logger behavior and adds a mute flag to prevent unneeded logs.

Related: NEOS-437

[TASK] Always load javascript after stylesheet

This change add a @position attribute to the javascripts TS path to include javascripts just after stylesheets. This is a best practice for web performance.

[TASK] mark ContentDimensionPresetSource as singleton

This is needed in order to inject fake configurations into it during Behat tests. See the related change in TYPO3CR where this is used.

Related: NEOS-1345

(cherry picked from commit 4e64cf13e55ffcbd4af4b3c5dbc8e5ccd56eb35d)

[BUGFIX] Selecting editable requires a second click

Fix regression caused by I6f04b5eed47193a5322514be67d179c593ed1ba8 where editables are not selected on first click. This happens because when focussing a new element the active editables are deselected, but the newly focussed editable is focussed before the update of the selected element and thus deselected for the newly selected element.

Introduce deselectEditables option for updateSelection(), to only try to deselect editables when it’s desired.

[TASK] Add Khmer language to Backend interface selector

This also changes the format of language label from just the local language to [local language - how it is called in English]

Example: “Dansk - Danish”

Resolves: NEOS-1336

[BUGFIX] ContentCollectionRenderer should not taint Node context

The ContentCollection also renders removed nodes while in editing mode, so publishing can pick up those nodes and give a correct count of changes available for publishing.

Without this change removed and non removed nodes are fetched in one expression, but that results in all visible nodes to have a “tainted” context that permits seeing removed nodes. This results in removed nodes being fetched if a content element fetches and renders sub nodes without using the ContentCase renderer (as that adds a class that hides removed elements).

This change fixes the problem by separating the retrieval of removed nodes from that of visible nodes. That way only the removed nodes get the tainted context but as they are not rendered visible that won’t be a problem.

[TASK] Include MultiSite documentation into TOC tree

This makes the MultiSite documentation (stub) available in the TOC tree of the documentation, so it actually shows up and is linked to.

[TASK] Remove unused requirejs path

[BUGFIX] PluginViews with error messages can be selected in backend

If an error occurred inside a plugin view element the message was rendered as plain text without any wrap. Because of that the item could not be selected in the backend any more.

The solution is to wrap the message in a p-tag for as it is already done if the PluginView is not configured at all.

Fixes: NEOS-1322

[BUGFIX] Fix use of undefined jQuery in NodeActions.js

A regression from I66802b9d7319422037b19bbd7848afd0b5c4e6a4 which added the use of jQuery, but only $ is defined.

Related: NEOS-613

[BUGFIX] Inserting content elements with nested content elements breaks

Fixes a regression introduced with the inserting/pasting inline content without reloading the page, caused insert of elements containing nested elements to break.

Related: NEOS-613

[TASK] Adjust TYPO3 Neos to just Neos in documentation

This adjusts the documentation–where it makes sense–to use just Neos instead of TYPO3 Neos.

Changelogs and release notes have been left unchanged since they should be “historically correct”.

[BUGFIX] Fix PDF rendering errors

This adjusts the markup of the options documentation on node types.

This not only uses definition lists that are better readable than deeply nested lists, it also fixes a rendering error when producing PDF (the infamous “too deeply nested”).

Some rST warnings are fixed along the way.

[TASK] Show version and release in front matter

[TASK] Exclude changelogs from PDF rendering

This saves some 600+ pages in the generated PDF, cutting down on the time needed to render, download, ... it.

[TASK] Rename Index.rst to index.rst

This is our workaround for an issue with rtfd.org so the documentation can be browsed when it has been rendered there.

(See https://github.com/rtfd/readthedocs.org/issues/1279 for details.)

[TASK] Switch to plain Sphinx build configuration

Switches to a more standard setup for rendering rST using Sphinx. A simple make html renders the documentation, if sphinx is installed.

The conf.py contains a tweak to allow using the RTD theme without confusing the renderer over at RDT itself.

[TASK] Add changelog for TYPO3 Neos 2.0.0-beta3

See https://ci.neos.typo3.org/job/TYPO3%20Neos%20Release/57/

[TASK] Update references in documentation

See https://ci.neos.typo3.org/job/TYPO3%20Neos%20Release/57/

[BUGFIX] Moving a hidden page throws exception

Moving a hidden page to a different parent will trigger regeneration of the uriPathSegment to avoid conflicts with the new sibling nodes.

The closure used to process signals should not be used to create node contexts as that will probably lead to faulty results. Instead a new signal in the Node object is used that delivers Nodes to the new UriPathSegmentGenerator when changing paths.

Additionally the generation of node uri segments has been moved to a static utility method.

Depends: I6c9f2bd0a720220225422882680e74dcc15905c3 Depends: Ia539cd3c709a741532c93646ef3eb88cb12c71ea Depends: I8640f783c949d3046e344912d99e1d4b51ef962f Resolves: NEOS-1309

[TASK] Allow pasting copied node multiple times

Instead of clearing the clipboard after copying content/documents, the copied node is kept in the clipboard to allow pasting it multiple times. When cutting a node it’s still cleared like before.

Resolves: NEOS-1319

[BUGFIX] Only the Site Package kickstarted in Setup Tool should be active

Disables existing Site Packages in case a new package is kickstarted or a package is imported in the Setup Tool.

This prevents a big variety of errors when people think the Demo Site is inactive, but is still interacting with the their site because Settings and NodeTypes are loaded.

Resolves: NEOS-1109

[BUGFIX] Translations from other packages then Neos are ignored

The backend translation changes ignored the labels from external packages making the node type translation useless. This change adds a configuration setting so specific sources can be configured to be included in the xliff.json

Resolves: NEOS-1258

[TASK] Select newly inserted element automatically

When inserting/pasting content the new elementing should automatically be selected to speed up the content creation process. The same behavior takes place when using inline handles or the structure tree.

Resolves: NEOS-603

[TASK] Add date to titles for 1.1.5 & 1.1.6 change logs

[TASK] Add changelog for TYPO3 Neos 1.2.8

See https://ci.neos.typo3.org/job/TYPO3%20Neos%20Release/55/

[TASK] Add changelog for TYPO3 Neos 1.1.6

See https://ci.neos.typo3.org/job/TYPO3%20Neos%20Release/56/

[BUGFIX] Aloha configuration gets applied to nested properties

Adjust selector for applying Aloha configuration, to only match those properties that belong to the same node and not descendants of nested node’s wrapping.

Resolves: NEOS-1316

[TASK] Insert content without page reload when creating/pasting

When new content is created or existing content is pasting using cut or copy, the page reload is replaced with directly inserting of the content. This is done to improve user experience for editors when creating/pasting content since it interrupts the flow, especially when working on long pages with lots of content.

Resolves: NEOS-613

[BUGFIX] Fix wrong cache invalidation message

The message for a DescendantOf_* tag referred to a wrong node, this is fixed by this change.

[BUGFIX] Allow PluginViews to encapsulate multiple actions

Currently the PluginViewImplementation only evaluates the default controller/action pair that is configured in the controllerActions setting of the corresponding NodeType. Additional controllers/actions are ignored so that it’s not possible to invoke them.

This is fixed by falling back to the default controller/action only if no explicit action is requested.

Fixes: NEOS-1311

[TASK] Add missing ChangeLogs to documentation

[BUGFIX] Live workspace shortcut breaks when having multiple dimensions

When using multiple content dimensions, the live workspace shortcut next to the fullscreen button, opens a broken URL because the dimensions are not stripped correctly.

Fixes: NEOS-1206

[BUGFIX] Prevent syntax error for backend in latest stable Chrome

Due to a bug in the recent stable version of Chrome the backend breaks occasionally when initalizing. This only happens when using the minified JavaScript build. The bug is caused by a non UTF-8 unicode character in the CodeMirror library using a UTF-16 character, which causes the bug in Chrome.

Updating CodeMirror to the latest minor version of 3.* fixes the issue, which is a good idea in any case. The issue is already fixed in Chrome, however it may take a while for a new stable version to be rolled out.

Fixes: NEOS-1312

[BUGFIX] Fix wrong/unexpected NodeType constraints behavior

This changes the constraints for TYPO3.Neos:ContentCollection to disallow TYPO3.Neos:Document but allow everything else.

That way, disallowing * and allowing something more specific in a NodeType works again as expected, as in:

          '*': FALSE

Fixes: NEOS-1310

[BUGFIX] Remove inclusion of removed stylesheet file in media browser

A old removed file was still included in the module leading to a missing resource being loaded. Additionally an existing file was configured to load twice.

Related: NEOS-1020

[BUGFIX] ImageEditor should check if image was removed

In case the image gets removed from the editor an JavaScript error was thrown due to not checking for a null value before accessing properties on the editor value. On removal the editor value property is set to null and then __updateValue() is called. This now checks if value is a null value before using any properties.

Fixes: NEOS-1276

[BUGFIX] Give useful error messages in media management

When an error occurs in an action only a generic error FlashMessage is rendered. This won’t help any users, therefor we are adding some custom error handling first hiding which action failed in Production context because no user can use that information. But it adds any validation errors as FlashMessages to the output to give users a hint what they did wrong.

Fixes: NEOS-264

[TASK] Code cleanup in node type configuration

  • Removes some blank lines
  • Removes wrong comment about extending content collections
  • Changes content collections to only allow content and other collections instead of everything
  • Adjusts a comment with an old node type for a page

[BUGFIX] Tooltips not working in media browser

The tooltips for icon buttons are not shown when opening the media browser, only in the media module.

Related: NEOS-1028

[BUGFIX] Delete confirmation dialog not displaying in media browser

When opening the media browser, not module, clicking the delete various delete buttons does not show the confirmation dialog.

Fixes: NEOS-1286

[BUGFIX] Missing fallback label in user language selector

If a language doesn’t have a label for the default language, the language selector will show the key instead of a label.

Related: NEOS-143

[BUGFIX] Correct language key for danish in availableLanguages

The language key for danish in the UI setting availableLanguages is set to dk instead of the correct da.

Related: NEOS-143

[BUGFIX] Missing padding before content collection creation form

In the media browser/module there’s no padding between the creation form and the edit icon for collections, when no collections have been created.

Related: NEOS-251

[BUGFIX] Fix unescaped HTML in danish XLIFF file

[TASK] Fix some more (syntax) errors in documentation sources

[TASK] Fix some (syntax) errors in documentation sources

[TASK] Update composer manifest for 2.0.0-beta2

See https://ci.neos.typo3.org/job/TYPO3%20Neos%20Release/51/

[TASK] Add changelog for TYPO3 Neos 2.0.0-beta2

See https://ci.neos.typo3.org/job/TYPO3%20Neos%20Release/51/

[TASK] Fix dependencies in composer manifest

This relaxes the dependencies a bit.

[TASK] Update composer manifest for 2.0.0-beta1

See https://ci.neos.typo3.org/job/TYPO3%20Neos%20Release/50/

[TASK] Add changelog for TYPO3 Neos 2.0.0-beta1

See https://ci.neos.typo3.org/job/TYPO3%20Neos%20Release/50/

[TASK] Update references in documentation

See https://ci.neos.typo3.org/job/TYPO3%20Neos%20Release/50/

[BUGFIX] NodeWrappingHandler should not rely on “site” in context

The NodeWrappingHandler checked for existence of “node” in the TypoScript context but then accessed “site” which might not be available. In fact that is not needed and “node” is enough. This avoids errors in uncached rendering where “site” might not be part of the context.

[TASK] Update contributor list

Resolves: NEOS-1262

[TASK] Update release notes for 2.0

Resolves: NEOS-1154

[BUGFIX] Fix styling of exception messages

A regression in I08b3471460986af1ebb73d5bf3267a4aa2191254 meant that styling of the exception messages was broken due to a wrong nesting in the styles.

Fixes: NEOS-1244

[TASK] Adjust release notes for 2.0 beta 1 release

[BUGFIX] Changed Nodes need to be rendered before persisting

For some reason objects seem to get NULLed in persistAll() why exactly needs to be checked. But therefore A changed node needs first to be rendered and then persisted if that is needed otherwise referenced objects might not be fully available.

(cherry picked from commit cb412c768d6a8562a990667d0c7a5f930b3a9ac7)

[BUGFIX] Incorrect labels for shortcut page help texts

A regression was introduced causing a difference for the labels for the shortcut page help texts between the template and the label file. This changes synchronized them again and fixes the incorrect labels in the label file.

Related: I0f48d2b5989d391e857d872284230a417ebb6149

[BUGFIX] Unit test should not overwrite $_SERVER

Ovewrwriting $_SERVER can brake other tests as it is a global variable. This fixes the test and therefor avoids breaking other test.

[TASK] Adjust required versions in composer manifest

This adjusts the TYPO3.Setup and TYPO3.Twitter.Bootstrap dependencies to ~2.0.

Related: NEOS-1243

[BUGFIX] Route caches need to be flushed on node update

Changes done in Ic81c6595cb6594735206be8422cea5def01fbda7 introduced a regression preventing the route cache from being flushed before the nextUri for an updated Node was build. This resulted in errors if changing the uriPathSegment of the current node.

[BUGFIX] Prevent uncaught notice when not using content dimensions

With Ia5f57ac3e1ac1d878503f5a8f950c551e29a6840 a regression was introduced causing an uncaught notice, when not using content dimensions.

[BUGFIX] Handle arrays with one value for content class attributes

This change prevents the processor that appends the node type name as a class to content elements from breaking when the class attribute is an array with only one value. The regression was introduced with the change Iebdf4aaef6f764441903740a0d5a36cef0323218.

Fixes: NEOS-1259 Related: NEOS-513

[TASK] More robust appending of .neos-contentcollection class

If a content collection overrides the class attribute the class needed in the backend interface isn’t appended anymore. This leads to problems since that class is used in the backend interface. To make it more robust the class is appended using a processor instead, which can be disabled if desired. However the class will still be appended when in the backend, since there’s a dependency on the class.

Fixes: NEOS-1218

[TASK] Add changelog for TYPO3 Neos 1.2.6

See https://ci.neos.typo3.org/job/TYPO3%20Neos%20Release/49/

[BUGFIX] Take multi-dimensional node paths into account

The RouteCacheAspect didn’t correctly split the nodepath into parts for multiple dimensions and so routing caches would fail to be flushed when using multiple dimensions.

[TASK] Adjust node type config to new super type configuration format

Depends: I6b5c89f5c88339db99f4a81c5e6b74ec5e7ceee9

Related: NEOS-1253

[FEATURE] Allow settings a default asset collection for a site

Makes it possible to select a default asset collection for a site. When an asset is uploaded for a site the asset is automatically added to that collection. Additionally when opening the media browser/module the site’s default collection is selected automatically.

Depends: I8b8d9a3a3589b72d9374a0ee97b3fe0dd617ea8d

Resolves: NEOS-1256 Related: NEOS-251

[TASK] Embed caches for nested ContentCollections

Embed caches for nested ContentCollections, instead of doing it for ContentCollections inside of Content. In some use-cases root ContentCollections may be rendered inside of Content, that’s why it’s better not to depend on it.

[TASK] Remove unused method parameter

[!!!][TASK] Reload content without reloading the whole page

The behavior of the node type property setting reloadIfChanged to only reload the current element instead of reloading the whole page. This makes the experience for the editors a lot smoother especially on large pages or large elements, where the editor would easily get confused by the position changing after reload.

This is breaking in case you rely on the whole page being reloaded when a property of a single node is changed. To achieve the previous behavior a new option called reloadPageIfChanged is introduced.

Resolves: NEOS-827 (cherry picked from commit b5b0230eeffb21abcd8125536396179ece1ce008)

[BUGFIX] Flush content cache of source collection when moving content

Fixes a node being duplicated when cutting from one content collection and pasting into another one. This happens since the content cache for the previous collection isn’t cleared when the node is moved.

Fixes: NEOS-1224

[TASK] Improve usability of drop zone in media browser/module

  • Enables clicking the dropzone to select files
  • Removes unreliable hiding of drop zone
  • Adds active/hover states to the drop zone when dragging

Depends: I9e90bf7aa02379614c0e104666c77bb5669a9716

Resolves: NEOS-1077

[TASK] Adjust to confirmation dialogs in media browser/module

Adjusts styling to the confirmation dialogs and the added delete button in the thumbnail view.

Depends: I30352c6c7ec25bd3c973119f97353bac6415d7ea

Related: NEOS-1066 Related: NEOS-1025

[BUGFIX] Fetch external fonts via HTTPS

Currently the Login and Error Views of Neos include Google fonts via HTTP leading to Mixed Content errors when accessing the site over HTTPS.

This patch adjusts Error.scss and Login.scss accordingly.

Note: We don’t use protocol relative URLs by intention, because those are deprecated for security reasons.

Fixes: NEOS-1100

[BUGFIX] Always wrap content elements with root tag

This change adjusts the ContentElementWrappingService to make sure that a rendered content element always contains its own root HTML tag.

Background: Currently if a content element only renders a ContentCollection directly (without wrapping div for example) the neos attributes are added to the existing wrapping element of the ContentCollection, so the resulting code (in backend) is:

<div typeof="typo3:Some.Node:Type typo3:TYPO3.Neos:ContentCollection" ...

instead of:

<div typeof="typo3:Some.Node:Type">
  <div typeof="typo3:TYPO3.Neos:ContentCollection" ...

Leading to errors when trying to publish and/or working with the affected element.

This change adds an argument exclusiveAttributes to HtmlAugmenter::addAttributes() allowing for specifying attributes that force a new root element if one of the attributes is already set on the existing root element.

Fixes: NEOS-1223

[BUGFIX] Flush content caches when changes are discarded

The signal that a workspace change to a node was flushed was not watched. Probably because the Node also signaled it was removed before some refactoring. Now the signal is connected and discarding changes correctly flushes caches making the changes visible.

Fixes: NEOS-1251

[TASK] Adapt to changed behavior of AssetConverter in Media

The default behavior of the AssetConverter in the Media package has changed to create new asset objects for each uploaded resource. For Neos this is not what users would expect. The same Asset should usually exist only once. Neos needs to set the appropriate TypeConverter option on images to get this behavior now.

Depends: I5a319e2d027a870a9080fdcff353a1d1c4cb4d5e (cherry picked from commit 9f007f64079aa3228de2d2a99f788c1937c32bdc)

Revert “[TASK] Speed improvements for Page”

This reverts commit 0bbce6a77bc0331e9f188af68de2c6a8a58e40d0.

The change lead to issues with some things being cached and not cleared when needed like the CSRF token and some version numbers.

[FEATURE] Expose notifications in External JavaScript API

Enable external JavaScript to access the backend notification module to display notifications in a standardized way.



Related: NEOS-1020

[TASK] Remove empty foreach loops

Those loops seem not to have any usecase and as such only take resources.

[TASK] Show the image edit action when clicking on the inspector

When a use click on an image, in the inspector, this change open the edit action for the given image. Before this change we open the crop editor.

Depends: Ibeef9517d8d250f8dcb634db48e01aec2301bbad Resolves: NEOS-1084

[TASK] Adjust documentation version to 2.0

[BUGFIX] Correctly escape backslashes in HtmlAugmenter

When the HtmlAugmenter works on an element that has a root element, preg_replace was used to insert rendered attributes. This stripped one level of escaping, leading to wrong return values.

This was worked around in the ContentElementWrappingService, but that workaround was failing in some cases.

Fixes: NEOS-1245

[TASK] Fix font-weight in media tooltips

Depends: I85084a25d1fb11c1019fb53db83b14ba70ae2abe Related: NEOS-1028

[BUGFIX] Add Namespace for NeosException

In lines 88 and 91 NeosException is used, but which is not associated with a namespace. Therefore, there was an error if the appropriate package was not activated.

Fixes: NEOS-1240

[TASK] Adjust dependencies for the 2.0 branch

[TASK] Return 404 on inaccessible nodes

The Frontend\\\\NodeController currently throws an exception when trying to render a node that is protected by the ReadNodePrivilege because the $node argument can’t be mapped.

This change adjusts this behavior by throwing an NodeNotFoundException (HTTP Status 404) if the requested node could not be loaded.

Besides this change replaces some throwStatus() calls by proper exceptions so that the regular error handling can kick in.


When the FrontendNodeRoutePartHandler resolves a request, the Security\\\\Context is not yet initialized (per design). So it can resolve even protected nodes. But the PropertyMapper won’t map those leading to the exception.

Resolves: NEOS-1238

(cherry picked from commit 72c60e39ac16254a2b75197af4bac3ab8f95ae98)

[BUGFIX] Adjust IntegratingJavaScriptSlider cookbook

Since the TypoScript paths changed for 1.2 the cookbook doesn’t reflect realities anymore and missed the important part of including the additional TypoScript file to the Root.ts2.

[TASK] Update composer manifest for 2.0.*@dev

See https://ci.neos.typo3.org/job/typo3-neos-branch/5/

[BUGFIX] Remove Template.ts2 which refers non existing class

The deprecated TemplateImplementation in Neos was removed in change Ifea6a15069d7349404858639d1d69964269d9734 but the TypoScript file referring to it was not. This removes the references in TypoScript as well.

[TASK] Improve debug output for node objects by excluding large classes

With the change If4a692168d317cbcb7527fb28ebb113705f7c500 in TYPO3.Flow the ignoredClasses are configurable in the settings. This change adds ignoredClasses for this package to improve the debug output for node objects.

Depends: If4a692168d317cbcb7527fb28ebb113705f7c500 Resolves: NEOS-1140

[BUGFIX] Migration for serialized objects applies to all Assets

The migration used to transform serialized objects into a reference was just working with Images and arrays of assets but not with other asset types. This change adds a transformation for those as well.

Fixes: NEOS-1236

[TASK] Refactor the tree to use PositionSelector component

Use PositionSelector component for New and Paste buttons. CSS refactoring. Remove unmodifiableLevels constant and allow to modify any nodes in the tree, as long as constraints allow it. Adjust constraints to match current behavior.

Related: NEOS-1098

[FEATURE] Make inline editing handles behave the same as tree controls

Introduces dropdown for create and paste buttons with option to insert nodes before/inside/after.

Resolves: NEOS-1007 Resolves: NEOS-126

[TASK] Remove restrictions for ContentCollections to be extended

As it is now safe to extend ContentCollections, remove all checks that disallowed it and update docs and code comments to say so.

Related: NEOS-1094

[TASK] Speed improvements for Page

The backend parts of page are now integrated into the page cache depending on the fact that the backend is rendered. This allows for fully cached pages in live workspace. Previously the backend parts were still evaluated at runtime even on a live site.

[!!!][TASK] Implement ContentCollection in pure TypoScript

The change I06ba604f562685e3a1d5ee844a8adaec7eda20f5 was in fact breaking if you need to overwrite properties of the actual Collection renderer. Examples include the itemName, iterationName or itemRenderer. Those must now be set inside the content path of the ContentCollection.

So the following TypoScript:

carouselItems = ContentCollection {
  nodePath = 'carouselItems'
  iterationName = 'carouselItemsIteration'

Has to be changed to:

carouselItems = ContentCollection {
  nodePath = 'carouselItems'
  content.iterationName = 'carouselItemsIteration'

[BUGFIX] When a new site is created in Sites module, deactivate others

Disables existing Site Packages in case a new package is kickstarted or a package is imported in the site management module.

This prevents a big variety of errors when people think the Demo Site is inactive, but is still interacting with the their site because Settings and NodeTypes are loaded.

Resolves: NEOS-1108

[TASK] Adjust content dimension selector to dimension constraints

This change adjusts the content dimension selector panel to work with multiple dimensions when content dimension constraints are configured.

Related: NEOS-1205

[!!!][TASK] Method to easily determine if backend rendering

To reduce exposure to implementation details two helper methods have been added to find out if currently the backend is rendered and if the live workspace is rendered.

This deprecates the TypoScript context variable editPreviewMode that was used inside of Neos to know what to render. The change is breaking if you used this variable anywhere in your TypoScript. You can seamlessly replace it by using ${documentNode.context.currentRenderingMode.name}.

Related: NEOS-845

[BUGFIX] Allow NodeTreePrivileges to refer to node identifiers

The NodeTreePrivilege was introduced with a custom NodeTreePrivilegeContext that only implements the isDescendantNodeOf() constraint. That custom implementation, however, did not support referring to the node identifier, it only supported node paths.

This change fixes this by replacing the custom context and relying on the default NodePrivilegeContext which - as a side-effect - also allows for targeting of nodes based on their type.

Related: NEOS-944

[TASK] Integrate content dimension constraints into routing

This change integrates the new content dimension preset constraints into the FrontendNodeRoutePartHandler and thus makes sure that only allowed combinations are accessible through the frontend.

This change also includes documentation for the new feature.

Related: NEOS-1205

[FEATURE] Introduce show action for Content Dimensions REST service

This change introduces a show action for the content dimensions service. The new action allows for retrieval of presets of a single dimension or, if a filter is specified, returns only those presets which are allowed in combination with the given presets from other dimensions according to possibly defined content dimension constraints.


Retrieving only presets from the “language” content dimensions:

Retrieving only those presets from the “language” dimensions which are allowed in combination with the given “country” preset:

Related: NEOS-1205

[TASK] NodesController::createAction(): throw status instead of exception

The createAction() previously throwed a NodeCreationException if the given create mode was not supported. This action will now throw a status exception with Bad Request instead.

[TASK] Remove unnecessary usages of TYPO3 in documentation

Removes the usage of TYPO3 in the titles of various documentation since the context is known, it’s superfluous.

[BUGFIX] Escape class names in ContentStructure documentation

[BUGFIX] Documentation should document existing TypoScript objects

The TypoScript reference mentions two TypoScript objects in the TYPO3.Media namespace but that doesn’t exist. Those objects are in fact in the TYPO3.Neos namespace. The change reflects that.

Fixes: NEOS-1099

[TASK] Add changelog for TYPO3 Neos 1.2.5

[BUGFIX] Shortcut resolves to first node instead of sibling

Shortcuts pointing to the first child node resolves to the next sibling of the current page when navigating the child pages of the shortcut. This happens because the child nodes are fetched from the first level node cache, which can have a array pointer that has been moved.

Fixes: NEOS-1220

[TASK] Add changelog for TYPO3 Neos 1.1.1, 1.1.2, 1.1.4 & 1.2.4

[BUGFIX] Version upgrades leads to a broken backend

Existing users experience a broken backend between Neos upgrades due to the backend resources being cached in their browser.

To prevent this problem a bust header is added to the resource paths, based on the Javascript & CSS built files when using the minified versions.

Fixes: NEOS-1202

[BUGFIX] Hide content element handles when page is selected

I085f9dd7a692e12155d2627b7da50911766ba108 Introduced a regression that caused the content element handles to stay visible if the page is selected while a content element was selected before.

This change prevents unneeded manupulation of the nodes array in the node selection that caused this bug to happen.

[BUGFIX] SiteImport should persist Workspace and Site

With Id5d17fd64a744453e7bbc430fdea0fcc0761071e it seems that finally only Nodes get persisted in persistEntities(). To fulfill database constraints while adding Nodes we need to have the Workspace and Site already persisted when starting to import Nodes.

This is a follow up to I1834a7d388d7c61686138bf52a424ccadd3f7716, which only fixed it in SiteImportService.

Fixes: NEOS-1208

[BUGFIX] DimensionMenuImplementation uses configured dimension

Before this change configuring the dimension to use for the menu had no effect, since the dimension name was hardcoded to “language”.

[BUGFIX] Pull in missing jQuery dependency

This change defines jQuery as a dependency of the ContentModuleBootstrap since it is used while registering the known translations.

[TASK] Meaningful pre-selection of UI language for new users

This change sets the default value for the UI language in the form for creating new users (Administration > User Management) to the same language the currently logged in user is using. This should be a meaningful default in most situations.

This also prepends an empty option to the select fields in order to allow differentiation between “unselected” and “first option”.

[BUGFIX] SiteImport should persist Workspace and Site

Follow up to I1834a7d388d7c61686138bf52a424ccadd3f7716 which didn’t take the LegacySiteImportService into account. Of course the same change applies there as well.

This doesn’t need to be backported as the backported versions of this change already take care of both services.

Depends: I1834a7d388d7c61686138bf52a424ccadd3f7716

[BUGFIX] Display site import step error messages immediately

The error message occurring during a failed site import in the setup site import step are not displayed until after a refresh of the page. This happens because flash messages are used instead of a exception.

Fixes: NEOS-758 Depends: Ifbba8d4c45b87a6ec171f3fe72bbc093c7b93722

[BUGFIX] Explicitly store new assets when uploaded in the inspector

When new assets are uploaded in the inspector the server side service returns a persistence object identifier. When the changes are applied the node is then published with a reference to that identifier which is not known to the resource management.

This change explicitely adds the objects to the repository if they were not persisted before.

Resolves: NEOS-1204

[BUGFIX] Moving node to a new parent and back makes it disappear

When moving a node to a new parent and back to it’s original parent again makes it disappear. This happens because the NodeOperations move method checks if there already exists a node in that location in any context. Since there is a shadow node in it’s original place, that returns true and thus a new name is generated to avoid a conflict. Problem is that the shadow node and the node will then share the identifier on the same level, which leads to the node disappearing.

Fixes: NEOS-1203

[BUGFIX] Updating page in node tree can lead to problems

When a page is being edited in the node tree and the url is changed on the server side, the link in the tree is out of sync.

Additionally if the title of the current page is changed, the page is not reloaded.

To prevent these situations the URL of the node in the tree is updated, as well as the title and if it’s the current page it’s reloaded automatically.

Fixes: NEOS-1197

[BUGFIX] Prevent unnecessary double persist when updating node in tree

When a node is being edited in one of the tres in the navigate component, the inline element is synchronized causing an additional update call to the server. This call is unnecessary since that state has already been saved.

Fixes: NEOS-1196

[TASK] Re-use signal for nodePropertyChanged to flush route cache

[BUGFIX] DimensionMenu should work on pages hidden in menu

As the dimension menu uses code from the normal menu it also ignores documents that have the hiddenInMenu flag set. To make the DimensionMenu work on pages that have the flag set it needs to ignore that.

[TASK] Adjust tests to lowercase only node paths

Adjusts the NodeRenamingTest to the TYPO3CR change only allowing lowercase node paths.

Related: NEOS-1195

[TASK] Replace the installer screenshots

Update the installer screenshots in the documentation with the current versions screenshots.

Resolves: NEOS-1201

[BUGFIX] Deleting inline element breaks if title doesn’t contain tags

A regression was introduced in Ib5ae1224445d19316717bacda3732ddfff8c3a1c causing the deletion of inline elements to break if the title property of the element wasn’t wrapped in a HTML tag.

Related: NEOS-1125

[FEATURE] Inspector translation

This change adds support for inspector translation. To do so it extends the translate helper. Contains a reworked bootstrapping of the I18n for Neos in order to be able to load localisations inside the js. This customized bootstrap fixes bug NEOS-1057.

We follow the following convention for the translation labels for node types and node type properties:

nodetypes.<dotted node type name> nodetypes.<dotted node type name>.properties.<property name>


nodetypes.TYPO3.Neos.Document nodetypes.TYPO3.Neos.Document.properties.title

To prevent the requirement to translate labels specifically for every property even if the property is derived from a parent node type we allow setting a fall back translation id on a property. This means that if no specific translation is found for the node property we fall back to this fall back label if it is configured. This is especially useful for mixins, and can be used like:

label: ‘Hide’ labelTranslationId: ‘nodetypes.TYPO3.Neos.Hidable.properties.hide’

In all cases the default fallback is the label property.

Translate helper usage examples:

Value data bind or parsed as string:

{{translate value="Default label"}}

Fallback and id:

{{translate fallback="Default label" id="button.createNew"}}

Value, id and package:

{{translate fallback="Default label" id="createNew" package="Your.Package"}}

Data binding:

{{translate idBinding="view.label" fallback="Default label"}}
{{translate idBinding="view.label" fallbackBinding="view.fallbackLabel"}}

All arguments are allowed to data bind. Allowed identifier combinations:


Related: NEOS-446, NEOS-437, NEOS-487, NEOS-1057 Resolves: NEOS-443

[BUGFIX] SiteImport should persist Workspace and Site

With Id5d17fd64a744453e7bbc430fdea0fcc0761071e it seems that finally only Nodes get persisted in persistEntities(). To fulfill database constraints while adding Nodes we need to have the Workspace and Site already persisted when starting to import Nodes.

Related: Id5d17fd64a744453e7bbc430fdea0fcc0761071e

[BUGFIX] Moving nodes down on the same level makes it disappear

NodeOperations should check if a move stays inside the same parent because then it is just a reorder which means we do not need to generate a new node name for the node (which generates a wrong result anyway as the node name exists - but it is the node moved).

Releaes: master, 1.2 Fixes: NEOS-1199

[BUGFIX] Deletion of used assets not possible anymore.

Assets should not be deletable if they still have relations to Nodes. The changes to Asset handling and JSON storage have broken the way we detected those relations but with this change it works as before.

Fixes: NEOS-1112 Depends: I7bda7039423d05e83d5718a7b86c31c0b21d8c6e

[TASK] Add missing icon for plugin view

The plugin view content element doesn’t have a default icon and therefore uses the fallback icon. This is not helpful since the element cannot be recognized easily.

Even though plugins have the same icon by default it’s still better since that would relate them. Additionally most plugins would a specific icon instead of the default.

[BUGFIX] Allow overriding ArgumentNamespace for plugins

Currently it is not possible to set a plugin argumentNamespace from TypoScript as the order of resolution will always result in an early return because the NodeType will be resolved. This fixes the resolution order.

Fixes: NEOS-1097

[BUGFIX] Remove trailing slash from _assetMetadataEndpointUri URI

All other endpoints get called without trailing slash, and it’s really not needed there, but it can break rewrite rules on some sites.

[TASK] Add changelog for TYPO3 Neos 1.2.3

See https://ci.neos.typo3.org/job/TYPO3%20Neos%20Release/26/

[TASK] Add date to 1.1.3 changelog header

[TASK] Make node migration compatible with json properties change

Because the image variant change and json properties change have to be migrated in the right order we need to adjust the node migration to not use the node model for getting the property. This is because the node model returns NULL for the data as it is at this time serialized where the model is assumed to contain json.

This change updates the migration so it can migrate correctly.

Resolves: NEOS-427

[BUGFIX] Form validation results and behavior

Form validation errors of backend submodules were shown at the top of page with a wrong offset and the problematic fields were not highlighted. Also several forms had a bad behavior when pressing “enter” to submit and other small bugs.

With this change the validation error list has to be enabled by adding the “validationResults” section and rendering the “ValidationResults” viewhelper. Most forms should not need this when all errors are shown close to their fields.

Resolves: NEOS-264, NEOS-524, NEOS-1091

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Add changelog for TYPO3 Neos 1.1.3

See https://ci.neos.typo3.org/job/TYPO3%20Neos%20Release/30/

[BUGFIX] Flush doctrine query cache, when nodes are published

Publishing nodes might change node paths in the target workspace. A access restrictions on nodes partly depend on the node path, we have to flush the query cache to apply the correct query constraints with the new path information.

[BUGFIX] Editing plugin view breaks with unpublished master node

When a plugin view references a master node that hasn’t been published, an exception occurs because the node cannot be found in the live workspace.

Instead of looking for the master node in the live workspace it should look in the current workspace and with the current dimensions.

Additionally it prevents breaking if the master node can no longer be found.

Fixes: NEOS-1096

[BUGFIX] Initialize security in behat tests

This is needed to to the refactoring done in I3c459e4e11f93f6d95f2073226ca4e8137356017.

[BUGFIX] Do not suffix default action URLs with .html in the backend

Formally redirect URLs where build with a trailing ../.html this caused a 403 error on some setups.

Resolves: NEOS-1179

[FEATURE] Translation label scrambling

This change introduces the possibility to scramble all translation labels to help with translating the backend UI.

Relates: NEOS-89

[BUGFIX] Disable caching when editing nodes

In Internet Explorer the response from the backend when editing a page in the inspector was cached. This means that changes are not visible and the editor is forced to reload the backend. This change tells the browser not to cache the response.

Resolves: NEOS-1030

[BUGFIX] Follow-up for broken strip tags for title in inline delete dialog

The original bugfix didn’t work properly and contained a JS error.

Related: NEOS-1125

[BUGFIX] Improve usability of menu panel button

This commit improves the behavior of the neos-menu-button and the corresponding neos-menu-panel. The menu will now only be opened on a mouseDown and closed on mouseDown again or on a mouseLeave.

This commit also contains a bugfix preventing ghost clicks on the neos-menu-button.

Resolves: NEOS-608

[SECURITY][BUGFIX] Editors should not be able to access others’ workspaces

Severity: Low

This is a security fix, to restrict editors from accessing content in workspaces of other editors.

Note: We consider severity low, due to the following facts:

  • You still need an editor account to access any content in workspaces, that are not in the live workspace
  • Neos currently does not officially support access controls for editors

Fixes: NEOS-960

[TASK] Remove outdated Scripts/README

It has been deprecated by Documentation/DeveloperGuide/Development/UI.rst

[BUGFIX] Strip html tags in the inline delete node dialog title

Removes the html tags from node label displayed in the confirmation when deleting a node inline.

Resolves: NEOS-1125

[TASK] Collapse site selector in the menu by default

The site selector is seldom used and doesn’t handle many sites well. To make it better it should just be collapsed instead, then users can open it if they want to use it.

Resolves: NEOS-1130

[FEATURE] Check imagine drivers for image format support in setup

With this feature all available image libraries are checked for the support of png, gif and jpg files during the Neos requirements check, to make sure these basic web formats are supported on the system.

Resolves: NEOS-893

[FEATURE] Improve TypoScript Exception Message Rendering

Templating and styling for the error message rendering for TypoScript exceptions.

Resolves: NEOS-1106

[TASK] Root.ts2 not required anymore for a site

A default TypoScript for a site can be defined in separate package and so a site doesn’t require a Root.ts2 to run.

Related: NEOS-1120

[BUGFIX] Fix method argument override in NodeController

The argument node in NodeController::filterChildNodesForTreeAction is overrided by error. The regression was introduced by I42ab157cee3d1e2852442282857476d9f296f91f

[BUGFIX] fix regression introduced by “detect file-permission issues when publishing resources”

Resolves: NEOS-1111

[TASK] Change desiredNewPosition to inside for contextStructureTree

Related: NEOS-1143

[FEATURE] detect file-permission issues when publishing resources

This check during the setup finds two issues:

  • users who upgraded from Flow 2.x (Neos 1.x) need a different web server configuration which does not rewrite Web/_Resources
  • permission issues, where PHP is able to write a file into Web/_Resources, but the web server is not able to read them

Resolves: NEOS-1111

[TASK] Adapt to shadow node refactoring

Removes the check for shadow nodes in CotentElementWrappingService as shadow nodes cannot exist as Node objects any longer.

Releaes: master Depends: Ic855e10d7c6bd7fb73a5cb0926f8035910a790fe

[BUGFIX] Adjust LinkingServiceTest to Flow

Flows functional tests now correctly initialize the ResourceManager since I23d7a0511a33345bd0977776aa03226b155191b0 was merged. That means links generated Resource links are (correctly) prefixed with a host again. This change just adjusts the LinkingServiceTest to take that into account.

[TASK] Cleanup SitesController

The sites controller should use the the SitesService to prune a site and also call the importer just with the necessary arguments. It still created a context for importing which is no longer necessary.

[TASK] Fix broken and add new unit tests for EditableViewHelper

In change Ifd9342c98ffdfb1d0ced94d5282262523cd7a64e the Neos EditableViewHelper learned new tricks, but the existing unit tests were not adjusted.

This change fixes that and adds a new test actually covering the new feature.

Related: NEOS-944

[TASK] Disable editing in UI for read-only nodes

This change deactivates the inline editing for nodes restricted by the EditNodePrivilege (see I16d415780896df2dc048ff0f43f35a2106bb5d69). If the node is a document the inspector will be disabled, too.

Related: NEOS-944

[TASK] Add “cleanup” schema migrations

This adds migrations for MySQL and PostgreSQL that tweak the DB schema a bit, cleaning up some leftover discrepancies.

[FEATURE] NodeTreePrivilege

A privilege that prevents matching document nodes to appear in the Navigate Component. It also prevents editing of those nodes in case the editor navigates to a node without using the Navigate Component (e.g. by entering the URL directly).

Usage (in Policy.yaml):



      matcher: 'isDescendantNodeOf("/sites/some-site/some-path")'

This would add a privilege that intercepts editing of the /sites/some-site/some-path node (and all of its child-nodes) unless explicitly granted to the current role.

Resolves: NEOS-944

[TASK] Speed improvements for Menu

To determine the rootline for the current page we now use Context::getNodesOnPath() instead iterating the parents to avoid multiple queries.

[TASK] Optimize media browser/module for smaller viewports & many tags

Optimizes the media browser/module to work better for smaller viewports and in general. Additionally moves the sidebar down underneath the images when there’s more than 25 tags to compress the needed size.

Depends: Ie54e0f8c7aa88e23f2a8750b4a794464744f9985

Resolves: NEOS-357 Resolves: NEOS-641

[BUGFIX] Fixes styling issues in the pagetree of the Neos UI

Adds a dedicated font-size to the navigational anchors. Adds a dedicated no text-shadow to the navigational anchors.

Fixes: NEOS-998 Related: NEOS-515

[BUGFIX] Fix outdated nodetype in documentation

The nodetype TYPO3.Neos.NodeTypes:AbstractNode has long been renamed to TYPO3.Neos:Node.

[BUGFIX] Prevent duplicate errors while moving nodes

Now that the URI is separated from the node path the path can be changed when moving nodes. This prevents errors when duplicate paths could be created.

Also refactors this kind of operation into a service to be reused by other consumers.

Fixes: NEOS-1009

[BUGFIX] createNewNode renders invalid uri path segments

This change fixes a problem resulting in invalid uri path segments when creating new document nodes. When a new document was created, the NodeController would simply take the entered document title as the node’s uri path segment, even if it contained characters which are not allowed as part of an URL path.

We now use the TYPO3CR’s function for rendering valid node names (like in the past) which provides some more or less meaningful transliteration.

Resolves: NEOS-1079 Related: NEOS-1059

[TASK] Improve handling of tags in media browser/module

  • Support editing of tag labels
  • Hides tag creation from until tag editing is enabled
  • Show a confirmation prompt when deleting a tag
  • A few additional tiny improvements

Depends: I435be505503a164b4b4993bf3bfbedca8c04e26c

Related: NEOS-1074 Related: NEOS-1072 Related: NEOS-1070

[TASK] Improve delete action flash message in media browser/module

Adjusts the flash message in the overridden delete action in the media browser/module to follow the original.

Related: NEOS-1024

[BUGFIX] Move images used in release notes to right location

This moves some images used in the Neos release notes to the right location.

Fixes a regression from https://review.typo3.org/37278

[TASK] Change background color of image preview in media browser

Instead of a custom color the grayDarker color is used for the image preview background in the detail view of the media browser/module. This matches the list/thumbnail views as well.

Related: NEOS-1020

[TASK] Cleanup inline ViewHelper syntax in templates

Additionally fixes a couple of bugs related to incorrect usage of the translate ViewHelpers.

[BUGFIX] Hide submodules the current user doesn’t have access to

This is a change that was missed while doing refactoring to adjust to ACL changes in Flow (resource is now privilegeTarget) in change I5b3c9981a606c886707dd536e5a72cfde0dec947.

Without that fix, setting privilegeTarget for module, e.g. TYPO3.Neos:Backend.Module.Administration.Configuration results with the module still showing in module overview section.

Resolves: NEOS-1067 Related: FLOW-11

[BUGFIX] uriPathSegment handling is slow and unreliable

This change fixes two issues with the mechanism which assures the uniqueness of uriPathSegments among node siblings:

  1. Updating document nodes with lots of siblings was extremely slow
  2. Newly created nodes will get a non-human-friendly uriPathSegment if the proposed name was already taken by a sibling.

A severe side-effect was introduced with the change I2315d30256f7d291204363fdde7e761154cbc7e4, making adding/updating nodes extremely slow when a node has many siblings.

Multiplied by the check happening for every given node property change, can lead to timeouts.

This changes the behavior to only do the necessary check if it’s actually needed, in case of new nodes, updating the uriPathSegment property or changing the path of an existing node.

Fixes: NEOS-1059

[TASK] Document default Eel helpers in context

This adds a list of Eel helpers available in the context by default to the section on “Eel and FlowQuery” in the “Integrator Guide”.

[TASK] Adjust to deterministic Adjustment order in Media

With the change I0b31c216c983393e19055f7db07d1ea2beb9ac9f all image adjustments have a defined order that needs to be preserved. The UI needs to reflect that.

Depends: I0b31c216c983393e19055f7db07d1ea2beb9ac9f

[BUGFIX] Search field in media browser/list overflows

The submit button for the search field in the media browser/list overflows it’s container.

Depends: I5f388e64cd9a498ae0ac7b4c2afaf3e8f349fb7a

Related: NEOS-832

[TASK] Improve tagging user experience in media browser/module

  • Display visual feedback when dragging assets in thumbnail view
  • Improved styling of tag dropzones
  • Display loading indication when an asset is dropped on a tag
  • Display move-icon in list & thumbnail view instead of cursor pointer
  • Display indication when creating new tag
  • Display blue outline when hovering assets in thumbnail view
  • Make tags more visible in list view

Depends: I065534694ade7a64ca34fd7932f56518c017d042

Resolves: NEOS-1018 Resolves: NEOS-336 Resolves: NEOS-454

[FEATURE] Support non-HTML formatted backend module requests

Support request to backend module to respond with JSON formatted output. This enables AJAX request inside modules without having to circumvent the module framework.

No wrapping is added around the content of JSON formatted responses like it is with HTML responses.

[TASK] Move release notes to a new home in documentation

This adds a home for release notes to the documentation and moves the release notes that were in the change logs there.

While being at it, we also added a stub for the release notes of the upcoming version 2.0.

[BUGFIX] make error/exception handling more robust - allowing to reload in case of an error

Currently, if an error during rendering occurs, and then the user reloads this document where the error occurs, the Neos backend breaks. This is because some required context information is not added to neos-document-metadata, breaking the page tree and the global workspace status indicator.

This is a regression introduced by Ia8fa5228e772b0fee15921e02135c4899df39c0a

[BUGFIX] user:addrole and user:removerole are broken

This fixes a regression which was introduced in patch set #14 of change I8a4c7010e25842583538e32dc8ef9cd851f306b4. As a result, roles could not be added or removed via the command line interface.

Related: NEOS-962

[BUGFIX] Bring back event log table migration for MySQL

In change I8a4c7010e25842583538e32dc8ef9cd851f306b4 the migration for MySQL from I1b44f47787c2ebaf3c40dce952fc82cd0f6ae43e was removed by accident.

[!!!][TASK] Add code migration for ImageVariant to ImageInterface change

This is a follow-up to “[TASK] Adjust to new Flow resource management / new media management” (Ic81c6595cb6594735206be8422cea5def01fbda7) that replaced the inspector data type ImageVariant` with ImageInterface.

This change is marked breaking in order to raise awareness.

To adjust your configuration, you can simply replace occurrences of TYPO3\\Media\\Domain\\Model\\ImageVariant by TYPO3\\Media\\Domain\\Model\\ImageInterface in your NodeTypes.yaml configuration and in your *.ts2 files.

Alternatively you can execute code migrations on your site package(s):

./flow flow:core:migrate --package-key <sitepackagekey>

Related: NEOS-883

[TASK] Update translations from translation tool

[TASK] Add Polish to available UI translations

This adds Polish to the list of available Neos UI translations.

Resolves: NEOS-1026

[TASK] Update translations from translation tool

[TASK] Improve usability of sites administration module

To make administration of sites more user friendly and clear, a series of improvements are done:

  • Group all sites by their site package
  • Show site packages without any site instances
  • Each site package is collapsable
  • Color of warning badges are different than important badges
  • The amount of domains are shown in the overview
  • If domains are configured, the first active one is displayed
  • New domains are by default active
  • Instead of a state column a badge is added for less common states
  • The site package name links to the package administration module
  • Site package state is displayed if deactived or unavailable
  • If a deactived site package contains site instances it’s marked with a important badge instead of a warning badge
  • If no domains are configured and there’s multiple site instances the domain counter is marked with an important badge
  • If no sites instances are available for a site package a message is shown instead

Additionally some changes are done to the package administration module to keep consistency.

[FEATURE] Introduce signals for user domain service

This introduces a row of signals for the user domain service.

Related: NEOS-962

[TASK] Adjust to moved context dependent TypoScript exception handler

The exception handler has been moved to the TypoScript package instead, thus the Neos one is removed and replaced with the new one.

Depends: I3fa9282943c239d973d6d787656e6dbd3656c1fc

Related: NEOS-898

[!!!][FEATURE] Centralized Neos user domain service

This change centralizes the management of Neos users by introducing a domain service and refactoring code which previously created, deleted and updated users.

The user management module has been refactored to rather deal with User objects than with Account objects.

The UserService provides all important methods for creating, updating or deleting users – including managing roles and passwords – and is intended for carrying out additional tasks whenver users are changed.

The UserCommandController has been refactored and now uses the new UserService. Along the way the output of a few of the commands has been improved.

The AccountExistsValidator has been renamed to UserExistsValidator. The UserFactory (non-API class) has been removed.

Non-backwards-compatible behavior:

The user:remove command has been renamed to user:delete. Additionally it drops support for the “–confirmation” option and now interactively asks for confirmation. For automation purposes the “–assume-yes” parameter can be used in order to assume “yes” for all interactive dialogs.

Resolves: NEOS-962

[BUGFIX] Crop view can be opened regardless of it being disabled

Clicking image in image editor opens crop view even though the cropping feature is disabled.

Fixes: NEOS-1051

[BUGFIX] Cropping in the image inspector editor disabled by default

Since the resource refactoring it is possible to disable cropping in the image inspector editor. As a new default cropping is disabled by default, this changes it to be enabled by default instead.

Resolves: NEOS-1049

[BUGFIX] Secondary inspector close button hidden behind HTML editor

Related: NEOS-124

[FEATURE] Search field in media browser/module lists

Adds a search filed in the sidebar of the lists of the media browser/module to filter the assets based on their filename, title, description or tags.

Depends: I32be341073b0e027a7722380408df5b4af04b7c9

Resolves: NEOS-832

[BUGFIX] Send JSON Content-Type response header in xliff.json

Related: NEOS-435

[TASK] Clear Xliff service cache on translation file changes

Clears the TYPO3_Neos_XliffToJsonTranslations when the files have changed monitor triggers with the type Flow_TranslationFiles

Additionally optimizes the TYPO3_Neos_Configuration_Version cache clearing only to occur for necessary types.

Resolves: NEOS-451

[TASK] Streamline navigate and inline delete dialogs

Streamlines the navigate component’s delete dialog with the inline editing’s delete dialog. Also removes the usage of the term page, since it’s used in the node and structure tree.

Fixes: NEOS-869

[TASK] Preview of image thumbnails in media list view

Shows a flyout with a larger preview of image assets when hovering the thumbnail in the media browser/module list view.

Depends: Ie511edefd812e3bc1b8c12334d87388dd444a20a

Resolves: NEOS-1021

[BUGFIX] User menu and publish menu dropdowns do not open

A regression introduced in Ic013e0e6980886ad1c73a56eaae63b9ca771dbc7

[BUGFIX] Circular dependency causing unexpected behavior

A require dependency to itself caused unexpected behavior and broke things randomly in the content module.

Regression introduced with I160263ccd4cac3f6d749b14a7e703dc53d4e7cfe

[TASK] Close button for secondary inspector

Adds a close button in the top right corner of the secondary inspector, making it possible to close without having to click the opening button again.

Resolves: NEOS-124

[BUGFIX] Correct upload button label

As the uploads now start directly there is only the Choose button left which is a bit misleading in the ImageEditor. The button was thus renamed to Upload because that is the actual action that happens. Additionally some unused code in the ImageEditor template was removed.

Resolves: NEOS-125

[BUGFIX] Prevent call to undefined getContext() on a non-object

This change fixes the situation that $documentNode was set to TRUE when it is set while it should be set to the actual node object.

Regression introduced in I4cd01ee64a293d5ac2da75013e0fe3cfcddad5a9

[BUGFIX] Clear asset import cache in tests

Functional tests that import assets need to clear the first level cache of the TypeConverter to avoid unwanted side effects.

[TASK] Mark recent core migrations applied

This commit doesn’t contain any changes, it simply marks recent migrations applied so that:

./flow flow:core:migrate --status

won’t show any open migrations for this package.

[BUGFIX] Select2 leaks to global space

Select2 writes a Select2 variable directly to the global scope which causes problems with website frontends that use jQuery and Select2. This change uses grunt to move the definition of window.Select2 to the Shared/Utility module in Neos.

[TASK] Remove Neos CacheManager

This change removes the class \TYPO3\Neos\Cache\CacheManager. The service is currently only used in one single place (ConfigurationCacheVersionViewHelper). Instead of providing a service for this task, the view helper will now determine the configuration cache version itself.

Also removes the unused property $cacheManager from JavascriptConfigurationViewHelper.

[FEATURE] Node type filter support in site:export command

Adds an option parameter to the export command to filter out certain node types in a site export. Example of excluding news articles:

./flow site:export --nodeTypeFilter \\!Acme.Site:Article

Resolves: NEOS-438

[BUGFIX] Tear down the context created in the tests

The context cache can lead to side effects in other test cases so it should be cleared even if there is only one test.

[BUGFIX] Event model database and schema mismatch

A hack was used to add auto_increment to the uid property of the event domain model, causing a mismatch between the schema and the database. This breaks the doctrine:update command making it impossible to update the database based on the schema.

To fix it a proper Doctrine generator is used for handling the auto_increment across database types. Additionally the uid is used as the identifier and it’s marked as signed.

Fixes: NEOS-984 Related: NEOS-655

[TASK] Add schema validation rules for Inspector views

Related: NEOS-760

[FEATURE] Display file size and last modified in media list view

Adds two new columns in the list view with file size and last modified information. The last modified date is shown relative to the current date, for easier distinguishment.

Additionally makes it possible to change the sorting by clicking the name or the last modified table header.

Depends: I41ee9b90b4ae3a1d290d22c07d1732d556a9ce10

Resolves: NEOS-1022

[TASK] Site import/export end-to-end test

Adds a functional test case covering basic import/export scenarios.

Related: NEOS-1003

[FEATURE] Sorting/filtering options in media browser/module

Styling for sorting/filtering options in the media browser/module lists.

Depends: I31fbb39715130fd8dc306cb6a3b632cd941c18d0

Resolves: NEOS-1023

[FEATURE] Support dropdowns, tooltips, popovers in modules

Adds support for using dropdowns, tooltips & popovers in backend modules. Use the following attribute to enable the functionality:


The components are based on Boostrap 2.3, but all CSS classes are prefixed with “neos-*” to avoid conflicts with normal bootstrap usage.

[BUGFIX] Adjust to typo fix in namespace of NodeOperationsTrait

A follow-up to Ibb8a59d78b02efa72de68e6d08d455ea262ff1fe that fixed the namespace of the NodeOperationsTrait but did not adjust the using code accordingly.

Related: NEOS-28

[BUGFIX] Remove obsolete account in context tests

The two unit tests about adding the account to the TypoScript context have become obsolete by removing the account from the context and using an EEL helper instead. Therefore these tests are removed.

[TASK] Display upload progress in media browser/module

Display upload progress per file when uploading assets in the media browser/module using the drop zone in the thumbnail/list views

Depends: I20fa172005d70cc535ff97bdb31c6ac83e039154

Resolves: NEOS-877

[TASK] Change border-style when hovering image editor drop zone

Related: NEOS-606

[TASK] Adjust to typo fix in namespace of NodeOperationsTrait

[TASK] Remove obsolete RoutingLoggingAspect

The RoutingLoggingAspect adviced methods in TYPO3\Neos\Service\NodeService, but that class does not exist anymore. If we need this kind of logging again, it should be implemented directly in the respective class and probably not via an aspect.

[FEATURE] Universal argument for site:import

This change adds a third way for site:import to specify either the filename or package key to import from: if neither –package-key nor –filename is specified, Neos will try to detect an “exceeding argument” and use it as filename or package key automatically.

Releated: NEOS-638

[BUGFIX] Content collections show same cached content

A regression introduced with I68f309ee84f4688446ae2c969b4cfaef84f52455, led to all content collections being cached with the same empty entry identifier. This meant that all content collections showed the content of the first one being cached.

[!!!][BUGFIX] Account should not be available in the context

The current account entity should not be available in the context but rather retrieved via global context or EEL helper. Having it in the context leads to serialization of the account which is not a good idea. Also depending on the cache configuration you might get an old account.

This fix uses the new SecurityHelper introduced in accompanying changes to get the account entity for rendering the backend information. It drops account from the context.

This is marked breaking if you use the context variable ${account} in your own TypoScript. You should instead use ${Security.getAccount()} to retrieve it. Therefor you should also remove all usage of account in safed contexts for uncached TypoScript objects.

Resolves: NEOS-1012

[BUGFIX] Fix undefined $ in ViewView.js

The generic views code lacked an import of jQuery so it failed e.g. on Shortcut pages. This change adds the needed import.

Related: NEOS-760

[BUGFIX] Page exception handler should assume no nodes set.

To prevent raising an error during exception handling the PageHandler needs to check if node, documentNode and site are actually set before using them.

[BUGFIX] Fix rendering of HTML in translated string

This fixes the rendering of HTML in the backend template for FlashMessages and in the History module.

Background: Since the “Consistent escaping behavior” of Fluid (see 1e4cd0942dcf7b0726f3d3892bf8713cba89e9a4) the output of the translate View Helper is escaped for security reasons, disallowing the usage of HTML within translation labels unless the using side explicitly allows it by using the {f:format.raw()} View Helper.

[BUGFIX] Adjust to “Decoupling of Party package”

A follow-up to Ic16f9daffc7dfda6870471a785271ef167b5a8a7 that relaxes the dependency to typo3/party in order to prevent deadlocks when updating before version 3.0 is released.

Related: FLOW-5

[TASK] Adjust to “Decoupling of Party package”

This adds a dependency to the TYPO3.Party package because that package is no longer required by TYPO3.Flow (since the “Decoupling of Party package” change, I1a5dee5729fa73229b29d11c9f828eb803eb6b24).

Related: FLOW-5

[BUGFIX] Make FloatValidator JS implementation require correct xregexp

The xregexp library required was nowhere to be found. This change fixes that.

[FEATURE] Display additional information about node in inspector

This change adds a read only inspector editor showing additional data about the node like the creation date and last modification date.

Depends: I1d8ec81971f1c185a7b8f94c80777dc7cdc04545

Resolves: NEOS-605

[TASK] Skip CSRF protection for NodeController

This adds a @Flow\\SkipCsrfProtection annotation to the showAction() in order to ignore any CSRF tokens for this action.


When the showAction() is triggered with an sub request that is not “safe” (e.g. a POST request by a plugin on the current page) the CSRF token has to be validated when dispatching the sub request. Previously SkipCsrfProtection annotations in the target action of the plugin or Fluid widget were ignored because CSRF protection was already enforced while dispatching the main request.

Related: FLOW-130

Depends: I2ccdcec97ce9fc9dcf84b9127c4f18ea800abe74

[BUGFIX] Fix rendering of HTML in translated strings

This fixes the rendering of HTML in the backend template for shortcut nodes and removes the translate ViewHelper from the login screen.

Background: Since the “Consistent escaping behavior” of Fluid (see 1e4cd0942dcf7b0726f3d3892bf8713cba89e9a4) the output of the translate View Helper is escaped for security reasons, disallowing the usage of HTML within translation labels unless the using side explicitly allows it by using the {f:format.raw()} View Helper.

See also change I8bc508a72b6d8ae4104b16a2efb2e0e2381510a6

[!!!][TASK] ContentCollection overwrites node directly

Instead of creating another context variable the ContentCollection TypoScript can directly overwrite node which reduces the amount of needed code and the context dependencies of rendered content as it cannot use the context variable. If a content element needs to know it’s ContentCollection it can use FlowQuery to find it.

This is breaking if you rely on the contentCollectionNode variable being set. You can retrieve the nearest ContentCollection via FlowQuery.

[!!!][TASK] Add charset and collation to all MySQL migrations

This change set adds charset and collation to create table statements in the existing migrations. This make sure the tables are set up correctly independent of the database default configuration.

Also migrations generated contain this information since a while, leading to problems on migration if the database is not using the same charset and collation.

This is breaking if you have existing tables that do not use the utf8 charset and utf8_unicode_ci collation. To solve this you need to convert the existing tables. This can be done using the command:

./flow database:setcharset

Related: NEOS-800

[TASK] Removed deprecated use of Inject for settings

This removes the use of the Inject annotation for settings and instead uses the new InjectConfiguration annotation instead.

Related: FLOW-148

[TASK] Adjust to “Fluid: Consistent escaping behavior”

Adds “escapeOutput” property to existing ViewHelpers to ensure backwards-compatibility.

Depends: I1e4cd0942dcf7b0726f3d3892bf8713cba89e9a4

[BUGFIX] Fix spelling of “Add new site” button

[TASK] Log exceptions during import to the log

Related: NEOS-991

[TASK] Import Arrays namespace in ModuleController

In the method indexAction of the file TYPO3\\Neos\\Controller\\Backend\\ModuleController the usage of TYPO3\Flow\Utility\Arrays was referred twice. Instead the namsepace is now imported.

[BUGFIX] Allow editing of documents as content elements

This fixes a regression introduced with Ia11ac5b6c7bef4c30e005b53f21215d0b17637c1 which resulted in document nodes not receiving the neos-contentelement class which made them inaccessible for the inspector. By introducing a flag to render this special type of document metadata only if asked for it, the regression is fixed.

[TASK] Add changelog for TYPO3 Neos 1.2.2

[BUGFIX] Unsetting node properties not possible

Correct handling of node properties set to null (unset).

Fixes: NEOS-973

[TASK] Fix reST syntax errors in documentation

Resolves: NEOS-982

[BUGFIX] Empty integer values are converted to array by vie

When a node type has a property of type integer without a default value configured the content element wrapping service wraps an empty attribute for that property. When vie reads the entity from the DOM it converts the attribute to an array containing a list of NaN string values.

Besides converting the value it adds an exception to the HtmlAugmenter service that will be thrown if invalid attributes are passed.

Resolves: NEOS-579

[TASK] Adapt to asset model mapping strategies

The implicit decision of Asset type in the ImageTypeConverter is not reliable and is therefor moved to the media package as a strategy. This allows removal of the ImageTypeConverter but makes property mapping configuration necessary.

Relates: NEOS-936

[BUGFIX] Aloha list type styles missing in Raw Content Mode

Fixes: NEOS-889

[BUGFIX] Deletion of rows/columns in Aloha tables

Selecting a row or column in an Aloha table and clicking to delete it in the inspector, a Javascript error is thrown due to jQueryUI missing the dialog widget. This change adds that widget and styles the dialog to look like the standard dialog boxes.

Fixes: NEOS-810

[BUGFIX] Fix functional test regressions

The change I06ba604f562685e3a1d5ee844a8adaec7eda20f5 introduced a functional test regression as errors were not catched correctly. The problematic case is an edge case but should still work correctly.

The adjustments to the TypoScript take care of that.

Releaes: master

[TASK] Only store “lastVisitedNode” in session if it has been started

This change adjusts the NodeController to only store the “lastVisitedNode” in the user session if it has been started before. Usually that won’t have any effect because an authenticated backend user will start a session anyways. But it allows for replacing the default Typo3BackendProvider with a stateless implementation.

[TASK] Remove deprecated ContentElementViewHelper

The ContentElementViewHelper is deprecated and due for removal.

[TASK] Fix warnings during reStructuredText rendering

This tweaks rst files to get rid of some warnings that are emitted during documentation rendering.

[TASK] Fix warnings during reStructuredText rendering

This tweaks rst files to get rid of some warnings that are emitted during documentation rendering.

[TASK] Add documentation about global cache entry identifiers

Related: NEOS-852

[BUGFIX] Avoid exceptions in FrontendNodeRoutePartHandler

This change makes the FrontendNodeRoutePartHandler return FALSE in case a NoSuchDimensionValueException is thrown in matchValue(). This makes it possible to continue with routing to find other possible matches.

Fixes: NEOS-923

[TASK] Remove unused leftover function arguments

In the ImageEditor parseInt() was changed to round() but one of the arguments to parseInt() was left in place. Confusing at best.

[TASK] Append number instead of uniqid to duplicate uriPathSegments

When a uriPathSegment is duplicated on the same level a uniqid is appended to avoid conflicts. However this is not very user friendly, so instead a number is appended which additionally has a chance of not needing to be changed afterwards.

Related: NEOS-970

[FEATURE] Drag and drop support in image inspector editor

Enables uploading images in the image inspector editor by dragging images and dropping them on the image preview.

Resolves: NEOS-606

[BUGFIX] Close crop view when uploading image in image inspector

A regression introduced in Ic81c6595cb6594735206be8422cea5def01fbda7, where the functionality is unintentionally removed.

Related: NEOS-557

[BUGFIX] Update cropping coordinates when changing aspect ratio

When dragging the lower right corner of the crop field, the changes are not taken into account.

A regression introduced in Ic81c6595cb6594735206be8422cea5def01fbda7

Related: FLOW-108

[BUGFIX] Prevent unnecessary changes with locked aspect ratio

Loosens the check if the aspect ratios of the image matches the locked aspect ratio, caused by rounding issues. This is done to avoid unnecessary changes when selecting image elements with locked aspect ratios.

Fixes: NEOS-872

[TASK] Select crop aspect ratio option automatically

If the crop coordinates matches an existing crop aspect ratio option, that option is selected automatically since it’s very likely it was used to created the existing crop.

Additionally makes it possible to set the default option, making it possible to select a certain option if no cropping has been applied already. This is useful when having a default aspect ratio, but still want to have it flexible. Configuration example:

      defaultOption: 'fourThree'

Avoids selecting the original aspect ratio option and the custom option, since it’s possible to tell if it was done using a custom aspect ratio or manually.

Resolves: NEOS-871

[BUGFIX] Apply locked aspect ratio immediately

A regression introduced in Ic81c6595cb6594735206be8422cea5def01fbda7, where the functionality is unintentionally removed.

Related: NEOS-557

[BUGFIX] Dummy image not displayed in image inspector editor

After the resource refactoring the dummy image was no longer shown when no image has been selected.

This also removes crop and resize controls as long as there is no image selected.

A regression introduced in Ic81c6595cb6594735206be8422cea5def01fbda7

Related: FLOW-108

[BUGFIX] Copying nodes created duplicate uriPathSegment entries

On duplicating a document (page), the uriPathSegment property was simply copied as well, resulting in the same URI for two distinct documents if the copy is a sibling of the original nodes.

This change amends the slot used to fill the uriPathSegment so those duplicates are avoided upon copy and can also no longer be caused by manually passing a used uriPathSegment.

Fixes: NEOS-970

[BUGFIX] Media button activated across editors

Having multiple properties using instances of either the image or asset editors, clicking the media browser button will result in all buttons being shown as active at the same time. This is prevented by creating separate instances for each editor.

Fixes: NEOS-756

[TASK] Adapt to GlobalCacheIdentifiers prototype

As the new prototype is used as default for generating cache identifiers in Neos the domain and format can be removed from all cache configurations.

Related: NEOS-852 Depends: I3d172b0ebfe54afc37b6eaa8397e8c2355a7d7da

[BUGFIX] Configuration module not displaying content

The configuration module does not display any configuration when loadMinifiedJavascript is enabled in Firefox. This happens due to depending on a global configuration variable which is unset when read in the Ember application. This only happens in with the minified build due to JavaScript execution order. Instead of relying on the global variable, we set the explicit path to be used instead.

Fixes: NEOS-881

[BUGFIX] Render service exceptions as JSON

Adjusts the AbstractServiceController to catch all exceptions that occur during request processing in order to convert them to JSON:

  "error": {
    "code": 12345,
    "message": "Exception message",
    "details": "Optional message details",
    "referenceCode": "2015012315120876d8b2",
    "previous": {
      "code": 54321,
      "message": "Nested child exception"

“details”, “referenceCode” and “previous” are optional.

Note: This is a preliminary solution that improves error handling in Backend. In the long term the exception handling of Flow will be improved and this hotfix be deprecated.

Related: NEOS-108

[TASK] Micro-optimization by replacing file_exists with is_file

If we know that we can expect a file and not a folder we can use is_file instead of file_exists as it generally benchmarks faster and actually is more expressive in those cases.

[BUGFIX] “uriPathSegment” not created via auto-created child nodes

Fixes the issue where the property “uriPathSegment” is missing when document nodes are created via the auto-create child nodes mechanism.

If a node type triggers creation of a sub node of type “TYPO3.Neos.NodeTypes:Page”, that new node does not contain a “uriPathSegment” property and thus results in exception, for example if the sub document nodes are shown in the node tree.

The solution provided by this change registers a simple slot for the Node Added signal which sets the uriPathSegment property to the node name if that property does not exist yet.

Resolves: NEOS-925

[BUGFIX] Linking via context path works in non TypoScript environment

Since 1.2 you couldn’t link to a node using the context node path outside of TypoScript environments. This feature can be useful in lots of use-cases where you have a node path but no TypoScript context.

This change fixes that behavior and adds tests that actually test this to prevent this kind of regression.

Fixes: NEOS-961

[TASK] Constraint various node searching to current site

When searching for nodes the result should be limited to the current site to avoid issues like linking between sites is unsupported and duplicate nodes from other sites make it difficult to tell apart.

Following searches are constrained:

  • LinkEditor (Inspector)
  • Reference(s)Editor (Inspector)
  • Aloha link wizard
  • Node tree filter

Depends: Ibaa9b914e438ba1c560d58a095a48e64a5428bfd

Fixes: NEOS-140 Resolves: NEOS-250

[BUGFIX] Loose domain matching check in menu site list

[BUGFIX] Remove doubled slashes in site uri for site menu

In the site menu the uri contained doubled slashes, because path had trailing slash and uri had leading slash. Removed the trailing slash in path. This only happens for sites with an active domain record.

Resolves: NEOS-450

[TASK] Add Neos specific requirements check

This adds a new step to the beginning of the setup tool meant for additional checks for requirements of Neos. Currently it checks if one of the three Imagine drivers is installed and configures the best fitting one without user input needed. The order (from worst to best) is gd, gmagick, imagick.

Additional checks can be added to this step.

Resolves: NEOS-858

[BUGFIX] Cross-browser compatible ellipsis animation

The current implementation only support webkit browsers. The animation is used in various areas like login button, saving/publish button.

Fixes: NEOS-940

[TASK] Remove Aloha attributes crap from fixture site XML

[TASK] Small doc fix: wrong indentation for note

[TASK] Adjust node command to adjusted interface

Related: NEOS-329

[BUGFIX] Generate uri path segments run for all node commands

There’s no check if the node command being run is actually the repair command, so it will execute the generate uri path segments functionality for all node commands.

[BUGFIX] Missing safe guard for empty label in NodeView

Fixes an issue in NodeView which causes an exception on rare occasions when node type labels are empty.

The original error message was:

Uncaught exception #1: Warning: strpos(): Empty needle in
TYPO3_Neos_Service_View_NodeView.php line 273

[BUGFIX] Adjust “Raw content editing mode” to refactored PrimaryContent

This fixes a regression introduced with 293f2c5cc8fd15ae892360f0cc01eff25f79f1d2 that broke the “Raw content editing mode”.

Background: For the 1.2 branch the refactoring has been reverted so this only targets master (1.3+)

Fixes: NEOS-921

[TASK] Don’t log “node discarded” events

This changes removes logging of discard operations which undo changes in an editor’s local workspace. Discard operations are not generally of interest to other editors so they can be removed from the global history for now. Additionally, if a discard event has been logged in the past, the History module would fail on rendering the list of events since the Node Discard case hasn’t been implemented yet.

Resolves: NEOS-914

[TASK] Add changelog for TYPO3 Neos 1.2.1

[TASK] Use HTML5 validation on login form

Prevents sending incomplete login credentials.

Related: NEOS-815

[TASK] Only warn when navigating away for non safe requests

When navigating away from the content module an alert is shown if requests are in progress. This leads to some undesired alerts when the requests are simple get requests that won’t cause loss of data if not completed. To improve this the behavior should only apply to non safe requests.

Resolves: NEOS-907

[TASK] Use consistent label on publish all button

Always show “Publish all” instead of “Published” when no publishable changes are present. This is to avoid confusion of what the button does and to streamline it with the discard buttons.

Resolves: NEOS-908

[BUGFIX] Remove undesired “(Page)” when editing titles in the node tree

When editing a title in the node tree the title used contains “(Page)” afterwards, since its using the tooltip as it’s source for the existing title.

Fixes: NEOS-909

[BUGFIX] Handle unset inspector groups correctly

Prevent a fatal error when unsetting an inspector group to ~ (null)

Fixes: NEOS-910

[BUGFIX] Add missing username on re-login dialog

Fixes: NEOS-905

[TASK] Remove wrong title in changelog index

[TASK] Add release date to changelog titles

[TASK] Remove backup changelog for 1.1.0

[TASK] Update translations from translation tool

[TASK] Display warning if a inspector editor cannot be loaded

Related: NEOS-894

[TASK] Streamline direction and adjust position of notification arrow

[BUGFIX] Disallow inserting content in normal content elements

To avoid allowing inserting content inside other content elements, unless explicitly allowed like for the content collection, we constraint it for all content elements.

Fixes: NEOS-445 (cherry picked from commit 9a668a76f361823113345bd3c4463f59431d4c21)

[BUGFIX] fix image cropper on sites without bootstrap

Because an unprefixed “clearfix” CSS class was used, the image cropper only worked on sites based on Bootstrap. This is fixed by properly namespacing the clearfix css class and use “neos-clearfix” instead.

Resolves: NEOS-901

[BUGFIX] Clear content and route cache when importing / pruning sites

Adds signals and dispatcher connections to clear content and routing caches when sites were pruned or imported.

Fixes: NEOS-885

[BUGFIX] Throw exception when trying to import an invalid Sites.xml file

With this change a more meaningful exception is thrown if a site could not be imported for unknown reasons. Besides this slightly improves the site:import command to give feedback about the imported site on success.

This also adds some cosmetic and non-functional cleanups in order to increase readabilty and IDE support:

  • Import FQN where applicable
  • Reduce nesting in SiteImportService::importFromFile()
  • Remove unused import statements
  • Whitespace fixes

Related: NEOS-885

[TASK] Implement ContentCollection in pure TypoScript

Rewrite ContentCollection to use just pure TypoScript code instead of PHP implementation. Should be functionally equivalent to current implementation.

In addition provide TYPO3.Neos:ContentCollectionRenderer service object, which helps to render all children of current node.

Related: NEOS-188

[TASK] Refactor PrimaryContent to use “renderer” instead of “type”

Using “renderer” with an object and property declaration is easier to read than “type” with prototype override.

[TASK] Small correction in PHPDoc for convertUriToObject method

[BUGFIX] Use original image in image inspector editor

A regression introduced in Ic81c6595cb6594735206be8422cea5def01fbda7, where the functionality is unintentionally removed.

Related: NEOS-416

[!!!][BUGFIX] Property mapper error on node properties of type date

This change is a fix for the property mapper error that occurs since the resource management changes. Those changes introduced using the property mapping in the getProperty method of a Node object.

This method gets the node type configuration though, which holds the value ‘date’ for the type. The property mapper only knows about ‘DateTime’ though.

The error only occurs for non internal node properties (so not starting with a _) as those are handled by the ContentElementWrappingService.

This change fixes it for now by renaming the property type to ‘DateTime’. Marked as breaking as it will lead to errors if people forget to use the supplied migration.

Related: NEOS-876

[TASK] Update translations from translation tool

[BUGFIX] Error for selected values in LinkEditor

Prevent errors thrown in the LinkEditor for selected values due to incorrect format used in jQuery selector, leading to Syntax error, unrecognized expression.

Fixes: NEOS-891 Related: NEOS-856

[TASK] Update translations from translation tool

[BUGFIX] Fix test failures because of event log references

This change adds a setting to disable the event log for functional tests. It’s still enabled for Behat scenarios to test the history feature.

[TASK] Fix Behat tests for history

The history feature was changed and Behat tests were not updated accordingly. This change additionally tags scenarios that perform remote operations with HTTP with @remote to filter them when running the Behat tests.

[TASK] Add site node to content context for rendering tests

Functional tests might give wrong exceptions on failure because the exception handler expects a site context variable.

[BUGFIX] Gracefully handle wrong property types in PropertyEditor

Before this a wrong / missing property type would basically crash the backend and give no clear error message. This change adds a notification and a console error (if available) with more details.

Related: NEOS-883

[BUGFIX] Adjust broken NodeTypeSchemaBuilder test

Adjusts the broken NodeTypeSchemaBuilder test for nodeTypesContainCorrectSuperTypes to the changed format.

Related: NEOS-870

[TASK] Update translations from translation tool

[BUGFIX] Fix typos in 1.2 changelogs

[TASK] Add changelog for TYPO3 Neos 1.2.0

[BUGFIX] ContentContextFactory should not instanciate Now

The ContentContextFactory created instances of \TYPO3\Flow\Utility\Now which should instead be injected.

This resulted in hard to debug errors and is prevented by injecting Now into the parent class in TYPO3CR.

Related: NEOS-879

[BUGFIX] Remove outline on focussed inspector tab buttons

[TASK] Document Data Sources end points

Documents the new DataSource functionality which allow easy integration of data source end points, to provide data to the editing interface without having to define routes, policies, controller.

Resolves: NEOS-729 Related: NEOS-529

[TASK] Improve TypoScript object reference

Improve and streamline the object reference.

Resolves: NEOS-366

[TASK] Display node type label in node tree’s tooltips

Adds the node type label to the tooltip in the tree’s in the navigate component. If the label already contains the node type label, it’s not added. This is due to many elements in the context structure tree are like that, but other elements like headline, text etc. aren’t.

Resolves: NEOS-870

[TASK] Document NodeType property types & inspector editors

Resolves: NEOS-147

[TASK] Make image editor maximum file size configurable

Expose the maximum file size as an editor option for the image inspector editor. If not set or an empty value, the largest size allowed by the server is used.

Additionally improves the error handling to show file size errors.

Depends: I9b35d1b08c7cb1f41330d88f62fc1092e90880c6

Resolves: NEOS-842

[TASK] Always open live preview in the same browser tab

This is a follow up to I0e19d2b6a8deb7f6429437928a36ee309c1db720 that enforces clicks on the “Open page in live workspace” button to open in the same browser tab instead of opening a new tab each time.

Related: NEOS-865

[BUGFIX] Disable autoparagraph by default and make it configurable

Inline editable properties that does not allow paragraphs tags, would get paragraph tags due to the autoparagraph plugin being enabled on all properties by default. Instead the plugin is configurable and disabled by default.

Fixes: NEOS-851

[TASK] Adjust behat tests to changes in Flow

Adds a BehatTestHelper class, according to the changes in I410b7c7e4eaddff5aeb4e9d600dbdc1a3748df91.

Related: FLOW-134

[TASK] Fix wrong formatting in aloha configuration example

Having a # in the front breaks the example.

[BUGFIX] ContentCollection properties cannot be saved

Without this change, saving ContentCollections results in an endless loop.

Resolves: NEOS-188

[BUGFIX] Display message for missing nodes/assets in LinkEditor

Add handling of missing nodes/assets that have been selected in the link inspector editor. Previously a “Loading ...” label would be shown even though the ajax request had stopped. Instead a label telling the node/asset is missing is shown with a warning icon.

Fixes: NEOS-856

[TASK] Use ViewHelper to render tree in Configuration Module

Recursive rendering in Fluid is very bad in terms of performance, and max nesting needs to be pretty high. The template is now simplified by generating the complete configuration tree using a specialized view helper that does the rendering in PHP.

Resolves: NEOS-848

[BUGFIX] Changing dimensions on a shortcut breaks

This bug shows up in two cases:

  • when translating a shortcut, the browser was redirected to the original translation instead of the newly created one
  • when switching the dimension on a shortcut, one was redirected to the target page of the shortcut (in the target dimension), instead onto the shortcut itself.

This is caused because shortcuts are, by default, also resolved when a link is generated inside the template of Service\NodesController::showAction.

This is fixed by introducing an internal parameter which allows to create a link to the shortcut itself, instead of its target.

Fixes: NEOS-664

[BUGFIX] Remove typo in Gruntfile.js

[BUGFIX] setNode() no longer assumes context is a ContentContext

The setNode() method tried to fetch the current Site instance from the context, not taking into account that not all nodes have a Neos ContentContext but might have a TYPO3CR context assigned. That has no getCurrentSite() method, thus setNode() crashed.

[BUGFIX] Adjust Aloha list plugin fixes to new version

After updating from Aloha 1.1.3 to 1.1.5 the custom fixes for the listplugin didn’t work anymore. This adjusts the fixes to the changed code.

[BUGFIX] Add missing Ember dependency in PluginViewsEditor

[TASK] Clean up multi-lingual route part handler regex

the way the regex was built before, the “remainingRequestPath” only contained a single character, and “context” containing the rest.

Furthermore, we document and test the regex properly.

Related: NEOS-295

[BUGFIX] History module crashes on removed nodes or removed site

If the site has been re-imported or nodes have been removed, the History module crashed while trying to display non-existing entities.

[BUGFIX] Functional tests fail due to Event model / SQLite

Since the $uid property of Event has no annotation which works for SQLite, functional tests fail (because the MySQL / Postgres migrations are not used on our CI server).

Annotating $uid with nullable=true helps.

[BUGFIX] History Event “created Page” is missing

[BUGFIX] Event log for created ContentElements

Creating a ContentElement leaded to an server communication error and the placeholder “Enter text here” got lost. There was also no History Event.

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Event Logging and History Module

Changes to nodes and configured entities will be logged and can be displayed in the history module.

Resolves: NEOS-655

[TASK] Update translations from translation tool

[TASK] Add changelog for TYPO3 Neos 1.2.0-beta3

[BUGFIX] Only process node arguments with matching format in route cache

Prevent errors caused by custom node arguments not having the correct format needed to extract the identifier.

Resolves: NEOS-556

[BUGFIX] Prevent unselectable inline editable content

When deleting all text in inline editable fields, it sometimes becomes impossible to select the field to insert new text. This happens because left over empty tags have zero height.

Fixes: NEOS-843

[TASK] Update translations from translation tool

[TASK] Cache first online site and active domain in memory

Resolves: NEOS-572

[TASK] Update translations from translation tool

[BUGFIX] Skip unnecessary time screen in DateTime inspector editor

When no minutes or seconds exists in the date format, the minute screen should be skipped entirely.

Fixes: NEOS-577

[BUGFIX] Respect inactive state for domains

If a domain is inactive the domain will not be used for determining the active site. This means that when requesting an inactive domain the default site will be shown instead, as if the domain hasn’t been configured.

Previously the domain state wasn’t taken into account at all meaning that inactive domains would still match their respective site.

Fixes: NEOS-181

[BUGFIX] Node search service needs to consider node dimensions

Use the NodeDataRepository to do the properties search to have a proper workspace and dimension behavior.

Fixes: NEOS-824

[BUGFIX] document reference/references editor with node type restriction

Resolves: NEOS-840

[TASK] Update translations from translation tool

[BUGFIX] Adapt Fixture and LinkingServiceTest

The way Asset identifiers are exposed has changed and this needs to be reflected in the functional test fixture and LinkingServiceTest.

[TASK] LinkEditor & Reference(s) inspector editors improvements

  • Removes the <b> tag around results in Reference(s) editors
  • Highlights result text matching search text
  • Prevent re-initializing Reference(s) editors unnecessarily on property changes

Resolves: NEOS-808

[BUGFIX] Node type schema validation throws errors

Adds schema for ui.aloha strong, em, del & formatlesspaste options

Allows setting ui.inspector.group to NULL as well as a string (unset support)

Fixes: NEOS-813 Fixes: NEOS-812

[TASK] Adjust to testing publishing target

Depends: I366a5f7307ca246c73dc2b422a9001205fd9339d

[TASK] Use real UriBuilder in functional RenderingTest

The use of a mocked UriBuilder broke when using the UriBuilder using chained calls, as only reset() returned the mock and any other calls did not. This lead to “method call on a non-object” errors.

[FEATURE] Data views for the inspector

Add a column, table and time series view to display generic data from a data source. Include D3 for SVG graphs.

The API of data views is not public yet.

Resolves: NEOS-761

[FEATURE] Generic views for inspector groups

Add support for generic views besides property editors. These views can be added through the “ui.inspector.views” node type option.

A widget base class for other views is included in this change.

Resolves: NEOS-760

[BUGFIX] use nodeName instead of label for node:repair command

node:repair must be used for upgrading to Neos 1.2 Nodenames with german umlauts will break the new builded url from the url path segment without this fix.

Fixes: NEOS-819

[TASK] Login dialog improvements

Prevents the login dialog from being duplicated if multiple request were restricted.

Also streamlines the styling with the normal login by moving the failed login message below the form, introducing a shake effect on failed login.

Additionally indication of a login is in progress is added to the normal login as well as the dialog login.

Furthermore fixes the login dialog to use native form validation in the form of required fields.

Adds missing translation labels for login and authentication.

Fixes: NEOS-599 Resolves: NEOS-815

[BUGFIX] Icon alignment on insert new panel buttons

[BUGFIX] Inline editing insert new panel sorting broken

Regression introduced in Ie87f10dd3bd9b61a4e65d84bba05813f9476a52b

Related: NEOS-609

[TASK] Update translations from translation tool

[BUGFIX] Request forbidden after login dialog re-login

When a non GET request is being intercepted by the login dialog, the request retry fails after a successful login. This is due to the CSRF token isn’t updated before retrying the request.

Fixes: NEOS-814

[BUGFIX] Grunt should watch scss files in all subdirectories

The pattern did not consider files in directories of a deeper level.

[TASK] Pass the controller context to a data source if it’s settable

A data source might need access to the current request for building URIs. With this change, the controller context is set if a data source provides a setter for it.

Related: NEOS-594

[BUGFIX] Pass the controller context to the exception handler Fluid view

This fixes a problem where the exception handler page itself throws another exception because the current package couldn’t be resolved for translations.

[BUGFIX] Prevent recursion problems in Menus

Object comparisons should be done strict otherwise PHP will do a full comparison of all properties of both objects, which is slow and can lead to recursion problems. Changing the rootline comparison in menus to strict will prevent that.

[TASK] Update translations from translation tool

[TASK] Minor improvements to SelectBoxEditor

[BUGFIX] Bottom border in single selected option for Select2

[BUGFIX] Only display Backend users in user management module

This adjusts the “User management” module to only display accounts that are bound to the default “Typo3BackendProvider”.

Related: NEOS-115

[TASK] Add release notes for 1.2.0-beta2

[BUGFIX] Shake effect on failed login broken

A regression was introduced with the update of jQueryUI, breaking the shake effect shown on failed logins. This is due to the library no longer having the effects included, and the path to the library not being adjusted.

Related: Ia286cf80246d21337eb1ae6bd3ad3d2aa22833ab

Fixes: NEOS-803

[TASK] Various visual improvements for workspaces module

  • Improve handling of very long node paths
  • Use node type’s name instead of configuration label
  • Removes duplicate display of site (when multiple sites)
  • Small adjustments to icons

[TASK] Change icon of content collections

[FEATURE] Shortcut to live workspace button

Adds a button to the content module in the context bar, which opens the current page in the live workspace when clicked.

[BUGFIX] Reference(s) inspector editors with selection broken

A regression was introduced with the addition of icons to the reference(s) inspector editors, causing a JavaScript error when an existing selection should be shown.

Regression change I322998d5e25363684366eaec755bb4b984be8f1c

Fixes: NEOS-801 Related: NEOS-409

[TASK] Update Aloha 1.1.3 to 1.1.5

[BUGFIX] Inline linking to nodes/assets broken

Linking to nodes/assets in inline editable properties using Aloha, was broken because the href attribute was removed during sanitization. They were removed since node:// & asset:// wasn’t acknowledged as correct. This happened due to the sanitization configuration being overwritten, a regression introduced with the Aloha upgrade.

Unfortunately this bug means that all links to nodes/assets made inline since the Aloha update are broken. However they can be fixed by clicking the link in the text, since the href is then added and saved correctly.

Additionally removed unused marking/cleaning code.

Fixes: NEOS-742

[BUGFIX] Fix typo in ReferenceEditor.js

Removes a superfluous line that has been accidentally introduced with Id51aa287d57eb50e55536604878c22c6dfc52c15

Related: NEOS-558 Related: NEOS-801

[BUGFIX] Fix translation of Neos exceptions

Currently the rendering of Neos exceptions results in a fatal error due to a regression introduced with Ib859bf63084f71159375d6169c7ecf1aac6e882e.

This change replaces the:


settings with error.exception.noHomepageException.* labels that are translatable.

Depends: I3ac02f17f9aeba428bcd4d0b95b99b4dd7ed7d83 Related: NEOS-497

[BUGFIX] Raise Grunt version

Using grunt.config.merge needs at least Grunt version 0.4.5

[TASK] Update translations from translation tool

[TASK] Document “nullable supertypes”

Nodetype inheritance can be removed again for specific subtypes if named keys are used (see https://review.typo3.org/34572).

[TASK] Small cleanup in VieSchemaBuilder(Test)

Removes one unused use statement and adds a type hint.

[TASK] Adjust to node publishing dependecy ordering

Adjusts the publishing service test to the new dependency ordering in the node publishing introduced in I5b9ab12384c7b8298bb79752c0e90563a62c2203.

Related: NEOS-770

[BUGFIX] Publish button failed connection state broken

Since the removal of ExtDirect the failed connection status for the publish menu has been broken, because it uses the node endpoint to listen for failed requests, which isn’t available. Instead it should listen to the HttpClient.

Fixes: NEOS-444

[BUGFIX] Missing Ember dependency in I18n shared object

[TASK] Display warning when an error occurs while saving

Implements a modal dialog which warns the editor when an error occurs while saving content changes. The dialog offers the opportunity to reload the current page in an attempt to fix the problem.

Related: NEOS-346

[TASK] Move ImageTag and ImageUri TypoScript objects

This TypoScriptObject was moved from TYPO3.Media to avoid a dependency on TypoScript in Media. See original change for usage examples, I10898dd66838f5bfedff23818e92100efb35bffe.

Fixes: NEOS-745

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[BUGFIX] QUnit tets runner fails because of undefined variable

This change sets the variable before the tests include Ember so the locale is not undefined in the Ember module.

Resolves: NEOS-782

[TASK] Add safeguards to user management module

This add a safeguard that prevents the current user from being locked out from the user management module.

Besides this checks whether an username is already taken when creating a new user. Previously that case led to an exception.

Resolves: NEOS-763

[TASK] Remove duplicated method from PublishingService

[BUGFIX] Fixes typo in the Settings file

Current master is broken because in settings “defaut” is missing an “l” character.

Related: NEOS-769

[TASK] Add default robots.txt file to Neos

This adds a default robots.txt to the Neos package. If no robots.txt file exists in Web when the Neos package is installed, it will be copied in place.

If it exists, nothing will be done, so adjusting robots.txt in projects is still possible.

Resolves: NEOS-714

[!!!][FEATURE] Allow disabling crop and resize for ImageEditor

The inspector image editor allows cropping and resizing images by default. Those features can now be configured per NodeType.

The configuration can look like follows:

              crop: TRUE
              resize: FALSE

Which would enable cropping but disable resize.

This change is marked breaking as the default for both features is disabled now, which means you need to enable them for custom NodeTypes that use the ImageEditor. The default Image and TextWithImage elements will come with both features enabled.

Resolves: NEOS-752

[TASK] Use “language” instead of “locale” and enable UI languages

The current implementation of UI localization support uses the term “locale” when referring to the user interface language. That’s not completely wrong, since we use a locale to identify the language, but from a user’s POV what we really mean is the language.

Once we support date / time formats etc, we’ll most likely introduce more settings so the user can choose this independently from the language.

Additionally we currently only provide “English” in the list of UI languages. Let’s add some more we are sure of being available until the preview release.

Resolves: NEOS-769

[TASK] Update translations from translation tool

[BUGFIX] Document node types shown in inline create new panel

If a document node type has the configuration ui.group set, it shows up in the inline create new panel.

Fixes: NEOS-736

[TASK] Group, sort & add icons for node types in NodeTypeEditor

Group and sort node types as defined in the node type configuration in the NodeTypeEditor used for changing node type in the inspector. Additionally add node type icon for added clarity.

Resolves: NEOS-422

[BUGFIX] Exception instead of 404 in certain cases

Neos responds with a “page not found” screen in some cases. If a page cannot be found due to “normal” reasons, this works fine. In some cases, the reason for the page not found is not a node that does not exist.

So when in a multi language site (like the demo site) the language segment is removed, the rendering of the error page takes a different path and the Backend\TranslateViewHelper is involved.

That uses the security context without checking if it can be initialized, leading to an exception.

This change adds a check using canBeInitialized() to that.

[BUGFIX] Assets service index action broken

Ib859bf63084f71159375d6169c7ecf1aac6e882e introduced several regressions, breaking the index action of the Assets service.

  • Wrong header label
  • Linking to unexisting controller action
  • Unclosed inline view helpers

Related: NEOS-89

[TASK] Insert new panel improvements

  • Styled as cards instead of links
  • Navigatable with tab navigation
  • Max-height with overflow when exceeded
  • Handling of long node type labels (ellipsis + title)

Additionally some clean up:

  • Renamed AbstractDialog to AbstractModal
  • Abstracted the two different InsertNodePanels into one

Fixes: NEOS-581 Resolves: NEOS-609

[TASK] Focus action buttons when opening dialogs

When dialog are opened the focus is moved on the action buttons of the dialog, which prevents allows keyboard navigation to handle the dialog. Additionally it prevents weird behavior when hitting enter or tab navigating after opening a dialog.

Resolves: NEOS-596

[BUGFIX] Fix name of ManageAssets privilege target

[TASK] Adjust to new Flow resource management / new media management

This change adjusts Neos to Flow’s new resource management and the new API of the TYPO3.Media package.

Related: FLOW-108

[TASK] Allow configurable search thresholds in reference editors

The reference and references editor use a threshold of 1 character before they start a search for matches. This change makes that threshold configurable:

  threshold: 4

The default value is now 2.

Resolves: NEOS-558

[TASK] Consistent meaning for arrow directions on buttons

There’s a mixture in the direction of various arrow buttons. Now they’re streamlined to mean that the direction the arrow points is the direction that the element moves. E.g. a down allow opens the element when clicked.

Resolves: NEOS-598

[BUGFIX] Validation errors empty for service controllers

When a validation error is thrown in a service controller the errorAction tries to output it, but the output is empty because json_encode cannot handle objects.

Relases: master, 1.2, 1.1 Fixes: NEOS-411

[BUGFIX] Remove breaking unit test for user management module

This removes a unit test for the UsersController that has been refactored with I0ca000c233e36a2e9c3689c1dd405033274955b3.

Note: This doesn’t fix the test, because the tested functionality is trivial in the new version.

Related: NEOS-115

[BUGFIX] Search the node tree loses focus

When the node tree is searched, the focus on the search field is lost after the results are returned.

This causes the situation where the user hits backspace and then instead of deleting parts of the search term the page is navigated back.

Fixes: NEOS-359

[TASK] Update translations from translation tool

[BUGFIX] Fix shortcut page rendering in backend

Fixes a regression introduced with Ib859bf63084f71159375d6169c7ecf1aac6e882e that led to an exception when navigating to a shortcut page in the backend due to wrongly nested Fluid tags.

This also also translates the messages for remaining shortcut types.

Related: Ib859bf63084f71159375d6169c7ecf1aac6e882e Fixes: NEOS-746 Related: NEOS-739

[TASK] Remove use of deprecated method in functional test

[BUGFIX] Shortcut points to unsupported type

When a shortcuts resolves to a node it results in the error 500 Shortcut resolves to unsupported type. This happens as the check for instanceof NodeInterface in the NodeController fails is not imported and as such returns FALSE.

Resolves: NEOS-754

[TASK] Update translations from translation tool

[FEATURE] Module Users: Allow arbitrary roles to be assigned to accounts

Previously the user management module only allowed for assigning one of the roles TYPO3.Neos:Editor or TYPO3.Neos:Administrator to be assigned to a user.

With this change all configured roles that are not abstract can be assigned to a user, also multiple ones.

Furthermore this change contains some (mostly cosmetic) tweaks in PHP code and Fluid templates.

Resolves: NEOS-115 Resolves: NEOS-543

[TASK] Remove deprecated TemplateImplementation

The Neos TemplateImplementation was deprecated even before version 1.0 and just outputs an error message, therefor cannot be in productive use. Removing it will fix the possible error in the AbstractMenuImplementation that imports the TemplateImplementation from TypoScript which can lead to a fatal PHP error as the name is already in use in this namespace.

Resolves: NEOS-738

[TASK] Update translations from translation tool

[TASK] Add known issue to 1.2.0-beta1 release notes

[TASK] Adjust 1.2.0-beta1 release notes

[TASK] Update 1.2.0-beta1 release notes

[TASK] Update functional test fixture xml

This updates the structure of the functional test node xml to the new format supporting dimensions.

[TASK] Update translations from translation tool

[TASK] Make preset name & preset configuration available in dimension menu

Related: NEOS-299

[FEATURE] Dimension/Language Menu

Create links to other node variants (e.g. variants of the current node in another dimension) by using this TypoScript object.

Minimal Example, outputting a language menu with all configured dimensions:

languageMenu = TYPO3.Neos:DimensionMenu {
        dimension = 'language'

If you only want to render a subset of the available dimensions or manually define a specific order for this language menu, you can override the “presets”:

Overridden presets:

languageMenu = TYPO3.Neos:DimensionMenu {
        dimension = 'language'
        presets = ${['en_US', 'de_DE']}

No matter how many languages are defined, only these two are displayed.

Resolves: NEOS-118

[TASK] Add documentation about content dimensions and translating content

Resolves: NEOS-299

[TASK] Add f:translate in backend module templates

Add f:translate in the Fluid templates of Neos backend. This makes the Neos backend module labels and descriptions translatable.

Related: NEOS-88 Related: NEOS-497 Related: NEOS-500

[FEATURE] Dynamically loaded options for the inspectors SelectBoxEditor

Introduces a concept of data sources to allow easy integration of data source end points, to provide data to the editing interface without having to define routes, policies, controller.


          editor: 'Content/Inspector/Editors/SelectBoxEditor'
            dataSourceIdentifier: 'questions'
            # alternatively using a custom uri:
            dataSourceUri: 'custom-route/end-point'

Accompanied by a class that implements TYPO3\\Neos\\Service\\DataSource\\DataSourceInterface, preferably by extending TYPO3\\Neos\\Service\\DataSource\\AbstractDataSource.

Resolves: NEOS-529

[TASK] Adjust to acl changes in Flow

Adjusts the Neos package to the recent refactoring of the Security Framework in TYPO3.Flow mainly by running the respective code migrations.

This also adds a new code migration that renames the TYPO3.Neos.modules.<moduleName>.resource setting to “privilegeTarget”. Make sure to execute code migrations with the:

./flow core:migrate

command to apply those changes to 3rd party packages.

Related: FLOW-11

[FEATURE] Localize the UserInterface

Implemented Ember-i18n in order to localize the Handlebar templates and Javascript strings. Translations are read from the XLIFF files and two new settings are added under TYPO3.Neos.userInterface:

  • locale: the default locale for the backend interface
  • availableLocales: the locales available in the system

For the Handlebars template, the helper works similar like the Fluid Translate ViewHelper, so it parses the string based on the key, or renders the key if the key is not found:

{{translate id="key"}}

In case no translation is found for the key, the default value is returned as output. In case a translation is found for the key, that is returned:

{{translate id="key" value="default content"}}

Alternative syntax:

{{#translate id="key"}}content{{/translate}}

Possible arguments to translate:

  • id, the identifier (required)
  • value, default content
  • package, packageKey (defaults to TYPO3.Neos)
  • source, sourceCatalogue (defaults to Main)

For the id dots (.) inside the xliff file will be ported to dashes (-) in order to have programmatically correct json files without losing functionality in the xliff files.





Adds an interface language selector to the user preferences in the Administration/UserModule. The preference is saved to the users preferences.

Adds methods to the UserService to fetch the user preferences.

Related: NEOS-61, NEOS-89, NEOS-143, NEOS-435, NEOS-436, NEOS-446

[TASK] Trim and crop default node label

The text property is used for the label and it often contains line breaks. To avoid whitespace around the text, it should be trimmed.

Additionally the label is cropped to a 100 characters, since it’s very unlikely a label needs to be any longer than that. This is again necessary because the text property can often contain lots of text.

Related: NEOS-257

[TASK] Remove unused method in NodeView

[BUGFIX] Adjust code migration identifier pattern to contain the full timestamp

Previously code migrations are expected to have a class name with the pattern Version<YYYYMMDDhhmm> and the unique identifier was determined extracting the last 12 characters of the class name (which are expected to be the timestamp).

This change adjusts existing code migrations to use the full timestamp in order to establish the new guideline (note: those migrations still return the old identifier so that they won’t be applied again with a new identifier).

Related: FLOW-110

[!!!][BUGFIX] Fix linking behavior

This adjusts Neos’ way of dealing with links to shortcut nodes in several areas. Links to shortcut pages are now properly resolved: The label of the link will be taken from the shortcut page node but the link points directly to the target node or external URI.

This is a breaking change if you relied on the previous behavior. That is especially noticeable if the root node of a site is a shortcut. In that case a link pointing to the “homepage” will now directly point to the target of the root node instead of pointing to “/” and redirecting to the target on click.

Related: NEOS-564

[BUGFIX] Content dimensions fetched in modules

When opening a module the content dimension selector fetches the available dimensions, even though the content dimension selector won’t be displayed.

Related: NEOS-546

[TASK] Add QUnit for running JavaScript tests

This adds a new grunt task for running the JS tests. In the Neos package, do:

cd Scripts
grunt test

PhantomJS is installed automatically as a dependency via npm for this, see Scripts/install-phantomjs.sh for some dependencies you might need on top.

Resolves: NEOS-663

[TASK] Update translations from translation tool

[TASK] Improve exception handling during rendering

Improves the exception handling by changing the way exceptions are thrown for content and by rendering a fallback page if the whole page couldn’t be rendered.

The exception handling for content elements is changed so that it now only outputs a XML comment in the frontend in production context. When logged in a short message, without technical detail is displayed in production context. In development the output is the same as before, consisting of a exception message and a TypoScript path.

The exception handling for the whole page is improved so instead of just always displaying a message when broken, it renders an error page with a styled message. In development context a technical message is displayed, while it’s only outputted as a XML comment in production context. This makes it possible to navigate the backend, even though the current page is broken.

Resolves: NEOS-344

[BUGFIX] Fix duplicate error codes in PasswordValidator and HostnameValidator

This change assigns a new error code to the “invalid hostname” error in the HostnameValidator (the PasswordValidator is older and thus “wins”).

This is needed to allow correct detection, display and error message translation of that error.

The XLIFF files are adjusted as well and the (wrong) translations are reset to the original (english) string.

[TASK] Update the Page prototype to use the new TS prototype Http.Message

This adds a way to change the HTTP status code and headers in TypoScript:

prototype(YourPackage:Page) < prototype(TYPO3.TypoScript:Http.Message) {
        httpResponseHead {
                headers {
                        Content-Type = 'application/xml'
    content = TYPO3.TypoScript:Template {

Related: NEOS-449

[TASK] Use grunt for building css and js

To have consistent results the processes for compiling scss and js files into those files loaded by the browser, we now use grunt to have a defined process. This also means we need to define exactly which version of the tools is used.

Therefore we install compass locally into the project instead of using a version installed into the system. To install compass the ruby package manager bundler is used.

For new developers it might be hard to figure out what needs to be installed. This therefore also adds a script which gives hints how to install necessary tools like node, npm and bundler. It then uses these tools to install grunt, compass, etc.


To prevent confusion with the old r.js -o build.js command the build.js is moved to the Scripts folder. Compiling all javascript and css can now be done by ‘grunt build’:

cd Scripts
grunt build

Related: NEOS-439

[BUGFIX] Missing getObjectManager method and trait usage

This change implements getObjectManager() on the FeatureContext and includes the IsolatedBehatStepsTrait which is required for running the Behat tests.

[!!!][FEATURE] Make button label and highlighting mode configurable

The HTML editor uses code mirror and could thus be used to edit other types of textual content as well. To allow this two new editorOptions are introduced:

  • buttonLabel overwrites the text on the button to open the editor
  • highlightingMode overwrites the default (text/html) highlighting

This is breaking if you used the HtmlEditor in your node types. To adjust, you need to replace HtmlEditor with CodeEditor, either manually or with:

./flow core:migrate --package-key <your package>

Resolves: NEOS-379

[TASK] Document custom validator/editor use for node properties

Documents the use of custom (JS) validators and editors for the inspector implemented with https://review.typo3.org/26005.

Resolves: NEOS-223

[BUGFIX] Make legacy site import tests independent from demo site

Adjusts the LegacySiteImportServiceTest fixture so that the functional tests don’t fail if the TYPO3.NeosDemoTypo3Org package is not installed.

[BUGFIX] Incorrect handling of integer values in SelectBoxEditor

If a option value is can be interpreted as a finite number it is treated as an integer, regardless of it being a string value. This results in wrong behavior where the editor is marked as modified, without it actually being so.

Related: NEOS-419

[FEATURE] Display modal dialog for initial translation of a document

If a document does not exist in the target language, the editor can choose whether content from the current language should be copied to the target language, or whether he’d like to start from scratch.

Additionally, all documents which do not exist in the rootline in the target variant are also materialized.

Resolves: NEOS-633 Resolves: NEOS-646

[BUGFIX] Skip null values in inspector SelectBoxEditor

Values without configuration should be treated as unset values and not included as selectable options.

Related: NEOS-419

[FEATURE] Routing: content dimension / translation support

This change introduces translatable URI segments and general support for content dimensions in the frontend node route part handler. Editors may change the path segment of a specific document node (for example a page) in the inspector.

The route part handler which renders and matches the URIs does not use a node’s name anymore but refers to a new node property “uriPathSegment”. This finally decouples URI generation from the internal node structure and naming.

This change also makes sure that router caches are flushed if any node is updated, removed, published or discarded. That is refined in a separate change.

In order to migrate existing websites, you must run the “node:repair” command in order to fill the new uriPathSegment properties.

If you used the “LocalizedRoutePartHandler” from a development version of Neos, you need to remove the respective Objects.yaml configuration.

Resolves: NEOS-296

[TASK] mark a Document Node Type as “aggregate”

I09223f24a80182596a99c9b4908773a990b9316a introduced the “aggregate” flag to TYPO3CR. This change sets the flag for the TYPO3.Neos:Document node type so that NodeType::isAggregate() returns TRUE for those.

Related: NEOS-644

[TASK] Adjust behat feature context to Flow changes

This adjusts the behat feature context to the changes made in I7ba61a8e49d108b685394a70be8657550c4033aa.

Related: FLOW-102

[TASK] Add icons to reference(s) inspector editor results

Resolves: NEOS-409

[TASK] Improve usability of publishing button

  • Change publish button state during publishing (add ellipsis)
  • Change dropdown button during publish all/discard actions (ellipsis instead of arrow)
  • Ensure buttons cannot be clicked during publishing/discarding
  • Disable buttons during saving of content changes/having pending content saves
  • Change publish button color to orange when save changes are pending
  • Ensure publish all count is updated after publishing/discarding
  • Display error messages if publish/discard failed
  • Only discard changes if actually nodes to be discarded are available

Related: NEOS-348

[FEATURE] External events when panels open/close and layout changes

This change adds several new events that will be triggered a panel is opened or closed, causing the viewport of the content area to be resized.

  • Neos.LayoutChanged When the content window layout changes (when panels
    that alter the body margin are opened/closed).
  • Neos.NavigatePanelOpened When the navigate panel is opened.
  • Neos.NavigatePanelClosed When the inspector panel is closed.
  • Neos.InspectorPanelOpened When the navigate panel is opened.
  • Neos.InspectorPanelClosed When the inspector panel is closed.
  • Neos.EditPreviewPanelOpened When the edit/preview panel is opened.
  • Neos.EditPreviewPanelClosed When the edit/preview panel is closed.
  • Neos.MenuPanelOpened When the menu panel is opened.
  • Neos.MenuPanelClosed When the menu panel is closed.

Resolves: NEOS-408

[TASK] Refactor usage of data attributes for node data

The usage and naming of data attributes for the node data is very inconsistent and there’s no clear rules.

  • Renames node attributes from data-neos-* to data-node-*. Direct properties of the node are prefixed with _ and internal non properties are prefixed with __.
  • Replaces all usage of .attr(‘data with .data(‘
  • Renames some of the attributes to match their actual content
  • Replaces usages of reserved word “arguments”
  • Adds missing dependency in PluginViewEditor

Resolves: NEOS-356

[TASK] Document TS include syntax in Integrator Guide

This adds a section on TypoScript include to the Integrator Guide chapter “Inside TypoScript”.

Related: NEOS-440

[FEATURE] Extensible node search service

Add an interface for the node search service allowing it to be extended with a better search algorithm.

Resolves: NEOS-535

[TASK] Document change in layout properties

[TASK] Fix content cache clearing in Behat scenarios

The glob pattern could not match any directory, so the content cache produced wrong results for the scenarios.

Additionally a leaking detached Workspace instance is prevented by clearing all node instances before importing the site.

[BUGFIX] Deleting text in inline editable properties is slow

When deleting text in an inline editable property it is very slow. The problem was caused by inserting some elements that weren’t even used. The slowness was possibly caused by the elements being duplicated multiple times.

Fixes: NEOS-585

[TASK] Adapt after the NodeInterface::getFullLabel removal

This change adapt the Neos navigate component to crop node label on the client site with CSS.

We also remove technical informations from the structure tree to have a more clean interface. The icon for Content Collection is now a folder.

Related: NEOS-441

[FEATURE] Crop aspect ratio lock presets (image editor)

Introduces aspect ratio lock presets for the cropping in the inspector image editor. Multiple presets can be configured, additionally it’s optional to allow custom ratios and to enable the original ratio as an option.

Additionally a locked aspect ratio can be configured to ensure a specific aspect ratio of all images in that image property.

Example configuration:

          width: 1
          height: 1
          label: 'Square'
          width: 4
          height: 5
      enableOriginal: TRUE
      allowCustom: TRUE
        width: 0
        height: 0

Example of disabling available options:

# Disable ``square`` option
                  square: ~

Resolves: NEOS-557

[BUGFIX] Uncached PluginView

Plugins are uncached by default. PluginViews should get the same caching behavior.

Resolves: NEOS-548

[!!!][TASK] Move FlowQueryOperations concerning nodes to TYPO3CR

All FlowQuery operations concerning nodes have no dependencies on the TYPO3.Neos package, but only on the TYPO3.TYPO3CR package. The rightfully belong there and probably ended up in the Neos package before the TYPO3.Eel package became part of the Flow base distribution. Now that Eel is available all the time the operations can as well reside in TYPO3CR which allows to use them without installing the Neos package at all.

This change is breaking if you extended the FlowQueryOperations that are now moved. You need to extend from the same class in TYPO3CR now.

The needed namespace replacement is from:




Resolves: NEOS-405

[BUGFIX] Adding custom handlebars.js breaks Neos backend

Ember should prioritize imported Handlebars over global Handlebars to allow Neos to use its own version if any other is loaded.

This patch is actually part of newer versions of Ember:

Fixes: NEOS-301


[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Translate Aloha placeholders in TextMixin & ImageCaptionMixin

Makes the Aloha placeholder labels in the TextMixin & ImageCaptionMixin translatable.

Related: NEOS-1494 Depends: I8dfea96b74cb0d60aa819402a9f7153491dec211

(cherry picked from commit eb349b3cdb1055af94e778ac1119adafe6e3b6c8)

[TASK] Translate hardcoded labels

A couple of labels that were still hardcoded are now translatable. This includes the placeholder for the image alignment mixin, the button in the HTML element and the placeholder for the form element.

Fixes: NEOS-1490

(cherry picked from commit bc2f82e777db6d803e35c8714ea8e7184a532afe)

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Headline calls itself Headline again, not Title

The Headline nodetype was named “Title” in NodeTypes/Headline.xlf.

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[BUGFIX] Fix missing entryTag for referenced nodes in ContentReferences object

TYPO3.Neos.NodeTypes:ContentReferences object is missing correct caching configuraion. Add entryTags for each referenced node.

Depends: Ie0a408ca5bc76d4494c3dfe146fc9028be4fa1f2

Fixes: NEOS-1437

[TASK] Update translations from translation tool

[TASK] Make sure that a documents subpageLayout is displayed below layout

The layout setting for a document should always be rendered before the subpageLayout setting. This change sets for either layout and subpageLayout positions to make sure they are always rendered in the correct ordering.

Resolves: NEOS-1441

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] Update translations from translation tool

[TASK] translate NodeTypes package (Node Type Names)

Resolves: NEOS-1265

[BUGFIX] Remove faulty, old code migration

The removed code migration renamed various TypoScript prototypes from a pre 1.0 state to a 1.0 and up compatible state. Some of those prototypes have changed names again in the meantime (TYPO3.Neos:Template) rendering this migration breaking. Pre 1.0 projects need to adjust those changes manually from now.

[BUGFIX] Menu cache configuration is missing entryTag for the Menu node itself

When some properties of TYPO3.Neos.NodeTypes:Menu node are changed the caches would not get flushed, as entryTags configuration are missing the entry tag for Menu node itself.

[BUGFIX] Add cache definition to TYPO3.Neos.NodeTypes:Menu

TYPO3.Neos.NodeTypes:Menu is missing cache definition. Add cache definition to invalidate cache entry when any node of type TYPO3.Neos:Document changes.

[TASK] Update composer manifest for 2.0.0-beta2

See https://ci.neos.typo3.org/job/TYPO3%20Neos%20Release/51/

[TASK] Fix dependencies in composer manifest

This relaxes the dependencies a bit.

[TASK] Update composer manifest for 2.0.0-beta1

See https://ci.neos.typo3.org/job/TYPO3%20Neos%20Release/50/

[TASK] Adjust node type config to new super type configuration format

Depends: I6b5c89f5c88339db99f4a81c5e6b74ec5e7ceee9

Related: NEOS-1253

[TASK] CGL Cleanup

This change is purely cosmetic and fixes CGL issues.

[TASK] Adjust dependencies for the 2.0 branch

[TASK] Update composer manifest for 2.0.*@dev

See https://ci.neos.typo3.org/job/typo3-neos-branch/5/

[TASK] Adjust to helper method to determine if backend rendering

Reduces the nesting of conditions in the Image partial by using the new helper method in Neos to find out if currently in backend.

Releaes: master Depends: I2c48f66716dfee756418f4fdb95b958a2bb24f01

[BUGFIX] Unable to select the Menu if it’s empty

This change add a message “The menu is empty” only in the backend context, so the user know that the menu is empty, and can select the content element to configure it.

Resolves: NEOS-1124

[!!!][TASK] Disable image resizing for image properties by default

This removes the image resizing options for image properties. This is done since it’s more common to rely on the rendering taking care of it.

If resizing is desired it can be re-enabled with the follow configuration in the NodeTypes configuration:

              resize: TRUE

Resolves: NEOS-1050 Related: NEOS-1049

[TASK] Streamline TypoScript and add fallback for title/caption

Remove unecessary parts of the TypoScript as the convertUris processing is applied with the autogenerated TypoScript already. Additionally adds fallback for title and caption from the media image entity.

Related: Iea35682d39189bfe9bb5cfb0709e7d90eaee2fce

[TASK] Mark recent core migrations applied

This commit doesn’t contain any changes, it simply marks recent migrations applied so that:

./flow flow:core:migrate --status

won’t show any open migrations for this package.

[!!!][TASK] Cleanup multi column rendering

This removes one unnecessary div in multi column rendering. Without this change the column would generate a div and the content collection another one inside. Now the ContentCollection is the column div which makes the generated markup nicer.

This is breaking if you rely on the MultiColumnItem having a template as MultiColumnItem is not a ContentCollection (so a plain tag). Attributes configured for MultiColumnItem still work as before.

[!!!][TASK] Rename “Insert records” content element

Renames the TYPO3.Neos.NodeTypes:Records node type to the less ambiguous TYPO3.Neos.NodeTypes:ContentReferences and adjusts labels and properties accordingly.

To adjust your existing elements, run the following node migration:

./flow node:migrate 20141210114800

Resolves: NEOS-847

[TASK] Adjust to configurable Aloha autoparagraph

Related: NEOS-851

[TASK] Use placeholders instead of default values where possible

For inline editable properties that use a default wrapping of a paragraph, it’s possible to use placeholders instead to avoid having to remove the default text first. This is because unwrapped text is automatically wrapped with in a paragraph.

Resolves: NEOS-372

[BUGFIX] Order of image properties

The order of properties in the image inspector group, is not specfically configured meaning that the order is determined by the configuration merging.

[!!!][TASK] Remove deprecated TYPO3.Neos:Page nodetype

This was deprecated with the release of 1.0, let’s remove it.

[TASK] Adapt to feature switches for ImageEditor

The ImageEditor now allows to switch crop and resize on/off, default in the editor is off but to retain backwards compatibility for default content elements this switches both features on.

Related: Ic4d4fe0cc486b77a9f062c826f916d8f16a9257b

[TASK] Adjust to new resource management

Related: FLOW-108

[TASK] Mark migration as merged

This commit marks some migrations as merged that are not needed on this package. This speeds up core:migrate and avoids potential errors.

[BUGFIX] Adjust remaining code migration identifier

This is another follow-up for I3dc57f55ba052bee2399ba5b97e5f985fd0a4e3a that fixes the identifier for a code migration. Besides this contains the corresponding “Migration” footers so that migrations won’t be applied again.

Related: FLOW-110

[TASK] Adjust to acl changes in Flow

Adjusts the NodeTypes package to the recent refactoring of the Security Framework in TYPO3.Flow mainly by running the respective code migrations.

[BUGFIX] Adjust remaining code migration identifier

This is a follow-up for I3dc57f55ba052bee2399ba5b97e5f985fd0a4e3a that adjusts a remaining code migration that has been left out in the previous commit.

Related: FLOW-110

[BUGFIX] Adjust code migration identifier pattern to contain the full timestamp

Previously code migrations are expected to have a class name with the pattern Version<YYYYMMDDhhmm> and the unique identifier was determined extracting the last 12 characters of the class name (which are expected to be the timestamp).

This change adjusts existing code migrations to use the full timestamp in order to establish the new guideline (note: those migrations still return the old identifier so that they won’t be applied again with a new identifier).

Related: FLOW-110

[TASK] Adjust HtmlEditor to CodeEditor

Related: NEOS-379

[!!!][TASK] Hide document layout properties by default

Since many websites won’t use the layout features, it’s disabled by default but still easily available by setting the inspector group for the properties.

If you rely on these properties, adjust your node type configuration by setting the group on the two layout properties:

          group: 'layout'
          group: 'layout'


[TASK] Update composer manifest for 2.0.0-beta2

See https://ci.neos.typo3.org/job/TYPO3%20Neos%20Release/51/

[TASK] Fix dependencies in composer manifest

This relaxes the dependencies a bit.

[TASK] Update composer manifest for 2.0.0-beta1

See https://ci.neos.typo3.org/job/TYPO3%20Neos%20Release/50/

[TASK] Adjust dependencies for the 2.0 branch

[TASK] Update composer manifest for 2.0.*@dev

See https://ci.neos.typo3.org/job/typo3-neos-branch/5/

[BUGFIX] Uri segment empty for kickstarted sites

The uri segment is not set for kickstarted sites which causes an error when trying to save the root page afterwards. A node:repair will fix it as well.

Fixes: NEOS-980

[TASK] Mark recent core migrations applied

This commit doesn’t contain any changes, it simply marks recent migrations applied so that:

./flow flow:core:migrate --status

won’t show any open migrations for this package.

[BUGFIX] Fix accessRoles xml tag

Corrects the generated XML to match the expected structure for an empty array.

Resolves: NEOS-1003

[TASK] Create Resources/Public in site generation

As this is the Generator for a site, we can be fairly sure that it will contain public resources so we should create the Resources/Public folder. The best practice folders “Images”, “JavaScript” and “Styles” are also created.

[BUGFIX] Add default dimension values when kickstarting a new site

The site kickstarter never added any dimension values to the generated Sites.xml, this would result in an unusable site if dimensions where configured as the nodes without dimension values wouldn’t be found.

With this change the current dimension defaults are added to the generated Sites.xml. This still means that kickstarting a site, then adding dimensions and importing will result in a problem. But this should be solved on the Neos side in a general way.

Fixes: NEOS-757

[TASK] Kickstarted packages suggest TYPO3.Neos.Seo package

Adjusts the generated composer manifest to contain a suggested dependency to the “typo3/neos-seo” package.

Besides this tweaks the generated NodeTypes.yaml.

Resolves: NEOS-785

[TASK] Adjust Sites.xml template to new format

With support for content dimensions the XML format has been adjusted. This change updates the template used to kickstart sites to that new format.

The indentation is changed from tabs to spaces, as the site export uses spaces to indent as well.

Related: NEOS-166 Related: NEOS-158

[BUGFIX] Make special characters in sitename possible

When using special charcters in the sitename while creating a new site with the kickstarter the generated site.xml is rendered broken.

Resolves: NEOS-493


[FEATURE] Add node migration to add dimensions

This adds migration 20150716212459 which adds missing dimensions to nodes, setting their default value. This enables the addition of content dimensions to existing content having dimensions already.

The migration uses the new AddDimensions transformation, which will add to a node’s dimensions (as opposed to the existing SetDimensions transformation).

Fixes: NEOS-1464

[BUGFIX] node:repair should consider dimensions

This change makes sure that all node:repair command plugins operate correctly with dimensions.

The NodeFactory gained an internal method to generate a context based on a given NodeData instance that matches the properties of this.

Additionally TYPO3\\TYPO3CR\\Domain\\Service\\ContentDimensionCombinator was introduced to deal with generating possible dimension configuarations for Context generation.

Releaes: master, 2.0, 1.2 Fixes: NEOS-1466

[FEATURE] Allow configurable fallbacks for unavailable NodeTypes

As you could have nodes which have a NodeType that is no longer available the TYPO3CR should have the possibility to convert those nodes at least to a configurable fallback NodeType that can be deleted instead of throwing an error and not having the possibility to cleanup those nodes except using node:repair.

You can configure the fallback NodeType name in the Settings configuration:

    fallbackNodeType: 'Some.Package:SomeNodeType'

Related: NEOS-649 Related: NEOS-1246

[BUGFIX] NodeService shouldn’t use non existing class

The change I34b21540fc11ef9d5e7977752b94369faad5534a introduced a regression in 2.0 as the backported code contained a reference to a class that was only introduced in master.

This change fixes it by removing the reference and directly concatinating the paths together.

Related: I34b21540fc11ef9d5e7977752b94369faad5534a Fixes: NEOS-1457

[BUGFIX] Avoid duplicate key errors with setDimensions()

When dimensions are set, the dimensions property of NodeData is clear()ed, and then the given dimensions are added.

If one of the added dimensions has the same name and value as one that was present, a duplicate key error occurs during persisting of the changes, because Doctrine first does the inserts and then the removal of records.

This change fixes that by actually comparing the dimensions to be set to the ones already set on the node, re-using instances that have the same name and value.

[TASK] Use Flow TranslationHelper

As functionality has been moved to the Flow TranslationHelper we set that for and I18n key in the TS context of the labelGenerator.

[BUGFIX] find() operation should support multiple filters

This change adds support for additional attribute filters after instanceof filters. These were ignored before which was not intuitive and consistent in the way find() works in jQuery.

Fixes: NEOS-1366

Depends: I49a9391e2d576f21c377bf3344202f9c3de2767c

[TASK] Fix source documentation on dimension migration tooling

Fixes some doc comments in SetDimensions and DimensionValues.

[BUGFIX] Update child nodes when changing the type of a node

If the node type is changed and you have child nodes that are not part of the schema, they are now marked as removed in the users workspace. After publishing they are therefore cleaned up.

If the user switches to another node type that might again contain a child node with the same name that would cause a conflict, so we just restore this child node.

Reverting deletion of nodes is not done recursively as the user still has the possibility to discard the changes in his workspace.


Currently there is still a limitation when changing the node type to a type with less/no child nodes: Those child nodes will be marked removed but they won’t be deleted from the database upon publish because they don’t belong to the document node according to the schema. This can be worked around by publishing all changes (or using the Workspaces module).

Fixes: NEOS-268

[TASK] Remove superflorious isset in node type getLabel

[BUGFIX] Compatibility for mysqli driver

When using the mysqli driver you can’t use prepared statements with named parameters (http://www.doctrine-project.org/jira/browse/DBAL-915). Using executeQuery() the named parameters are converted correctly.

Related: NEOS-1191

(cherry picked from commit ac857f17f1c18aad1d34c4099ff68a462a8dd9d7)

[BUGFIX] NodeConverter should accept skip for unknown properties

This change improves the handling of switching-node-types (e.g. from “page” to “shortcut”).

Related: NEOS-981

(cherry picked from commit 5c8e24e85eca8b04348072e816a8986ad8082eed)

[FEATURE] parentsUntil FlowQuery operations

Introduces a new FlowQuery operation for getting all parents or all parents until a node matching the optional filter expression is found.

The operation allows an additional argument to filter the result.

Example of usage:

parentsUntil = ${q(node).parentsUntil('[instanceof Acme:Node]')}

Resolves: NEOS-1274

(cherry picked from commit 6298236fce824a269bc396c4078d25bd50566763)

[FEATURE] nextUntil & prevUntil FlowQuery operations

Introduces two new FlowQuery operations for getting all following or previous siblings to a given node until a node matching the filter condition is found.

Both operations allow an additional argument to filter the result.

Example of usage:

siblingsBefore = ${q(node).prevUntil('[instanceof Acme:Node]')}
siblingsAfter = ${q(node).nextUntil('[instanceof Acme:Node]')}

Resolves: NEOS-1273

(cherry picked from commit ee3559872f667e05c635fed7dfcd54294548f2b8)

[FEATURE] prevAll & nextAll FlowQuery operations

Introduces two new FlowQuery operations for getting all following or previous siblings to a given node. Both operations allow a filter argument, to filter the siblings like the next and prev operations.

Additionally fixes the comments of the next``and ``prev operations, since they proclaim to do what the nextAll and prevAll actually do.

Example of usage:

siblingsBefore = ${q(node).prevAll('[instanceof Acme:Node]')}
siblingsAfter = ${q(node).nextAll('[instanceof Acme:Node]')}

Resolves: NEOS-1271

(cherry picked from commit fa2e204921cd0d9bade358e769ae2841b85a114e)

[TASK] add i18n helper to NodeLabelGeneration Context

Related: NEOS-437

[BUGFIX] Moving content in different dimensions should not break

Without this fix you could end up loosing nodes when you had a variant of a Node in different dimensions and moved one of the variants to a different path and back to the old path. This would (depending on the order of operations and dimensions) either lead to an exception because the variant would be found on the (old) path and thus the path marked as blocked or the node would get a different node name rendering the node inaccessible as then two nodes with the same identifier but different name (same parentpath) would exist.

Both cases are fixed by making the checks for existence stricter and excluding variants in other dimensions.

Fixes: NEOS-1339 (cherry picked from commit 3daf19e7f77d08e1bf3324abafbf441e1b878a04)

[BUGFIX] Support negated instanceof FlowQuery filter operation

A regression introduced in another fix with the change Icce97f6e0f210353f5123edd4f8c5a868f7134ea lead to incorrect matching of negated instanceof filters for node types.

Related: NEOS-1348

[BUGFIX] Support multiple filters in FlowQuery children operation

Due to incorrect handling of multiple Fizzle filters in the custom optimization in the FlowQuery children operation, multiple filters give incorrect results. Instead now all filters are taken into account and optimized individually if possible.

Fixes: NEOS-1348

[FEATURE] Allow to restrict editing by node-dimension

Example Configuration:

    # This privilegeTarget must be *DEFINED* so that we switch to a
    # "whitelist" approach
      matcher: 'TRUE'

      matcher: 'isInDimensionPreset("language", "de")'
        privilegeTarget: 'TYPO3.NeosDemoTypo3Org:EditGerman'
        permission: GRANT

This change also marks the ContentDimensionPresetSource a singleton, to make sure we can override the configuration from within Behat tests.

Also, check the corresponding change in the Neos package.

Resolves: NEOS-1345

(cherry picked from commit b1cf82a625efd31da90cec12a134c687a9f4916d)

[TASK] Rename signal argument

The name “recursion” should give more meaning to the flag.

[BUGFIX] Make sure no invalid NodeData instances are used

Makes sure that the first level cache for all context instances is flushed after moving a node as the NodeData instance used for a Node can have changed. Additionally adds a safeguard to the NodeFactory to drop Node instances that have an internal NodeData instance set.

Also adds the signal emitNodePathChanged to the Node object in order to use the information in the right context.

Last but not least cleans up the ContextFactory API by adding a new method getInstances and adding this and reset to the ContextFactoryInterface. At the same time removing the public method flushFirstLevelNodeCaches that was only used internally.

[BUGFIX] Node path availability should be determined correctly

The method \\TYPO3\\TYPO3CR\\Domain\\Service\\NodeService::nodePathAvailableForNode() checks if a given path can be used by a node and relies on nodePathExistsInAnyContext() for doing so. But as the node path is not available if the path exists in any context the return value must be negated in order to return the correct result.

[BUGFIX] findByProperties doesn’t work with unicode

Migrates Node properties to use unescaped unicode characters for storage to allow findByProperties to actually find them. Additionally runs the search term through json_encode just to make sure that any characters that need to be escaped are escaped for the search.

[TASK] CGL Cleanup - Overwritten variable in foreach

This change fixes incorrect variable naming in a foreach loop.

[BUGFIX] defaultValue for type DateTime doesn’t work

Changing the date type from date to DateTime caused a regression in getDefaultValuesForProperties() since it wasn’t adjusted accordingly.

Related: I49f719670b60fa91c041af574b4dbbeb8b399eca

[TASK] Change configuration syntax for defining node super types

Changes the configuration syntax for defining node super types to be similar to the constraints syntax. This is done to make it more clear when having to unset super types, without having to use a custom key. Now the key is the node type name and the value is an enable flag.

The change is fully backwards compatible with the old syntax, however it’s recommended to switch to the new syntax.

Resolves: NEOS-1253

[BUGFIX] Persist nodes even if only the removed flag is set

When only the removed flag was set, the node wasn’t updated in persistence because NodeData::remove() didn’t call addOrUpdate().

This change fixes the issue by unifying the behavior of the remove() and setRemoved() methods (the latter one is required for Property Mapping to work).

Fixes: NEOS-1252

[BUGFIX] ChildNode constraints check needs to be lowercased

Since all node paths are lowercase the constraints check for childNodes must be done against the lowercased node name to match properly. To be more precise any changes applied to the configured nodeName in \\TYPO3\\TYPO3CR\\Domain\\Model\\NodeType::getAutoCreatedChildNodes() must also be applied to incoming node names in \\TYPO3\\TYPO3CR\\Domain\\Model\\NodeType::allowsGrandchildNodeType()

Fixes: NEOS-1234

[BUGFIX] Reducing nodes by dimensions works for nodes without

The NodeDataRepository filters query results with the method reduceNodeVariantsByWorkspacesAndDimensions which works as long as all nodes in your database have the same dimensions. Especially the case that you have nodes with some dimensions and nodes without any dimensions is not handled well if no dimensions are used (configured).

Given you have two variants of a node, one with dimensions one without. If you ask the NodeDataRepository for a node with that identifier and no dimensions it would (wrongly) return the node with dimensions. This change adapts the matching algorithm for the specific case of matching against empty dimension values.

[BUGFIX] Node Import must generate Node Identifier if not part of dump-file

This is a regression to If7e6598b176528252c720344cb240e34be163e2e - it reverts this part of that change, and adds a unit test case to prevent the error from happening in the future.

[TASK] Code cleanup in NodeImportService

[TASK] Adjust dependencies for the 2.0 branch

[BUGFIX] Update functional test export fixture

Prevents an error caused by using the old format which results in the imported site containing a TYPO3.Neos:Shortcut node as root, which leads to constraint issues.

[BUGFIX] ImportService should import with lowercase paths

The change I890ea84ec26f1fba00f72b200e959e3c0fc30f94 introduced a regression for importing sites from the Sites.xml. Paths in there would be used as is, so nodes with paths containing uppercase characters could never be found.

This change adds the necessary lowercasing of paths found in the imported Sites.xml file.

Fixes: NEOS-1237

[TASK] Improve debug output for node objects by excluding large classes

With the change If4a692168d317cbcb7527fb28ebb113705f7c500 in TYPO3.Flow the ignoredClasses are configurable in the settings. This change adds ignoredClasses for this package to improve the debug output for node objects.

Depends: If4a692168d317cbcb7527fb28ebb113705f7c500 Resolves: NEOS-1140

[TASK] Optimize renderValidNodeName utility method

Checks the given name against the name pattern before doing expensive unnecessary transliteration.

Related: NEOS-1237

[BUGFIX] Node querying must be case insensitive

A regression in I890ea84ec26f1fba00f72b200e959e3c0fc30f94 lead to creation of auto created child nodes failing if they contained uppercase characters in their name.

Additionally hard coded queries for node paths weren’t lowercased automatically to avoid breaking changes.

To prevent these scenarios the node querying is always done with lowercase paths automatically and the auto created child node names are processed with the renderValidNodeName.

Related: NEOS-1195 Related: NEOS-1081

[BUGFIX] Defined privileges have wrong YAML syntax

The privilege defined for a Behat feature does not follow YAML syntax so it will fail if using a strict parser. This fixes the error.

[BUGFIX] Ignore NodePrivileges that don’t match any node

When isDescendantNodeOf() translates node identifiers into their respective node path, it needs to return a false SQL condition, if the node does not exist.

Background: Previously this returned NULL if the referenced node could not be found, but NULL is converted to a TrueConditionGenerator in the EntityPrivilege.

Related: NEOS-5

[BUGFIX] Disable authorization checks during node import/export

This change makes sure that TYPO3CR imports/exports are not intercepted by authorization checks.

Background: In CLI mode security is disabled anyways, but the Import/ExportServices can also be triggered through HTTP requests (e.g. in the Neos setup). If the site to import/export is protected with privileges, those shouldn’t intercept the process.

Related: NEOS-5

[FEATURE] Constraints configuration for content dimension presets

This change introduces a new configuration option for the content dimension settings which allows for defining allowed and disallowed combinations of content dimension presets. For example, it is now possible to allow the combination of “English” and “Germany” for the dimensions “language” and “country” respectively, but disallow the combination “German” and “United States”.

The configuration syntax basically matches the syntax of node type constraints.

An example:

        default: 'en'
        defaultPreset: 'en'
        label: 'Language'
        icon: 'icon-language'
            label: 'English'
            values: ['en']
            uriSegment: 'en'
            label: 'German'
            values: ['de']
            uriSegment: 'de'
                'de': TRUE
                '*': FALSE
            label: 'French'
            values: ['fr']
            uriSegment: 'fr'
                'fr': TRUE
                '*': FALSE

Resolves: NEOS-1205

[!!!][BUGFIX] Node path should always be lowercase

The change I4649436ae6dfa2f386d9c5b656680ba87be25002 had some undesired side effects by allowing uppercase characters in generated node paths. In general all node paths should be lowercase to avoid similar issues. Since the node path is primarily internal, it’s fine to force it to be lowercase.

This is breaking in case you have nodes with names that have uppercase letters and they are referenced by their path somewhere.

Fixes: NEOS-1195 Related: NEOS-1081

[TASK] Add runtime cache to getSubNodeTypes()

This adds a runtime cache to NodeTypeManager::getSubNodeTypes(), drastically lowering the calls to NodeType::isOfType().

In my test setup the number of calls to isOfType() went down from over 212.000 to a little over 3000.

[BUGFIX] Check if $dateTime is a DateTime object before calling format()

This change adds 2 checks to see if $dateTime is really a DateTime object before calling the format() method. The lack of this check could cause fatal errors when publishing pages after clearing the hidden after / before date time.

Resolves: NEOS-1219

[BUGFIX] Allow publishing of nodes with modified schema

This is a follow-up to “Allow publishing of nodes with modified schema” (Id03709f32eb5d238334a7d5a0ddf509117e14021) that prevents Now to be injected as DependencyProxy.

Background: When injecting objects via Flow\\Inject annotations, Flow generates a proxy object to save memory in case the object is not actually used. When the proxy is passed to a type hinted method before it has been activated, a Fatal Error is triggered.

Related: NEOS-1172

[BUGFIX] findByProperties now allow directly on pathStartingPoint

When giving the findByProperties a pathStartingPoint it should also allow nodes with that exact path in addition to child nodes as results.

Fixes: NEOS-1212

[BUGFIX] Allow publishing of nodes with modified schema

When changing node types on existing nodes, the following publication would fail under certain circumstances (see issue NEOS-1172 for details). This change fixes those problems.

Adds a behat test as well: “When changing the node type of a node in my workspace to one that has fewer properties it is still possible to publish it”

Resolves: NEOS-1172

[TASK] Add some additional Behat scenarios about moving nodes

This adds some more scenarios about moving nodes. In fact they cannot show the bug explained in NEOS-1199 as that is a result of the Neos NodeOperations service behaving wrongly. Still those additional tests might be useful.

Related: NEOS-1199

[TASK] NodeService method to check if nodepath can be used for node

Adds method nodePathAvailableForNode() to the NodeService which can be used to check if a node can be allowed to be placed in a given path. This is needed to ensure that a node can be moved back to a location where a shadow node has been created in it’s former place.

Related: NEOS-1203

[BUGFIX] Incorrect handling of associative arrays in NodeConverter

Node properties of type array should convert incoming JSON objects into associative arrays instead of stdClass objects.

Fixes: NEOS-1194

[BUGFIX] Don’t generate NodeTemplate node name from the title property

The node name shouldn’t be generated from the title property since it’s internal and causes conflicts if the title changes later on.

[!!!][BUGFIX] Minor changes to improve CR performance

Calls to persistEntities() does not iterate over all nodes anymore and findHighestIndexInLevel() uses a caching property.

Additionally logic to create the workspace in a Context was streamlined to use less queries.

This is breaking if you rely on the fact that persists are triggered for each newly created Node. This was a side effect of assigning the highest index to the newly created Node and is now no longer needed in all cases. Therefor tests need to be adapted so that they do no longer rely on this behavior.

Fixes: NEOS-1189

[BUGFIX] JSON storage compatible method to find by properties

Replaces the method findByRelationWithGivenPersistenceIdentifierAndObjectTypeMap with a new method findNodesByRelatedEntities that finds entity relations in node properties. This is used by Neos to detect related assets in Nodes and prevent deletion of those.

The above mentioned method as well as findByProperties now also work with postgresql and json column types by casting to string.

Related: NEOS-1112

[TASK] Add some additional behat scenarios about moving nodes

This adds some more scenarios about moving nodes. In fact they cannot show the bug explained in NEOS-1199 as that is a result of the Neos NodeOperations service behaving wrongly. Still those additional tests might be useful.

Related: NEOS-1199

[BUGFIX] Fix regression introduced with JSON storing

As the JSON storing doesn’t handle DateTime objects the same as serialize, we need to adjust exports to that.

Related: I78a9e8c5d1d48202fd5b6a6be39abe59eee93f19

[TASK] Add missing PostgreSQL migrations

The JSON properties change lackedd the NOT NULL definitions for the PostgreSQL migrations. This change adds them to get the migrations in line again.

[BUGFIX] Make functional tests run isolated

Functional tests in TYPO3CR didn’t work running isolated due to missing Security Context. This change adds testable security to the AbstractNodeTest.

Fixes: NEOS-1186

[BUGFIX] Return correct denied node types in AuthorizationService

This fixes the behaviour of the node AuthorizationService, to return all registered node types, if the user has no grant privilege on a CreateNodePrivilege targeting no specific node types.

Related: NEOS-163

[FEATURE] Support for node identifiers in “isDescendantNodeOf” matcher of NodePrivileges

This change extends the isDescendantNodeOf matcher of node privileges to accept a node identifier in addition to its path.

Background: The node path is not reliable because it changes if a node is moved. Besides the path is not “human-readable” in Neos because new nodes get a cryptic name. Therefore it’s best practice not to rely on the path but on the identifier of a node.

Related: NEOS-28

[FEATURE] EditNodePropertyPrivilege

A privilege that targets editing of node properties in the TYPO3CR.

Usage (in Policy.yaml):



      matcher: 'isDescendantNodeOf("/sites/typo3cr/service/teaser") && nodePropertyIsIn(["hidden", "name"])'

This would add a privilege that intercepts editing properties of the node /sites/some-site/some-path node (and all of its child-nodes) unless explicitly granted to the current role.

Resolves: NEOS-948

[BUGFIX] Initialize security in behat tests

This is needed to to the refactoring done in I3c459e4e11f93f6d95f2073226ca4e8137356017.

[FEATURE] ReadNodePropertyPrivilege

A privilege that targets editing of nodes in the TYPO3CR.

Usage (in Policy.yaml):



      matcher: 'isDescendantNodeOf("/sites/some-site/some-path")'

This would add a privilege that intercepts reading properties of the node /sites/some-site/some-path node (and all of its child-nodes) unless explicitly granted to the current role.

Resolves: NEOS-33

[FEATURE] RemoveNodePrivilege

A privilege that targets deletion of nodes from the TYPO3CR.

Usage (in Policy.yaml):



      matcher: 'isDescendantNodeOf("/sites/some-site/some-path")'

This would add a privilege that intercepts deletion of the /sites/some-site/some-path node (and all of its child-nodes) unless explicitly granted to the current role.

Resolves: NEOS-947

[TASK] Change to JSON storage for properties and dimensionValues

Storing node properties serialized is error prone and hard to use. Additionally the BLOB it is stored in doesn’t allow case sensitive searches.

This change implements a new JsonArray data type for Doctrine that stores the node properties JSON encoded.

Resolves: NEOS-427 Depends: I7eeb7d55e8ee593cae5bccf98211e4a2ff83b1d8

[FEATURE] CreateNodePrivilege

A privilege that targets creation of nodes in the TYPO3CR.

Usage (in Policy.yaml):



      matcher: 'isDescendantNodeOf("/sites/some-site/some-path") && createdNodeIsOfType("TYPO3.Neos.NodeTypes:Text")'

This would add a privilege that intercepts creation of Text nodes in the /sites/some-site/some-path node (and all of its child-nodes) unless explicitly granted to the current role.

Resolves: NEOS-163

[BUGFIX] Prevent issues with mixed case node paths

The node name match pattern in NodeInterface is case insensitive, but the utility to render a valid node name enforces them to be case insensitive. This is change removes the strtolower call to make the utility consistent with the pattern.

Besides that the change checks if auto created child nodes already exist before creating them to prevent constraint errors on node copy.

Resolves: NEOS-1081

[TASK] Refactor shadow node generation to NodeData class

Shadow nodes are purely internal so Node should not be responsible to create or deal with shadow nodes at all. Shadow nodes are also no longer exposed to the outside world as the NodeFactory no longer creates Node instances from shadow nodes. To do that the NodeData class got the new method isInternal() which returns a boolean to mark the object as purely internal preventing the NodeFactory to create a Node object. a NodeData currently identifies as internal if it has the movedTo property set AND removed is TRUE.

Fixes: NEOS-1013

[TASK] More graceful handling of non-existing migrations

The node:migrate command exited with an uncaught exception if the specified migration does not exist. This change will catch the exception and display the error message instead.

[TASK] Skip unnecessary updates in node setters

Prevents unnecessary signals and database updates when calling setter methods on a Node with the existing value. Without it performance decreases exponentially with the amount of properties being set using the NodeConverter e.g.

Resolves: NEOS-1060

[BUGFIX] Remove unused injections from NodeCommandController

As funtionality was moved out some injections became unnecessary and should be removed.

[TASK] Add “cleanup” schema migrations

This adds migrations for MySQL and PostgreSQL that tweak the DB schema a bit, cleaning up some leftover discrepancies.

[BUGFIX] Fix error in PostgreSQL down migration

In the down migration of Version20140826164247 a FK constraint and an index were dropped “twice” (dropping a column removes related items already).

[FEATURE] EditNodePrivilege

A privilege that targets editing of nodes in the TYPO3CR.

Usage (in Policy.yaml):



      matcher: 'isDescendantNodeOf("/sites/some-site/some-path") && nodeIsOfType("TYPO3.Neos.NodeTypes:Text")'

This would add a privilege that intercepts editing of Text nodes on the /sites/some-site/some-path node (and all of its child-nodes) unless explicitly granted to the current role.

Resolves: NEOS-650

[TASK] Remove on-the-fly repair for broken references

In https://review.typo3.org/25468 some on-the-fly repair code was added. This is removed with this change, since the expected data should now really be what it is to be expected.

[TASK] Remove workaround for returning objects for references

AbstractNodeData::getProperty() has a workaround for references to return objects instead of identifiers. This is not really meaningful and means giving a context object to AbstractNodeData. The workaround is (not anymore) used anywhere in the Neos code and should therefor be removed.

[BUGFIX] Remove shadow nodes for moved nodes in user workspace

If a node was not yet published to the live workspace and moved in the user workspace, the shadow node data (which is marked as removed) was not removed. This leads to strange effects where nodes disappear for individual users.

Fixes: NEOS-1068

[FEATURE] ReadNodePrivilege

This change adds the ReadNodePrivilege that can be used to limit access to certain sub-parts of the TYPO3CR:

      matcher: 'isDescendantNodeOf("/sites/yoursite/some/path")'

With this Policy.yaml configuration, the node on path “/sites/yoursite/some/path” and all its child nodes will be hidden from the system unless explicitly granted to the current user:

        privilegeTarget: 'Your.Package:MembersArea'
        permission: GRANT

Resolves: NEOS-945

[TASK] Mark recent core migrations applied

This commit doesn’t contain any changes, it simply marks recent migrations applied so that:

./flow flow:core:migrate --status

won’t show any open migrations for this package.

[FEATURE] Accept node type filter in node export service

This can be used to export only nodes of a certain type or selectively exclude some types during export. See https://review.typo3.org/32998 for a related change making use of it.

Related: NEOS-438

[!!!][BUGFIX] Fix unique constraint for workspace/dimensions

Run ./flow doctrine migrate to adjust the database.

The unique constraint https://review.typo3.org/36845 added lacked the movedto column and broke shadow nodes.

This is breaking if you were unlucky enough to migrate between the merge of the the aforementioned change and this very change. In that case, drop the wrong constraint:

DROP INDEX UNIQ_60A956B9772E836A8D94001992F8FB01 ON typo3_typo3cr_domain_model_nodedata -- MySQL
DROP INDEX UNIQ_60A956B9772E836A8D94001992F8FB01 -- PostgreSQL

and then run this for MySQL:

./flow doctrine:migrationversion --version 20150211181736 --delete
./flow doctrine:migrate

and this for PostgreSQL:

./flow doctrine:migrationversion --version 20150211181737 --delete
./flow doctrine:migrate

Related: NEOS-1002

[!!!][BUGFIX] Node data identifier not unique for workspace/dimensions

Run ./flow doctrine migrate to adjust the database.

This prevents a node duplicate identifier in the same workspace with the same dimensions, by adding a constraint across identifier, workspace and dimensions. Without it unexpected behavior can occur when finding nodes by their identifier, e.g. used for references and links.

Fixes: NEOS-1002

[BUGFIX] Two unit tests updated to recent merges

Two UnitTests are not updated to the change merged with I13b5a1a58beb70260b3ea3321a0d81e81a829ae3 They lack a mocked nodeTypeManager which is added with this fix.

Releaes: master

[BUGFIX] Sites with the same prefix are exported multiple times

This fixes a case where nodes were exported multiple times, if one site node name is the prefix of other site node names. This lead to duplicate key constraint errors during the import.

Related: NEOS-991

[BUGFIX] Skip nodes that have no connection to a parent node

This fixes the site export for repositories that contain broken nodes without a proper rootline (one or multiple parent nodes in the path are missing).

Related: NEOS-991

[BUGFIX] Fix parsing of accessRoles during import

This fixes the NodeImportService that choked on site exports that contained non-empty accessRoles.

Background: We currently don’t use/evaluate the accessRoles, thus the site:export command generates empty and self-closing accessRoles tags:

<accessRoles __type="array"/>

If accessRoles are not empty (as it was the case in the manually generated Sites.xml of the TYPO3.SiteKickstarter package (see I04bdd9fb750df7017ec81d8b600f6bb3ba427a87) the import failed.

Fixes: NEOS-1003

[BUGFIX] Fix behavior of NodeData::hasAccessRestrictions()

This replaces the hard-coded check for the “Everybody” role with a check for the fully qualified role identifier “TYPO3.Flow:Everybody”.

Besides this adds tests for the the modified “isAccessible()” behavior introduced with Ia3a6220ae7fc7224b272794dba301fba2c617876

[BUGFIX] Fix two failing unit tests

This fixes two tests of the NodeDataTest test case that failed due to some unexpected method sequence indexes.

Besides this cleans up the test case in order to simplify debugging and refactoring.

[TASK] Behat test foundation and authorization service for node privileges

This changes adds needed behat foundation functionality to test node privileges. It also adds the stub for an authorization service, actioning as API to retrieve node related permissions.

Related: NEOS-28

[TASK] Remove excludeClasses setting

The excludeClasses setting has been deprecated, and in this case can be removed completely.

[TASK] Respect “SecurityContextHash” in Context cache

Adjusts the ContextFactory to respect the current SecurityContextHash in order to prevent protected nodes to be available to unauthorized users.

Background: The FrontendNodeRoutePartHandler of the Neos package fetches nodes without authorization checks. Without this change protected nodes might end up in the current FirstLevelNodeCache.

Related: NEOS-433

[FEATURE] Node privilege groundwork

This change adds some basic classes that allow creation of node specific privileges.

Related: NEOS-28

[!!!][FEATURE] Creation, last modification & last publication dates

Adds a composer dependency on “gedmo/doctrine-extensions”.

Implements creation date, last modification date & last publication date for nodes using DateTime properties in NodeData. The creation date & last modification dates are set when creating a new node. The creation date is copied for proxy nodes, but not when copying nodes. The last modification date is updated using the Timestampable behavior extension from DoctrineExtensions and is updated with every node update (except for some specific properties). The last publication date is null by default and set when a node is published to another workspace. The last modification date is copied for proxy nodes, but not when copying nodes.

Resolves: NEOS-194

[BUGFIX] Exception when setting a node’s path if it’s unchanged

Prevents an exception caused by checking for other nodes with the same path and finding itself, when the path is set to the existing path. This can happen through the node converter e.g.

[FEATURE] Support hidden before/after in site import/export

Handle the hidden before/after date time properties in the site import/export functionality.

Resolves: NEOS-990

[!!!][TASK] Add charset and collation to all MySQL migrations

This change set adds charset and collation to create table statements in the existing migrations. This make sure the tables are set up correctly independent of the database default configuration.

Also migrations generated contain this information since a while, leading to problems on migration if the database is not using the same charset and collation.

This is breaking if you have existing tables that do not use the utf8 charset and utf8_unicode_ci collation. To solve this you need to convert the existing tables. This can be done using the command:

./flow database:setcharset

Related: NEOS-800

[TASK] Removed deprecated use of Inject for settings

This removes the use of the Inject annotation for settings and instead uses the new InjectConfiguration annotation instead.

Related: FLOW-148

[BUGFIX] Support import of multiple sites

This change fixes a problem with the import of multiple sites. The end element for nodes was not correctly discovered, such that the nodes of the second site would break the import.

For more robustness in these cases the change introduces an exception if an unknown XML element is processed.

Related: NEOS-991

[TASK] Improve query performance by avoiding DISTINCT

This changes queries in the NodeDataRepository so that no joins to the NodeDimensions happen, instead a subquery is used. Due to this the DISTINCT function can be avoided which results in MySQL using no temporary table (which in case of NodeData will always be a disk based temporary table).

A typical query for childnodes of a certain type in a specific dimension is about 3x faster on the demo site dataset.

Additionally the findOnPath() query now uses the pathHash instead of the path.

[TASK] Remove unset NodeType properties from configuration

Fixes: NEOS-973

[BUGFIX] Allow configured childNodes to be moved

ChildNodes should not be bound to constraints as they are explicitly configured. Therefore moving a Node that is a childNode at the target place should not be stopped by node constraints.

[FEATURE] ChildNodes have defined positions

This change introduces the possibility to set positions for auto created child nodes to define the order they appear in the backend.

An example may look like:

      position: 'before main'
      type: 'TYPO3.Neos:ContentCollection'

This would add a new ContentCollection header to the default page that will be positioned before the main ContentCollection that the default page has.

The position setting follows the logic of the sorting also used in TypoScript implemented in If7487f8724462a5ff48375eda1085a2831becf5a.

Depends: I15957beca407163f7c166dc062ab84db087c3be0 Resolves: NEOS-922

[BUGFIX] Functional tests work again after merging export fix

The Functional test for the ExportService was not adapted to the change that fixed the export of non string properties I13b5a1a58beb70260b3ea3321a0d81e81a829ae3 This change fixes that.

Related: I13b5a1a58beb70260b3ea3321a0d81e81a829ae3

[BUGFIX] Make SiblingsOperation usable on toplevel nodes

The FlowQuery SiblingsOperation assumed that the nodes in the context all return a parent node. If that is not true, a fatal error is caused by the use of a method call on a non-object.

This change fixes that by checking for the parent node to exist before trying to iterate over it’s children.

[BUGFIX] Export non-string node properties correctly again

With recent changes the export of non-string node properties was broken in certain cases. Most obvious: resources attached to nodes were no longer exported with the XML.

This is caused by those objects being stored as their identifier, which is just a string in the node data properties. Export assumed the actual properties in there, whereas Node.getProperty() does a type conversion internally. As a result the “image” would be exported as a “string”, no longer triggering the expected type converter.

This change fixes this by applying a type conversion during export that takes the property type from the nodetype into account. If a nodetype is not available, the properties are still exported, but always as string.

[BUGFIX] Avoid use of undefined class constant

The ImportExportPropertyMappingConfiguration referenced to a constant from ObjectConverter using self, which is fixed with this change.

[TASK] Adjust NodeTypes schema to allow unsetting properties

Related: NEOS-973

[BUGFIX] Case-sensitive answer in node:repair interaction

Related: NEOS-329

[BUGFIX] Exception for undefined node types in node repair

If a node with an undefined or abstract node type is not removed in the optional removeAbstractAndUndefinedNodes check. That node will then cause an exception in the removeUndefinedProperties check since it tries to use the node type. To prevent this we handled that situation explicitly.

Related: NEOS-329

[TASK] Reintroduce node migration application information

This reintroduces the behaviour which was removed in I535507ef7072affb0a806d45e54de8009deb5344: Showing application information to every available node migration.

The reason why it didn’t work anymore has been fixed in Ifacef07200fdfd372c4b99e5fbd98b3b88a2dc3d.

Besides, this adds a word wrap to the comments column to not exceed a particular line length and look messy in most terminals.

[BUGFIX] Remove unpresent property from Repository

This removes the not present property workspaceName from the MigrationStatusRepository to make it function properly again.

Resolves: NEOS-967

[BUGFIX] Use propertyMappingConfiguration for converting object properties

To correctly configure object mapping, the PropertyMappingConfiguration given to the NodeConverter should be forwarded to the propertyMapper. That way an action can correctly configure the options used for mapping objects inside of nodes.

[FEATURE] Allow findByProperties() to be constrained to a path

Currently findByProperties() always searches all available nodes. This change allows to set a $pathStartingPoint so only nodes below the given node will be searched.

Related: NEOS-250 Related: NEOS-140

[BUGFIX] Correctly import node properties of type array

If a set export contains nodes with array properties, the export cannot be imported again. Thus arrays of strings, as produced by references properties are rendered unusable.

The change adds a test for this case and fixes it by the way array elements are parsed.

Fixes: NEOS-931

[BUGFIX] RenameDimension transformation keeps existing dimensions

The RenameDimension transformation was destructive for other existing dimensions, so executing a migration with this transformation twice would result in a broken state.

Fixes: NEOS-926

[FEATURE] Additional cleanup in node:repair commando

Adds additional cleanup to the node:repair command to ensure node integrity according to the node type configuration. The following cleanup operation are executed:

  1. Removes nodes with abstract or undefined node types
  2. Removes child nodes that aren’t defined as auto created child nodes or don’t fit constraints
  3. Removes orphan nodes
  4. Removes undefined properties

Resolves: NEOS-329

[FEATURE] Add default values for unset properties in node:repair

Performs checks for unset properties that has default values and sets them if necessary. This makes it easy to update existing nodes when adding new properties without having to write a node migration, since the operation is safe.

Resolves: NEOS-915

[TASK] Improve node retrieval in node:repair’s child node creation

Improves the retrival of nodes in createChildNodesByNodeType to exclude shadow & removed nodes directly in the query as well as only fetching nodes for the given workspace.

Related: NEOS-841

[FEATURE] Display node migration comments in node:migrationstatus

This change includes the comments provided for migrations listed in node:migrationstatus as a new column in order to make it easier to identify the respective migrations.

The feature which should have displyed the migration status (ie. when a specific migration has been applied) has been removed since the underlying mechanism in MigrationStatusRepository doesn’t seem to work.

This behavior needs to be fixed in a separate change.

[!!!][BUGFIX] Node with identifier should only exist once per context

On adopting nodes or in cases with undefined NodeData precedence it could happen that for the same identifier two Node objects are created for the same context. By just using the identifier and the context object hash in NodeFactory that is prevented. Nodes that are adopted into their own context directly get the new NodeData object, thus the factory doesn’t need to know about it.

This removes the $dimensions argument from NodeInterface::createNode(). It was dangerous to use anyway so you shouldn’t rely on it. Node::createNode() also sees the argument removed so make sure you remove all usages of it from your code.

Fixes: NEOS-354

[TASK] Adapt to DateTime property type change in Neos

This change adapts the NodeConverter to the changes in I49f719670b60fa91c041af574b4dbbeb8b399eca.

Related: NEOS-876

[BUGFIX] Correclty handle empty property elements in node import

Resolves: NEOS-807

[BUGFIX] Fix broken ContextFactoryTest & ContextTest

Fixes two broken tests, which break due to the unit tests not automatically injecting lazy properties.

ContextFactoryTest::createMergesDefaultPropertiesBeforeSettingAnInstanceByIdentifier ContextTest::getCurrentDateTimeReturnsACurrentDateAndTime

Related: NEOS-879

[BUGFIX] Now should not be instanciated

Currently the ContextFactory creates new instances of \TYPO3\Flow\Utility\Now which results in multiple context instances despite having the same context properties.

This led to hard to debug errors that could happen randomly. By injecting Now from the ObjectManager these problems are prevented.

Resolves: NEOS-879

[TASK] Adjust behat tests to changes in Flow

Adds a BehatTestHelper class, according to the changes in I410b7c7e4eaddff5aeb4e9d600dbdc1a3748df91.

Related: FLOW-134

[TASK] Correct docs that FlowQuer has() operation is not recursive

[TASK] Add additional signals in Node for History feature

This change adds a bunch of new signals to Node.

Related: NEOS-655

[TASK] Minor comment changes to NodeData class

[TASK] Include (internal) search over node properties

Move the method for node fulltext search into a repository method for proper workspace and dimension behavior. This method is internal API and bound to change.

Related: NEOS-824

[BUGFIX] Add label property to NodeTypes schema

This extends the NodeTypes.schema.yaml to cover the recently introduced label property. The updated schema also supports unsetting of existing labels (by setting it NULL)

Fixes: NEOS-813 Fixes: NEOS-812

[TASK] Initialize some variables to silence IDE warnings

Even though the variables in question are never undefined during runtime initializing them does no harm and is good style.

[BUGFIX] Export/Import fixes

The export should use the parent class name if a property turns out to be a doctrine proxy.

The new Doctrine Collection to array converter is used.

Identities are set inside of TypeConverters setting them in the Importer is removed.

Additionally removes all remaining occurances of TYPO3.Media repositories as they are no longer needed in master.

[BUGFIX] Site export is broken due to incorrect sorting

Fix sorting order by making / always precede other characters like -.

If there are two similarilly named nodes like node and node-1 they will be sorted by path as node, node-1, node-1/childnode, node/childnode which would cause site export to produce a broken XML (site export relies on correct sorting of nodes by path).

Doctrine doesn’t support replace function, thus the sorting is implemented in PHP by replacing / with ! (the first visible character in ASCII).

Fixes: NEOS-829

[BUGFIX] Make findByWorkspace() work on PostgreSQL

The introduction of a check for “removed = 0” breaks on PostgreSQL because there is no operator to compare integer to boolean directly.

Using a placeholder in the query and giving a type hint to Doctrine this is fixed with this change.

Fixes: NEOS-823 Related: NEOS-770

[BUGFIX] When writing to dimensionValues use proper conversion to DB

The dimensionValues field of NodeData is declared as object array, thus when writing to it, the proper conversion needs to be done.

Related: FLOW-132

[TASK] Resolve supertype inheritance in NodeType

The supertype inheritance is now done in the NodeType, not inside the NodeTypeManager. This allows to unset supertypes, thus removing their configuration from the final nodetype.

The Neos documentation (Integrator Guide) describes how to do that.

Related: NEOS-791

[TASK] Move super type inheritance resolving into NodeType class

This is a commit just moving functionality around. This is the base for the following commit and exists to ease the reviewing process.

Related: NEOS-791

[TASK] Remove empty DocBook manual stub

[BUGFIX] Discarding of changes should consider shadow nodes

Shadow nodes need to be removed when removing a changed node from a workspace.

Fixes: NEOS-797

[BUGFIX] Multiple moves of nodes break publishing/results in lost content

Shadow nodes must only be created if no original shadow node exists before. This solves moving the same node twice. In addition a scenario where a node is moved to and from at the same path is covered by storing the reference and sorting the nodes to be published by their dependencies (topological sorting).

Fixes: NEOS-770

[TASK] Disable testable security for AbstractNodeTest

It’s not needed by the test and causes delays with the new entity privilege type.

[TASK] Adjust to new resource management

Related: FLOW-108

[TASK] Remove leftover StepDefinitionsTrait

This trait has been replaced by the new NodeOperationsTrait, which has been introduced in I39d53f10667002050d9ee58e4344fbfdc58f29ba.

Related: FLOW-102

[BUGFIX] Allow importing/exporting DateTime properties

Fixes: NEOS-727

[TASK] Adjust to Flow acl changes

Related: FLOW-11

[BUGFIX] Adjust code migration identifier pattern to contain the full timestamp

Previously code migrations are expected to have a class name with the pattern Version<YYYYMMDDhhmm> and the unique identifier was determined extracting the last 12 characters of the class name (which are expected to be the timestamp).

This change adjusts existing code migrations to return the old identifier so that they won’t be applied again.

Related: FLOW-110

[TASK] Some code cleanup in NodeOperationsTrait

[TASK] Adjust behat feature context to Flow changes

This adjusts the behat feature context to the changes made in I7ba61a8e49d108b685394a70be8657550c4033aa.

Related: FLOW-102

[FEATURE] allow to copy content across dimensions, creating new variants

When content is copied from one dimension to another one, a new node variant should be created if the node variant does not yet exist in the target dimension(s).

When Documents are copied, we do not want to create any node variants, neither for the document nodes themselves nor for their content nodes.

Note: On copying, we do not need to materialize the source node – as the source is not touched at all.

Resolves: NEOS-654

[TASK] Type cast integer properties to actual integers

Related: NEOS-419

[BUGFIX] Node type migration filter’s withSubTypes option broken

The node type node migration filter’s `withSubTypes option breaks for unstructured nodes.

[FEATURE] Get node variants from a node or context by identifier

Introduces two new public API methods to retrieve other node variants of a node (with different dimension values) and to get all node variants of an identifier from the context.

Resolves: NEOS-661

[BUGFIX] Move partially translated subtrees consistently

Change the strategy for moving nodes according to aggregate or non-aggregate nodes. Subtrees of aggregate nodes are always moved consistently by fetching all node variants with the original path prefix.

Additionally cleanup the NodeInterface to remove recursive setPath that is never called on Node. The path constraint in the NodeDataRepository is updated to use the path hash to be consistent with the parent path constraint.

Fixes: NEOS-660

[TASK] Don’t flush the complete routing cache for moved nodes

With Ic131d828f491b8559d93647625298a5eccaeb131 only routing cache entries for related nodes will be flushed.

Related: NEOS-296

[BUGFIX] add aggregate property to NodeType schema

This is a followup to I09223f24a80182596a99c9b4908773a990b9316a.

Related: NEOS-644

[FEATURE] Independent paths for node variants of non-aggregate nodes

A node with a non-aggregate node type (e.g. Content) should have the possibility to have independent paths for each of its variants. This allows to have content positions decoupled (e.g. in container elements).

The moving strategy of aggregate node types (e.g. Document) is not touched by this.

Resolves: NEOS-648

[TASK] Add current node data to nodePathChanged signal

This extends the signal nodePathChanged in the NodeData class that is triggered whenever the path of a node is changed by adding the changed node data instance as argument.

This is backwards compatible because exceeding arguments will be ignored by the slot.

We currently need this to flush related routing caches only.

Related: NEOS-296

[TASK] Introduce signal for node property changes

This adds a signal nodePropertyChanged to the Node class. The signal is triggered whenever the property of a node is added or changed.

We currently need this signal to flush related routing caches whenever the “uriPathSegment” property of a node is modified.

Related: NEOS-296

[TASK] Add on cascade delete on NodeDimension NodeData property

As a NodeDimension must have a NodeData relation, if we remove the NodeData, we need to remove the NodeDimension. By using on cascade delete, the database can handle this in a performant way.

Resolves: NEOS-531

[BUGFIX] adoptNode to context with different dimension and workspace

Adopting a node to a different context that will also change the workspace results in wrong dimension values that were persisted by cloning the original NodeData. This change fixes the problem by creating a new NodeData and using similarize. A Behat scenario reproduces the problem.

Fixes: NEOS-651

[TASK] Support recursive adoptNode in Context

This change introduces a new paramter $recursive for the adoptNode method in Context which adopts all non-aggregate descendant nodes to the context recursively.

Resolves: NEOS-643

[TASK] mark a Node Type as “aggregate”

This change is the basis for further functionality changes when copying nodes across dimensions.

Resolves: NEOS-644 Related: NEOS-633

[TASK] Make TYPO3CR independent of TYPO3.Media again

This change removes a hard dependency of TYPO3.Media, to make TYPO3CR usable again in projects that do not use TYPO3.Media.

[!!!][TASK] Mark NodeInterface::getFullLabel deprecated

Currently the NodeLabelGenerator has support for cropping and the method NodeInterface::getFullLabel returns the label of the current node without cropping. For consistancy and flexibility, the cropping should be done in the view. Therefor Node::getLabel() will now return the full label without cropping.

In this change, the method NodeInterface::getFullLabel is marked deprecated since 1.2 but returns the same full label as before that is now also returned by NodeInterface::getLabel.

This change is marked breaking because NodeInterface::getLabel now returns labels of any length so you need to take care to shorten the labels if needed and additionally because NodeInterface::getFullLabel is considered deprecated and the NodeLabelGeneratorInterface no longer mentions the $crop argument.

Resolves: NEOS-441

[TASK] Make isAccessible() in NodeData return TRUE without security context

If the security context cannot be initialized, isAccessible() will return TRUE unconditionally.


[TASK] Use Flow TranslationHelper

As functionality has been moved to the Flow TranslationHelper we set that for both the Translation and I18n keys. One of the two should be deprecated in the future.

[BUGFIX] Merge @context & @override on a parser level

For backwards compatibility the @context & @override meta properties are merged on a parser level, so child meta properties and merged together. The parsing order is important here in case both are used on the same path, however it should be fine in most cases since mixing them should be avoided.

Related: NEOS-1379

[TASK] Include context I18nHelper to TypoScript defaultContext.

The context is needed to translate nodetype labels

Related: NEOS-1428

[TASK] Support keys starting with two underscores if not reserved

Using keys starting with two underscores they are ignored since they are considered internal. This is changed to only apply to certain reserved keys, which if used will throw an exception.

Resolves: NEOS-1411

(cherry picked from commit 6285b3585273bc8cf2e584aeed88abea3050ae68)

[TASK] Code cleanup in Parser and Runtime

[!!!][TASK] Deprecate @override and replace it by @context

The functionality of @override is often misunderstood, therefore the alias @context is introduced since it’s more self-explanatory since it’s about adding a variable to the context.

We still support the (deprecated) @override syntax; but you should nevertheless update to @override.

Resolves: NEOS-1379

(cherry picked from commit b3b0ab63a0773d96e832bb956177a530b548b499)

[BUGFIX] Set status after sucessfully rendering a TypoScript object

Due to the bugfix done in I8abefe9f8fb399a186d93737e2396dd55fc9c452 a regression was introduced as the lastEvaluationStatus is now considered in processors to allow conditions. But as the status is not set in a consistent manner you can end up with a successfully rendered TypoScript object and lastEvaluationStatus set to FALSE.

This is fixed by setting the status after successfully rendering a TypoScript object.

[BUGFIX] Unable to use if condition inside a process segment

Conditions are now properly executed in processors and additionally processor and if condition code was refactored to separate methods to reduce code duplication and make the code easier to understand.

Resolves: NEOS-1183

[FEATURE] Support entry tags with array value in @cache configuration

Entry tags for a cached path can be supplied with an array value. The values will be merged with other tags. This allows to use Eel helpers to dynamically compute a list of tags (e.g. for all parent nodes) which is needed by certain scenarios (e.g. content slide).


@cache {
      mode = 'cached'
      entryTags {
              parents = ${['Tag1', 'Tag2']}

Resolves: NEOS-1315

[TASK] Add TypeHelper to default context

Adds the new TypeHelper to the default TypoScript context.

Depends: If35e96c74dbf8c44485c829a4cebd3f12077f62d

[TASK] Adjust dependencies for the 2.0 branch

[BUGFIX] Safeguard against non-existing context variables

The correct handling of TS context for uncached segments (see change http://review.typo3.org/38597) had the adverse side affect that in 1.2 rendering failed, because “account” was no longer defined. On master the error does not become visible, since the account is no longer in the context directly, but accessed via an Eel helper.

This change adds a safeguard against unset context variables and makes them available with a value of NULL.

Fixes: NEOS-1217

[BUGFIX] Uncached segments should be able to override context

This bug was only exposed after Iace3a6faf9752028ac219b7346a2546bdf0423cb got merged. Overrides need to happen after reducing the context to only the cached variables, as otherwise you would be required to name also all overriden variables in the cache configuration.

This change fixes the order and proves the correct behavior with a functional test.

[BUGFIX] Uncached segment use configured context on first render

Uncached segments need to define the rendering context they need, but on first rendering they still had access to the full context which made it harder to spot errors in the context configuration as they only appeared on the second rendering. Now the context is adjusted to the configuration even for the first rendering.

Fixes: NEOS-1127

[BUGFIX] Fix parse errors with TypoScript comments

This commit fixes problems with parsing “comments in comments” in TypoScript


# */ text meant as comment

Adds a unit test and a fixture that reproduces the parsing error. Adds a unit test for the split pattern used to identify the “type of comment”. Refactors unit test for the TypoScript parser.

Resolves: NEOS-864

[BUGFIX] Fix error in TypoScript exception

$configuration[‘__objectType’] might not be initialized when we composer the error message.

Resolves: NEOS-1102

[TASK] Make exception messages more meaningful

This change should give integrators some help when they make common mistakes in TypoScript.

Resolves: NEOS-502 Resolves: NEOS-1102

[FEATURE] Improve TypoScript Exception Message Rendering

Changed rendering of error messages in Html Message Handler to improve usability for the integrator.

We now show a detailed error message with a nice styling when an error occurs during TypoScript rendering.

Resolves: NEOS-1106

[TASK] Add configuration for Flow’s Translate EelHelper

This adds the respective configuration for the Translate EelHelper introduced with I88e753f25e7087e3e4cd2efa193ce89fa3aa8232.

Depends: I88e753f25e7087e3e4cd2efa193ce89fa3aa8232

[BUGFIX] Exception causes fatal error in TypoScriptPathProxy __toString

If an exception occurs during handling of a rendering exception a fatal error is thrown due to __toString methods not being allowed to throw exceptions. To prevent that we catch those exceptions and try to render them with a context depenent exception handler instead. If that also fails we fall back to a custom handling of the exception.

Fixes: NEOS-898

[TASK] Mark recent core migrations applied

This commit doesn’t contain any changes, it simply marks recent migrations applied so that:

./flow flow:core:migrate --status

won’t show any open migrations for this package.

[FEATURE] Allow multi-line Eel expressions in TypoScript

Resolves: NEOS-60

[TASK] Support NULL as simple type

With this change NULL can be used in TypoScript:

simpleTypes.null = Value {
  value = NULL

[!!!][TASK] Throw exception for missing implementation class

To help debugging broken TypoScript an exception should be thrown when a object doesn’t have a implementation class meta property (@class).

This can be breaking if relying on missing implementation classes being silenced and returning NULL.

[BUGFIX] Runtime needs to reset context if it was overriden

Context overrides were just popped off the stack at the end of the evaluateInteral method, but need to be removed always before returning if override happened.

[BUGFIX] Fix merging of nested prototype property overrides

This fixes the merging of processors with simple types configured in the prototypes. Without this fix you can have unpredictable behavior if you overwrite properties of nested TypoScript objects.

Also fixes processors applied to values that where not set before.

Resolves: NEOS-1004

[TASK] Add new SecurityHelper to global context

The new SecurityHelper from the EEL package is made available as Security in EEL expressions.

Related: NEOS-1012

[BUGFIX] Adjust cache identifiers after security context hash addition

As the security context hash is now added to cache identifiers the compared identifiers in the functional test needs to be adapted.

[BUGFIX] Add missing mock securityContext to failing tests

The content cache unit tests fail since the security context hash is used in the cache identifier. This change adds a mock security context to the content cache tests.

Resolves: NEOS-1006

[TASK] Respect “SecurityContextHash” in ContentCache

Suffixes every content cache entry with the current SecurityContextHash in order to make sure that content is cached depending on the currently authenticated roles.

Related: NEOS-433

[TASK] Allow ignoreProperties on all Array implementations

The CaseImplementation allows for the special meta property @ignoreProperties to define keys that are not used in evaluation. This functionality can be useful for other types of implementations that iterate over the properties. The functionality was extracted and to make sure it works on all implementations of \\TYPO3\\TypoScript\\TypoScriptObjects\\AbstractArrayTypoScriptObject They have a new property “ignoreProperties” now that can be used in own implementations. Using “sortNestedTypoScriptKeys()” of the ArrayImplementation will ignore those properties already.

[TASK] Adjust to “Fluid: Consistent escaping behavior”

Adds “escapeOutput” property to existing ViewHelpers to ensure backwards-compatibility.

Depends: I1e4cd0942dcf7b0726f3d3892bf8713cba89e9a4

[BUGFIX] Matcher with “renderer” should evaluate in own context

A TypoScript (Case) Matcher configured with renderer should be evaluated with itself as context object, so that the following configuration works as expected:

hasLayout {
  layout = ${q(node).property('layout')}
  condition = ${this.layout ? true : false}
  renderer = ${this.layout}

Without this bugfix the renderer would fail as this was not set.

[TASK] Use TypoScript object for cacheIdentifiers

With this change the @cache.entryIdentifier is rendered as a TypoScript object. If none is configured (as is with all current cache configurations) it is assumed to be of the newly introduced type TYPO3.TypoScript:GlobalCacheIdentifiers. This new prototype includes the baseUri and format keys by default but can be extended as any other prototype. This ensures that cached links always match the request format and baseUri of the current rendering.

The baseUri includes the domain, http protocol and port.

Resolves: NEOS-852

[BUGFIX] Don’t catch SecurityExceptions

This adjusts the method AbstractRenderingExceptionHandler::handleRenderingException() to always rethrow exceptions of type TYPO3\\Flow\\Security\\Exception.


If a security related exception is thrown, it must always bubble up. Otherwise redirection to login forms won’t work when an AuthenticationRequiredException is thrown in a sub request.

Related: FLOW-130

[TASK] Adapt to EelUtility in TYPO3.EEL package

Remove some duplicate code that is now available in the TYPO3.EEL package centrally.

Also removes the context variable context that was deprecated in sprint release 10 and should have been removed some time ago already.

[FEATURE] Allow quoting of TypoScript declarations

TypoScript declarations (currently “namespace” and “include”) now allow quoting of the given values, so the example:

include: NodeTypes/*

can now be rewritten as:

include: "NodeTypes/*"


include: 'NodeTypes/*'

This prevents wrong detection of opening comments in IDEs.

Resolves: NEOS-831

[BUGFIX] Support access to properties with “this” in @if expressions

This is a missing case that was not tested and can easily be fixed.

Fixes: NEOS-835

[TASK] Adjust to new resource management

Related: FLOW-108

[TASK] Remove leading backslash on use statement

[TASK] Mark migration as merged

This commit marks some migrations as merged that are not needed on this package. This speeds up core:migrate and avoids potential errors.

[BUGFIX] Adjust code migration identifier pattern to contain the full timestamp

Previously code migrations are expected to have a class name with the pattern Version<YYYYMMDDhhmm> and the unique identifier was determined extracting the last 12 characters of the class name (which are expected to be the timestamp).

This change adjusts existing code migrations to return the old identifier so that they won’t be applied again.

Related: FLOW-110

[TASK] Wrap HTML message exception handler title

Related: NEOS-344

[FEATURE] TypoScript prototype to handle HTTP headers and response status

This change add a new TypoScript prototype that can be used to generate a standard HTTP head response:

prototype(TYPO3.TypoScript:Http.ResponseHead) {
    statusCode = 200
    headers {
            Content-Type = "application/json"

This change also introduces another prototype TYPO3.TypoScript:Http.Message which extends TYPO3.TypoScript:Array and makes it easier to work with HTTP messages. It is mostly a base prototype to render documents that support setting HTTP header data.

Resolves: NEOS-449

[FEATURE] Implement TypoScript inclusion globbing

The “include: ” statement of TypoScript now allows normal and recursive file globbing.

  • * – includes all of the ts2 files on that level
  • **/* – includes all of the ts2 files recursively starting with that level.

This works with relative and resource:// links. Recursion is avoided by not allowing to include the same .ts2 file as the one from which it was called.

Example Root.ts2:

# Include all .ts2 files in NodeTypes and it's subfolders recursively
include: NodeTypes/**/*

Resolves: NEOS-440


[BUGFIX] Close resource streams after usage

To reduce the amount of open file handles resource streams should be closed after using them.

[TASK] Add CLI command to clear Thumbnail objects and resources

This change introduces a new CLI command flow media:clearthumbnails to clear the Thumbnail objects and resources. This command is useful when changing quality settings in Media package or when working with a custom Thumbnail generator.

Resolves: NEOS-1359

[BUGFIX] Fix upscaling behavior of ResizeImageAdjustment

Rewrites the calculations involved for the ResizeImageAdjustment to provide meaningful results for images.

Maximum width and height are just used as upper boundary, the resize is never automatically using them as width and height values.

If upscaling is not allowed the maximum size of the resizing is the original image size.

The ratio mode will only be considered when width and height were set, in all other cases it wouldn’t provide meaningful results and the behavior is like for inset.

The inset ratio mode will scale the image to the smaller edge. An eventually configured other dimension will be ignored.

The outbound ratio mode will force the result to the given width and height. For this the image will be scaled to the larger edge and then cropped to the desired dimensions. Maximum width and height still apply and the resulting dimensions will be proportionally scaled into the maximum to preserve the desired aspect ratio.

Related: NEOS-1358 Fixes: NEOS-1484

[TASK] Migration for upscaling must predate Version20150324185019

It is necessary to add the upscaling DB fields before executing some migrations in other packages as doctrine will reference all properties available code wise and any queries break for other migrations transforming Assets from serialized state.

[TASK] Use translated labels if Neos I18n helper is available

Related: NEOS-1264 Depends: Ie5b379d066d0ce664dca78db02f9892d10522a52 Depends: I20d67187b9b54c53c3fc5c3aea05c45c363a192f Depends: Ib0a9aa678e52159bc958d0ae097ad65d24fac933

[BUGFIX] Image upscaling does not work

The new resource management introduced a regressing by removing the support to upscale images. This change requires a database migration as the allowUpScaling option is now persisted in the database.

Resolves: FLOW-297

[BUGFIX] invalid markup in templates

HTML tags where missing or not placed properly. The opening of modals was done by having a href attribute on a button element which is invalid and is now being replaced by data-target.

Related: NEOS-1264

[BUGFIX] ImageVariant conversion should use property mapping

This fixes a problem when building ImageVariants from given adjustment values. The adjustment values should be mapped as well to avoid invalid variable types.

Additionally adds the missing identity of the originalAsset when converting an ImageVariant to an array.

Related: I40311648344e1cf3015e4006c035d8d079d0e254 Related: NEOS-1392

(cherry picked from commit c8f10306208031b27a36edb77f4988f8e0aa1b3e)

[FEATURE] Support other file types that are supported in Imagine

With this feature all image file formats that are valid for the configured imagine driver will work with the media package. This includes SVG with the Imagick driver.

Additionally SVG is specially treated now and Images with no dimensions are possible.

Resolves: FLOW-144 Related: NEOS-93

[BUGFIX] Delete confirmation dialog not displaying in media browser

When opening the media browser, not module, clicking the delete various delete buttons does not show the confirmation dialog.

Fixes: NEOS-1286

[BUGFIX] Remove inclusion of removed stylesheet file

A old removed file was still included in the module leading to a missing resource being loaded.

Related: NEOS-1020

[TASK] Show relative modification date in detail view

Instead of showing the actual date for the modification date in the list view, the relative date is shown instead since that’s easier to comprehend. The exact date is displayed as a tooltip.

Related: NEOS-1020

[TASK] Improve relative date view helper

Instead of displaying a different year as soon as the date is from another year, the year is shown if the date is more than 11 months old from now. This helps since displaying the previous month in January makes sense without adding the year.

Related: NEOS-1020

[TASK] Display actual date when hovering date in list view

To be able to see the actual date and not only the relative one, the actual date is displayed as a tooltip.

Related: NEOS-1020

[TASK] Auto focus search field in list views

Automatically focus the search field to make it faster to search for users.

Resolves: NEOS-1299

[TASK] Display additional information in media detail view

Add information about file size, media type and optionally dimensions if available for assets in the defail view.

Related: NEOS-1020

[TASK] Display asset identifier in detailed asset view

Displays the asset identifier in the list of detailed information for the asset in the detailed asset view.

Resolves: NEOS-309

[BUGFIX] Fix regression with ImageVariant refreshes

ImageVariant::refresh() triggered an exception because the old resource was removed and still used afterwards. This is fixed by not removing the old resource object from the ImageVariant and just refreshing the resource. Additionally a resource is also generated on creation of the ImageVariant.

Fixes: NEOS-1284

(cherry picked from commit 90b8e7e9164bcb364d233119f01c67c564aea5af)

[BUGFIX] ImageVariant needs to update itself if resource rendered

The lazy generation of ImageVariant resources can break when the resource needs to be generated in a GET request. This change reverted the logic change done with I9fc5028e577d621183c2848e5ad97523637d8a9a but introduces the method addAdjustments() so multiple adjustment changes do not trigger multiple re-rendering of the resource.

(cherry picked from commit d17a3665c47775abf3e74ec085bc7168b35475f2)

[TASK] Adjust required versions in composer manifest

This adjusts the Flow dependency to require ~3.0 and Imagine to ~2.0. The requirement on PHP is removed (checked by Flow anyway).

Related: NEOS-1243

[BUGFIX] Outbound ratio is broken

This change fix the outbound rendering. Before this change outbound work like inbound rendering if the maximumWidth and the maximumHeight was set. The regression was introduced by the new resource management.

[TASK] Remove slash escaping option from ImageInterfaceJsonSerializer

This option was a workaround and the underlying bug is fixed with NEOS-1245, so the workaround can be removed.

Related: NEOS-1245

[TASK] CGL Cleanup

This change is purely cosmetic and fixes CGL issues.

[FEATURE] Asset collections for grouping assets/tags

Introduces asset collections that can be used to group assets and limit the tags available within a collection. This is useful when having a lot of assets and the tags aren’t enough to keep things organized. Assets and tags can belong to multiple collections. A new privilege for managing collections is introduced and given to administrators. If no collections exists everything works like before and only those with the privilege to create new collections see any difference in form of a creation form.

Depends: Ic3c15ebe8beaf7a70a1fb0ff6aab0699a80d5ff1

Resolves: NEOS-251 Related: NEOS-1256

[TASK] Updated untagged count when tagging assets

If an untagged asset is added to a tag the untagged counter is updated accordingly.

Resolves: NEOS-1065

[TASK] Improve usability and allow clicking drop zone to upload

  • Enables clicking the dropzone to select files
  • Removes unreliable hiding of drop zone
  • Adds active/hover classes for styling to the drop zone
  • Remove CSS stub

Resolves: NEOS-1077

[FEATURE] Confirmation dialog for deletion of assets

Adds a confirmation dialog when deleting assets to prevent deletion of wrong assets by mistake.

Additionally makes it possible to delete assets directly from the thumbnail view like it is in the list view.

Resolves: NEOS-1025 Resolves: NEOS-1066

[BUGFIX] AssetConverter should not automatically reuse assets

The AssetInterfaceConverter checked if an uploaded Resource was already available as Asset and would reuse the asset in this case. This is not expected for developers using Assets as you would expect that a new upload also creates a new object. This is fixed by adding a new TypeConverter option to enable this special handling which is needed for the Media browser itself for example. The default case is now that uploaded Resource objects always result in new Asset objects.

Fixes: FLOW-288

(cherry picked from commit edc8f1cdda1a2e1dc9976ea3dbf1bd77af4f7fb7)

[BUGFIX] Video object is not initialised correctly

Remove “initialize” method and replaced it by “__construct” in order to set the default values for width and height.

This fixes a missing initialisation of video objects. The “initialize” function is never called and therefor width and height are not set. With no width and height set, validation of the object will fail, which prevents upload and import.

[TASK] Prevent uploading of files exceeding maximum file size

Adds JavaScript checks for the file size comparing with the maximum allowed file size to be uploaded server side and display an error if exceeded. Additionally improves the styling of the error notifications by using the standard notifications in Neos if available.

Depends: I53e1d2f7c8ea421cede85b676aa1989cc8610aaf

Resolves: NEOS-1082

[TASK] Check if the edit action is loaded in an iframe

This change add a check in the Media browser edit action to execute JS code only if the Media browser is loaded in an Secondary Inspector.

Related: NEOS-1084

[TASK] Create ImageVariant resource lazily

Resources of ImageVariants are now created when needed and not when the ImageVariant is created or refreshed.

This speeds up the site import as previously it would refresh ImageVariants for each adjustment and generate all intermediate resources.

Resolves: NEOS-1170

[TASK] Automatically select active tag in the new action

When using the upload action the active tag is automatically selected like it’s done when uploading with drag & drop in the list views.

Resolves: NEOS-1073

[TASK] Styled title tooltips for various buttons

Adds styled tooltips instead of default browser ones for various buttons for their title attribute.

Resolves: NEOS-1028

[BUGFIX] Fix spelling error in error message

Fixes: FLOW-112

[TASK] Make image preview in detail view clickable

For viewing the original file the image preview in the detail view is made clickable since it’s a natural place to try to click.

Resolves: NEOS-1069

[TASK] Reintroduce “image” argument to ImageViewHelpers

With the new Media Management (Ieaaf6fa166d13c7cd0177ec381b4e74e2923c2ce) the deprecated “image” argument has been removed from the image and uri.image ViewHelpers in favor of a new argument “asset”.

This change reintroduces the “image” argument and deprecates the “asset” argument.

Background: The argument was called “image” originally, but it was renamed to “asset” with I8769987d34ac54a3d36e6d3374040438edf30612.

Related: FLOW-108

[TASK] Optimize lists for lots of tags

Use different layout when lots of tags are available.

Resolves: NEOS-641

[TASK] Improve handling of tags

  • Support editing of tag labels
  • Hides tag creation from until tag editing is enabled
  • Show a confirmation prompt when deleting a tag

Resolves: NEOS-1074 Resolves: NEOS-1072 Resolves: NEOS-1070

[TASK] Show asset title in ThumbnailView

This change also use asset.label in all Fluid templates.

[TASK] Change ViewHelper examples namespace from ‘m:’ to ‘typo3.media:’

This is done to use the new convention introduced with the automatic namespace registering in I965cb54c3125f80e7a5ae46ede72ee9027ed006e.

Related: NEOS-916

[BUGFIX] Fix asset uploads in media browser

This partly reverts commit ea3f824d4075c7a60e13902562c71dbb91020b19 which was merged as a quick fix. Now that the TypeConverters no longer automatically persist media changes we need to do that in the controller again.

Related: I1a4495a2d5ca19eec4cfb56a798871e8e9ca4fa5

[TASK] Skip passing unnecessary arguments around

It’s not necessary to pass the view argument when switching to “All” or “Untagged” since that information is stored in the session.

Resolves: NEOS-1071

[TASK] Remove automatic persistence of assets in converter

The AssetInterfaceConverter automatically persisted assets since the resource changes as that was needed for TYPO3CR. With I7b3404593daa0b83c0d1a5a678b4250d3bd639e9 this is no longer needed and as it is not a good architectural decision this change removes it again.

Related: I7b3404593daa0b83c0d1a5a678b4250d3bd639e9

[TASK] Add check for if tag label already exists

Currently there is no check if a tag already exists, which can result in multiple tags with the same label in the Media module.

[TASK] Bring ImageAdjustments in defined order

ImageAdjustments need to be executed in order. Without this change the order is chosen based on alphabetical order of adjustment class name. With this change all adjustments have a position property which defaults so that the correct order is guaranteed but allows for manual sorting later on if that is needed.

[BUGFIX] Incorrect HTML output for search field

For styling purposes the HTML structure of the search field needs to be adjusted a little.

Related: NEOS-83

[TASK] Improve tagging user experience in lists

  • Increment tag counter if asset was successfully added to tag
  • Display indication when creating new tag
  • Move cursor drag helper to be more intuitive
  • Only revert dragged asset if drag not successful
  • Ensure space between tags when adding more than one
  • Display move-icon in list view

Related: NEOS-1018 Related: NEOS-336 Related: NEOS-454

[FEATURE] Search field in sidebar for lists

Adds a search filed in the sidebar of the lists to filter the assets based on their filename, title, description or tags.

Resolves: NEOS-832

[FEATURE] Display file size and last modified information in list view

Adds two new columns in the list view with file size and last modified information. The last modified date is shown relative to the current date, for easier distinguishment.

Additionally makes it possible to change the sorting by clicking the name or the last modified table header.

Resolves: NEOS-1022

[FEATURE] Sorting/filtering options in lists

  • Sort by last modified or filename
  • Changed default sorting to last modified
  • Filter by asset type (images, documents, video, audio)

Resolves: NEOS-1023

[BUGFIX] Use original file if no adjustments necessary

If none of the adjustments of an ImageVariant would change the original resource it can be reused instead of letting Imagine create a new file (with possibly worse compression).

Additionally reenables the ImageSizeCache which never was written.

Resolves: NEOS-969

[TASK] Improve flash messages in media browser/module

Add the assets label to the flash messages to be more explicit

Resolves: NEOS-1024

[TASK] Preview of image thumbnails in list view

Related: NEOS-1021

[TASK] Show file name of selected file in new action

Related: NEOS-877

[BUGFIX] Replace Resource::getUri by getSha1 in Image

The method getUri has been removed in the new resource management.

[TASK] Display upload progress in lists

Related: NEOS-877

[TASK] Mark recent core migrations applied

This commit doesn’t contain any changes, it simply marks recent migrations applied so that:

./flow flow:core:migrate --status

won’t show any open migrations for this package.

[BUGFIX] ImageVariant has getCaption

The ImageVariant has a getTitle() method that returns the title of the originalAsset, similarly the caption should be gettable via getCaption() so users of the entities do not need to differ between Image and ImageVariant in regard to title and caption.

[BUGFIX] Class names should be resolved by TypeHandling

As the ImageInterface could be a doctrine proxy we should not rely on get_class but instead use TypeHandling to determine the real class name for the given Asset.

[TASK] Remove unclosed li element in tags list

[BUGFIX] Add missing inversedBy annotation attribute

The Thumbnail class lacked an inverseBy attribute in the ManyToOne annotation. That resulted in a bunch of errors for the mapping validation of doctrine.

Resolves: NEOS-1001

[BUGFIX] Fix asset uploads in media browser

This finally adjusts uploads of assets to the new media management and property mappers.

Depends: I33cfe41fc9493af0907625bb88b2f9c3fac968e9 Resolves: NEOS-833

[BUGFIX] Broken configuration injection due to wrong argument

The argument for the InjectConfiguration annotation is path not setting.

[FEATURE] Asset mapping strategies

Usually you have a resource that needs to be mapped to a media domain model. This mapping shouldn’t be hardcoded but rather determined by the resource. TYPO3.Neos implemented its own TypeConverter to do that. By adding a swappable strategy to the media package this mapping can be configured and changed as needed. By default we deliver a simple configuration based strategy that determines a model by configured expressions that are tested against the media type of the resource (which again is extracted from the file extension). The expressions can be ordered to give precedence by using a key position on the same level as the className.

Resolves: NEOS-936

[!!!][TASK] Add charset and collation to all MySQL migrations

This change set adds charset and collation to create table statements in the existing migrations. This make sure the tables are set up correctly independent of the database default configuration.

Also migrations generated contain this information since a while, leading to problems on migration if the database is not using the same charset and collation.

This is breaking if you have existing tables that do not use the utf8 charset and utf8_unicode_ci collation. To solve this you need to convert the existing tables. This can be done using the command:

./flow database:setcharset

Related: NEOS-800

[BUGFIX] Down migration for PostgreSQL lacks type cast

The down migration for Version20141118174901 lacks a type cast and fails because of that. This change adds the type cast so the migration runs smooth again.

This migration was introduced in I7c5a613abb8cc2417998e39b21c128f8ab775054 which is a fix change for the PostgreSQL migration which was not updated before the new resource management was merged. We don’t have to care about moving or altering data in this migration as migrating just one version up will not make sense as this will be a broken state. Going one step further will drop the table so we can safely do a simple cast to get the up and down migration working.

[TASK] Add missing PostgreSQL migration

For change Ia1ae5768fe84072f9b3c54fe5919d1e1af5647f6 the PostgreSQL schema needs an additional migration. This change adds that migration.

Related: NEOS-978

[BUGFIX] Correctly define relations as not nullable

Some required relations between media objects where not defined as not nullable which lead doctrine to create additional migrations for them to allow NULL values. This changes fixes that by adding the correct annotations.

Resolves: NEOS-978

[BUGFIX] Order image adjustments before applying them

This change sorts adjustments by classname, to avoid resize being done before crop - which would break, if the image is resized to be smaller and the crop area start coordinates would end up outside the bounding box.

This is a quick fix, a proper solution for adjustment precedence needs to be found and implemented.

[BUGFIX] Correctly set persistence identifier on adjustments

When converting from array with the persistence identifier being set, the identifier was set incorrect on created adjustments, to a property named persistence_object_identitifer. This changes corrects that.

[BUGFIX] Inject missing class property to ImageInterfaceConverter

If old processing instructions on an ImageVariant are encountered, they are to be converted to adjustments. The converted used to do this must actually be injected for this to work, though.

[TASK] Use unicode-safe pathinfo() function in ImageService

pathinfo() function is not unicode-friendly, thus ImageService destroys non-Latin characters in filename of resized resource.

Related: FLOW-101

[BUGFIX] Asset identifier should be property mapped

Asset identifier are now exposed when converting assets to arrays and also taken into account and set when converting from array to Asset.

This is important for integrity of imports/exports of Assets.

[BUGFIX] Adjustment conversion should follow normal formats

[BUGFIX] ArrayConverter should be used by default

The ImageInterfaceArrayPresenter used for generating basic information for an Image was used instead of the ArrayConverter in some instances. This should be avoided as the ArrayPresenter is just for specific cases that need limited information.

[BUGFIX] ratio mode has wrong type on PostgreSQL

The ratio mode column was integer in the beginning, but must hold string values. This was fixed in the MySQL migration before the change was merged; this change fixes it for PostgreSQL.

See https://review.typo3.org/24484 for the origin of this issue.

Related: NEOS-639

[BUGFIX] importResourcesCommand uses removed DB column

The “fileextension” column on the Flow Resource object has been removed. But “mediatype” has been added and ResourcePointer should no longer be used.

Additionally Resources of Thumbnail objects should not be imported.

[TASK] Tweak some type hints

[TASK] Use same resource collection as parent resource

The ImageService that creates Resource objects for ImageVariants and Thumbnails should store them in the same collection than the parent resource is stored in.

[BUGFIX] Fix broken thumbnail query

Regression from I00dbf4309b14561797f8bcad4d069a9e2e6c1de9

[BUGFIX] ThumbnailRepository should not throw exceptions

The method findOneByAssetAndDimensions should query with a limit so no exception is raised even if there should be multiple results for the given arguments. Additionally the ratioMode of the thumbnail is considered now.

Resolves: NEOS-818

[TASK] Use getQueryBuilder in AssetRepository

Simply use the public getter instead of ObjectAccess, now that we can.

[!!!][TASK] Move ImageTag and ImageUri TypoScript objects to TYPO3.Neos

This moves the ImageTag and ImageUri TypoScript objects to the Neos package to avoid a dependency on TypoScript in TYPO3.Media.

This is breaking if you already used the newly introduced objects, in that case you have to replace TYPO3.Media with TYPO3.Neos.

Fixes: NEOS-745

[BUGFIX] Uri image view helper broken

Ieaaf6fa166d13c7cd0177ec381b4e74e2923c2ce introduced a regression, where the uri image view helper is using an undefined method in the asset service.

Related: NEOS-639

[!!!][FEATURE] A whole new media management

A new API and mechanism, based on the new Flow resource management.

Resolves: NEOS-639 Related: FLOW-108

[BUGFIX] Fix name of ManageAssets privilege target

[TASK] Mark migrations as merged

This commit marks some migrations as merged that are not needed on this package. This speeds up core:migrate and avoids potential errors.

[TASK] Adjust to acl changes in Flow

Related: FLOW-11

[FEATURE] ImageTag and ImageUri TypoScript objects

Extracts some duplicate code into the ImageViewService and provides TypoScript counterparts of the image and uri.image view helpers.

ImageTag example:

# Create an img tag with alt attribute for 100*100 cropped image
exampleImageTag = TYPO3.Media:ImageTag {
      asset = ${q(node).property('image')}
      maximumWidth = 100
      maximumHeight = 100
      allowCropping = TRUE
      allowUpScaling = TRUE
      attributes.alt = 'Do not forget the alt text'

ImageUri example:

# Create an image URI for 100*100 cropped image
exampleImageUri = TYPO3.Media:ImageUri {
      asset = ${q(node).property('image')}
      maximumWidth = 100
      maximumHeight = 100
      allowCropping = TRUE
      allowUpScaling = TRUE

Resolves: NEOS-491

[TASK] Throw correct exceptions in view helpers

Throw actual view helper exceptions so Fluid can handle them properly.

Additionally adds missing unique exception codes.

[TASK] Optimize the asset repository’s countByTag method

Optimizes the count by tag query by a factor 400-500% by not joining all the subtype tables and tag table on, which doctrines does on its own.

This is needed because when having lots of tags results in long load times for all media browser views where all the tags are displayed. This is due to the count for each tag takes quite some time (16-30 ms), which is a lot when multiplied by 100+.

Fixes: NEOS-642


[TASK] Translate language content dimension label

Related: NEOS-1397 Depends: I7e4cd0f45e9eb587165a7b345388be797b4cad81

(cherry picked from commit dc62c66fd486c6f0957bd1ab608c84fc2860edaf)

[TASK] Translate print preview mode title

Related: NEOS-1397 Depends: I5e9a00b771453fab46b285c51bdac83f80b7214f

(cherry picked from commit 3acfa694bd05db1068c2317c1acc64a5235444a7)

[TASK] Update site export

[BUGFIX] Wrong nesting of tags in Default.html template

Removes a superfluous div in the Default.html page template.

[BUGFIX] update Sites.xml (resolve merge conflict)

[TASK] translate nodeType labels and properties

Resolves: NEOS-1263

(cherry picked from commit 8f3689b6b0b8239fd501fb870664fe40e5b51186)

[BUGFIX] Sites.xml shouldn’t contain git conflict markers

[TASK] Adjust demo site to simplified FrontendLogin

This adjusts the demo site content to the simplified Flowpack.Neos.FrontendLogin package by

  • Replacing the “/member-area/user-profile” page by a simple “/member-area/subpage” (because there is no “user profile” plugin any longer).
  • Adjusting the explanatory text and example command

See https://github.com/Flowpack/Flowpack.Neos.FrontendLogin/commit/ddf1fea55853cad59b8e4684d548554f161d60cf for the corresponding change on the FrontendLogin package

Related: NEOS-1340

[TASK] Remove unused boostrap view helper namespace

[BUGFIX] Overriding TYPO3.Neos.NodeTypes node types not working

Due to missing dependency on the TYPO3.Neos.NodeTypes package, the multi column overriding didn’t work correctly.

[TASK] Require ~1.0 of TYPO3.Neos.Seo

Related: NEOS-1243

[TASK] Adjust node type config to new super type configuration format

Depends: I6b5c89f5c88339db99f4a81c5e6b74ec5e7ceee9

Related: NEOS-1253

[TASK] New frontpage splash image & introduction headline

Replaces the splash image on the frontpage with a new one together with a new introduction headline for the upcoming release.

[TASK] New Demo site export

This is a fresh export of the demo site for 2.0 with adjusted resources and Sites.xml with lowercase paths.

Releaes: 2.0

[BUGFIX] ContentCollection iterator has a different TypoScript

The change I06ba604f562685e3a1d5ee844a8adaec7eda20f5 introduced a backwards incompatible change to the TypoScript paths of ContentCollections. Before it was possible to set the iterationName directly on the ContentCollection. With the newly introduced TYPO3.Neos:ContentCollectionRenderer the path for this moved to content.iterationName breaking the image carousel example on the demo site.

[TASK] Adjust dependencies for the 2.0 branch

[TASK] Pin Flowpack.Neos.FrontendLogin to 1.x

This adjusts the composer dependency to the flowpack/neos-frontendlogin package by specifying a version number.

Related: NEOS-433

[FEATURE] Frontend Login

This adds a simple Frontend User Login form to the site demonstrating the advanced security features introduced with Neos 2.0.

This adds a dependency to the flowpack/neos-frontendlogin composer package that comes with two plugins:

  • Flowpack.Neos.FrontendLogin:LoginForm serving both, a login form for anonymous users and a logout form for authenticated Frontend Users
  • Flowpack.Neos.FrontendLogin:Profile posing a very basic way to allow users to change their details

Note: There is no technical difference between the “Backend User” that can login to Neos and a “Frontend User” that is usually a visitor of your Website. But for the sake of simplicity the FE Login plugin comes with a dedicated role Flowpack.Neos.FrontendLogin:User that will make it easier to distinguish the two cases.

To create a “Frontend User” you can use the provided command:

./flow frontenduser:create <username> <password> <first-name> <last-name>

Resolves: NEOS-433

[TASK] Update exported site

This is an export done on latest master after a clean setup and running node:repair.

Timestamps are removed since to ensure new dates when imported.

Additionally it’s output with the tidy option to track actual changes of the export in the future.

Also fixes the issue with unwrapped text paragraphs that trigger a save on the first click.

[TASK] Remove blank line in Root.ts2

[TASK] Mark recent core migrations applied

This commit doesn’t contain any changes, it simply marks recent migrations applied so that:

./flow flow:core:migrate --status

won’t show any open migrations for this package.

[!!!][TASK] Add charset and collation to all MySQL migrations

This change set adds charset and collation to create table statements in the existing migrations. This make sure the tables are set up correctly independent of the database default configuration.

Also migrations generated contain this information since a while, leading to problems on migration if the database is not using the same charset and collation.

This is breaking if you have existing tables that do not use the utf8 charset and utf8_unicode_ci collation. To solve this you need to convert the existing tables. This can be done using the command:

./flow database:setcharset

Related: NEOS-800

[BUGFIX] Language selector broken in iOS Safari (touch)

Due to the language selector relying on hover state for displaying, it’s not working on iOS Safari. This can be solved by using the pointer cursor.

Fixes: NEOS-971

[TASK] Follow-up to “Apply migration TYPO3.Neos-20141212183900”

This is a follow-up to I4c4c3931d14073298a9a2e397159ef7763892ad0 that failed to adjust the “chapterImage” property of the Chapter node type.

Related: NEOS-883

[TASK] Mark recent code migrations applied

This just marks recent migrations executed in order to prevent them from being executed again when running the ./flow core:migrate command.

[TASK] Apply migration TYPO3.Neos-20141212183900

This commit contains the result of applying migration TYPO3.Neos-20141212183900 to this package.

Resolves: NEOS-883

[TASK] Remove unnecessary TypoScript for main menu

[TASK] Translate homepage header in available languages

Related: NEOS-1

[FEATURE] Full width & height banner image

  • Add the possibility to insert full width & height banner images
  • Update site export with default banner image for root page
  • Change background color of header area
  • Fixes issues with 768px widths (broken menu)
  • Makes sure all navigation items fits in one line
  • Make the header more transparent

Resolves: NEOS-846

[TASK] List styles for different Aloha list types

Resolves: NEOS-854

Revert “Revert [TASK] Remove title tag rendering customization”

Package is now available via packagist, so the dependency can go in.

This reverts commit 100d6ceb86b1e1168e49d40f250058240073691a.

Revert “[TASK] Remove title tag rendering customization”

This reverts commit 9a0e1be6e64aa2a175a8f03646d0d2eb66b85428. The commit adds a depdendency on TYPO3.Neos.Seo which is not yet available via composer, until then this commit shouldn’t be merged.

[TASK] Remove title tag rendering customization

This is now the default rendering when using TYPO3.Neos.Seo.

Related: NEOS-707

[TASK] Adjust to new Resource management

Related: FLOW-108

[BUGFIX] Fix position of menu node on “Shortcuts” page

This is a follow-up to the previous commit I4786908d68f99050a7a7f935e7c02b472c07f3f3 that fixes the positioning of the shortcut menu on the “Shortcuts” page

Related: NEOS-564

[TASK] Add examples for the different shortcut node types

Renames the page “Shortcut” to “Shortcuts” and adds four sub-nodes of the currently supported shortcut node types:

  • Shortcut to first child node
  • Shortcut to parent node
  • Shortcut to selected target
  • Shortcut to external URI

Related: NEOS-564

[TASK] Partly revert recent migrations

In I8da1b6d0e8593af127dc2c18ea35e46e9ec90896 some changes were applied that are not needed and make things harder to read.

[TASK] Styling adjustments to language menu

[FEATURE] Language menu

[TASK] Apply recent migrations

This applies following code migrations to the demo site:

  • TYPO3.Flow-201212051340

    Change entity resource definitions from using _ to \

  • TYPO3.TYPO3CR-130523180140

    Adjust to removed TYPO3.TYPO3CR:Folder node type by replacing it with unstructured. In a Neos context, you probably want to replace it with TYPO3.Neos:Document instead!

  • TYPO3.Flow-20141113121400

    Adjust “Policy.yaml” to new syntax

  • Commit: d5bbdcf

[TASK] Re-export Sites.xml with tidy option

This simply is a re-export of the site using the –tidy option to keep the XML more readable.

This got lost with change I862b2b21e7a3da5cb07f825959e02cd08232fea1.

Also some unused resources are removed.

[BUGFIX] disable language fallbacks for most languages on demo site

Now as NEOS-633 is merged, we can disable the language fallbacks to combinations which do not make sense.

Related: NEOS-633

[TASK] Simplify NodeTypes TS inclusion

Uses the new TS include globbing to simplify the inclusion of the NodeTypes TS files.

Related: NEOS-440

[FEATURE] Turn into a multi-lingual website

This configures a “language” content dimension with some presets and includes an updated Sites.xml export. The translation of the actual content will be part of a separate change.

As Neos 1.2 will only support fallback based translation, all languages are based on a default “en_US” language.

Resolves: NEOS-168

[TASK] Adjust to layout properties change

[TASK] Migrate Sites.xml to translatable URIs

Updated the Sites.xml dump using the “node:repair” command.

Related: NEOS-296

[TASK] Adapt after the NodeInterface::getFullLabel removal

Related: NEOS-441