New minor release introducing TYPO3 7.6 LTS compatibility - which also means that from this point onward, the minimum
supported TYPO3 version is 7.6. For those that still require critical fixes but must remain on for example TYPO3 6.2 we provide
a legacy
branch: https://github.com/FluidTYPO3/flux/commits/legacy
However, some notes about the legacy
branch:
- We Provide this branch as-is, not guaranteeing compatibility.
- We do not actively maintain this branch:
- We happily accept suggestions for fixes including code
- We happily accept pull requests to the legacy branch (but please observe our contribution guidelines very closely when making patches for this branch - we aim for a minimal maintenance effort)
- There is no expected maximum lifetime of the branch, but you should prioritise upgrading your TYPO3 site to LTS as soon as you can. The 6.2 branch of TYPO3 no longer receives bug fixes (including security patches).
The following new changes and features are highlighted:
This change means that all Flux ViewHelpers can now be compiled to native PHP which increases the performance, in particular for templates that have many instances, such as page templates.
However, this change has required a small change to the internal API of Flux: the getComponent
method on Form component
ViewHelpers is now static
which may yield warnings if you use custom component ViewHelpers - and depending on your PHP version.
Very few should be affected since custom components are rare, only causes warnings and only warns on newer versions of PHP.
A special registry has been introduced to facilitate easy version based dependency configuration. Essentially it allows you to provide a list of TYPO3 versions and values that apply to that version, with resolving happening in a way that the maximum viable configuration always gets returned. For example you can specify class names to return for TYPO3 versions 7.4 and 7.6, and if the active version is 7.5 the 7.4-specific class name gets returned (because the 7.6-specific one cannot be used).
\FluidTYPO3\Flux\Utility\CompatibilityRegistry::register(
'MyVendor\MyExtension\MyClass',
array(
'7.4.0' => 'MyVendor\MyExtension\Legacy\MyClass',
'7.6.0' => 'MyVendor\MyExtension\MyClass'
)
);
\FluidTYPO3\Flux\Utility\CompatibilityRegistry::get('MyVendor\MyExtension\MyClass');
The compatibility registry is introduced to make version checks completely uniform and allow any number of alternatives to be speficied, consistently returning a single value without you having to care about checking TYPO3 versions. In addition, the static signature means you can use the registry from anywhere (and manipulate it without mocking from unit tests).
Provider classes are fitted with a method that together with the new FormEngine allows TCA to be manipulated freely. If a Provider
is triggered when editing a record, every aspect of the editing form's composition can be manipulated. To utilise this feature all
you need to do is implement public function processTableConfiguration(array $row, array $configuration)
in your Provider class
and make the method return the (modified) $configuration
array. The $configuration
array is a big array of FormEngine
configuration and is at the time of writing this not fully documented. See the official TYPO3 documentation for more information
about the FormEngine configuration - or debug the array and make your own experiments, it's not too difficult except for the size.
- ViewHelper
flux:field.tree.category
added as shorthand to configure asys_category
relation field - Bugfix to preserve and merge
$this->settings
from other controller when rendering sub-requests - Compatibility for use with standalone Fluid as dependency
- Bugfix for passing arguments of original request to foreign controller
- Feature to specify default values associated with a
flux:form
- can be consumed by other features for any purpose - Bugfix for visibility of sorting arrows in list view and assignment of correct permissions used for visibility of action links
- Bugfix for cleaning of stored data
- Feature to allow Provider classes to manipulate TCA on-the-fly
- Feature to toggle display of nested content elements in list view (use may have unexpected results but is widely requested)
- Bugfix for moving elements from within nested content to top of page column (regression)
- Bugfix for default value resolving of
foreignUnique
field - Bugfix to ensure correct calling of Provider commands for each DataHandler command provided
- Styling fixes for 7.6 compatibility
- Legacy (6.2) compatibility classes and functions removed
- Various bug fixes and adaptations for compatibility with FormEngine
- Feature to translate
<flux:field.select />
items lists provided as CSV, using naming convention https://github.com/FluidTYPO3/flux/commit/c5c79ea3f6b42c5abe48b24fab0a96d326cbc7df - Bugfix for custom icon position
- Bugfix to clean empty element lists from stored data
- Bugfix for using root TS templates on separate page root lines
- Usage examples documented
- https://github.com/FluidTYPO3/flux/commit/cbf421b69552e5fa44ed2ceebe021f6f20e0cd66
- https://github.com/FluidTYPO3/flux/commit/5c5866422339d34b9a5e80e947d688bbada41a4b
- https://github.com/FluidTYPO3/flux/commit/7afcf893fbf82e559cb2d91a2c516f6a6e128ee6
- https://github.com/FluidTYPO3/flux/commit/be5a69dd0969b020c26395638905966da3685c14
- https://github.com/FluidTYPO3/flux/commit/7a582a845585b0636a79c1240edc589012493995
- https://github.com/FluidTYPO3/flux/commit/26e0d037546ff888a24e606cd74a35293377aec1
- https://github.com/FluidTYPO3/flux/commit/cd53145887d03336f3ee569dc3a499d156dbe5ea
- https://github.com/FluidTYPO3/flux/commit/9f2d9ca40ca6e30546b88dcfa4ecd816d4a88371
- https://github.com/FluidTYPO3/flux/commit/4101a89130bee4ec953cb4acae7a7db9d009fc97
- Bugfix to skip language overlays in default language
- Bugfix for
isForeign
check preventing resolving of controller classes by foreign extension key - ViewHelpers added for Form options
sorting
andtranslation
allowing both to be documented by ViewHelper references - CompatibilityRegistry created with the purpose of handling version-dependent configuration, feature flags and class substitution
- Bugfix for vendor name not being used when retrieved from controller context (resulting in controller class not being resolved)
- Every ViewHelper is now compilable, for a significant performance boost in sites using many instances of the same template
- https://github.com/FluidTYPO3/flux/commit/fdcb40ffd8145f9eb30d25017973b430ada814ae
- https://github.com/FluidTYPO3/flux/commit/5cf43c76d2659c2138bed321e0c472efcda3bfdc
- https://github.com/FluidTYPO3/flux/commit/089bab4c591f84056ac1c05f0ef9b1567030c726
- https://github.com/FluidTYPO3/flux/commit/07e804ced973421e1224a4cd02d693e94070bad9
- https://github.com/FluidTYPO3/flux/commit/7c32264321387e9edc9786ab5a493777ba3199a2
- Bugfix for localisation behavior when multiple languages exist
- TYPO3 7.5 compatibility improvements
- Bugfix for catching when parent record localisation is deleted
- Bugfix to give "show hidden content elements" a default value when rendering child content
- Bugfix for relationship of localised child records
- Bugfix for incorrect package name in sub request when original request exists
- Bugfix for path resolution on Windows environments
- TYPO3 7.5 compatibility improvements
Solid round of bug fixes mainly, few added minor (and fully backwards compatible) features and focus on fixes for drag-and-drop and copy-paste behavior on TYPO3 6.2. Some minor fixes for workspaces support.
Notable changes/features:
- Template paths now use
0
as default index instead of previous10
. This can have an adverse effect on sites that for some reason has one or more sets of templates which: a) are configured by replacing the default10
index, AND, b) have removed one or more templates that exist in the original path. Such a setup may begin to display previously disabled template files as selectable options in the backend. To fix this, update your TypoScript template paths to use0
as the bottom priority paths. - Icons now support SVG files. Not much to say about this one - use an
.svg
file as icon for a template, either through theicon
Form option or by placing it in the convention-based expected icon path. - Form now supports
sorting
as a global option that can be used by any implementation; previouslyfluidcontent
added its own but can now delegate this to Flux. This means that from now on you should defineoptions="{sorting: 10}"
instead of wrapping the sorting value in a scope like{Fluidcontent: {sorting: 10}}
. - When rendering Requests and when retrieving Form instances from templates, Flux will now respect the
vendorName
request parameter - and will in fact pass-through the original Request (as a cloned instance) whenever an original Request exists. Though this change doesn't have any effect on the surface, it does improve frontend rendering scope consistency when rendering through a custom Flux controller. - TYPO3 7.4 is now supported.
List of all changes affecting users:
- Bugfix for record drag-and-drop in anticipation of TYPO3 7.5
- Bugfix for correctly generating
emptyOption
onflux:form.select
and enabling the use of the property on ViewHelpers - Added "localize" buttons for content containers
- Added support for calling Pipes of Form's Outlet when TYPO3 executes a command on record associated with Provider and Form
- Added support for
matchFields
(TCAMM_match_fields
) onflux:form.select
and other relation components - Permit
getPreview
to throw error if template file is configured but does not exist or reference is incorrect - Remove default "Flux" controller name when reading Form etc. - no longer applies; invoking extensions' controller name now used.
- Bugfix to only show non-child content records in list view. Content elements placed inside Flux areas now not rendered.
- Bugfix for Provider not returning template path and filename unless prefixed with
EXT:
- now allows absolute paths - Bugfix for warnings caused by removing/uninstalling an extension while configuration still exists
- Bugfix for warnings caused by copying a record with an already-extracted set of Flux values
- Fixes for resolving action of Flux controllers and presence of controller classes
- Full passthrough of original Requests (as clone) for all Flux implementations - full control over execution scope from outside
- Bugfix to allow vendor name to be set in Requests transferred to Flux controllers
- FlashMessages (unsafe on TYPO3 7.4+) replaced with syslog messages
- Bugfix to respect "Show hidden elements" checkbox in page layout view
- Translate (overlay with localised version) page values that are available as
{page}
in template - SVG support for icons
- Bugfix for editing child records in a non-live workspace
- Form option
sorting
is now supported as global option to indicate sorting order of resulting Form objects - Bugfix/performance during Provider resolving when no provider is resolved
- Bugfix for value of
tx_flux_parent
in translated versions of records - Parent/area now transferred correctly when using "save and add new after" inside a Flux content area
- Bugfix for ContentProvider to trigger on every
tt_content
record - ensures copy/paste handling triggers - Inheritance control arguments implemented in ViewHelper API of Section and Object
- Bugfix to disallow pasting an element as child of itself (preventing endless loop)
- Bugfix for grid rendering in Preview section
- Bugfixes for icon supports
- ❗ Template paths use
0
as default index instead of10
, to prevent confusion - Bugfixes for drag-and-drop / copy-paste support
- https://github.com/FluidTYPO3/flux/commit/5ca68331dca6abd9339c24f13e7e0b3fdfa5e4d9
- https://github.com/FluidTYPO3/flux/commit/7b128294804ec9df61dfe8466642e016a0e9db8b
- https://github.com/FluidTYPO3/flux/commit/bd4b46e10d4fc3dc5bd95c3bd4a2f2c1df0e78fe
- https://github.com/FluidTYPO3/flux/commit/b920849a701be93a6781a9788202ce62b791a855
- https://github.com/FluidTYPO3/flux/commit/5b4bf945b36bf2eb2337344ca94edb0e7c826d50
- Bugfixes to clear out stored data if all data is empty
- Bugfix for objects used inside sections in forms not using the right parent
- Bugfix to avoid rendering Preview section when template file is missing/unresolved.
-
Bugfixes for moving of records when using
css_styled_content
and Flux. -
Bugfixes for behavior or localisation (translated record would remain in original position).
-
Bugfix for resolving of active page UID in environments with multiple root TypoScript templates.
-
Bugfix for PHP error when viewing uncached frontend without an active backend user login.
-
A deprecated Wizard configuration has been corrected, restoring operability on TYPO3 7.1 and above.
Flux has undergone a lot of maintenance work and optimisations. The main goal has been to increase performance and remove bottlenecks, and to make the Flux API simpler and more consistent to use. A lot of legacy support has been removed and the existing support for template paths has been improved, bringing it completely into sync with the TYPO3 core. Overall, Flux now uses much more of the TYPO3 core's code to do the job especially concerning the View aspect.
-
Full TYPO3 7.1.0 support.
-
Full TYPO3 6.2.0 support (including new composer autoloader feature).
-
❗ Legacy namespace support completely removed
- It is no longer possible to use any of Flux classes by their legacy names. Switch to the proper vendor and namespace.
-
Support for disabling the Fluid template compiler was removed. The TYPO3
Development
context plus file monitoring now works. -
Custom Form classes can now be resolved by naming convention
- Convention:
^Classes/Form/{$controllerName}/{$action}Form
- Convention:
-
Records' additional data now rendered in nested columns
- Access restrictions, start- and end-time are now displayed in a row below each content, if they are defined.
-
Template path definitions were harmonised
- Multiple paths are supported using the
templateRootPaths
(plural) namings for all paths. - Template paths can now be defined using any of the known namings, but:
- The
templateRootPath
andoverlays.xyz.templateRootPath
namings are deprecated and support will be removed in another two versions.
- Multiple paths are supported using the
-
All Form components now support the
enabled
attribute- Default value is
TRUE
- value can be changed toFALSE
to make the component not be rendered.
- Default value is
-
❗ Inheritance support removed from Provider base class
- The inheritance feature is moved to Fluidpages to limit complexity of Flux itself.
- If your custom Provider relied on inheritance and was not already extending the PageProvider of Fluidpages, extend it now to restore inheritance.
-
Overrides of all Flux form values became possible through TypoScript
-
Icons associated with Flux forms are displayed in page module
- The icons can be seen in the page module's content overview as well as in list mode.
- The icons (selected page template) of pages can be seen in list view.
-
Icons can now be resolved by name convention
- Convention:
^Resources/Public/Icons/{$controllerName}/{$actionName}.(gif|png)
- Convention:
-
The
multiRelation
field type was added- The field type that creates the
group
TCEforms field type was added. - https://fluidtypo3.org/viewhelpers/flux/master/Field/MultiRelationViewHelper.html
- The field type that creates the
-
Additional ViewHelpers added to define Form options
- Rather than using the
options
property onflux:form
, a set offlux:form.option
andflux:form.option.*
ViewHelpers are added. - https://fluidtypo3.org/viewhelpers/flux/master/Form/OptionViewHelper.html
- https://fluidtypo3.org/viewhelpers/flux/master/Form/Option/GroupViewHelper.html
- https://fluidtypo3.org/viewhelpers/flux/master/Form/Option/IconViewHelper.html
- Rather than using the
-
All Flux ViewHelpers can now use the
extensionName
argument to switch context- You can set this attribute in for example an overridden partial template containing Flux components.
- Overriding the
extensionName
makes LLL values and other automatically resolved values be resolved from that extension. - The original
extensionName
argument onflux:field.controllerActions
has been renamed tocontrollerExtensionName
because of this. - Background info