1.1.0-beta1 (2014-04-10)

Base Distribution

[TASK] Pin Neos 1.1 branch to BuildEssentials

Require BuildEssentials 2.2.* explicitly. * Commit: a80370a

[TASK] Update composer manifest

See https://ci.typo3.robertlemke.net/job/typo3-neos-branch/3/

[TASK] Fix typo in comment of create-branch.sh

[BUGFIX] Wrong reference to SiteKickstarter in build tools

Some files in Build referenced the TYPO3.Neos.Kickstarter package by it’s old name TYPO3.SiteKickstarter, leading to errors during releases.

[TASK] Adjust create-branch to renamed SiteKickstarter

TYPO3.Neos

[TASK] Update references in documentation

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

[TASK] Update composer manifest

  • typo3/typo3cr is pinned to 1.1.*
  • typo3/typoscript is pinned to 1.1.*

[TASK] Reload the nodeTree if the content dimensions change

If a link is clicked in Neos that results in a change of the content dimensions (like a link to a different language) the NodeTree now refreshes.

[BUGFIX] Workspace wide publishable entities not cleared immediately

Related: #NEOS-105

[FEATURE] Implement BreadcrumbMenu to replace Breadcrumb

This streamlines the “items” property provided by the Breadcrumb TypoScript prototype to match the “items” array provided by the Menu prototype.

This change is not breaking, but deprecates the TYPO3.Neos:Breadcrumb TypoScript object. Switch to TYPO3.Neos:BreadcrumbMenu for additional features and future compatibility.

Resolves: NEOS-107

[FEATURE] Mark unpublished nodes in context structure tree

Show a unpublished indicator for each content element that is unpublished in the context structure tree. This gives an overview over unpublished changes on the current page.

Resolves: #NEOS-104

[BUGFIX] Edit/preview mode slider breaks without modes

[FEATURE] Scrolling for multiple edit/preview modes

Integrate the “Sly” plugin to add smooth scrolling behaviour inside the edit/preview panel.

The scrolling function is enabled as soon as the width of all buttons exceeds the width of the edit or preview panel.

[FEATURE] Linking to assets in Aloha editor

This change introduces the possibility to link to files within text elements. The autocomplete wizard of the link wizard now displays pages and assets in the result list.

The ConvertNodeUrisImplementation is also renamed to ConvertUrisImplementation to reflect that it does convert uris and not only node uris.

Aloha’s table wizard and link wizard are also moved below the #neos-application element for better separation of styling.

Resolves: NEOS-20

[BUGFIX] Publish/discard all count not updated

When a page or all changes are published or discarded the publish/discard all count isn’t updated accordingly.

Fixes: #NEOS-105

[TASK] Mark newly created pages unpublished instantly

[BUGFIX] Publishable nodes count not context aware

The total count of unpublished changes does not take context in account leading to several problems, e.g. not being able to mark dirty pages when using content dimensions.

Fixes: #NEOS-103

[TASK] Improve notification for failed AJAX requests

[BUGFIX] Notifications not shown after publishing/discarding

Fixes: #NEOS-106

[BUGFIX] AJAX error handlers using undefined variable

I5e964543e9b67209859dccbb0b84e9fcf2980beb introduced a regression regarding handling of the error responses.

[BUGFIX] Unpublished indicator in node tree pushes title

Nodes marked dirty in the node tree are indented more than their siblings due to an extra left border.

[BUGFIX] Loading 404 pages breaks backend by reloaded the page

Fixes: NEOS-77

[TASK] Remove unnecessary duplicate of internal node type

Instead of adding an additional node type property for internal use, we use the typeof that already contains the node type.

The node type switching also introduced the node type as a property, but that can’t be relied on since it depends on the node type configuration.

[BUGFIX] Content cache is not domain specific

The content cache does not take the visited domain into account. This leads to problems when multiple domains point to the same site node. The first domain used while accessing a node will be used for generating the cache entries, and will be served for subsequent requests even if those originates from a different domain. This is a problem as it would redirect the user to a different domain, and can even break AJAX requests in the Neos backend as they will be blocked by browser policies as being cross-domain requests.

[FEATURE] Prune a single site on command line

Introduces the new argument site-node-name for the site prune command to prune a single site based on the root node name. Will clear all nodes and domains for this site as well as the site object.

[BUGFIX] Creating or moving a page does not update publishing state

Fixes: #NEOS-85

[TASK] Navigate to newly created pages automatically

When creating a new page the normal use case is to add content to that page so it should be navigated to automatically.

That also solves the issue with having to reload the page to update the menus in case the new page should be displayed.

Resolves: #NEOS-102

[TASK] Prevent multiple initializations of publishable nodes

[BUGFIX] Creating a new page won’t activate the publish button

When a new page is created in the node tree that page should be navigated to. When navigating to a new page the publishable nodes is re-initialized ensuring the publish button is activated and the publish count updated.

Fixes: #NEOS-96

[TASK] Publish/discard all changes in one request

Instead of sending one request for each change when publishing/discarding changes, they’re all send in one request to prevent race conditions and unnecessary requests.

Fixes: #NEOS-95

[BUGFIX] Fix adding nodes with a cached version of a collection

The content cache will be flushed when a Node is created. But the flushing was moved to a shutdown method, so it’s done after the content for the collection containing the new node was rendered. This causes problems if a cached version of that collection already existed.

The change introduces a flag for the Neos version of the TypoScript view that allows to disable the content cache for this case.

Fixes: #NEOS-78

[FEATURE] AssetEditor for inspector

This change adds an editor and updates Neos to support two new property types: TYPO3\Media\Domain\Model\Asset for a single reference to an Asset entity and array<TYPO3\Media\Domain\Model\Asset> to select or upload multiple assets.

The ContentElementWrappingService was changed to export all public properties only for the ImageVariant type and support for the Asset types was added. This part of Neos needs more refactoring in the future.

[TASK] Use HttpClient instead of $.get in references editor

[TASK] Pasting in node trees should paste after by default

The most common usage case for pasting nodes is wanting to paste after a specific node, this also keeps the default consistent with the create new position.

Resolves: #NEOS-80

[BUGFIX] Discard all operation must reload the page tree

Fixes: #NEOS-55

[TASK] Fix typo in comment for method generateUriForNode

[TASK] Rework the NodeTypeService to cache the NodeTypeSchema

This change makes sure the NodeTypeService will always directly returning the schema without doing a separate ajax request to the server with a superType filter on the NodeTypeSchema.

[BUGFIX] Fix wrong publishable node counts with custom rel=”x” markup

