The third release of Neos focuses on adding translation support, improving the editor experience and implementing many new features. Neos is getting closer to being able to solve most project needs without custom code.
A lot of work has been put into this release to deliver a truly great user experience. Check out the online demo site (http://neos.demo.typo3.org/) for trying out the new version.
In total 94 new features, 339 tasks and 282 bugfixes made it into the beta and more non-breaking improvements will come during the finalization phase.
Upgrading from 1.1 can be done easily using the available migrations. Instructions available here http://neos.typo3.org/develop/download/upgrade-instructions-1-2.html. If you experience any issues please report them to https://jira.typo3.org/browse/NEOS.
A big thanks goes out to all the contributors that made this happen.
A bunch of teaser videos can be found here https://www.youtube.com/playlist?list=PLmMUGpq3yu-heNfu_e2HtcMH0RtaRPeJU
Support for creating localized websites with Neos is years in the making. We took all the experience from a decade of TYPO3 CMS customer projects into account and came up with a universal concept: Content Dimensions. This feature, which is deeply rooted in Neos’ content repository, allows for creating and combining an arbitrary number of variants of a piece of content. In Neos 1.2 we use Content Dimensions for realizing translations. Once the site integrator has defined which languages should be available, an editor can translate content by simply navigating to the part of the website he’d like to translate, switch to another language and type away.
All aspects of a node – which is the technical term for any kind of content - can be translated. A new implementation of the routing component for Neos even allows for translation and customization of the URL of a particular document.
For a first impression you might want to watch a talk about multi language websites with Neos 1.2 from this year’s T3CON: http://rlmk.me/neosmulti1-2
Information about the general UI approach to localization and full use of content dimensions, some of the planned concepts are explained at http://rasmusskjoldan.com/post/82289319462/localization-is-not-about-localization
Many more features regarding content translation and content dimensions in general are on our roadmap.
See the chapter Content Dimensions for details.
In a typical project, you will create lots of custom node types. However, many node types should only be used in a specific context and not everywhere. Using node type constraints, it is now possible to restrict the allowed child node types inside a given node type. Additionally for being able to specify direct child node constraints, it is also possible to specify grandchild constraints for auto-created node types.
See the chapter Node Type Constraints for details.
Node type constraints are supported in the following places in Neos:
- “Create New” panel in content element handles
- “Create New” panel in the navigate component (document and structure tree)
- moving in Navigate component
- changing node type in the inspector
Additional editor experience improvements¶
- Link editor for nodes, assets and external links
A link editor for the inspector that can handle internal and external links
- Add ability to Shortcut to an external target
Allows for linking to an external URL for shortcut pages
- Crop aspect ratio lock presets (image editor)
Allow locking or predefining aspect ratios for the image cropping
- Tabs for property groups in the inspector
Allow grouping properties and property groups across different tabs
- Update Aloha editor
Update to a stable version of the editor with various bugfixes and some new features
- Improve exception handling during rendering
Make broken pages less broken
- Mark unpublished nodes in context structure tree
Unpublished nodes are now highlighted in the context structure tree
- Manual node selection in Menu element
The menu content element now supports selecting specify menu items to show
- Add new content element for inserting records
New content element to insert other content elements
- Improve usability of publishing button
The publish button now has a active state during publishing, is disabled during saving and has become more responsive
- Allow advanced default values for properties of type date
Allows setting the current date and more advanced default values for date editors
- Add icons to reference(s) inspector editor results
The reference editor in the inspector now shows icons for the nodes
- Allow closing dialogs with esc key
All the different dialogs now support closing by hitting the escape key
- Warn the user about an expired / lost session
A login dialog appears when a session has expired allowing the editor to login again and resume work
- Warn editors when navigating away during saving/publishing
Warns the editor when navigating away or closing the page during saving/publishing to avoid loss of changes
- Improve stability of content saving
The saving of content has greatly been improved, preventing issues with content not being saved
- Improve 404 handling in Neos backend
When deleting the current page it would end in a 404, instead the closest parent page is found
- Login screen removes username on failed login
The username is kept on failed logins
- Use correct icons for node results in Aloha link field
Previously all results in the aloha link field had the same icon, now they have the one matching their node type
- Use placeholder instead of default value in inline link editor
Adds a placeholder, removes the “http://” and makes it clear that the field allows for searching
- Improve usability of new/paste buttons in navigate component
Adds indication that the new & paste buttons allows for altering insert/paste position
- Sorting of node types in insert new panels
Allows for sorting the node types in the new panels (navigate/content)
- Login dialog improvements
Added progress indication and streamlined normal and re-login forms.
- Group, sort & add icons for node types in NodeTypeEditor
Gives a better overview of available options when changing the node type.
- Insert new panel improvements
Options styled as cards instead of links, supports tab navigation, can handle lots of options and long labels.
- Dynamically loaded options for the inspectors SelectBoxEditor
Support for loading option values dynamically from the server
- Multiple selection & grouping in inspector SelectBoxEditor
Support for selecting multiple options and grouping options
- Time support for the inspector date editor
Allows date selectors with time selection
- Textarea inspector editor
An editor used for multiple lines of text in the inspector (meta description e.g.)
- Make button label and highlighting mode configurable
Allows for more than the HTML format for the code editor in the inspector
- Switch to PHP date format for inspector
The default date format for the date editor is now the PHP date format for easier usage
- Make NodeTree baseNodeType configurable
It’s possible to filter the node tree in a custom way to exclude unwanted document nodes
Inline editing features¶
- Placeholder support for inline editable properties
Allows for having empty inline editable properties
- add <code> tag to Aloha Editor (disabled by default)
Enables the use of wrapping text in a <code> tag
- TypoScript prototype to handle HTTP headers and response status
Allows adding custom headers from TypoScript to the response (e.g. application/xml)
- Implement TypoScript inclusion globbing
Include multiple TypoScript files with one include line
- @if meta property for conditional evaluation of paths
Use conditions to disable TypoScript keys
- NodeUri TypoScript object for linking to nodes
A TypoScript object for making linking to nodes easier (link view helper equivalent)
- ImageTag and ImageUri TypoScript objects
TypoScript objects for creating images directly in TypoScript (image view helper equivalents)
- Has FlowQuery operation
Like the jQuery has function for filtering nodes containing specific children
- Implement BreadcrumbMenu to replace Breadcrumb
Breadcrumb menu streamlined with the normal menu implementation (old one deprecated)
- Menu item attributes should have access to item in context
The menu implementation now has access to the current item when evaluating the attributes
Backend interaction features¶
- External event for node creation / removal
Allows for updating the dom when content is created/removed in the backend
Allows for externally reloading the current page in the backend
- External events when panels open/close and layout changes
Events that integrators can use to update the dom when the backend panels change
- Use node label for link.node view helper
Makes it easier to link to nodes with a relative path by making the linked node accessible
- uri.module view helper
Equivalent of the link.module view helper
- Allow linking to site node in NodeLinkingService
Allows for linking to the site node with the relative path
~in the node link view helper
- Dimension/Language Menu
A new menu for linking to other dimensions (e.g. between languages) – see demo site for an example
- Configuration module
A new backend module to display configuration (Settings, NodeTypes, Policies, Routes, Caches, Objects, Views)
- Introduce mixins to avoid illogical inheritance
Multiple mixins has been added which can be reused in custom elements (TYPO3.Neos.NodeTypes:TextMixin, TYPO3.Neos.NodeTypes:ImageMixin, etc.)
- REST services
New REST controllers were introduced to handle various backend requests (outputs both html/json)
- Data sources
A new way of providing content to the backend via AJAX easily. See the chapter Data sources for details.
- Allow simple search/replace in ChangePropertyValue transformation
Allow node migrations to search and replace in text properties
- Commands to activate/deactivate domains
./flow domain:activate & domain:deactivate
- Handle properties of type array
Node type properties can now be arrays (used for multiple selection in the SelectBoxEditor)
!!! Breaking changes¶
- Move ImageTag and ImageUri TypoScript objects to TYPO3.Neos
Replace all occurrences of
TYPO3.Neos:Image*to adjust your code.
- Serialized image objects cause Doctrine errors
Images inserted in existing sites cause fatal errors. Running
./doctrine migratesolves the issue.
- Rename “Insert records” content element
To adjust your existing “Insert records” nodes, run the following node migration:
./flow node:migrate 20141210114800
- Move FlowQueryOperations concerning nodes to TYPO3CR
Breaking if you extended existing FlowQueryOperations concerning nodes
- Fix linking behavior
Links to shortcut nodes now point to the end target instead of intermediary URLs
- HTML editor: Make button label and highlighting mode configurable
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>
- Use node label for link.node view helper
This is breaking since it changes the behavior of empty links, so if you relied on that you need to use the f:link.uri view helper inside the href attribute of a normal a tag.
- Update Aloha editor
b and i tags are now replaced with strong and em (old ones can still be configured).
Now automatically adds paragraph around non formatted blocks.
Target _blank is now added automatically to external links.
- Harmonize TypoScript paths
The old path
Private/TypoScripts(/Library)/Root.ts2is deprecated in favor of
- Add ability to Shortcut to an external target
To adjust your existing Shortcut nodes, run the following node migration:
./flow node:migrate 20140930125621
- Switch to PHP date format for inspector date editor
To adjust the code use the new format, it should be enough to run this on your site package(s):
./flow flow:core:migrate --package-key <sitepackagekey>
- Menu state should not be calculated based on a shortcut
This is only breaking compared to the 1.1 branch not to 1.0. If you need a link to the site root page with correct active state you shouldn’t create a shortcut pointing to it but rather include the real site root in the menu, by using the itemCollection property of the Menu TypoScript object.
- Hide document layout properties by default
If you rely on these properties, adjust your node type configuration by setting the group on the two layout properties.
- Change default inline editing options
Disables the underline tag as well as sub- and super script tags by default. They can be enabled again with configuration.
- Use strong and em instead of b and i as default
Breaking if relying on non-native browser styling of b and i tags.
- Mark NodeInterface::getFullLabel deprecated
The getFullLabel method is now deprecated. The getLabel method returns the full label instead.
- New node label management
The code migration 20140911160326 takes care of changing existing implementations of the old
NodeLabelGeneratorInterfaceto the deprecated
NodeDataLabelGeneratorInterfaceand to change the NodeTypes configuration to the new format.
- Node Migrations work on NodeData
This is considered breaking if you added your own Transformations or Filters for Node Migrations or rely on them to only apply to a specific workspace.
- Change handling of empty, false and null attribute values
This will be breaking if code relied on the previous conversion of values or the output is used for XML, where the new meta property
@allowEmptyshould be used to disable empty attributes.
Further details can be found in the commit messages of the changes