1.2.0 (2014-12-10)

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

Translation support

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.

Constraints

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.

Inspector features

  • 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 features

  • 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
  • Expose public JavaScript API for reloading the page
    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

Fluid features

  • 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

Additional features

  • 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.Media:Image* with TYPO3.Neos:Image* to adjust your code.

  • Serialized image objects cause Doctrine errors

    Images inserted in existing sites cause fatal errors. Running ./doctrine migrate solves 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.ts2 is deprecated in favor of /Private/TypoScript/Root.ts2

  • 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>

  • Deprecate unused IncludeJavaScriptViewHelper

  • 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 NodeLabelGeneratorInterface to the deprecated NodeDataLabelGeneratorInterface and 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 @allowEmpty should be used to disable empty attributes.

Further details can be found in the commit messages of the changes