[TASK] Switch release CI task to ubuntu-latest

[TASK] Switch release CI task to ubuntu-latest
NamelessCoder 2025-02-21

[TASK] Ignore new phpstan warning

[TASK] Ignore new phpstan warning
NamelessCoder 2025-02-21

[BUGFIX] Use ExpressionBuilder::and when available, andX as fallback

[BUGFIX] Use ExpressionBuilder::and when available, andX as fallback

TYPO3v12 brings a deprecation warning when copying a container with
nested content elements:
> TYPO3 Deprecation Notice:
> ExpressionBuilder::andX() will be removed in TYPO3 v13.0.
> Use ExpressionBuilder::and() instead. in
> vendor/typo3/cms-core/Classes/Database/Query/Expression/ExpressionBuilder.php
> line 72

The `and` method was introduced in TYPO3v11, and in v12 it was deprecated.

This patch switches the order: When `and` is available, it is used,
and the code falls back to `andX` for TYPO3v10.

Changelog:
https://docs.typo3.org/c/typo3/cms-core/main/en-us/Changelog/12.0/Deprecation-97354-ExpressionBuilderMethodsAndXAndOrX.html

Resolves: https://github.com/FluidTYPO3/flux/issues/2233
cweiske 2025-02-06

[BUGFIX] Use associative array for TCA items

[BUGFIX] Use associative array for TCA items

TYPO3v12 introduced associative array keys for items in TCA select fields:
label, value, icon, group.
The indexed item arrays were deprecated at the same time, throwing warnings
in TYPO3v12+:

> TYPO3 Deprecation Notice:
> FlexFormTools did an on-the-fly migration of a flex form data structure.
> This is deprecated and will be removed.
> Merge the following changes into the flex form definition "content.field":
> The TCA field 'dummyField' of table 'dummyTable' uses the legacy way of
> defining 'items'.
> Please switch to associated array keys:
> label, value, icon, group, description.
> in vendor/typo3/cms-core/Classes/Configuration/FlexForm/FlexFormTools.php
> line 1127

flux now uses the integrated SelectOption class that handles the version
difference internally.

Changelog:
https://docs.typo3.org/c/typo3/cms-core/main/en-us/Changelog/12.3/Feature-99739-AssociativeArrayKeysForTCAItems.html#feature-99739-associative-array-keys-for-tca-items
https://docs.typo3.org/c/typo3/cms-core/main/en-us/Changelog/12.3/Deprecation-99739-IndexedArrayKeysForTCAItems.html#deprecation-99739-indexed-array-keys-for-tca-items
cweiske 2025-02-06

[BUGFIX] Always fetch ContentObject from request in TYPO3v12+

[BUGFIX] Always fetch ContentObject from request in TYPO3v12+

The ContentObjectFetcher was introduced to have a common API
for fetching the current content object across different
TYPO3 versions.

This class logs a deprecation notice in TYPO3v12:
> TYPO3 Deprecation Notice:
> ConfigurationManager->getContentObject() is deprecated since TYPO3 v12.4
> and will be removed in v13.0.
> Fetch the current content object from request attribute
> "currentContentObject" instead in
> vendor/typo3/cms-extbase/Classes/Configuration/ConfigurationManager.php
> line 96

To prevent this from happening, we check for the TYPO3 version and
always use the request instead of the configuration manager in TYPO3v12+.

Note: In TYPO3v12, "$request->getAttribute('currentContentObject')" does
not always return the content object.
We thus fall back to TypoScriptFrontendController, which always has it.
(Code taken from vhs)

Related: https://github.com/FluidTYPO3/flux/pull/2190
cweiske 2025-02-05

[BUGFIX] Remove TCA inline "showRemovedLocalizationRecords" property

[BUGFIX] Remove TCA inline "showRemovedLocalizationRecords" property

.. in TYPO3v12+ because that property has been removed.

