Skip to main content


[BUGFIX] Guard ConstantEditor with copy operator in constants

If copy operator '<' is used in TypoScript constants for a
constant with a constant editor configuration comment, the
"Call to member function getType() on null" exception is
emitted.

Example TypoScript constants:

> # cat=custom/a; type=color; label=Primary Color
> plugin.tx_example.primaryColor = #282E31
>
> # cat=custom/a; type=color; label=Other Color
> plugin.tx_example.otherColor < plugin.tx_example.primaryColor

This may happen when a comment token stream is
handled multiple times without being reset properly.

Resolves: #99906
Related: #97816
Releases: main
Change-Id: I5c15a9bf194f8c24e7306213218e1b801fe7cb72
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/77808
Reviewed-by: Oliver Bartsch <bo@cedev.de>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: core-ci <typo3@b13.com>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Oliver Bartsch <bo@cedev.de>



[TASK] Align "Included PageTsConfig" with "Included TypoScript"

The "Included PageTsConfig" view is structurally
similar to "Included TypoScript": Include trees
are shown, conditions can be toggled.

Resolves: #99827
Related: #97816
Related: #99563
Related: #99576
Releases: main
Change-Id: I1149bef0ad1f2d2564ca7f45ad83825f73fa4e5b
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/77699
Tested-by: Stefan Bürk <stefan@buerk.tech>
Reviewed-by: Jochen <rothjochen@gmail.com>
Tested-by: core-ci <typo3@b13.com>
Tested-by: Jochen <rothjochen@gmail.com>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Reviewed-by: Stefan Bürk <stefan@buerk.tech>



[TASK] Update note about new TypoScript parser

Resolves: #99818
Related: #97816
Releases: main
Change-Id: Ibc3e5dd98d75d1c1cb4de6e8fad1f7b662d3de75
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/77694
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: core-ci <typo3@b13.com>
Tested-by: Oliver Klee <typo3-coding@oliverklee.de>
Reviewed-by: Stefan Bürk <stefan@buerk.tech>
Tested-by: Stefan Bürk <stefan@buerk.tech>
Reviewed-by: Oliver Klee <typo3-coding@oliverklee.de>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>



[TASK] Streamline TypoScript IncludeTree logic

The patch comes with a couple of changes for
the TypoScript IncludeTree construct:

* Identifiers are now unique within a tree. This
is needed especially in the Backend
TypoScript -> Included Template files rendering:
Before, showing content of single segments did
not work due to duplicate identifiers.

* getIdentifier() is hardened to throw an
exception if not initialized: This detail is
only needed for non-cache analysis purposes and
identifiers don't exist when getting trees from cache
in Frontend.

* To allow file includes relative to a parent file
include, they now have a "path" property that is
properly hand over to child includes. Relative
child includes now work with include_static
sys_template includes as well.

* RootInclude now has an identifier as well to
seed child includes which include the parent
identifier in their hash.

* Identifier hashes and cache identifiers are built
with fast xxh3 hash in favor of sha1() and
json_encode() is used in favor of serialize()
when hashing structures, if possible.

* Identifier hashes are created in the setter
instead of calling hash() in the caller.

* [end] and [global] lines are now parts of the
previous condition segment and don't create
one-line segments anymore.

* Tests are adapted to be a bit less noisy on
properties we're not interested in by using
another custom comparator.

Change-Id: I9c03edfcf29e2887c0ef70ce1692582524333bdf
Resolves: #99537
Related: #97816
Releases: main
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/77369
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Stefan Bürk <stefan@buerk.tech>
Reviewed-by: Stefan Bürk <stefan@buerk.tech>
Tested-by: core-ci <typo3@b13.com>



[BUGFIX] Resolve nested TypoScript reference operator

Incoming TS:

lib.foo = TEXT
lib.foo.value = foo
lib.bar =< lib.foo
lib.bar.value = bar
page = PAGE
page.10 = CASE
page.10.key.field = cache_timeout
page.10.default =< lib.foo
page.10.60 =< lib.bar

page.10.60 is a reference to lib.bar which sets the
sub property 'value' to 'bar'. lib.bar itself is a
reference to lib.foo which sets 'TEXT'. When the
cache timeout of a page is set to '60', string 'bar'
should be output.

This stopped working in main since the reference
resolving is not recursive anymore since #99060.

The patch fixes this and adds a unit test to verify.

Resolves: #99504
Related: #97816
Related: #99060
Releases: main
Change-Id: I560807db326559077658b36a61a137fec6cdbcb5
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/77313
Tested-by: core-ci <typo3@b13.com>
Tested-by: Achim Fritz <af@achimfritz.de>
Reviewed-by: Stefan Bürk <stefan@buerk.tech>
Reviewed-by: Achim Fritz <af@achimfritz.de>
Tested-by: Stefan Bürk <stefan@buerk.tech>



[TASK] Remove obsolete hack in TsConfigTreeBuilder

UserTs building has a hack for sys_note setting
TCAdefaults.sys_note.author and
TCAdefaults.sys_note.email.

These two fields have been removed from table sys_note
in 6.0, the options are useless and can be removed:
The creating user uid is stored in field 'cruser',
resolving to human readable names is done when rendering
notes.

Change-Id: I562678a516c7fc8284f82a1123035ce06bd7a188
Resolves: #99507
Related: #97816
Releaeses: main
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/77319
Reviewed-by: Stefan Bürk <stefan@buerk.tech>
Tested-by: Stefan Bürk <stefan@buerk.tech>
Tested-by: Georg Ringer <georg.ringer@gmail.com>
Tested-by: core-ci <typo3@b13.com>
Reviewed-by: Georg Ringer <georg.ringer@gmail.com>