Skip to content

1.0.0

Compare
Choose a tag to compare
@nhovratov nhovratov released this 15 Oct 10:03
· 36 commits to main since this release

Ride the wave with Content Blocks in TYPO3 v13 LTS 🌊 πŸ„β€β™€οΈ

After 2.5 years since I joined forces with the Structured Content Initiative in TYPO3 Camp Mitteldeutschland in Dresden 2022 we finally can proudly announce Content Blocks version 1.0.0 for TYPO3 v13 LTS (yeah!) πŸŽ‰ πŸŽ‰ πŸŽ‰
An incredible amount of work went into this project. This wouldn't have been possible without all of the people trying out early versions and give us valuable feedback. Many thanks for your trust! Your faith in us will now be rewarded with a smooth transition to the now stable version.

Content Blocks v1.0.0

New home for Content Blocks

The most important change for you is the new vendor name of this package. The project moved to https://github.com/FriendsOfTYPO3 and thereby can now be installed by the name friendsoftypo3/content-blocks. It will now be further maintained by us, the Content Types team, but also by the Core team.

Breaking changes

New AssetPathViewHelper

cd4e1d2 [!!!][TASK] Introduce AssetPathViewHelper

We replaced the custom AssetViewHelpers with a new AssetPathViewHelper. Now you can use the Core AssetViewHelpers and only use the custom ViewHelpers to build the path to your asset.

Before

<cb:asset.css identifier="cbAccordionCssBackend" file="EditorPreview.css"/>

After

<f:asset.css identifier="cbAccordionCssBackend" href="{cb:assetPath()}/EditorPreview.css"/>

New LanguagePathViewHelper

ce8d8af [!!!][TASK] Replace custom TranslateViewHelper with LanguagePathViewHelper

We replaced the custom TranslateViewHelper with a LanguagePathViewHelper that is used to build the translation key.

Before

<cb:translate key="readmore"/>

After

<f:translate key="{cb:languagePath()}:readmore"/>

Core integration: RecordObject

e2c003c [!!!][TASK] Integrate Record object into ContentBlockData
Feature: #103783 - RecordTransformation Data Processor

One of the integrations into the Core include the new RecordObject feature. The switch caused some object accessors to change in Fluid.

  • {data._raw} ➑️ {data.rawRecord}
  • {data.typeName} ➑️ {data.recordType}
  • {data.tableName} ➑️ {data.mainType}
  • {data.creationDate} ➑️ {data.systemProperties.createdAt}
  • {data.updateDate} ➑️ {data.systemProperties.lastUpdatedAt}
  • {data.localizedUid} ➑️ {data.computedProperties.localizedUid}

Core integration: RelationResolver

dc1730d [!!!][TASK] Use Core RelationResolver (#225)
Feature: #103581 - Automatically transform TCA field values for record objects

The relation resolving / expansion is now completely backed up by the Core. This lifts a heavy weight from Content Blocks as it is one of the most complex and important features. The switch shouldn't be too breaking. Only known hard changes are for type Folder. Instead of File objects, Folder objects are now returned. These are resolved recursively by default, so the option recursive is now obsolete.

Checking for existing type "Link" before:

<f:if condition="{data.link_field}">
    <!-- -->
</f:if>

Checking for existing "Link" after:

<f:if condition="{data.link_field.url}">
    <!-- -->
</f:if>

New way of accessing files from type "Folder":

<f:for each="{data.folder}" as="folder">
    <f:for each="{folder.files}" as="image">
        <f:image image="{item}" />
    </f:for>
</f:for>

New folder structure

d96cbc5 [!!!][TASK] New Content Block folder structure (#248)

In order to align with modern guidelines, the Core strives to lift arbitrary rules for file names like UpperCamelCase for Fluid templates. Content Blocks now uses lowercase file names for all its pre-defined folders and files. Also, some files have been renamed. The new structure looks like this:

β”œβ”€β”€ assets
β”‚   └── icon.svg
β”œβ”€β”€ language
β”‚    └── labels.xlf
β”œβ”€β”€ templates
|   β”œβ”€β”€ partials
|   |   └── Component.html
β”‚   β”œβ”€β”€ backend-preview.html
β”‚   └── frontend.html
└── config.yaml

Partials and Layouts still have to be UpperCamelCase due to Fluid limitations.

Content Blocks has an upgrade wizard for easy migration:

typo3 upgrade:run contentBlocksFolderStructureMigration

Custom Field Type registration

3d01a7d [!!!][TASK] Use PHP attribute to register and configure Field Types (#255)

Field Types are now registered with PHP attributes. Have a look at the documentation to see how your class needs to be adjusted.

Features

There are only a few new features, as the focus was on integrating crucial parts into the TYPO3 Core.

065409a [FEATURE] Field type "Pass"
4351148 [FEATURE] Previews for Record Types
480b246 [FEATURE] Allow to define custom icon for is site root state

Thank you

Special thanks to @bmack, @o-ba and @bnf from the Core team who pushed the Core integration forward.

Huge thanks to my team @krausandre, @ManuS3009, @PKuhlmay, @jonaseberle and @filippos-gmk who are always there for bi-weekly calls and hear out my crazy ideas.

Honorable thanks to @typecat. Hey Liddy, we did it! Thanks so much for your dedicated effort in the past to spread Content Blocks into the world.

Thanks to all contributors, testers and early adopters of Content Blocks.

Nikita Hovratov - Content Blocks developer