Deprecation notice:
> TYPO3 Deprecation Notice:
> FlexFormTools did an on-the-fly migration of a flex form data
> structure.
> This is deprecated and will be removed.
> Merge the following changes into the flex form definition
> "content.fieldname":
> The TCA field 'dummyField' of table 'dummyTable' is defined as type
> 'inline' with the 'appearance.showRemovedLocalizationRecords' option
> set. As this option is not evaluated anymore and no replacement
> exists, it should be removed from TCA.

TYPO3 core patch:
https://review.typo3.org/c/Packages/TYPO3.CMS/+/69665
cweiske 2025-02-05

[FEATURE] Add German translation

[FEATURE] Add German translation
cweiske 2025-02-03

[TASK] Add README about translation files and contributions

[TASK] Add README about translation files and contributions
NamelessCoder 2025-02-03

[TASK] Replace ViewHelper documentation link in README

[TASK] Replace ViewHelper documentation link in README
NamelessCoder 2025-01-27

[BUGFIX] Avoid LocalizationUtility in Grid class

[BUGFIX] Avoid LocalizationUtility in Grid class
NamelessCoder 2025-01-26

[TASK] Clean up class imports

[TASK] Clean up class imports
NamelessCoder 2025-01-26

[BUGFIX] Use ViewBuilder's TemplatePaths to gain fallback ability (#2…

[BUGFIX] Use ViewBuilder's TemplatePaths to gain fallback ability (#2224)
NamelessCoder 2025-01-26

[FEATURE] Deliver fallback TemplatePaths if unable to read TypoScript…

[FEATURE] Deliver fallback TemplatePaths if unable to read TypoScript (#2223)

Adds a fallback handling which delivers template path setup
based on Flux and provider extensions' paths when TypoScript
can not be resolved. If TypoScript can be resolved, the path
setup is read from plugin.tx_yourext (where "yourext" is your
provider extension key) as usual.
NamelessCoder 2025-01-26

[BUGFIX] Work around TS problem with uncached contexts

[BUGFIX] Work around TS problem with uncached contexts

Rather than allowing TYPO3 to fail with a hard exception, we allow
Flux to operate in a limited-support mode where no TypoScript is
available. Although this isn't ideal, it's preferable to both alternatives:

1. Let TYPO3 throw an exception, making uncached operation completely
    impossible.
2. Recreating the 8-class-dependency, 260-lines-of-code, non-API
    TypoScript reading from PrepareTypoScriptFrontendRendering,
    which is both final and readonly and completely impossible to extend.

"Fun" fact: TYPOv13 no longer has any short-API way of reading TypoScript
unless it is put into ServerRequest->attributes['frontend.typoscript'] -
and this simply does not happen in uncached (INT) contexts. Great.

There's no service, no utility, no API. The only way is to manually fetch
and parse every TS template from the root line and use the significantly
complex AST-based parsing mechanism.
NamelessCoder 2025-01-26

[REMOVAL] Remove feature to register Providers with TypoScript (#2222)

[REMOVAL] Remove feature to register Providers with TypoScript (#2222)

To my knowledge, this feature has never been used except in
my own proof-of-concept environments. Given that it would need
a rather excessive workaround to function on v13 it's probably
best to simply remove the feature.
NamelessCoder 2025-01-26

[BUGFIX] Add dummy field in dummy DS

[BUGFIX] Add dummy field in dummy DS
NamelessCoder 2025-01-26

[BUGFIX] Set selected language in localized grid rendering on v13

[BUGFIX] Set selected language in localized grid rendering on v13
NamelessCoder 2025-01-25

[BUGFIX] Assume backend and non-preview context when request not found

[BUGFIX] Assume backend and non-preview context when request not found

Selects backend-non-preview as context when no request is found,
which happens in CLI context.

Close: #2172
NamelessCoder 2025-01-24

[BUGFIX] Move static TS inclusion to TCA override file

[BUGFIX] Move static TS inclusion to TCA override file

Close: #2174
NamelessCoder 2025-01-24

[BUGFIX] Handle null as preview

[BUGFIX] Handle null as preview
NamelessCoder 2025-01-24