2.1.0 (2015-12-22)

Overview of merged pull requests

TASK: Add release notes for 2.1 to documentation

NEOS-1713 #close

  • Packages: Neos

TASK: Workspaces UX improvements

  • Add review changes button to publish menu
  • Styling improvements in workspaces new and edit forms
  • Styling improvement to publish menu count badge
  • Add missing jQuery dependency in TargetWorkspaceSelector
  • Close target workspace selector when closing publish menu
  • Packages: Neos

BUGFIX: Show content element after copy paste inline

Fixes copy pasting of content elements where the new element wouldn’t be displayed until reloading the page.

Additionally fixes an issue where cutting an element caused a page reload.

NEOS-1506 #close

  • Packages: Neos

TASK: Update AddingSimpleContactForm.rst

Remove too much indentation

  • Packages: Neos

TASK: Remove display of unpublished changes count

Following up on https://github.com/neos/neos-development-collection/pull/298 this change removes the display of the number of unpublished changes again from the review button and the change overview page.

  • Packages: Neos

BUGFIX: Allow translation of dimension label

The dimension label could not be translated, because the translate helper was used incorrect.

  • Packages: Neos

BUGFIX: ImageVariant can be reused

This fix a bug when the editor choose two times the same settings for an image variant of the same image. In this condition, the $asset object is not new, and should not be passed to the add method.

  • Packages: Neos

TASK: Workspaces styling improvements

A couple of fixes, improvements and cleanup related to the workspaces module.

  • Packages: Neos TYPO3CR

BUGFIX: Accept ``ImageInterface`` in ``getUriForThumbnail``

Allow using the return value of thumbnailService->getThumbnail of type ImageInterface in the thumbnailService->getUriForThumbnail for convenience.

This occurs when uploading an image in a image property that doesn’t need to be scaled.

  • Packages: Media

BUGFIX: Do not automatically persist new thumbnails

When an asset is uploaded and a thumbnail is generated for it, the thumbnail object might not have been persisted already leading to issues when the thumbnail is updated after rendering.

This fixes an issue in the asset list when uploading document assets.

  • Packages: Media Neos

` TASK: Styling improvements for popovers and help text buttons <https://github.com/neos/neos-development-collection/pull/293>`_

  • Packages: Neos

TASK: node:repair doesn’t mix internal node properties

The node:repair command would currently apply any configured default value as node property value if the property did not exist. This is wrong for properties prefixed with an underscore as we use this prefix for internal properties. This is now changed so that any property starting with underscore is ignored.

As this prefix is currently implicit knowledge a small note was added to the documentation, stating that property names should not start with underscores as we use them internally.

NEOS-1721 #close

  • Packages: Neos

TASK: Thumbnail generator fixes

  • reuse existing thumbnails
  • return original asset if suitable as thumbnail
  • do no silence errors during publishing of thumbnails
  • remove unnecessary SVG generator
  • styling of asset editor

NEOS-1165

  • Packages: Media

BUGFIX: SVG Thumbnail Generator should keep track of width / height

Every generator should update the requested width and height of the generated thumbnail.

NEOS-1165

  • Packages: Media

BUGFIX: FontDocumentThumbnailGenerator must respect thumbnail width/height

The FontDocumentThumbnailGenerator returned a fixed width/height image, this change fixes that bug and respects the width/height of the current Thumbnail.

NEOS-1165

  • Packages: Media

BUGFIX: RenameNode Transformation uses existing method

The RenameNode transformation for node migrations used the non existing method setName on the NodeData object. It now uses setPath instead which exists.

NEOS-1727 #close fixed with this change

  • Packages: Neos TYPO3CR

TASK: Documentation for node migrations

This adds documentation for node migrations (filters and transformations).

  • Packages: Neos TYPO3CR

BUGFIX: ContentController::getAssetProperties must use the new Thumbnail API

This change adapts ContentController::getAssetProperties to use the new Thumbnail API.

With this change the AssetList node type is fixed, the selection of a new asset would fail because the controller called a method that no longer existed existed.

NEOS-1165 #comment fixes a regression

  • Packages: Media

BUGFIX: Do not automatically persist thumbnails for new asset objects

Prevents issues with database constraints caused by new assets being added to persistence, since the asset would be added through the thumbnail as a related object as well.

Due to the automatic creation of thumbnails on asset creation, this caused problems for the site import.

NEOS-1671

  • Packages: Media Neos

BUGFIX: Prevent core migration from damaging badly formatted superTypes

If superTypes were defined using string representation of true or false, the nodetypes file would get corrupted.

E.g. this:

superTypes:
‘Some:NodeTypes’: “TRUE”

Would be transformed into:

superTypes:
  1: true

BUGFIX: Thumbnail migration should clear thumbnails

To avoid unique constraint errors on applying the new index the thumbnail table should be cleared beforehand.

Any left over resources can be cleared by executing:

./flow resource:clean
  • Packages: Media Neos

BUGFIX: Number of unpublished changes in Publish button is blemished

This fixes a regression introduced in pull request #275 which led to an wrongly styled number badge in the Publish button.

  • Packages: Neos

FEATURE: Asynchronous thumbnail generation

Use asynchronous generation of thumbnails to avoid long backend request times when many thumbnails need to be generated.

  • Asynchronous thumbnail generation (NEOS-1668)
  • Use asynchronous thumbnails (NEOS-1672)
  • Media thumbnail presets (NEOS-1669)
  • Automatic creation of preset thumbnails (NEOS-1671)
  • Command to generate thumbnails from presets (NEOS-1681)
  • Clearing by preset in clear thumbnails command (NEOS-1684)
  • Command to generate uninitialized thumbnails (NEOS-1670)