The VIE library that is used to parse entities via RDFa returns entities also for every “rel” attribute that is used to mark a relation to other entities in RDFa (see http://www.w3.org/TR/rdfa-syntax/#A-rel).

The check for entities outside the “live” workspace did not check if the entity attributes contain a workspace at all and just returned true for unknown entities.

[FEATURE] Recursive node type and identifier support in FindOperation

Adds support for finding a node by its identifier within the node context by using the syntax:

${q(site).find('#60216562-0ad9-86ff-0b32-7b7072bcb6b2')}

Adds support for finding all nodes of a specific node type inside the scope of the node context using the syntax:

${q(site).find('[instanceof TYPO3.Neos.NodeTypes:Text]')}

Depends on I08b957467eea91f52cc6f2fea71ab45c797e4a8f

[FEATURE] allow to set dimension values in URL if not in live workspace

As preparation for a translation user interface, we need the ability to set dimension values (like “locale”) in the URI, such that it can be set like:

features@user-admin;locales=de_DE,mul_ZZ.html

This change allows to set the dimension-values in the URI if not in live workspace.

This is not yet integrated into the LocalizedFrontendNodeRoutePartHandler.

Additionally, removed a leftover conversion from UUID to nodes when generating URIs.

[TASK] remove unused TypoScript for Raw Content Mode

[TASK] Ext.Direct replacement

This change removes the dependency to the TYPO3.ExtJS package. It replaces the usage of the global ExtDirect controllers and uses instances of the HttpClient which should from now on be used for server communication.

The HttpClient handling uses Ember.Deferred. Also the usages of $.Deferred are replaced by Ember.Deferred.

This change will be the basis for more refactoring in the server side services and JavaScript code, but is already a good improvement.

[BUGFIX] New nodes not included in publishable node count

After creating new content elements rendered through AJAX the publishable node count doesn’t regard the new nodes as publishable because the attributes doesn’t contain the workspace due to the VIE entity not having it’s template for getting the custom attributes when needed

Fixes: NEOS-44

[BUGFIX] Tree is updated on changes

The node tree was not correctly updated on consecutive changes from the inspector. This change adds the necessary initializations after reloading the page to fix the issues.

For testing edit for example the node title more than once in the inspector and the title in the trees should also be actualized.

[TASK] Make use of TYPO3.TYPO3CR PublishingService

Adjust to change If13788febbf94a905080daea749b6d8bad50a931 where the package is made independent of TYPO3.Neos, allowing the default publishing service to be replaced using Objects.yaml

[FEATURE] Localized node routing and consistent use of context path

This change adds a LocalizedFrontendNodeRoutePartHandler that can be configured for sites using localization. A new strategy for getting the locales dimension values from a URI segement is added with ContentDimensionPresetSourceInterface and a Settings based implementation.

For consistent use of content dimensions in nodes, several parts of Neos are updated to use the context path consistently.

Controllers and services in Neos are updated to use the new methods in the ContextInterface instead of directly accessing the node data through NodeDataRepository.

How to use

In order to use the localized routing, the following needs to be inserted to Objects.yaml:

TYPO3\\Neos\\Routing\\FrontendNodeRoutePartHandlerInterface:
  className: TYPO3\\Neos\\Routing\\LocalizedFrontendNodeRoutePartHandler

Furthermore, a “locale” dimension must be configured, e.g. by using the following Settings.yaml:

TYPO3:
  TYPO3CR:
    contentDimensions:
      locales:
        default: mul_ZZ

After that, the site must be re-imported from XML.

This must be merged together with the corresponding changes in the TYPO3CR package.

[BUGFIX] File upload doesn’t work without global jQuery

There was a missing RequireJS dependency to jQuery that causes the global jQuery instance to be used (if available).

(cherry picked from commit 5daf10008d634784da193795807c9abaa1f588e8)

[TASK] Clean up docblock in NodeWrapping exception handler

(cherry picked from commit 262d1f9132e1190219ad7af0b3c1b0022e8687e9)

[BUGFIX] improve documentation for PluginViews

(cherry picked from commit 229d9ea7c52975be3c357ef34a0774bd7ad0de2c)

(cherry picked from commit 76aa1e0c1bc41ae825cd3e6ce00a9d8d3d330bac)

[FEATURE] Node type switching support

This patch adds a new select box in the Inspector for node types based on TYPO3.Neos:Content and TYPO3.Neos:Document to allow changing the current node type.

[BUGFIX] Discarding changes does not flush TS content cache

When changes in a workspace are discarded the TS content cache is not flushed because the discard operation does a direct removal of NodeData instances.

[BUGFIX] Select box editor values inaccessible in inspector

If a select box editor has options that are longer than the available height in the inspector they are inaccessible.

Also removes the mouse scroll binding that makes it impossible to scroll the inspector down when after scrolling the options to the bottom.

[BUGFIX] Transparent text for editing titles in node tree

When editing titles in the node tree the text color of the input field is blue for the current page and transparent for other pages.

[TASK] Grunt concat inconsistent with library file

The NProgress source file doesn’t match the current preprocessed file, this change just updates with the output from grunt concat.

[TASK] Update CodeMirror from version 2 to 3

Also fixes and improves various styling.

[BUGFIX] Negative entryLevel renders wrong menu

When using a negative entryLevel on a Menu, the rendered menu renders “one level above” the expected.

This is caused by calculateNodeDepthFromRelativeLevel() returning a 0 based result in certain cases.

[TASK] Pin Neos 1.1 branch to Flow 2.2 / Media 1.1

Require TYPO3.Flow 2.2.* and TYPO3.Media 1.1.* explicitly. * Commit: 02cd5c8

[TASK] Update composer manifest

See https://ci.typo3.robertlemke.net/job/typo3-neos-branch/3/

[TASK] Adjust to AbstractArrayTypoScriptObject change

[TASK] Fix functional rendering tests after content cache is merged

This change disables the content cache for the Neos rendering tests to fix the failing tests that re-used previous results. To fix a test in TYPO3.TYPO3CR an additional check is introduced when iterating over parent nodes.

[BUGFIX] DatePicker unreadable when specific styling in Frontend

The dates cannot be read in the DatePicker when for example Zurb Foundation is used in the frontend which contains specific table styles. The white color was used too implicit in the respective styling.

[BUGFIX] Json parse regression in ResourceCache

Change I8364fe8d86f2c9ec82e764829f2db0c3c2a41c20 introduced a regression. Because now the dataType is configured to be json $.ajax will also return a json value. This caused a serie of errors where Neos tries to parse objects to objects using JSON.parse().

[BUGFIX] ResourceCache stores invalid schema data

When a session is expired the ajax calls for fetching the json schema data from the server return html. This is now saved in the ResourceCache basically disabling the user to work with Neos in his current browser till the session storage is cleared.

This change makes sure that the html is not stored, and the promise for fetching the schema is failed.

[TASK] Only cache content collection in primary content per default

The content cache mode “cached” was enabled for all content collections which results in a potentially large number of cache entries on pages with nested elements (e.g. multi-column). This could reduce the effect of the content cache.

With this change only the PrimaryContent prototype uses mode “cached” while it has to be set explicitly on custom content collections.

Example:

teaser = ContentCollection {
        nodePath = 'teaser'
        @cache {
                mode = 'cached'
        }
}

[BUGFIX] Neos backend breaks if the frontend uses requirejs

When the frontend of a website is using requirejs the backend of Neos does not load, or the content editing does not work. This change puts all Neos requirejs configuration in the ‘neos’ context and wraps requirejs to prevent a double declaration of requirejs.

It also changes the way requirejs is included as the data-main attribute will not work if requirejs is already defined in the frontend.

[TASK] Only display images in media browser

This change adds a separate controller for the media browser iframe. This controller uses the ImageRepository for fetching assets so only images are displayed.

[TASK] Integrate TypoScript content cache in Neos

This change implements a flushing strategy on node updates that will flush entries in the content cache with matching entry tags.

For each node, a set of tags will be derived on node changes (add, update, remove):

  • “Everything” will always be included
  • “Node_[Identifier]” for the node itself
  • “NodeType_[NodeType]” for all node types that the node implements
  • “DescendantOf_[Identifier]” for all parents until the root node

By using these tags in the “@cache.entryTags” configuration, a clever flush strategy can be implemented depending on the content and structure of a site.

A @cache configuration is added to the “root” path and the TYPO3.Neos:Page prototype that should provide a reasonable default. The TYPO3.Neos:Plugin prototype and the Neos backend parts of the page are marked as uncached for proper caching behaviour.

Depends on Ib202a8222655685982b793b19e3bebf2eb7ba99f to store the node type names as cache tag values.

[TASK] Add changelog for TYPO3 Neos 1.0.2

[BUGFIX] Secondary inspector is rendered outside viewport in FF

The secondary inspector opens from the right to the left using a transition, but in Firefox the left positioning is incorrect so it animates to a position which is outside the viewport.

This patch changes the animation to be done on the left css property to make it less error prone.

[BUGFIX] A better way of parsing the HTML of asynchronous page loads

The change I3234d053ade3c92448a9538e24731c6df8e83f8a introduced a small regression by slightly changing the way of parsing the returned HTML of an asynchronous page load. This leads to problems if the page contained script tags that manipulate the dom (e.g. document.write).

This change adjusts the page loading to use the same jQuery function as before.

[TASK] Optimize typical filter usages of EEL children operation

The children operation supports filters, two typical cases are filter by node name and filter by NodeType (instanceof). These cases are now optimized and will only load the Nodes that match the filter.

[BUGFIX] Default attributes property of menu TypoScript object

The template of the menu TypoScript object uses the attributes property by default and for convenience it should be predefined as a attribute object so it’s easy to extend.

[BUGFIX] “node” used in label for create new dialog

Get rid of the undesired word “node” in the insert new element overlay since the word shouldn’t be exposed to the editor. It also keeps in consistant with the other instances of insert new in the navigate component.

[BUGFIX] Security policies in Neos are too strict

The current security policies fail with a “could not authenticate any token” if an initializeAction is made public.

This change updates the policy so it does not match initialize actions to prevent this error.

[BUGFIX] Fix double rendered elements with backend login

This was caused by a bug in the ContentCollectionImplementation that added not removed nodes twice with a backend login due to wrong method parameters being passed to findByParentAndNodeType.

[TASK] Adjust to removal of ContextInterface

The ContextInterface in TYPO3CR is removed, thus the code needs to be adjusted.

[TASK] Adjustment for first level cache

[TASK] Adjust to dimension support in TYPO3CR

[FEATURE] Loading indicator

Introduces a new concept for a page loading indicator removing the overlay with the spinner and replaces it with a more subtle approach with a small loading bar placed under the context bar.

[TASK] Upgrade jQuery from 1.10.2 to 2.0.3

Since there won’t be the need to support IE8 there’s no reason to keep the old version and the new versions contains various improvements.

[BUGFIX] Node tree filter too wide in Firefox

[TASK] Move fixed-sticky plugin to library

[TASK] Make node type optional in node:createchildnodes

Makes node:autocreatechildnodes update all declared node types if the –node-type is not given. This patch also add a dry run mode and improves the reporting output.

[BUGFIX] Sites management module widget action button

The action button for the sites management module widget points to a unresolved path due to the action name is camelcased. Since all module paths are automatically lowercased we can safely convert actions names into lowercase when creating links for them. In case a custom path is desired that’s already configurable.

[TASK] Improve usability of position menus in navigate component

Makes it possible to select a new position for the new or paste buttons without having to click twice when using a mouse.

[BUGFIX] Title missing for paste/new buttons in navigate component

In the navigate component the paste and new buttons are missing a title tag, unlike the other buttons. This commit fixes those title tags for both the node tree and context structure tree.

[BUGFIX] Shortcut to siteroot has no active state

The new menu implementation returns a state normal for nodes equal to the siteroot. This prevents a menu which contains a shortcut to the homepage to render an active state.

A menu could now render an active state on the shortcut to the homepage by for example using a custom node type for the homepage and adding the following condition:

<f:if condition="{item.node.nodeType.name} == 'My.Package:Homepage'">
    <f:then>
        <li class="{f:if(condition:'{item.state}==\\'current\\'', then:'active')}">
            <neos:link.node node="{item.node}">{item.label}</neos:link.node>
        </li>
    </f:then>
    <f:else>
        ...
    </f:else>
</f:if>

[TASK] Reintroduce shake effect after failed login attempt

This was removed during the implementation of the new styling, however the purpose is still valid since we don’t have any delay for failed login attempts so users can end up not noticing that it actually tried to login and failed so they keep waiting for a response.

[TASK] Fix minor errors in documentation

The integrator cookbook was referring to node type TYPO3.Neos:Page which was recently changed to TYPO3.Neos.NodeTypes:Page. Also the quotes in an example of using prototypes was incorrect.

[BUGFIX] Opacity of datetime editor inspector field

After the module styling implementation uneditable fields were made transparent and this also applied to the date editor field, but it shouldn’t since it’s not really uneditable since it has a wizard.

[TASK] Optimization of showAction in NodeController

Add a IgnoreValidation annotation to the show action to prevent unnecessary validation of the node argument. Another small optimization is achieved by changing the order of arguments in a conjunction and using the workspaceName property of the context instead of fetching the workspace.

[BUGFIX] Prevent exception when matching incoming context URIs

This fixes a regression that was introduced with a previous commit which resulted in an exception when logging into the backend.

Background: A previous commit (Iea1b92b07daba69f5f76cd7ceb7b81f2d14d68a1) streamlined the mapping of request paths to a node. Unfortunately this introduced a regression that resulted in an exception being thrown whenever a context URI (containing the “@workspace” part) was matched by the homepage route.

This change fixes this by testing whether the given context path could be matched.

[TASK] Fix various CGL violations

[!!!][BUGFIX] Only accepts URLs with the configured URI suffix

This change removes two obsolete routes and adjusts the FrontendNodeRoutePartHandler so that it matches the full node path.

Background: The route “Content with some format” accepted all URLs in the format {node}.{@format} which lead to duplicate content (if your default suffix is empty and the user appends ”.html”) and weird errors (if an arbitrary extension is added to the path, like “some/path.anything”).

Besides this change simplifies the FrontendNodeRoutePartHandler so that it does not ignore the splitString option if no dot could be found in the request path.

This is a breaking change if you relied on the fact that any format suffix is accepted by Neos. If you provide a custom format (for example “ics”) you should register a custom route for it in your package:

-
  name:  'ICS'
  uriPattern: '{node}.ics'
  defaults:
    '@package':    'TYPO3.Neos'
    '@controller': 'Frontend\\Node'
    '@action':     'show'
    '@format':     'ics'
  routeParts:
    'node':
      handler:     'TYPO3\\Neos\\Routing\\FrontendNodeRoutePartHandler'

[TASK] Add missing grunt-trimtrailingspaces dependency

This changes adds a missing dependency to grunt-trimtrailingspaces in Scripts/package.json

[TASK] Adapt to YAML parser change in Flow

Makes the yaml files comply fully to the yaml syntax so that they can be parsed by the YAML parser of the PECL extension.

[TASK] Minor coding fixes for users management module

In the new action there is multiple usages of assign, this commit changes this to use assignMultiple instead.

A minor typo in the comment for the action create is fixed.

[FEATURE] Reworked MenuImplementation

A new MenuImplementation that has the following additional features:

  • Resolves shortcuts, in this case the item.node will be the shortcut target and the original shortcut node is available in item.originalNode.
  • Corect state calculation.
  • New Property itemCollection to set an arbitrary collection of nodes as first menu level items.
  • New Property renderHiddenInIndex to also render items that should be hidden in menus otherwise

[BUGFIX] YAML indention and typo in integrators cookbook

[BUGFIX] Remove obsolete route that might break routing

This removes the frontend route “content with URI suffix and type” that could break routing in frontend and backend in certain circumstances.

Background: This route was meant to support custom rendering formats (similar to the typeNum feature in TYPO3 CMS). But apparently this is currently not used anywhere in the code and the same can be achieved with custom routes and/or the {@format} suffix. Since support for configurable URI suffixes (introduced with I14c8a98f341fbc312c57fee44cd383271778e57b) it is possible to disable the ”.html” suffix from all Neos routes. But with that change the route mentioned above incorreclty matches all pages in the second level (e.g. “foo/bar”).

[TASK] Fix Page documentation in TS reference

  • Additionally add missing Tag and Attributes documentation

[BUGFIX] Correctly rename site root nodes

When renaming the site root node via the Sites management module the site name was incorrectly used for setting the new root node name instead of the specified node name.

This change fixes this by mapping the new node name only to the site when it has been changed. Besides this cleans up SiteController, Site and the Edit form.

[BUGFIX] Menu section collapse arrow styling

The arrow for the section collapse buttons in the menu used the wrong font.

Introducted in Ia0bb003a9c41e8fa89a87f17e971e16138e1721a.

[BUGFIX] Headline alignment is not persisted

Aloha sanitize removes the style attribute from headline elements when a headline is aligned using aloha.

[BUGFIX] Shortcut rendering is broken in combination with layout

If a layout is applied to a shortcut because of a layout set in the rootpath of the node, then openening the shortcut in the navigate component fails with a ‘Could not read metadata from page’.

This change moves the rendering of the Shortcut from the PrimaryContent prototype to the root TypoScript case object to fix this.

[BUGFIX] Dateselector should do “previous” too

The dateselector incorrectly only moves forward regardless of the arrow clicked, it should go back on the left arrow and forward on the right arrow.

Credits for finding the broken part go to Thomas Hempel. Thanks!

[TASK] Add changelog for TYPO3 Neos 1.0.1

See http://ci.typo3.robertlemke.net/job/TYPO3%20Neos%20Release/3/

[BUGFIX] Handle inline loading of pages without metadata correctly

Check the response for the page metainformation and show an error with explanation. This can be improved by adding a link to the error message that opens the requested location in a new tab in a follow-up.

[BUGFIX] Use FQ TypoScript paths for lastVisitedNode functionality

Change Idaa3e0c5c3393533158840dc0617676f2589c628 made the shorthand TypoScript object names not being found in the prototype Page.ts2 for the lastVisitedNode inclusion. This fixes this by using fully qualified paths.

[BUGFIX] Add a safeguard to the LIBXML_PARSEHUGE constant

This change should fix problems with oder libxml versions not being able to import the content.

[BUGFIX] Fix wrong type annotation that causes compilation problems

[BUGFIX] Fix built-in Menu TypoScript object template

In Ic507c603e1f0ddcd1e70e7df6102a15c51a7332a, the built-in Menu TypoScript Object Template was broken.

Thanks to Johannes Pichler for finding and reporting this issue.

[TASK] Sync with master branch

[BUGFIX] Use correct Page node type for functional tests

(cherry picked from commit f976fde934be2ac757fbd3ee91af394acb2a5819)

[BUGFIX] Fix unit tests after deactivated site change

[BUGFIX] allow text-align and tables

This is done by more relaxed content sanitize rules.

(cherry picked from commit 70b188fa3e054a9136a78e3f7540b62a412e0627)

[BUGFIX] Raw content mode background color

The background was set on the wrapping div and not on the body. As result the color didn’t go to the bottom on pages with shorter content. Also the body class hasn’t been set correctly.

[TASK] Adapt setup to changed styling and provide better information

Depends: Ia562baf8f3a6e92cf38002c9b53d5f2430850d02

[TASK] Implement TypoScript AutoInclude setting for TypoScriptView

Packages can now register with the setting:

TYPO3:
  Neos:
    typoScript:
      autoInclude:
        'MyVendor.MyPackageKey': TRUE

to get TypoScript in the path: MyVendor.MyPackageKey/Private/TypoScript/Root.ts2 included automatically. The order of inclusions is set by the package loading order (and thus dependency chain of your package). This also allows disabling of autoIncludes if needed.

Additionally it cleans the interface of methods in TypoScriptView and TypoScriptService and prevents two parsing runs of the TypoScript by caching the Runtime instance in the view.

Finally removes all references to the NodeTypes package.

[BUGFIX] create new CE in ContextStructureTree uniqueNodeName

[BUGFIX] Checkboxes for inspector image editor not styled

[FEATURE] Allow node type filter in menu

[BUGFIX] Publish menu auto publish positioning

[BUGFIX] Deactivated sites are not taken into account

The frontend always rendered the first site found in the database without taking the state of the site into account. This change filters for online sites and uses the first result.

[FEATURE] Command controller for workspace tasks

Offers a way to publish or discard all nodes in a workspace:

./flow workspace:publishall --verbose user-foo
./flow workspace:discardall --verbose user-foo

[BUGFIX] Abstract content selectable in insert new panel

When inserting new content using the content element handles, the abstract type “Content” is selectable.

[BUGFIX] Default select field shown for node tree filter

Until the availabel document types has been loaded there is a default select box shown.

[TASK] Intergrator Cookbook Customize Inspector

[TASK] Media browser & media browser styling

[BUGFIX] Editing is enabled in preview mode after page reload

[BUGFIX] Preview mode causes error on page load

Because the preview mode updates the node selection it causes a JavaScript error if the node selection hasn’t been initialized. Since we only need the feature if a node is selected we check if the node selection has a selected node first.

[TASK] fix styling of “Getting Started”

[BUGFIX] Fix PluginViewsEditor path in PluginNodeTypePostprocessor

Renames the editor setting to be in sync with the renamed editors in I91542f4412ab4e1d91863c77c8058f6d84461829.

(cherry picked from commit f615c60382c88d0f62715ad4000215e98c5b17b6)

[TASK] Updated Getting Started Documentation

  • Checked index.rst
  • Updated Installation.rst
  • Updated images.
  • Checked and cleaned up YourFirstSite.rst. Removed the section about adding a design since this is documented in the integrator guide.
  • Started filling the UserInterfaceBasics.rst.
  • Added a first impression image for the Backend with bullets to name and the different sections.
  • Commit: c71034b

[TASK] Cookbook for integrating a javascript based slider.

[TASK] Hide empty cookbooks from index

[TASK] Add ‘Select Template based on NodeType’ to cookbooks

This change also removes empty cookbooks from the index and updates the static footer cookbook.

[TASK] Make ContentCollectionImplementation consistent again

[TASK] update documentation (remove outdated parts from menu)

[FIX] improves handling of editing page title and cancelling

[TASK] improving Documentation: Eel and FlowQuery

[TASK] updated integrator guide: Inside TypoScript, Page Rendering

[TASK] Correctly calculate current level in menu

The MenuImplementation now calculates the current level based on the level of the site root and the level of the current document node which give more reliable results especially when using the startingPoint and entryLevel properties.

[TASK] improve documentation: ContentStructure

[TASK] improve Integrator Guide: Content Structure

[BUGFIX] Fix auto publish after page reload

(cherry picked from commit 47ca1404b72001d336afe500d39598535dc63e55)

[TASK] disable Getting Started and Introduction

... as it is totally outdated currently

[BUGFIX] Boolean value must be set correctly during site import

This bug was introduced by I760730dfa57ff9e7abea8138a58fcd46dafa2377 during the import the value are not correctly compared.

[BUGFIX] Fixes refreshing of ContextStructureTree

This fixes the refreshing of the ContextStructureTree upon a page change.

[BUGFIX] Remove CDATA tag from login template

This removes an CDATA tag from the neos login form template that has no use and were included in the rendered output..

[BUGFIX] Fix mock controller context in rendering test

[TASK] Update composer manifest

  • typo3/neos is pinned to 1.1.*

[TASK] Update to use TYPO3.Neos:ConvertUris

This change updates the TypoScript to use the TYPO3.Neos:ConvertUris TypoScriptObject which is now introduced to handle node:// and asset:// links.

Related: NEOS-20

[FEATURE] Add asset list node type

This change adds a new AssetList node type that allows to select multiple assets and renders them as a list of links to the files.

[TASK] Split node types configuration into documents and content

Related: NEOS-72

[TASK] Update composer manifest

See https://ci.typo3.robertlemke.net/job/typo3-neos-branch/3/

[BUGFIX] Form content element is cached

The TYPO3.Neos.NodeTypes:Form is always cached since the content caching is merged. This change sets the mode to uncached.

[TASK] Adapt to changes in TYPO3.Media

This change updates the NodeTypes package to match change I8769987d34ac54a3d36e6d3374040438edf30612

[TASK] Adapt to TypoScript autoInclude of Neos

(cherry picked from commit b3a3a1455e359a4970993257b5e99ffbe79756ec)

[TASK] Mark TYPO3.Neos:Page as abstract

This change marks the NodeType “TYPO3.Neos:Page” as abstract in order to not render it anymore within the backend but keep things working for users updating from beta2 or earlier.

TYPO3.Neos.Kickstarter

[TASK] Update composer manifest

  • typo3/neos is pinned to 1.1.*

[TASK] No namespace include in autogenerated TypoScript

The namespace include in the generated TypoScript is not saving much typing and will just confuse beginners, therefor it is removed.

[TASK] Update composer manifest

See https://ci.typo3.robertlemke.net/job/typo3-neos-branch/3/

[BUGFIX] Do not generate empty YAML file

With a stricter YAML parser an empty file can be regarded as containing no (YAML) document and so be invalid. This change adds a document start marker to the generated NodeTypes.yaml to prevent such errors.

TYPO3.TYPO3CR

[FEATURE] Add FileMonitor to watch changes in NodeTypes.yaml

Custom FileMonitor to watch for changes in NodeTypes used to flush the Neos Content Cache.

Needs Id4aebb951f27b7befe1c1be81301b12679440bfc in TYPO3.Flow

[FEATURE] Migration to dimensions

Adjusts NodeData to actually allow changing the dimensions. Adds Migration Filter for DimensionValues and a Transformation to SetDimensions. With those you can migrate from a state without dimensions to the default dimension values and also from any specific dimension set to another set. Which is useful to change the default language at some point.

The Node Migration added is to move a site from a state without dimensions to configured default dimension values.

[BUGFIX] Adopted node ignores dimensions within context

When adopting a node that already exists in the context it’s returned even if the node dimensions don’t match the context target dimensions. Same happens for nodes that can be retrieved through fallback dimensions in another context. Instead the node should be adopted to the specific target dimensions of the context or an existing node that matches the target dimension values should be reused.

[!!!][TASK] Node Migrations work on NodeData

Node Migrations now work on NodeData directly and do not take Context into consideration anymore.

Another change will follow to filter by workspace if that is really needed for a migration.

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.

Resolves: NEOS-43

[TASK] Introduce removeAllInPath

To be able to remove all nodes inside a certain path a new low level method was introduced that accepts a node path and will remove all NodeData entries below that path (but not the node with the exact path). This method does not care about workspaces or dimensions it will directly delete all matching NodeData entries.

[BUGFIX] Node references throws exception during mapping

If44540ce476c6c85f4665ab3c4bf938fa0cf7d33 introduced a regression caused by trying to parse all node property types, causing InvalidTypeException for unknown types like “reference” and “references”.

[TASK] Use caching when adoptNode creates new variants

[TASK] Use caching for getNodesOnPath in context

[TASK] Add test for node createVariantForContext

[FEATURE] Support array with element type for node properties

This change adds support for arrays with element type (e.g. array<TYPO3\Media\Domain\Model\Asset>) as a node property type.

This is needed for multi-valued node properties (AssetEditor in Neos).

[BUGFIX] Node factory ignores dimensions for internal cache

When creating new nodes from node data the node factory ignores the dimension values of the node data causing it to return cached nodes with different dimension values.

[TASK] Add documentation to NodeDataRepository about internal use

The internal use of that class was not documented correctly.

[BUGFIX] Show master plugins in PluginView inspector

The integration of “content dimensions” (implemented with I96dd82bc2b9861508d180cc265da0e22e8ee56f3) introduced a regression that prevents the “master plugin” from being displayed in the PluginView inspector.

This change fixes this by adjusting NodeDataRepository::findByParentAndNodeTypeRecursively() to the modified signatures of the lower level methods.

[BUGFIX] Use generated node identifier for stable child node creation

The change I71e9ae994c361d72804f49a3080f6706e8e62e82 introduced a regression when creating multiple nodes without an identifier that are nested and have the same child node names. The identifier of a node created with “createNode” and no given identifier will be always the same for all child-nodes.

Fixes: NEOS-90

[BUGFIX] Child nodes that are auto-created have to be materialized

If a node is adopted to a different context or materialized to a different content dimension the child nodes that are auto-created were not correctly processed.

Additionally fix a problem with auto-created child nodes and multiple dimensions through createNode() where the child nodes hat different identifiers.

[TASK] add functional tests for NodeConverter

Related: NEOS-35

[BUGFIX] Consistent generation of dimension hash

Removes some duplicated code for generating the dimension values and moves the generation of the hash into the same method that generates the array of dimension values to have them in sync all the time. Additionally sorts the dimension array by key to have consistent hashes generated at all times.

[BUGFIX] fix boolean property conversion when not using ExtDirect

There are not only _hidden and _deleted as boolean properties, but they can be arbitrary. That’s why this conversion must be done for all conversions in the schema.

This bug was not triggered yet because the change which gets rid of ExtDirect was not yet merged.

[BUGFIX] Child nodes are not deleted when a node is deleted

This moves deletion of child nodes of a node from NodeData::remove() to Node::remove() so that all child nodes get materialized into current workspace and marked for deletion.

Fixes: #NEOS-49

[FEATURE] Allow split source for node types configuration

Resolves: NEOS-72

[BUGFIX] Revert automatic child node cleanup on publish

With I0119e356d415f5d1d881a09fdcb6aedba97a0d46 a regression was introduced that could lead to loosing content on publishing of ContentCollections due to the automatic cleanup of child nodes.

The automatic removal was removed, child nodes are no longer cleaned up after switchting the node type. This problem will be solved in a later commit.

Fixes: NEOS-94

[BUGFIX] isNodeOfType() uses method call on string

The isOfNodeType() method on NodeService accepted strings per docblock but inside the argument was handled like a NodeType instance. Now NodeType is used and requested.

[FEATURE] Node Type Switching

Adds NodeType switching support to the NodeConverter. The NodeConverter now supports:

  • Changing the NodeType of a given Node
  • Creating missing child nodes
  • Setting node default values

Changing the NodeType is not allowed in live workspace. The invalid properties / child nodes are not removed, to allow the use to restore the previous NodeType without data lost. The Node will be cleaned up during publishing.

This patch also makes sure care that a published node contains only valid properties and child nodes. Currently all child nodes based on TYPO3.Neos:Document are never removed. This means that if the child node based on TYPO3.Neos:Document is declared in the childNodes section of NodeType, it will not be removed.

[TASK] code cleanup in NodeConverter and NodeTemplateConverter

[BUGFIX] followup to Idf348e02bb581ffde1db849375c30088b82de1bb, fixing a fatal error

[TASK] refactored dimension value extraction

[BUGFIX] Dimension support in NodeConverter and removal of UUID string support

Because UUID strings do not carry dimension information, we cannot support them anymore.

[BUGFIX] The context path of a node should always contain the workspace name

This is a bugfix for content dimensions.

[TASK] Fix doc block for NodeDataRepository findOneByPathInContext

[FEATURE] Add recursive flag to findByParentAndNodeTypeInContext

Add a recursive flag to the findByParentAndNodeTypeInContext, which findByParentAndNodeType supports.

[FEATURE] Add discard methods to the PublishingService

Changes could be published but not discarded from user workspaces. Now the PublishingService had discardNode() and discardNodes() for that purpose.

[TASK] Use DQL in NodeDataRepository::renumberIndexesInLevel

This patch improve performance if a lots of node are in the current level by using DQL for the select and the update operation.

[FEATURE] Remove dependency on TYPO3.Neos PublishingService

Remove dependency to publishing service in TYPO3.Neos by providing a PublishingServiceInterface that can be overwritten in Objects.yaml

Also introduce a generic publishing service for easy extending of another publishing mechanisms.

[BUGFIX] support multiple-value dimensions

Before this change, this was not supported in the regex which parses context node paths.

(cherry picked from commit b9bf798406b5e567598211c350fa508f170164e1)

[TASK] Fix various CGL violations

[BUGFIX] PostgreSQL migration error: “dimensionshash” contains null

This fixes an error while doctrine:migrate on a PostgreSQL database when adding a NOT NULL column to table typo3_typo3cr_domain_model_nodedata already having rows in it.

[BUGFIX] Workaround for direct access to getProperty in NodeData

AbstractNodeData::getProperty() should always be called with a Context until refactored. But as a workaround we fall back to empty dimensions and the same workspace as the NodeData we ask for its properties.

[BUGFIX] Node status must be correct after publishing

A Node that is published could end up in a state where the associated NodeData object was in fact not matching the Context but the Node would expect different. This is taken care of while publishing now.

Additionally a find method is introduced for the (Neos) PublishingService that orders found NodeData objects in a workspace by path to ensure that parent nodes are published first.

[BUGFIX] Remove use of Transliterator from Utility

The rule given to Transliterator::create() instead of the expected ID did not have any effect. Using createFromRules() instead failed to create a Transliterator instance.

So this change removes the use of Transliterator and instead improves the included “poor mans” transliterator.

[BUGFIX] Node references do not respect context workspace

When a node referenced as a property it doesn’t take the contexts workspace into account but rather the node’s own workspace resulting in wrong instances being returned in non live workspaces.

[TASK] Convert string values to boolean for _hidden and _removed

This change converts string values to boolean for the internal node properties _hidden and _removed. This is required for the Ext.Direct replacement because the Ext.Direct request handling took care of this before.

[BUGFIX] Prevent database error with too long index

For MySQL if innodb_large_prefix is set to off from version 5.6 on an index that is longer than the maximum index size is no longer silently truncated. Instead an error 1071 Specified key was too long; max key length is 767 bytes can be thrown. In that case you have no way to install Neos in this environment because of an index created and removed one version later. As the index is not of much use we should remove it totally from the past migration files to avoid this error.

This change is not marked breaking, the worst thing that can happen is that you are exactly on version 20131129110302 and keep the useless index in your database if you migrate up. The index is also removed from the PostgreSQL migrations in order to have both migrations in sync.

For more details see: http://forum.typo3.org/index.php/t/200966/

[TASK] Add parentPathHash and indexes in NodeData

This change adds a new property in the NodeData model and some indexes in the database. It also changes all query that use the parentPath to use the new property.

The additional indexes result in a huge speed improvement during typical read operations.

[TASK] Cleanup in Node and NodeData

  • remove unused update() in Node
  • reorder some methods in Node
  • rename createNode() to createNodeData() in NodeData
  • rename createSingleNode() to createSingleNodeData() in NodeData
  • rename createNodeFromTemplate() to createNodeDataFromTemplate() in NodeData
  • remove findOnPathInContext() from NodeDataRepository
  • test adjustments and cleanup

Might be a breaking change for code which relied on the non-public API which was modified in this change.

[TASK] Remove ContextInterface

With the introduction of the 1st level cache for nodes the interface would have needed the getFirstLevelCache() method - otherwise it would have been useless.

OTOH this is rather internal and the existing context implementation is pretty complex - I doubt implementing from scratch would be helpful.

This the ContextInterface is removed.

[TASK] Add first level cache for nodes

A new FirstLevelNodeCache is implemented and used in the Context and Node to serve identical queries for nodes from memory.

Needs Ic48370e9dcc752efa313a79fc8daf0cbc6761eaa in TYPO3.Neos for the functional tests and Behat features to pass because of the changes in Context.

[FEATURE] Flexible content dimensions (and localization)

This change implements content dimensions for nodes with fallback to most specific matchers. This is a generic solution for the localization problem that allows further dimensions in the future.

A new NodeDimension entity stores dimension values for each NodeData, so a node variant can have multiple dimension values assigned (e.g. a set of locales).

DimensionValues are also cached inside NodeData for optimized reading speed.

Behat features provide scenarios to specify and test the localization implementation against various use cases.

Needs Iadbe03a194141a49c8fea0e6715b07750f11c726 in TYPO3.Neos for the functional tests and Behat features to pass because of the changes in Context and ContextFactory.

[FEATURE] A type converter from NodeInterface to string

This change adds a type converter to create a serialized string representation from nodes (using the node context path).

[TASK] Code cleanup in NodeFactory

[TASK] Fix wrong hint in method docblock

The @deprecated notice on __call() pointed to two wrong method names.

[FEATURE] Provide API for search engine

This change adds signals and other APIs to enable third party packages which act as an (alternative) search engine for TYPO3CR nodes.

[BUGFIX] materialize NodeData in removeProperty()

In removeProperty() the underlying NodeData was not materialized as needed.

[TASK] Adapt to YAML parser change in Flow

Makes the yaml files comply fully to the yaml syntax so that they can be parsed by the YAML parser of the PECL extension.

[TASK] Support “CacheAwareInterface” in Node

This change adds a method to Node which returns an identifier which can be used for cache entries.

[FEATURE] Allow to preset node identifier in NodeTemplate

If creating nodes from external data it can be useful to set the UUID the new nodes get. This change adds setIdentifier() to NodeTemplate.

[BUGFIX] Make reference(s) properties self-repairing

It could happen that properties if type reference(s) end up in the properties of NodeData not as identifiers (as expected) but as serialized NodeData instances. This change repairs those cases on-thy-fly.

Also it amends the check when settings reference(s) properties to also handle AbstractNodeData in addition to NodeInterface.

TYPO3.TypoScript

[TASK] Flush content cache in more occasions

At the moment we clear the content cache if TypoScript, Fluid or NodeTypes.yaml changes. This covers most cases, but not all.

This change also clears the content cache if settings, translations or PHP code changes. This makes sure that the content cache does not cause problems for people working in PHP plugins / TypoScript objects or translation files.

[FEATURE] Re-throw unchanged exception in ThrowingHandler

To get accurate TypoScript paths for the original exception, the ThrowingHandler should just throw the given exception without unwrapping a TypoScript RuntimeException.

Since there could now be a RuntimeException at the outer TypoScriptView render call, we need to catch it and unwrap it there.

The system logger calls are moved to the exception handlers to save some calls since duplicated exceptions would show up for each instance of a ThrowingHandler.

[FEATURE] Add FileMonitor for TypoScript and Cache clearing

Custom FileMonitor to watch changes in TypoScript files. Adds flushing of the content cache when either NodeTypes, TypoScript or Template files are changed.

Needs: Id4aebb951f27b7befe1c1be81301b12679440bfc in TYPO3.Flow

[TASK] Build entryIdentifier from valid context values by default

This change updates the Runtime to use all valid context values (string, integer, boolean, object implementing CacheAwareInterface) as the default cache identifier values if no “@cache.entryIdentifier” configuration is given.

If the user specified an invalid value in the “@cache.entryIdentifier” configuration an exception will be thrown.

Resolves: NEOS-75

[BUGFIX] Remove cache segment markers also if an exception occurred

This removes cache segment markers also if an exception occurred in an inner cached path. This fixes the problem where leftover cache segment markers showed up in the content.

[TASK] improve functional test coverage of TypoScript

[TASK] Throw an exception if an uncached segment has no context

Currently an uncached TypoScript cache segment without at least one context variable throws a really nasty exception. The user can not understand that the problem came from the cache configuration. This patch adds a proper Exception for this case.

Resolves: NEOS-83

[TASK] Register the TYPO3.Eel MathHelper in the TypoScript EEL context

This change enables the use of MathHelper functions inside TypoScript EEL expressions:

maximumWidth = ${Math.round(1200 / gallery.rows)}

Note that there aren’t so many functions in MathHelper for now, but that will probably change.

[BUGFIX] Fixes Incompatibility with PHP 5.3

Replaced call to self:: in an anonymous function to prevent PHP 5.3 from throwing a Fatal Error (Cannot access self:: when no class scope is active).

[BUGFIX] TYPO3.TypoScript:UriBuilder uses undefined method

The TYPO3.TypoScript:UriBuilder objects uses getTsRuntime() internally.

This is probably a leftover because it first extended the TemplateImplementation object. This change replaces the call by accessing the tsRuntime property directly.

[TASK] Fix various CGL violations

(cherry picked from commit a3609c8a67a24e3bc139530fadffd137762e5559)

[TASK] Disable content caching if an exception occurs

This change disables the content cache in the render() method of the TypoScript runtime if an exception occurred. Previously, error messages might have been cached and thus displayed even if the error does not occur anymore.

While this is not the most graceful or beautiful solution, it solves the problem of cached error messages.

[!!!][TASK] Not all TypoScript objects get their sub properties

Some TypoScript objects need the sub properties to create an ordered list and iterate, like the Case or Array. But TypoScript objects like Tag and Value access all information via tsValue and so do not need the actual sub properties set.

This is only breaking if you implemented a custom TypoScriptObject implementation class and it needs access to arbitrary properties. In that case you need to extend AbstractArrayTypoScriptObject now.

[TASK] Disable content cache in Testing context

The content cache should be activated explicitly in functional tests.

[TASK] Microoptimizations in Parser

Array count() is rather expensive and is replaced by using empty() and end() on the array which saves some microseconds.

[BUGFIX] Correctly apply processors to cached and uncached segments

Fixes an issue introduced in a577b9541f35a42747aa98f397f39654a5d23c83

[TASK] Sanitize tags for content cache entries

This change adds sanitizing for tags added to content cache entries because they might contain non-allowed characters. One example is the NodeType tag added by Neos which might be, for example:

“NodeType_TYPO3.Neos:Page”

[BUGFIX] PHP 5.3 compatibility issue in ContentCache closure

This change fixes a problem in a closure function that accessed $this which is only supported with PHP > 5.4

[BUGFIX] isEven & isOdd not supported in TYPO3.Neos:ContentCollection

[FEATURE] TypoScript content cache

A nested cache implementation for the TypoScript runtime.

Every TypoScript path that is an object can be marked as cacheable with a new @cache meta property:

root.myPath.@cache.mode = ‘cached’

This will create a cache entry for everything rendered inside this path on the first execution if the “enableContentCache” is set to TRUE for the runtime through the setting (TRUE is default here) or view option.

The cache entry identifier is auto-generated from the current context if not specified explicitly with “entryIdentifier” beneath the @cache property:

root.myPath.@cache.entryIdentifier {
        node = ${node}
}

The identifier should be configured to include the minimal amount of context information that is needed to have distinct cache entries.

Cached paths can be nested with different entryIdentifier configuration to allow for the re-use of cached parts in different contexts (e.g. a menu or sidebar that is included on many pages in Neos).

A cache entry will be tagged with “Everything” if the “entryTags” configuration is not given. Custom tags should be set depending on the content to have a more intelligent flushing strategy (which depends on the application):

root.myPath.@cache.entryTags {
        1 = ${'Node_' + documentNode.identifier}
}

For dynamic content that should always be evaluated (regardless of being nested inside cached content) the caching can explicitly be disabled:

root.myPath.dynamic.@cache.mode = 'uncached'

These parts will be rendered using the TypoScript runtime with all serialized context values, unless the “storeContext” property is configured. This property should be configured to include the minimal amount of context variables that are necessary to render the uncached path:

root.myPath.dynamic.@cache {
        mode = 'uncached'

        context {
                1 = 'node'
        }
}

The change depends on If7b615939a4216e6c3178c5a4f4a2b0e7a156041 in TYPO3.Flow for property mapping from object to simple type. To store Node context values for uncached segments change I747da3e32f89d4a6bde3886584e391a66201441d is needed in TYPO3.TYPO3CR. Change Ia83bd0dc6ba50150463b84d24f546d1da682a048 integrates the content cache with Neos for automatic cache flushing by tag on changes to nodes. The logging depends on TYPO3.Flow commit 14bacb4a8c38068ab56fb6ec23981e2d26f0bbd6.

Revert “[FEATURE] Cache the merged runtime configuration”

This reverts change I3e4e70040c4e367f72c1b0a0321b2fe146851c5a. The runtime cache can have a negative impact because of higher memory consumption (> 10x). The overall performance effect has to be evaluated again.

[FEATURE] Cache the merged runtime configuration

For a given parsed TypoScript the runtime configuration can be cached without loosing the ability to change the TypoScript. Changes to the TypoScript will result in new cache entries and so the cache does not interfere.

[FEATURE] Cache results of tsValue() calls

This change caches the results of tsValue() calls in TypoScript objects. That way the number of calls to FlowQuery operations is minimised and their results are more predictable.

With this change

  • tsValue() caches the result, and behaves like a simple accessor
  • tsRuntime->evaluate() will not cache the result
  • Commit: 0ae42c4

[BUGFIX] Protypes don’t use FQN

Because the prototype definitions don’t use the FQN namespace issues occur where TYPO3.Neos:RawArray is used instead of TYPO3.TypoScript:RawArray

[TASK] Prevent Exceptions in TypoScriptPathProxy

[TASK] TypoScript Parser shouldn’t be singleton

[BUGFIX] Default namespace is not available in included TS files

A default namespace (or any other namespace) defined in the TypoScript parser is not defined for included TypoScript files because the parser will create a whole new instance when parsing the include. This change fixes this behaviour by creating a clone of the parser instead.

TYPO3.NeosDemoTypo3Org

[TASK] Add content cache configuration to TypoScript

Add a @cache configuration to serveral parts of the site for proper cache handling.

[BUGFIX] Temporary accounts should be limited to role Editor

Currently any demo account has full Administrator privileges, which also allows access to the package and user management. This is unexpected and should be changed to a less privileged role.

[BUGFIX] Remove two left-over “TYPO3.Neos:Page” occurrences from Sites.xml

(cherry picked from commit 2951bdc410f8044d0d51a35227d9118bc099be67)

[BUGFIX] Make normal images fluid

(cherry picked from commit 3abffc4371f81f592e9a4cb741b9fb5bb405b714)

[BUGFIX] Demo site pages use the page from nodetypes

(cherry picked from commit dd5e7d94c38c2ff5bf95238d78b28422cf3880cb)

[TASK] Cleanup and document content elements

Adds inline documentation to TypoScript and NodeType definitions and tweaks PHP, TS and HTML snippets.

[TASK] Finishing touches for the demo site

Carousel only renders images. Images in header are responsive. Added headers to alle pages without one. Rearranged menu items and content. Added flickr plugin.

[FEATURE] Flickr plugin example

Adds a simple “flickr” plugin to the demo site to demonstrate the PluginView feature of Neos.