[TASK] Simplify IncludeTree identifier calculation
We need unique identifiers in both TypoScript
"AST" and "IncludeTree" to reference nodes in
the backend modules.
This has been established with #99537 for the
include tree already, while #99747 came with
a simplified approach for AST nodes.
The patch changes the include tree approach to
use the same simplified version as done with
AST nodes, which avoids some runtime overhead
in non-backend context.
As drive-by, the HTML of "Active PageTsConfig"
view is streamlined a bit.
Change-Id: I2d3855ef260ea23bc43aebb199dd04d12de3ac0f
Resolves: #99753
Related: #99537
Related: #99747
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/77640
Tested-by: Christian Kuhn <lolli@schwarzbu.ch>
Tested-by: Nikita Hovratov <nikita.h@live.de>
Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch>
Reviewed-by: Stefan Bürk <stefan@buerk.tech>
Reviewed-by: Nikita Hovratov <nikita.h@live.de>
Tested-by: core-ci <typo3@b13.com>
Tested-by: Stefan Bürk <stefan@buerk.tech>
[TASK] Simplify IncludeTree identifier calculation · TYPO3/typo3@688ebae
We need unique identifiers in both TypoScript "AST" and "IncludeTree" to reference nodes in the backend modules. This has been established with #99537 for the include tree alre...GitHub
[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>
[TASK] Streamline TypoScript IncludeTree logic · TYPO3/typo3@1c4cfe0
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 -> Include...GitHub