Introduces a async argument to the image view helpers, image server and asset service to create thumbnails without generating the image. A thumbnail controller is introduced which the view helpers link to when a thumbnail is not generated during rendering. The controller redirects to the thumbnail when generated.

Asynchronous thumbnails are used in the media browser and asset service by default to improve the requests times to the backend. It’s possible to disable asynchronous thumbnails with the configuration setting TYPO3.Media.asyncThumbnails.

Since several simultaneous requests for thumbnails can occur, depending on browser and concurrent users, busy servers can experience problems. Therefore it is recommended to configure the server to run media:generatethumbnails often or use a job queue by listening to the thumbnailCreated signal and calling refreshThumbnail for the thumbnail in the thumbnail service.

Additionally a concept for thumbnail presets is introduced to allow thumbnails to be reused to reduce the amount of necessary thumbnails. Thumbnails presets are configured in the configuration setting TYPO3.Media.thumbnailPresets.

When new images are uploaded thumbnails for the configured presets are automatically created, unless disabled using the configuration setting TYPO3.Media.autoGenerateThumbnailPresets. If asynchronous thumbnails are disabled, the thumbnails will be generated immediately making uploading slower.

The media browser and the asset services use these presets to reduce the amount of different thumbnails used and to enable the generating of the thumbnails to be done server side instead when the user requests them.

Last two new commands media:createthumbnails and media:generatethumbnails are introduced for creating by presets and generating uninitialized thumbnails. Support for clearing by preset is also added to the media:clearthumbnails command.

NEOS-1667 #close

  • Packages: Media Neos

FEATURE: Side-by-side comparison of changes in Workspace Management

This change adds a side-by-side view of changes of a given workspace to the “Review” view of the Workspace Management module. It highlights inline text changes and displays thumbnails of changed assets.

This new feature relies on a third party diff library which has been re-packaged, moved to a proper namespace, made Composer auto loading compatible and been made compatible with PHP 7. It is from now on part of the Neos distribution.

NEOS-956 #close

  • Packages: Neos

FEATURE: New FlowQuery filter operation ``!instanceof``

Checks if the value is not an instance of the operand.

Example of usage:

node = ${q(node).filter(‘[!instanceof Acme:Node]’)}

NEOS-1321 #close

  • Packages: TYPO3CR

BUGFIX: Allow to have no space between value and opening confinement

Fix regression caused by multi-line EEL support.

NEOS-60 #comment fixes a regression introduced by this

  • Packages: TypoScript

BUGFIX: Fix some issues with the history module

This fixes the following issue with the history module:

  • The “load more” button label is now translateable
  • The NodeEvent won’t call the SiteRepository if there is no “site”
  • The EventRepository allows to filter correctly by Events
  • HistoryController will correctly paginate due to the fixed Repository

NEOS-1221 #comment some cleanup to the implementation

  • Packages: Neos

FEATURE: Thumbnail Generator Strategy for advanced thumbnails

Implements strategies to select to generate a thumbnail. A developer can add new generator by implementing the interface ThumbnailGeneratorInterface. A generator can have a priority and can implement a method canRefresh to decide if it can handle the current asset.

This change includes the following generators:

  • DocumentThumbnailGenerator (PDF, EPS, AI)
  • FontDocumentThumbnailGenerator (TTF, OTF)
  • ImageThumbnailGenerator (image formats supported by Imagick)

You must use the Imagick driver to enable use of those generators. Only the ImageThumbnailGenerator is supported by all drivers (GD, Imagick, Gmagick)

NEOS-1165 #close

  • Packages: Neos

[TASK] Get all nodes in a single request in ReferencesEditor

This change introduce a new method in the NodeSearchServiceInterface to find node by identifiers. The NodeController and the ReferencesEditor is adapted to use this new method based on the given request arguments.

TASK: Pagination of history

This adds simple pagination to the history module.

  • Packages: Neos

[BUGFIX] Service\NodesController should stick to interfaces

The Service\NodesController should refer to the NodeSearchServiceInterface instead of the implementation class to avoid hard dependencies and allow overwriting the implementation from the outside.

  • Packages: Neos

BUGFIX: Loading content dimensions for dimensions selector

The request returns JSON instead of HTML and thus doesn’t need to be parsed

NEOS-1722

  • Packages: Neos

BUGFIX: ``Node->getChildNodes`` bypasses node type filter for newly added nodes

When inserting a node inside another node in the document node tree, non-document nodes were displayed as children incorrectly.

NEOS-1469 #close

  • Packages: TYPO3CR

BUGFIX: Correctly assign account to party in UserService

When a user is created, the corresponding account was added directly. This lead to the party not being found when asking the account for it, unless changes were persisted in between.

This uses the PartyService method assignAccountToParty() now.

  • Packages: Neos

BUGFIX: Allow to delete a user from the CLI

Removing a Neos user with user:delete resulted in an error, because setting the owner of a workspace requires an argument.

This fixes that by passing null.

  • Packages: Neos

[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”

[!!!][TASK] Cache fully build NodeType configurations in production

Breaking if you rely on post processors to be applied on each request.

  • Packages: Neos TYPO3CR

TASK: Small cleanup in reference(s) editor and publish menu

This removes a console log call from PublishMenu.js and tweaks the reference(s) editor to be a tiny bit nicer and allow to display node suggestions even if the node in question does not have any ui configuration in it’s nodetype (can happen with startingPoint set for the editor to select “nodes without a UI”).

  • Packages: Neos

[TASK] Cache backend interface labels client side

Makes the backend interface labels cacheable by storing the version XLIFF cache and generating a URI using that version. When a label is changed or the selected language is changed, the URI is automatically updated.

  • Packages: Neos

BUGFIX: Change column type to flow_json_array on NodeData

This changes the type of the properties AbstractNodeData.accessRoles and the NodeData.dimensionValues from json_array to the Flow type flow_json_array.

While those properties only hold plain arrays and can be stored just fine with the Doctrine json_array type, Neos uses distinct in a query on the NodeData table which leads to errors due to the json type in PostgreSQL not being comparable. The Flow type uses jsonb instead, which can be compared and makes the query work as expected.

NEOS-1726 #comment Fixes exporting on PostgreSQL

[BUGFIX] Fix parentsUntil operation

Since the current parentsUntil operation does not return the correct parent nodes, this will fix the behaviour. $until did not return the first matched parent node.

  • Packages: TYPO3CR

BUGFIX: Improve slow aloha settings selector

Current selector to match property editor of given node type is extremely slow, because it has to use very inefficient selector.

Add additional data-neos-node-type attribute to editable property wrap to simplify the selector.

This brings a huge performance improvement on pages with a lot of editable properties.

  • Packages: Neos

BUGFIX: Re-add missing inspector tab label for ‘metadata’

During the change to add translation support to the inspector tabs/groups, this appears to have been missed.

See: https://github.com/neos/neos-development-collection/commit/`421c8218f54627a175bba3af1f7aa08150b56ac4 <https://github.com/neos/neos-development-collection/commit/421c8218f54627a175bba3af1f7aa08150b56ac4>`_#diff-3b7b31a90bfc18f8fbbdec4e8f83424f

  • Packages: Neos

[TASK] Fix spelling mistake in CreatingContentElement.rst

Fix spelling mistake in the first paragraph

  • Packages: Neos

TASK: Mark editable content on hover

This change adds a dashed border around inline-editable elements when hovering over them. This it becomes easier to see what exactly can be edited in an element with multiple editable parts.

  • Packages: Neos

[TASK] Remove unnecessary method from RoutePartHandler

The method didn’t have any obvious benefit and was only used in a single place, removing it and directly calling the method that was called inside removes a bit of clutter.

  • Packages: Neos

[TASK] Media browser performance improvements

Optimizes rendering performance of the media browser/module by re-using modals, optimizing and using count queries.

Brings 0,5x-3x+ speed improvement depending on the selected view and amount of assets and tags/asset collections visible.

No functional difference.

Additionally fixes a couple of bugs in the asset repository.

[BUGFIX] Prevent fetching unmanaged entity in ``WorkspacesTest``

Needed for doctrine/orm 2.4 compatibility (already done in 2.0)

  • Packages: TYPO3CR

[BUGFIX] Allow to search for nodes without a Document parent

This checks whether a documentNode has been found before rendering a link to the frontend for nodes that have been found by the nodes service controller.

[FEATURE] Allow uriSegment to be empty for default presets

Introduce supportEmptySegmentForDimensions settings switch that would allow uriSegment to be empty for default preset. If the option is on, there are two restrictions:

  • uriSegment must be unique across all dimensions
  • empty uriSegment may only be set for default preset

Without this setting old behavior is used: uriSegment doesn’t have to be unique, but can’t be empty.

[FEATURE] Support keys / paths with special characters in quoted keys

To allow for more flexible keys support for quoted keys is introduced.

Example:

foo."bar@baz" = "bla"
foo.'bar.baz' = "other"
  • Resolves: NEOS-1410
  • Packages: Neos TypoScript

[FEATURE] External event for node selection

This change adds a new event Neos.NodeSelected that will be triggered when a node was selected on the page.

NEOS-407 #close

  • Packages: Neos

[TASK] Add trait to avoid duplicate code in ViewHelpers

The new TypoScriptContextTrait can be used to get variables from the TypoScript runtime context inside a ViewHelper as long as it’s used inside a TypoScriptAwareView. This helps to avoid code duplication while avoiding long inheritance chains.

  • Packages: Media Neos

[TASK] Fix nodeTypesContainCorrectSuperTypes unit test

This adjusts the test to test what it actually is saying it does.

  • Packages: Neos

[FEATURE] Contextual help messages for node types and node properties

Allows to show contextual help messages in a popover element for node types and node properties. Supports markdown for styling message text.

Usage: For node types: ``` ‘My.Package:SpecialHeadline’:

ui:
help:
message: ‘Special headline displays text in gold color.’

```

For node properties: ``` ‘My.Package:SpecialHeadline’:

properties:
title:
ui:
help:
message: ‘Lorem ipsum dolor sit amet’

```

[BUGFIX] Remove autofocus from search field on condensed media library layout

When the condensed aside media library layout is shown (more than 25 tags), the search field is automatically focussed causing the view to jump down to the search field. This is annoying and unexpected and thus disabled for that view.

  • Packages: Neos

[BUGFIX] Allow to edit in own workspace from Workspaces module

When reviewing changes in one’s own workspace, the “Edit” button would always show an error about the personal workspace not being clean. Because in this case a rebase of the workspace is not needed (and would not be possible), that check and the rebase can be skipped if the target workspace is the personal workspace.

  • Packages: Neos

Fix AbstractViewHelper FQCN

Was missing “ViewHelper\” part

  • Packages: Neos

[FEATURE] Use headers from plugin response in parent response

Enables possibility of server-side redirects, triggered within a plugin e.g. after successful frontend login.

[TASK] Add trait to avoid duplicate code in ViewHelpers

The new TypoScriptContextTrait can be used to get variables from the TypoScript runtime context inside a ViewHelper as long as it’s used inside a TypoScriptAwareView. This helps to avoid code duplication while avoiding long inheritance chains.

  • Packages: Neos

[!!!][TASK] Use identifier instead of node path for PluginView reference

Replaces the usage of node path for referencing the master plugin in PluginView. Instead the identifier is used, like with node linking/reference properties. This is done to make it more bulletproof in case the master plugin is moved.

Run the following node migration to adjust existing PluginViews:

./flow node:migrate 20150907194505

[TASK] Adjust Travis tests

This makes sure the travis tests run as planned by using a github API token to circumvent the bandwith limit and additionally run composer update after composer install to make sure the latest package versions get installed for testing.

[BUGFIX] Node tree state out of sync with other components

When using the hide button and editing the title in the node trees, the state of other components like the publish menu wasn’t updated accordingly. Additionally the node trees weren’t updated when nodes were altered outside the trees. Several fixes are included in this change:

  • Publish menu updated when modifying nodes in the tree (hidden/title)
  • Context structure tree nodes updated when changed on the page
  • Hidden button in trees updated correctly for active node
  • Incorrect entity updated when modifying nodes in the tree

[BUGFIX] Fix PHP 5.3 compatibility issues

The 1.2 branch should be compatible to PHP 5.3, but since we did not have automated testing in place on that version of PHP, some incompatibilties have crept in.

This fixes those issues and enables the unit and functional tests to be run on PHP 5.3 on Travis CI.

  • Packages: Neos

[TASK] Adjust default label for nodes

The label inherited from the Node nodetype included the node name, which is not very helpful for content nodes and can be confusing.

With this change, the (default) label for nodes no longer includes the node name unless the node has been auto-created. That means that for ContentCollection nodes it will still be shown like before in most cases.

  • Packages: Neos

Fix Neos Website link

  • Packages: Neos

[TASK] Use runtime cache in user service

To prevent making a database lookup every time a user is requested through the UserService a runtime cache is used. This prevents lots of lookups since the user is requested many times in the backend, e.g. once for every translate view helper.

  • Packages: Neos

[BUGFIX] RoutePartHandler needs to deal with non empty node path

Follow up for the changes of the \\TYPO3\\TYPO3CR\\Domain\\Model\NodeInterface::MATCH_PATTERN_CONTEXTPATH which turned out to be breaking because the RoutePartHandler does not deal with valid context paths. This hotfix finally fixes the problem for now.

  • Packages: Neos

[BUGFIX] ContextPath match pattern should match only slash

The ContextPath match pattern would either match an absolute path containing at least one segment or a relative path but not the root node path /. This change fixes that so that now all valid node path variants are supported.

  • Packages: TYPO3CR

[BUGFIX] Set dimension to array() instead of null

The dimensions have to be an Array instead of null.

[BUGFIX] Hidden before/after properties breaks site import

The closing tags for the hiddenBeforeDateTime and hiddenAfterDateTime properties were not handled in the node import service.

[BUGFIX] NodeContextPath should contain a node path

The change ccb1c0e contained a regression because the adapted pattern for NodeContextPath now only matches if there is actually a path and not only a context (which is correct in regards to the naming), but the FrontendNodeRoutePartHandler used it with request paths that might start only with the context information. These would no longer match and therefore the request path is prepended with a / before filtering out the context information.

  • Packages: Neos

[BUGFIX] Improve Node context path match pattern

The original match pattern for context paths would match dimensions like @user;language=de,en=bar just fine even though in fact it is not a valid context path. The adapted pattern uses recursion to exactly match parts of the dimensions string. Additionally it introduces atomic groups around parts of the path to reduce backtracking amount in case of a non matching path.

This increases matching speed while reducing possible sources of error by disallowing more invalid cases.

  • Packages: TYPO3CR

[BUGFIX] Fix code style issue in RouteCacheAspect

NULL should be null.

  • Packages: Neos

[BUGFIX] Allow moving of inaccessible nodes

If a node is inaccessible (hidden) an exception is thrown when trying to move it.

  • Packages: Neos

[BUGFIX] Route cache flush shouldn’t load all documents

To avoid loading all documents in a Neos instance the route cache for a node will be tagged will all parent node identifiers so that flushing the cache for a particular node identifier will automatically flush all child node entries as well.

  • Packages: Neos

[BUGFIX] Fix a PostgreSQL down migration

In cb89c7a053b00a0dd3b2b538fdb5c41c668ef226 a missing migration was added. That migration works fine when migrating up, but in the down migration one line too much causes it to break.

  • Packages: Media Neos NodeTypes

[BUGFIX] Workspace identifier suffixes are not random (enough)

This solves an issue with the automatically generated suffix for names of workpsaces created through the Workspace Management module.

Previously, workspace suffixes (like “-7603”) were identical or very close to previously generated names, because they were derived from the first four characters of the output of uniqid(), which is based on microtime.

The new solution converts the current microtime into an alpha-numeric string and takes the last 5 characters, which change very often.

[BUGFIX] Fix documentation typo: Image{Variant => Interface}

Using ImageVariant as node property type as suggested in this section of the documentation results in errors in the Neos backend:

> Couldn’t create editor for property “image” (no editor configured). Please check your NodeTypes.yaml configuration.

  • Packages: Neos

[BUGFIX] Broken workspace managment backend module

This fixes a couple of issues with the new workspace management features and improves the user interface in the workspace review screen.

Editing the owner of a workspace resulted in a fatal error due to a wrong method signature. Ownership can now be transferred as intended.

The rebase and redirect action (which can conveniently be triggered through an edit button in the review screen) complained about a wrong “$this” in a fatal error. Removed $this and now that works.

At the bottom of the review workspace changes screen a small help message explained what would happen when a user presses one of the buttons. Removed that fine print and now let the buttons speak for themselves.

  • Packages: Neos TYPO3CR

[BUGFIX] Add a missing PostgreSQL migration

A schema migration allowing NULL values for image dimensions was missing for PostgreSQL.

  • Packages: Media

[BUGFIX] site:prune also removes all personal workspaces

This change fixes an issue with the “site:prune” command related to workspaces which could result in an inaccessible Neos backend for all existing users, even after a new site had been imported.

In addition to the actual nodes and domains, the site:prune command also removed all existing workspaces. Since personal workspaces are not re-generated automatically (anymore), existing users wouldn’t be able to login even if a new site had been imported because they were lacking a personal workspace.

Instead of simply removing all data from the domain repositories, the site:prune command now iterates over all existing sites and calls the pruneSite() method, which leaves workspaces intact.

  • Packages: Neos

[BUGFIX] Fix broken Workspace module index template

The security fixes produced a merge that broke the index template of the workspace management module.

  • Packages: Neos

[TASK] Keep track of link during TS rendering

This change add a new service in the TypoScript package to add dynamic tag to the current TS rendering path.

This new service is used in the Neos ConvertUrisImplementation to keep track of link to node and asset and tag the current patch correctly.

  • Resolves: NEOS-1640
  • Packages: Neos TypoScript

[TASK] Cache content dimensions backend request client side

Instead of fetching the content dimensions every time the backend is loaded, the request is cached using the ResourceCache. This eliminates a request for something that rarely changes and is automatically updated when the configuration changes.

  • Packages: Neos

[BUGFIX] Fix selecting master view option in plugin view

Regression introduced in 8c87918e41cd0d445869f5acc77ece01b0a0764a causing the selection of master view to cause a fatal error in plugin views.

  • Packages: Neos

[BUGFIX] Avoid “Missing constructor argument” exception

The type converter would always call buildObject() on the parent, even if the possible constructor arguments were empty. This lead to:

Missing constructor argument “resource” for object of type TYPO3\\Media\\Domain\\Model\Asset.

A check is added to avoid that.

  • Packages: Media Neos NodeTypes

[FEATURE] Auto-update shortcut properties when editing

This changes automates the following when editing a Shortcut:

  1. If the target is set to a non-empty value, the target mode is set to “Selected Target”
  2. If the target mode is set to not use the selected target, the target is removed.
  • Packages: Neos

[TASK] Allow SelectBoxEditor sending data to DataSource

This is a follow up to allow dependent SelectBoxes together with the change that implements property listeners.

  • Packages: Neos

[FEATURE] Nested workspaces with access restrictions

This is a major feature for Neos which allows to create and nest workspaces, assign ownership to workspaces and thus restrict a group of users to access / modify certain workspaces.

  • Packages: Neos

[FEATURE] Allow property editors to listen to changes

This feature allows configuring listeners to other properties for editors. The listener will be triggered on any change of the observed property even without applying the change. To keep the usage flexible you can define a handler that will be triggered on change.

Example configuration:

subpageLayout:

type: string ui:

inspector:
editorListeners:
activeWithNonEmptyValue:
property: ‘layout’ handler: ‘TYPO3.NeosDemoTypo3Org/Handlers/LayoutHandler’

The handler would be an Ember.Object or more specifically the handler should be loadable via require and return an object with a create() method that in turn returns an object with a handle method with the following signature:

handle: function(listeningEditor, newValue, property, listenerName)

The listeningEditor is the Ember editor object for which the listener is defined, newValue is the new value of the property which was listened to, property is the name of this observed property and finally listenerName is the (user defined) name of the listener from the configuration.

This configuration makes not too much sense but you can easily see the flexibility and possible usages of this. Changes to editors to integrate nicely with this feature will come in additional PRs.

  • Packages: Neos

[FEATURE] Support search by property & exact value in NodeDataRepository

Currently it is only possible to search through the properties by giving a string that matches for any key or value found in the jsonified properties field.

With this change, the term can also be an array to match exactly on a given key / value combination. The search term could be given as [‘key’ => ‘value’].

  • Resolves: NEOS-1460
  • Packages: Neos TypoScript

[TASK] Security documentation

This documents node privileges and their matchers, as well as how to restrict access to backend modules.

  • Packages: Neos

[TASK] Fix and amend data sources documentation

This fixes and amends the documentation on data sources. Some code cleanup to related classes is done along the way.

  • Packages: Neos

[TASK] Make sites path explicit domain knowledge

The base path for sites ‘/sites’ shouldn’t be hidden in strings as it is an important building block for Neos. Therefore I put it into a defined location as constant to refer to. The path may never change but this way there is a defined reference point to it.

  • Packages: Neos

[BUGFIX] Use correct node for content collection metadata

Content collection handles are not shown since the meta data added is using the document node instead of the actual node.

Regression introduced with 4672697b9477ceca53ee7b4e47c4def002e50e32 causing the node not to be set correctly for the contentElementWrapping processor.

[TASK] Fixed documentation for creating a plugin

Wrong ViewHelper was used in an example.

  • Packages: Neos

[BUGFIX] Fix transient error when moving of nodes in Node Tree

How to Reproduce:

  • have a website with dimension fallbacks configured; e.g. Language “de” which falls back to “en”.
  • Your content should be in German (no content in English actually needed)
  • Try to move nodes across the tree with changing the Node’s Parent Node
  • watch the exception “Could not convert array to Node object because [the-old-node-path] does not exist” in the get-child-nodes-for-tree endpoint.

This error happens because the “move” operation, which is supposed to return the new node path of the moved node, still returns the old path.

And this error, in turn, is triggered by some bug inside Node->setPath (see inline comments for a full description).

[BUGFIX] Compare base workspaces by name instead of identity

This change is needed when using configurable review workflows.

Without this change, the user gets very often an exception when publishing his content changes to review: “The specified workspace “foo” is not a base workspace of “foo”.”; and once this exception appears, there is no way to get rid of this exception except removing all content changes and starting all over again, and then hope for the best.

The error often occured not with simple content changes (a single content element), but moreover if you tried to edit a few content elements, create new content, or delete content and then tried to publish a bunch of these changes.

After some investigation, it showed up that the $targetWorkspace was a doctrine proxy, while the $baseWorkspace was not (or the other way around) in the cases where the error occured – thus the object identity comparison did not work.

Comparing the workspace name fixes the issue and is a lot more reliable, I think. As the workspace name is the identity of the Workspace object, it should be safe to do this.

  • Related: NEOS-930
  • Packages: Neos TYPO3CR

[TASK] Focus first inline editable property when creating content

When inserting new content the first inline editable property is focussed if one exists. This enables the editor to start typing directly without having to place the cursor first.

[TASK] Improve logging for “no homepage found” situations

When the Node Route Part Handler wasn’t able to find a site node, the exception now contains information about if at least a domain could be detected and if so, which one matched.

Additionally, matchValue() will now also log an exception if the request path was empty (that is, the user requested the homepage) and not only for sub pages.

  • Packages: Neos

[BUGFIX] if in backend, do not intercept links to static resources

Prevents loading links to static resources using AJAX in the backend interface, which fail when loaded.

  • Packages: Neos

[BUGFIX] Fixes correct getting of options for StringLengthValidator (JS)

Fixed the second parameter (radix) of parseInt to get the correct configured max and min. Was falsely changed during translation of JS messages.

Related: 5723c22561591d1ada93ee7cef5b85d30c47b9a2 * Fixes: NEOS-1636

[TASK] Add documentation for child node positioning.

Add the missing documentation for the positioning of child nodes in the structure tree.

[FEATURE] Support search by property & exact value in NodeDataRepository

Currently it is only possible to search through the properties by giving a string that matches for any key or value found in the jsonified properties field.

With this change, the term can also be an array to match exactly on a given key / value combination. The search term could be given as [‘key’ => ‘value’].

  • Resolves: NEOS-1460
  • Packages: Neos NodeTypes

[BUGFIX] Keep status code from module response on redirect

The response of a module loses the status code if it contains a Location header. This is caused by the ModuleController redirecting to the found location but ignoring any status code that may have been set. This means that a module will only create 303 redirects.

This change takes the status code of a module response and applies it to the generated redirect, fixing this behavior.

  • Packages: Neos

[FEATURE] Make reference starting point configurable

With this feature the starting point for finding possible nodes to create a reference becomes configurable via NodeTypes configuration. This allows to search for nodes outside the current site.

For all nodes outside the current site the node path is shown instead of the url path.

  • Packages: Neos

[TASK] Change documentation for data sources

Fix doubled quotes in CustomizingInspector.rst Change the example in DataSources.rst - the example now makes sens for the use in an inspector select box. Also adjust the code style.

  • Packages: Neos

[TASK] Use DateTimeInterface

Changes checks for \DateTime to checks for the DateTimeInterface introduced with PHP 5.5. This allows the usage of \DateTimeImmutable.

  • Packages: Neos TYPO3CR

[TASK] Add apigen.yml

This adds an apigen.yml file for use when generating API docs.

  • Packages: Neos

[BUGFIX] Output plugin content

Regression of 57025d40e65c6f43d528b317ab4c583b5a476f52 resulted in plugins not returning any output.

  • Packages: Neos

[TASK] Remove custom exception handling in ``PluginImplementation``

Removes the custom handling of exceptions for PluginViews, which is unnecessary. Instead the general NodeWrapping exception handler is used.

Additionally removes redundant @exceptionHandler from plugin view, since it’s inherited from the content prototype.

  • Packages: Neos

[BUGFIX] Use correct object property in PluginViewImplementation

Regression introduced in 13517506b9ae5ac0050b5336266677b2ee4e3963 by using wrong variable name for the current node in the PluginViewImplementation.

  • Packages: Neos

[TASK] Update list of available user interface languages

Adding Spanish, Khmer, Portuguese (Brazilian), Norwegian & Chinese Simplified

[TASK] Remove custom exception handling in PluginViewImplementation

Removes the custom handling of exceptions for PluginViews, which is limited and unnecessary. Instead the general NodeWrapping exception handler is used.

[TASK] Update the feature list of the documentation

The text was shortened and updated to provide a starting point for technically advanced readers that want to get into neos. For the editing part references to the user guide were added.

  • Packages: Neos TYPO3CR

[TASK] Make NodeTypeManager easier to read

Splits the NodeTypeManager into smaller methods and reduces overall complexity.

  • Packages: Neos TYPO3CR

[BUGFIX] PHP 5.3 array declarations (Neos)

  • Packages: Kickstarter Neos NodeTypes

[BUGFIX] Hidden before/after properties breaks site import

The closing tags for the hiddenBeforeDateTime and hiddenAfterDateTime properties were not handled in the node import service.

[BUGFIX] Render exception in HTML even if an other format is given

If an exception is thrown while rendering a page with an alternative format like .json, the ExceptionHandlers\PageHandler tries to fetch a layout for this alternative format which raises another exception: #1288092555: Could not load layout file

Switching the setters of the RequestHandler and the format always renders the exception as HTML.

  • Packages: Neos

[FEATURE] Make SelectBoxEditor search configurable

The JavaScript widget we use for select boxes supports a search feature to quickly find an entry. The threshold for showing the search box was hardcoded with a value of 5 entries, but different values can make sense depending on the project. Therefore this value now becomes configurable with the default still being 5.

```
editorOptions:
minimumResultsForSearch: -1

` This example configuration would set the minimum to -1 effectively deactivating the search box. Any value greater or equal ``0 will show the search box when the entries in the select are more than the configured value.

  • Packages: Neos

[BUGFIX] Graceful handling of node linking exceptions

  • Gracefully handle exceptions in the NodeUri TS object
  • Gracefully handle exceptions in node linking view helpers

[BUGFIX] Prevent fatal error in ``node:repair`` with broken node structure

When the “/sites” root node or it’s children cannot be found a fatal error is thrown or it’s silently ignored. Instead output an error message that the nodes could not be found.

  • Packages: Neos

[TASK] Document `defaultValue` for `DateTimeEditor`

Documentation of the defaultValue option for the DateTime property type.

  • Packages: Neos

[BUGFIX] Behat tests

Using relative paths fails when using isolated tests that are run in a subprocess. To support the development collection and read-only repositories full paths are used by checking which structure is present.

Related: cdbffb7f5ab28d630601c733e97568c27a8b0cbf

  • Packages: Neos

[TASK] Enable Behat Neos Behat tests for Travis

Adds a @browser tag used to skip those since they require Selenium and take very long to run.

  • Packages: Neos

[TASK] Enable Behat Travis tests

Additionally includes a couple of general improvements.

  • Packages: Neos

[TASK] Ignore built JavaScript/CSS files during merge

When merging a lower branch to an upper one the built files often conflict. To avoid that the file in the current branch is used when solving conflicts. This is done using .gitattributes stored in the root of the repository.

Enable this with:

git config merge.ours.driver true
  • Packages: Neos NodeTypes

[TASK] Ignore built JavaScript/CSS to avoid merge conflicts

To avoid merge conflicts, the minified built files are ignored in Git and instead added using force by the automated jobs in Jenkins.

  • Packages: Neos

[TASK] Replace usage of compass font-files to get rid of cache bust

This is done since we don’t need that cache bust and since it’s updated on every new compilation unnecessarily. It’s not possible to disable in Compass without scripting, so the inclusion is just done manually instead.

  • Packages: Neos

[BUGFIX] No longer use invalid data in functional test

The MigrationStatusRepositoryTest used invalid fixture data, the direction was filled with strings that were too long for the related DB column. On MySQL this is silently truncated, but on PostgreSQL it leads to an error.

Now the expected class constants are used in the test.

  • Packages: TYPO3CR

[TASK] Combine plugin search query in PluginService

Combine plugin search query when getting all plugin nodes for the master plugin selection in PluginView, which is not optimal when having many plugin types.

[BUGFIX] Use current node as document node if no document node is found

When the fallback node mode is triggered, the documentNode TypoScript variable is empty leading to various issues. This solves that by using the current node as the document node in that case.

[BUGFIX] Position master plugin selection above plugin view selection

Positions the master plugin selection in the inspector for a PluginView above instead of undernearth the plugin view selection, to avoid confusion since the plugin view selection depends on the master plugin selection.

[BUGFIX] Unset selected plugin view when changing master view

When changing the master view selection for a PluginView, the selected plugin view is not unset causing confusion.

[TASK] Remove superfluous quotes from PluginView label

Removes superfluous quotes around PluginView label seen in the plugin view editor for plugin views.

  • Packages: Neos

[BUGFIX] Flush on change of descendants of referenced node

Add descendants of referenced nodes to cache tags of the “Content References” node type. This ensures that nested nodes inside a node inserted as a reference will be updated when those nodes are flushed.

  • Packages: NodeTypes

[TASK] Allow to override TYPO3.Form configuration from TS

This change allow to override the Form configuration from TypoScript:

prototype(TYPO3.Neos.NodeTypes:Form) {
    overrideConfiguration = TYPO3.TYPO3TypoScript:RawArray {
        finishers = TYPO3.TypoScript:RawArray {
            copy = TYPO3.TypoScript:RawArray {
                options = TYPO3.TypoScript:RawArray {
                    recipientAddress = ${q(node).property('email')}
                }
            }
        }
    }
}
  • Packages: NodeTypes

[BUGFIX] CachingHelper generation of entry tags for descendants of a node

Cache entry tags are case sensitive.

  • Packages: Neos

[MERGE] Merge ‘2.0’ into ‘master’

  • Packages: Media Neos TYPO3CR TypoScript

[MERGE] Merge ‘2.0’

  • Packages: Kickstarter Media Neos NodeTypes TYPO3CR TypoScript

[BUGFIX] Fix license header text

Removes a superfluous “the” in the license header, it’s not “THE Neos”.

  • Packages: Neos

[TASK] add hint for application context in last setup step

If you want to try out Neos and you just run the setup your installation will afterwards still run in development context and you might be disappointed of the speed. So we add a hint, that there’s additional action required in order to run Neos in production context and experience its full speed.

[TASK] Update license headers

This change updates license headers in all packages contained in the Neos Development Collection according to what has been discussed earlier: https://discuss.neos.io/t/rfc-license-header-file-doc-comment-change/517

  • Packages: Neos

[BUGFIX] Service\NodesController should stick to interfaces

The Service\NodesController should refer to the NodeSearchServiceInterface instead of the implementation class to avoid hard dependencies and allow overwriting the implementation from the outside.

  • Packages: Neos

[!!!][TASK] Fix support for thumbnail with fixed width and height

Neos 2.0 introduce a regression that break thumbnails with fixed height and width (if the ratio of the original image is different than the ratio of the Thumbnail).

This change allow to set fixed width and height in Image ViewHelpers, TS Objects and change the internal API. This change is currently breaking (internal API only) but BC if you use only the ViewHelpers or the TS objects.

This change introduce `ThumbnailConfiguration` value object to make the method signature more readable and make the breaking change more visible.

This change change the database structure for thumbnail entity to store a JSON representation of the configuration and a hash of this configuration. The hash is used to check if a thumbnail exist with the same configuration. By default NULL value are not stored in the database to allow change in the ThumbnailConfiguration without invalidating all the generated thumbnails.

This change require a database migration:

./flow doctrine:migrate
# or specifically
./flow doctrine:migrationexecute --version 20150913173832

This change also simulate to behaviour of Neos 1.2 for BC, where this snippet will generate a square image of 200x200:

<typo3.media:image image="{image}" maximumWidth="200" maximumHeight="200" allowCropping="true" alt="{title}" />

In Neos 2.0, this snipped should be adjusted to:

<typo3.media:image image="{image}" width="200" height="200" allowCropping="true" alt="{title}" />

You can unset the settings TYPO3.Media.behaviourFlag to disable the Neos 1.2 behaviour compatibility. Previously Neos can generate fixed dimensions by setting maximumWidth and maximumHeight. The new behaviour introduced by Neos 2.0 is to use width and height.

  • Resolves: NEOS-1511
  • Packages: Media Neos NodeTypes

[TASK] Introduce new JavaScript events for fullscreen mode

This change introduces two new JavaScript events triggered when toggling fullscreen mode. Neos.FullscreenModeActivated will be dispatched when the backend switches to fullscreen mode. Neos.FullscreenModeDeactivated will dispatch if the backend leaves the fullscreen mode.

[TASK] Streamline “Loading ...” labels

Changes the usage of “Loading ...” labels to be used consistently across the user interface.

[FEATURE] Nodetype option for collapsing inspector group by default

This change introduces a new option for the Nodetypes configuration which defines if a specific inspector group should be collapsed by default. If a user decides to expand a group in the inspector, this state (which is stored in Local Storage) takes precedence.

Example: ```yaml

groups:
nodeInfo:
label: i18n tab: ‘meta’ position: 1000 collapsed: true

` * Related: `NEOS-1045 <https://jira.neos.io/browse/NEOS-1045>`_ * Packages: ``Neos

[FEATURE] Support creating absolute node uris

Previously the ConvertUris helper just created relative links. This change introduces a new setting createAbsoluteUris:

someTextProperty.@process.1 = TYPO3.Neos:ConvertUris {
absolute = true

}

[BUGFIX] Fix timing issue in NodeImportServiceTest

The node import service puts an instance of Now in the expected value and afterwards starts the import that will write the actual creationDateTime and lastModificationDateTime properties. Because the import takes time there’s no guarantee that those values will match and as such the tests randomly fail.

This change changes the check so it validates the properties to be an instance of DateTime after the import, but removes it from the expectedValue definition.

  • Packages: TYPO3CR

[BUGFIX] Prevent fatal error for missing master plugin in PluginViews

Prevents PluginViews with a master plugin selected that cannot be found from throwing a fatal error. This can happen when the master plugin is removed/moved or is not available in the context.

[TASK] Add Code of Conduct

This adds a reStructuredText version of the Contributor Covenant code of conduct, to make it clear the project is governed by that.

See also http://contributor-covenant.org/version/1/2/0/

[BUGFIX] Adjust carousel node type example

Since Neos 2.0 you have to write content.iterationName instead of iterationName.

  • Packages: Neos

[TASK] Add Readme.rst files for individual packages

This adds a Readme.rst to each package, so that the read-only subsplit repositories have a readme file for GitHub to show and for the users to read.

  • Packages: Kickstarter Media Neos NodeTypes TYPO3CR TypoScript

[FEATURE] node:repair sub command for removing broken entity references

This change introduces a new sub command for node:repair which detects and removes node property references to entities which don’t exist.

One practical example are Image nodes whose “image” property points to ImageVariant objects which, for whatever reason, have been removed in the meantime. For these nodes, node:repair will now set the “image” property to NULL.

  • Packages: TYPO3CR

[BUGFIX] Reset date picker to current date instead of null

If reset to null, the date picker would default to 1899 instead of the current date when being opened again.

[BUGFIX] Add inversedBy attribute to association

When running a doctrine:validate an error is shown for the Tag model since it does not contain the required inversedBy attribute. This change fixes that by adding it.

Merge branch 2.0 into master

  • Packages: Media Neos

[BUGFIX] Service\NodesController should stick to interfaces

The Service\NodesController should refer to the NodeSearchServiceInterface instead of the implementation class to avoid hard dependencies and allow overwriting the implementation from the outside.

  • Packages: Neos

[TASK] Adapt Neos composer.json to new installer script

Adapts the Neos composer.json to the new configuration for installer resources that works with joined repositories. The old configuration (which won’t be used anymore) is kept for backwards compatibility reasons but should be removed soon.

  • Packages: Neos

[TASK] Add composer manifest template

Adds the template composer.json used to autogenerate the joined composer.json for this joined repository.

[TASK] Resolve test trait paths relatively

In order to accomodate running the tests with the new joined repositories as well as the read-only ones the require path must be relative to the current path to avoid passing the Application/Neos folder.

  • Packages: Neos TYPO3CR

[TASK] Resolve test trait paths relatively

In order to accomodate running the tests with the new joined repositories as well as the read-only ones the require path must be relative to the current path to avoid passing the Application/Neos folder.

  • Packages: Neos TYPO3CR

[TASK] Create .codeclimate.yml

Adds a codeclimate configuration excluding Migrations, Tests and JavaScript libraries.