- May 05, 2024
-
-
Andreas Kienast authored
Executed commands: composer require --dev sokil/php-isocodes-db-i18n:^4.0.22 Build/Scripts/updateIsoDatabase.php Resolves: #103791 Releases: main, 12.4 Change-Id: I624ce17a6abaa2cb5c0479744db43bdf17cd069a Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84144 Tested-by:
Oliver Klee <typo3-coding@oliverklee.de> Tested-by:
core-ci <typo3@b13.com> Tested-by:
Andreas Kienast <a.fernandez@scripting-base.de> Tested-by:
Simon Schaufelberger <simonschaufi+typo3@gmail.com> Reviewed-by:
Simon Schaufelberger <simonschaufi+typo3@gmail.com> Reviewed-by:
Oliver Klee <typo3-coding@oliverklee.de> Reviewed-by:
Andreas Kienast <a.fernandez@scripting-base.de>
-
- May 03, 2024
-
-
Andreas Kienast authored
The module `@typo3/backend/element/table-wizard-element` is tightly coupled to FormEngine's `TextTableElement`, therefore said module is moved to the FormEngine namespace. Additionally, the element gets renamed to `typo3-formengine-table-wizard`. Resolves: #103725 Releases: main, 12.4 Change-Id: I1c020a4ec6045007ab4c1f42289fe0a9c842f794 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84022 Tested-by:
core-ci <typo3@b13.com> Reviewed-by:
Benjamin Franzke <ben@bnf.dev> Tested-by:
Andreas Kienast <a.fernandez@scripting-base.de> Reviewed-by:
Frank Nägler <frank.naegler@typo3.com> Tested-by:
Benjamin Franzke <ben@bnf.dev> Tested-by:
Frank Nägler <frank.naegler@typo3.com> Reviewed-by:
Andreas Kienast <a.fernandez@scripting-base.de>
-
Andreas Kienast authored
TYPO3 has a method to ensure an integer is always positive: `MathUtility::convertToPositiveInteger()`. However, the method is rather "heavy" as it internally calls `MU::forceIntegerInRange()` and therefore misuses a clamp mechanism to convert the integer to a positive number. Also, the method name doesn't reflect what it actually does. Negative numbers are not converted to their positive counterpart, but are swapped with `0`. Due to the naming issue and the fact that the method can be superseded by a simple `max()` call, the method is therefore deprecated. Resolves: #103785 Releases: main Change-Id: I4fd0548ec6bc7289008057ade4e64f9437c2da7b Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84141 Tested-by:
Oliver Klee <typo3-coding@oliverklee.de> Reviewed-by:
Torben Hansen <derhansen@gmail.com> Tested-by:
Torben Hansen <derhansen@gmail.com> Tested-by:
core-ci <typo3@b13.com> Reviewed-by:
Oliver Klee <typo3-coding@oliverklee.de> Reviewed-by:
Benjamin Franzke <ben@bnf.dev> Tested-by:
Andreas Kienast <a.fernandez@scripting-base.de> Reviewed-by:
Andreas Kienast <a.fernandez@scripting-base.de>
-
Lina Wolf authored
The $pageLayoutName is treated as 'action' and is passed through ucfirst in TYPO3Fluid\Fluid\View\TemplatePaths:: resolveTemplateFileForControllerAndActionAndFormat Therefore if a backend layout starts with a lowercase name, then the template name still has to start with a uppercase name. Resolves: #103774 Releases: main Change-Id: Ica31c073719d183a5bd66fdaf937dad6707ac07e Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84101 Tested-by:
Nikita Hovratov <nikita.h@live.de> Tested-by:
Benjamin Franzke <ben@bnf.dev> Tested-by:
core-ci <typo3@b13.com> Reviewed-by:
Benjamin Franzke <ben@bnf.dev> Reviewed-by:
Nikita Hovratov <nikita.h@live.de>
-
Nikita Hovratov authored
With the introduction of BeforeLoadedUserTsConfigEvent, it is now possible to add user tsconfig before global file user.tsconfig is evaluated. The registry-like `doktypesToShowInNewPageDragArea` list always overrides possible items added in this event. The fix is to use the `addToList` modifier, so that default doktypes are appended. Resolves: #103584 Related: #101818 Releases: main Change-Id: I4cc90d2a89e4619849cd41085d091903353efe72 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/83726 Reviewed-by:
Andreas Kienast <a.fernandez@scripting-base.de> Tested-by:
Benni Mack <benni@typo3.org> Reviewed-by:
Benni Mack <benni@typo3.org> Tested-by:
core-ci <typo3@b13.com> Tested-by:
Andreas Kienast <a.fernandez@scripting-base.de>
-
Oliver Hader authored
Commands: composer req 'enshrined/svg-sanitize:^0.18.0' composer req 'enshrined/svg-sanitize:^0.18.0' \ -d typo3/sysext/core --no-update Resolves: #103722 Releases: main, 12.4, 11.5 Change-Id: I9a20a46b27b3abbfd18f7ca6027e4def9ce5b59b Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84110 Reviewed-by:
Oliver Klee <typo3-coding@oliverklee.de> Reviewed-by:
Benjamin Franzke <ben@bnf.dev> Tested-by:
Benni Mack <benni@typo3.org> Reviewed-by:
Benni Mack <benni@typo3.org> Tested-by:
core-ci <typo3@b13.com> Tested-by:
Oliver Klee <typo3-coding@oliverklee.de> Tested-by:
Benjamin Franzke <ben@bnf.dev>
-
Torben Hansen authored
With this change, the following changes have been applied to the toolbar of the CKEditor "full" configuration preset: * Remove superfluous `clipboard` toolbar item, since CKEditor 5 does not provide a UI for the clipboard plugin. * Rename wrong `find` toolbar item to `findAndReplace`. * Added `TableProperties` and `TableCellProperties` toolbar items. * Move the `findAndReplace` toolbar item before the `link` toolbar item, because we also have this order in the `default` preset. * Move the `selectAll` toolbar item to a dedicated group Resolves: #103745 Releases: main, 12.4 Change-Id: I021b8c2f990c8e302bf169c3e368bf04928dd200 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84048 Tested-by:
Benjamin Franzke <ben@bnf.dev> Tested-by:
core-ci <typo3@b13.com> Tested-by:
Chris Müller <typo3@brotkrueml.dev> Reviewed-by:
Chris Müller <typo3@brotkrueml.dev> Reviewed-by:
Benjamin Franzke <ben@bnf.dev>
-
Georg Ringer authored
Allow the valid return type false which is returned by the function exec on failure. Resolves: #103778 Releases: main, 12.4 Change-Id: I8f0391efb6f890ebc0095ddb8a1f93ee9c36e18c Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84135 Tested-by:
core-ci <typo3@b13.com> Tested-by:
Andreas Kienast <a.fernandez@scripting-base.de> Reviewed-by:
Andreas Kienast <a.fernandez@scripting-base.de> Tested-by:
Benjamin Franzke <ben@bnf.dev> Reviewed-by:
Benjamin Franzke <ben@bnf.dev>
-
Andreas Nedbal authored
Newer rollup major versions feature optimizations in build output. The rollup source files are now natively parsed as ESM modules by NodeJS. Earlier rollup versions implicitly transpiled ESM to CJS and allowed a mixture of ESM and CJS imports (both `import` statements and `require()` calls) in one module. With the switch to ESM-only modules we now make use of `createRequire` utility method when node-require resolution is needed for CJS path lookups. Since our main project (Build/) is still in CJS mode by default (for grunt), we apply a sub-project module type overwrite for the Build/rollup/ folder via Build/rollup/package.json to ensure rollup configuration runs in native ESM mode. See https://nodejs.org/docs/latest-v18.x/api/packages.html > Node.js will treat the following as ES modules when passed to node as > the initial input, or when referenced by import statements or import() > expressions: > […] > * Files with a .js extension when the nearest parent package.json file > contains a top-level "type" field with a value of "module". Executed commands: npm install --save-dev \ rollup@^4.17.2 \ @rollup/plugin-commonjs@^25.0.7 \ @rollup/plugin-node-resolve@^15.2.3 \ @rollup/plugin-replace@^5.0.5 npm run build -- exec:rollup Resolves: #103775 Releases: main, 12.4 Change-Id: I6793bd9233b2907ce5ed06d68c7008b349237360 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84102 Tested-by:
core-ci <typo3@b13.com> Reviewed-by:
Andreas Kienast <a.fernandez@scripting-base.de> Tested-by:
Andreas Kienast <a.fernandez@scripting-base.de> Tested-by:
Benjamin Franzke <ben@bnf.dev> Reviewed-by:
Benjamin Franzke <ben@bnf.dev>
-
Benjamin Franzke authored
The node version used for building TYPO3 assets is raised to 22.0. See https://nodejs.org/en/blog/announcements/v22-release-announce for further details. Resolves: #103780 Releases: main, 12.4 Change-Id: Ibc5b8c88ca5baedb7ae500adb5ef26a33617df4d Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84103 Reviewed-by:
Benjamin Franzke <ben@bnf.dev> Reviewed-by:
Benni Mack <benni@typo3.org> Tested-by:
Andreas Kienast <a.fernandez@scripting-base.de> Tested-by:
Benjamin Franzke <ben@bnf.dev> Tested-by:
core-ci <typo3@b13.com> Tested-by:
Benni Mack <benni@typo3.org> Reviewed-by:
Andreas Kienast <a.fernandez@scripting-base.de>
-
- May 02, 2024
-
-
Jasmina Ließmann authored
Since #103670 the "Workspaces" module has a slightly different look. In order to keep the "History/Undo" module visually synchronous, the badges are now displayed in color - depending on the action type. In addition, the label for the action type "add" was changed based on the wording from the "Workspaces" module. Resolves: #103765 Releases: main Change-Id: I7f63fc05fe766db8ee9fd85d12720d247009125f Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84087 Reviewed-by:
Jörg Bösche <typo3@joergboesche.de> Tested-by:
Jasmina Ließmann <minapokhalo+typo3@gmail.com> Reviewed-by:
Oliver Hader <oliver.hader@typo3.org> Reviewed-by:
Chris Müller <typo3@brotkrueml.dev> Tested-by:
Chris Müller <typo3@brotkrueml.dev> Tested-by:
Oliver Hader <oliver.hader@typo3.org> Reviewed-by:
Jasmina Ließmann <minapokhalo+typo3@gmail.com> Tested-by:
core-ci <typo3@b13.com>
-
Oliver Hader authored
When using integer types when calling the fallowing method like `ImageProcessingInstructions::fromCropScaleValues(.., .., '500m', 0)`, a PHP type error for `str_contains` is issued. Resolves: #103781 Releases: main Change-Id: Ib36f8584f2a90d999a02dc2ea70249371b312461 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84108 Reviewed-by:
Benjamin Franzke <ben@bnf.dev> Reviewed-by:
Andreas Kienast <a.fernandez@scripting-base.de> Tested-by:
core-ci <typo3@b13.com> Tested-by:
Benjamin Franzke <ben@bnf.dev> Tested-by:
Andreas Kienast <a.fernandez@scripting-base.de>
-
Frank Naegler authored
This patch addresses two key accessibility issues in the recycler module: it adds a caption element to the table for better context and provides labels for dropdown icons used in multi-selection, ensuring screen reader compatibility. Resolves: #103764 Releases: main, 12.4 Change-Id: Ia8b839cbc438396c8438969087d225c37a479bcf Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84085 Tested-by:
Benjamin Franzke <ben@bnf.dev> Tested-by:
Benjamin Kott <benjamin.kott@outlook.com> Tested-by:
core-ci <typo3@b13.com> Reviewed-by:
Benjamin Kott <benjamin.kott@outlook.com> Reviewed-by:
Benjamin Franzke <ben@bnf.dev>
-
Willi Wehmeier authored
The clear-input button now has a proper title and additionally an aria-label to guide visually impaired users. The button isn't read out by screenreaders when navigating the site linearly (due to tabindex="-1") but when hold-pressing the button with the mouse pointer, a screenreader will search for a human readable label. We therefore add an aria-label attribute. The title attribute is added for sighted users but will be ignored by screenreaders since it's value equals the value of the aria-label attribute. Resolves: #103417 Releases: main, 12.4 Change-Id: I4cbbe5200476a7d84ef1d675911ddd51f5899e87 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/83501 Tested-by:
Michael Telgkamp <michael.telgkamp@mindscreen.de> Tested-by:
core-ci <typo3@b13.com> Reviewed-by:
Michael Telgkamp <michael.telgkamp@mindscreen.de> Reviewed-by:
Benjamin Franzke <ben@bnf.dev> Tested-by:
Frank Nägler <frank.naegler@typo3.com> Reviewed-by:
Frank Nägler <frank.naegler@typo3.com> Tested-by:
Benjamin Franzke <ben@bnf.dev>
-
Chris Müller authored
With the introduction of site sets also a console command was made available which lists all available site sets. Knowing this command makes it easier for integrators to set the dependencies. Resolves: #103771 Related: #103437 Releases: main Change-Id: I86e45c1a63fc3ddc5aaf8a2b1b72da7b24febe08 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84098 Tested-by:
Oliver Klee <typo3-coding@oliverklee.de> Tested-by:
Georg Ringer <georg.ringer@gmail.com> Reviewed-by:
Garvin Hicking <gh@faktor-e.de> Reviewed-by:
Oliver Klee <typo3-coding@oliverklee.de> Tested-by:
Benjamin Franzke <ben@bnf.dev> Tested-by:
Garvin Hicking <gh@faktor-e.de> Reviewed-by:
Benjamin Franzke <ben@bnf.dev> Reviewed-by:
Georg Ringer <georg.ringer@gmail.com> Tested-by:
core-ci <typo3@b13.com>
-
- May 01, 2024
-
-
Oliver Hader authored
The new factory method `HashValue::hash('test')` creates the hash from the raw payload `'test'`. This is a simpler shortcut for using `HashValue::create(hash('sha256', 'test', true))`. Resolves: #103772 Releases: main, 12.4 Change-Id: Id201e166eeabc856b8d8dc498cc73cde8d5eb801 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84100 Tested-by:
core-ci <typo3@b13.com> Reviewed-by:
Benni Mack <benni@typo3.org> Tested-by:
Georg Ringer <georg.ringer@gmail.com> Reviewed-by:
Georg Ringer <georg.ringer@gmail.com> Tested-by:
Benni Mack <benni@typo3.org> Reviewed-by:
Markus Klein <markus.klein@typo3.org>
-
- Apr 30, 2024
-
-
Torben Hansen authored
The frontend login extension currently validates a given redirect URL by ensuring, that the URL is either relative or the host is known to TYPO3. In some scenarios, it might however be useful to allow a redirect URL, which does not match the existing rules. This change adds the `ModifyRedirectUrlValidationResultEvent` PSR-14 event, allowing developers to implement custom validation logic for the redirect URL. Resolves: #103019 Releases: main Change-Id: I81b387f23e90adbaf4a586c9108766275f5e1273 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/82763 Tested-by:
core-ci <typo3@b13.com> Reviewed-by:
Simon Schaufelberger <simonschaufi+typo3@gmail.com> Tested-by:
Simon Schaufelberger <simonschaufi+typo3@gmail.com> Reviewed-by:
Guido Schmechel <guido.schmechel@brandung.de> Tested-by:
Georg Ringer <georg.ringer@gmail.com> Reviewed-by:
Georg Ringer <georg.ringer@gmail.com> Reviewed-by:
Jörg Bösche <typo3@joergboesche.de> Reviewed-by:
Nikita Hovratov <nikita.h@live.de>
-
Stephan Bauer authored
An error was previously shown and is now removed if no backend type is selected. Releases: main, 12.4, 11.5 Resolves: #103766 Change-Id: Ia83552de40abffb880244e8b0eb0f4c28f0e6637 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84095 Tested-by:
core-ci <typo3@b13.com> Tested-by:
Benjamin Franzke <ben@bnf.dev> Reviewed-by:
Benni Mack <benni@typo3.org> Reviewed-by:
Benjamin Franzke <ben@bnf.dev> Tested-by:
Benni Mack <benni@typo3.org>
-
Oliver Bartsch authored
The EXT:styleguide extension currently provides two ways of frontend rendering. The "old" way using a `sys_template` record and the "new" way, using site sets. To not only test the new site sets feature, but also the new PAGEVIEW cObject is the corresponding TypoScript now using the PAGEVIEW for page rendering. This one hand is the best practice and on the other hand also allows to test both ways: FLUIDTEMPLATE and PAGEVIEW in one extension. Required structural changes also showcase what has to be done when migrating extensions to site sets and PAGEVIEW. Resolves: #103733 Releases: main Change-Id: I71bb28a6e6d39b1232d5283e548044b421d3b5c9 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84037 Reviewed-by:
Benni Mack <benni@typo3.org> Reviewed-by:
Benjamin Franzke <ben@bnf.dev> Tested-by:
Benni Mack <benni@typo3.org> Reviewed-by:
Jörg Bösche <typo3@joergboesche.de> Tested-by:
core-ci <typo3@b13.com> Tested-by:
Benjamin Franzke <ben@bnf.dev>
-
Frank Naegler authored
This patch adjusts the flash message and notifications elements by removing the h4 tag to prevent incorrect header flow throughout the content structure, allowing for better flexibility based on different use cases. Resolves: #103762 Releases: main, 12.4 Change-Id: Ide330150145d5c4965410fbf61973ef682bb96b0 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84082 Reviewed-by:
Benjamin Franzke <ben@bnf.dev> Tested-by:
Benjamin Kott <benjamin.kott@outlook.com> Tested-by:
Georg Ringer <georg.ringer@gmail.com> Reviewed-by:
Benjamin Kott <benjamin.kott@outlook.com> Reviewed-by:
Georg Ringer <georg.ringer@gmail.com> Tested-by:
Benjamin Franzke <ben@bnf.dev> Tested-by:
core-ci <typo3@b13.com>
-
Frank Naegler authored
This patch adjusts the infobox/callout element by removing the h4 tag to prevent incorrect ordering in the content structure, allowing for better flexibility based on different use cases. Resolves: #103761 Releases: main, 12.4 Change-Id: I2556ea0df0e55ffcdf752c9c0574b843ffea44ff Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84081 Reviewed-by:
Benjamin Franzke <ben@bnf.dev> Reviewed-by:
Georg Ringer <georg.ringer@gmail.com> Tested-by:
core-ci <typo3@b13.com> Tested-by:
Georg Ringer <georg.ringer@gmail.com> Tested-by:
Benjamin Franzke <ben@bnf.dev> Tested-by:
Benjamin Kott <benjamin.kott@outlook.com> Reviewed-by:
Benjamin Kott <benjamin.kott@outlook.com>
-
Frank Naegler authored
This patch enhances the accessibility of the link validator module by ensuring proper relationships between table headers and content cells. Resolves: #103763 Releases: main, 12.4 Change-Id: Icef43369761f88705b491f3661252cc9a4b7ac0a Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84083 Tested-by:
Benjamin Kott <benjamin.kott@outlook.com> Tested-by:
Benjamin Franzke <ben@bnf.dev> Reviewed-by:
Benjamin Kott <benjamin.kott@outlook.com> Reviewed-by:
Benjamin Franzke <ben@bnf.dev> Tested-by:
core-ci <typo3@b13.com>
-
- Apr 29, 2024
-
-
Jasmina Ließmann authored
The title of the linked page was missing a hover style, which is now ensured with this patch. An appropriate link title is also added. Resolves: #103715 Releases: main, 12.4 Change-Id: I4ec60ef43fd7ced6cdc5ede88445931a37e12c3a Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84011 Tested-by:
core-ci <typo3@b13.com> Tested-by:
Jasmina Ließmann <minapokhalo+typo3@gmail.com> Reviewed-by:
Stefan Bürk <stefan@buerk.tech> Tested-by:
Christian Kuhn <lolli@schwarzbu.ch> Tested-by:
Stefan Bürk <stefan@buerk.tech> Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch> Reviewed-by:
Jasmina Ließmann <minapokhalo+typo3@gmail.com>
-
Christian Kuhn authored
tl;dr: This patch switches from using RelationHandler to ReferenceIndex in (mostly) frontend request related RootlineUtility. It is the first patch actively using ReferenceIndex in frontend and has the potential to significantly reduce database query load on not-yet-cached pages in frontend, while creating better results at the same time. The patch obsoletes $GLOBALS['TYPO3_CONF_VARS']['FE']['addRootLineFields']. This is just the tip of the iceberg from a refactoring chain that has been prepared over a period of about three years already. The long story: Rendering times of complex pages in the frontend in general scale linearly with the number of executed database queries (plus some offset), if no extension needs extensive calculation on the PHP side, even if the database is server-side local and not a remote instance, which adds additional TCP round-trip times per query. With thousands of queries being triggered by RootlineUtility, this area is the most promising code path to optimize when response times of not-fully-cached pages should be reduced. RootlineUtility is *the* main performance bottleneck in non-trivial TYPO3 instance frontend rendering: When rendering menus, each single entry needs to know its page row details and its path in the rootline, using RootlineUtility. This can quickly lead to thousands of DB queries with bigger instances on cold caches, catapulting the rendering times from milliseconds to seconds. This is worse when dealing with language overlays and workspaces. RootlineUtility does two main things: It first resolves the rootline of the given pages-uid. This is an expensive operation since it needs a query per page level. We'll change this towards a recursive query soon. Afterwards, it resolves some relations attached to the pages. This is - in default instances - at least the 'media' field. This is done using class RelationHandler per single field in question, which fires at least one query per page row and per field. As such, beside the expensive rootline determination itself, we also have an expensive operation to resolve relations of each pages row. Resolving relations attached to pages in a more performant way is what this patch is about. The list of relations being resolved can be extended using $GLOBALS['TYPO3_CONF_VARS']['FE']['addRootLineFields']. By default, only field 'media' is resolved, resulting in one additional query per resolved page row. Instances tend to add more relations to pages, and when adding these to 'addRootLineFields', they trigger additional RelationHandler queries by RootlineUtility. Also, RootlineUtility *ignores* 'addRootLineFields' when resolving relations when requesting non-default (sys_language_uid != 0) pages, and simply resolves *all* possible relation fields. This includes 'category' and probably some of the TCA fields ext:seo adds to pages TCA. RelationHandler needs *at least* one query per field, more with localizations and even more when rendering a workspaces preview. This situation makes relation resolving of page rows in RootlineUtility more expensive than resolving the rootline itself. One option would be to skip resolving page relations in RootlineUtility, but that wouldn't help us much when instances actually need this data (which is likely). A better solution is to supply relations within pages in a more performant way, ready for TypoScript and extensions to use. The patch switches from using RelationHandler within RootlineUtility to query the ReferenceIndex instead: sys_refindex contains all fields relevant for frontend since #103748. It allows querying *all* relations of *all* page fields with just *one* query. This allows us to remove 'addRootLineFields' by just always resolving all relations with close to no overhead, and turns into an advantage for integrators: One detail less to take care of. The patch establishes a nifty - but very well indexed - query within RootlineUtility to fetch relations. With 'categories' (an MM foreign relation) being attached to pages by default, it is a UNION query of two SELECT queries, with their result being sorted out in a rather effective result handling loop. The patch comes with a todo list within RootlineUtility, but in general, the result list is *better* than the result of the previous single field based RelationHandler solution. This is verified by the previously establish test data sets: * hidden, starttime, endtime are resolved. * Workspace deleted placeholder rows are removed automatically. There are a couple of details we may want to improve with further v13 patches, but in general, this new approach should work well already. Future: * This patch is a base to unlock a series of further performance related changes: When CTE's on RootlineUtility are established, it will allow fetching relations of not only one page, but of multiple pages with one query. Combined with a couple of other changes, the query load in frontend will ultimately collapse. * The patch is the base for ReferenceIndex usage in the frontend: We can potentially remove the doomed DatabaseQueryProcessor and other shenanigans for tt_content within the frontend rendering chain by always providing "correct" relation information automatically without overhead. Other pending patches are already preparing a central place taking care of tt_content for its relations to be resolved in a similar effective way. * Resolving relations of all fields attached to page rows voids the 'parent count' values of these fields. Those are a different de-normalization of relations "if it's not 0, we have some". With RootlineUtility dropping 'addRootLineFields' and always resolving relations, we can finally start dropping these 'count' fields, can release DataHandler from updating these fields, and can remove them from DB altogether. Numbers: There was a recent blog post by Julian [1] looking at query load of bigger menus. With measurements for this patch, we confirm the general numbers Julian came up with in his test setup. Thank to the published test setup at [2], we ported it to TYPO3 v13, and slightly extended it to measure query load when all pages are localized, and we're performing a request to a non-default language. * The main query count on a "cold" instance calling default language does *not* change with this patch. The reason is, default TYPO3 includes only 'media' as relation that has a 'foreign_field' in RootlineUtility, which leads to only one query, which is now substituted by the new refindex query. The advantage of the new solution provided by the patch is to resolve *all* relation with the same query load. * When calling a localized page, the query load is at ~10200 queries on a non-cached-page frontend request. This shrinks to ~7900 with the patch being applied. That's a reduction of 1/5 by this patch, with further options up our sleeves. [1] https://www.in2code.de/aktuelles/menue-vergleich-der-techniken/ [2] https://github.com/julianhofmann/typo3-menu-comparison Resolves: #103752 Related: #103748 Related: #103735 Related: #103710 Related: #103680 Related: #103599 Related: #103598 Change-Id: Ic7e152366dc2d4312ca55035c364db9ac02fabee Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/83729 Tested-by:
Anja Leichsenring <aleichsenring@ab-softlab.de> Tested-by:
André Buchmann <andy.schliesser@gmail.com> Reviewed-by:
Anja Leichsenring <aleichsenring@ab-softlab.de> Tested-by:
Benni Mack <benni@typo3.org> Tested-by:
Stefan Bürk <stefan@buerk.tech> Reviewed-by:
André Buchmann <andy.schliesser@gmail.com> Reviewed-by:
Benni Mack <benni@typo3.org> Reviewed-by:
Stefan Bürk <stefan@buerk.tech> Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch> Tested-by:
core-ci <typo3@b13.com> Tested-by:
Christian Kuhn <lolli@schwarzbu.ch>
-
- Apr 28, 2024
-
-
Torben Hansen authored
When an editor uses the suggest wizard, undefined array key warnings can occur, when certain array keys have not been defined. This change adds fallbacks for undefined array keys using the null coalescing operator. Additionally, the function `currentBackendUserMayAccessTable` is now covered with unit tests. Resolves: #103721 Releases: main, 12.4 Change-Id: I2b1a8af0883f7d34dde38f6f838df080f34ea87c Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84074 Tested-by:
core-ci <typo3@b13.com> Reviewed-by:
Oliver Klee <typo3-coding@oliverklee.de> Tested-by:
Oliver Klee <typo3-coding@oliverklee.de> Tested-by:
Stefan Bürk <stefan@buerk.tech> Reviewed-by:
Stefan Bürk <stefan@buerk.tech>
-
Chris Müller authored
Resolves: #103755 Related: #103675 Releases: main Change-Id: Ic94dc6bbff56f09233fec1b7cda42091d07dad2f Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84077 Tested-by:
Stefan Bürk <stefan@buerk.tech> Reviewed-by:
Stefan Bürk <stefan@buerk.tech> Tested-by:
core-ci <typo3@b13.com>
-
Andreas Kienast authored
With the update of Bootstrap to v5.3, the implementation of progress bars has changed for accessibility reasons [1]. This commit updates all usages of progress bars to the new markup. [1] https://getbootstrap.com/docs/5.3/migration/#progress-bars Resolves: #103718 Releases: main, 12.4 Change-Id: I208e3561b4943e382caa09e23e75d350bd702a6a Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84014 Tested-by:
Benjamin Franzke <ben@bnf.dev> Tested-by:
Andreas Kienast <a.fernandez@scripting-base.de> Reviewed-by:
Benjamin Franzke <ben@bnf.dev> Tested-by:
Andreas Nedbal <andy@pixelde.su> Reviewed-by:
Andreas Kienast <a.fernandez@scripting-base.de> Tested-by:
core-ci <typo3@b13.com> Reviewed-by:
Andreas Nedbal <andy@pixelde.su>
-
Torben Hansen authored
3 todos in Extbase refer to aligning classes or functionality closer to the Flow framework. Those todos have been added 11 years ago with #47251. Since there are no plans to align Extbase closer to the Flow Framework functionality, the todos can safely be removed. Resolves: #103753 Releases: main Change-Id: I9e81c0f3c27a4e690587f7f6a50a21376ba8ca2e Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84076 Reviewed-by:
Nikita Hovratov <nikita.h@live.de> Tested-by:
Nikita Hovratov <nikita.h@live.de> Tested-by:
core-ci <typo3@b13.com> Tested-by:
Oliver Klee <typo3-coding@oliverklee.de> Reviewed-by:
Oliver Klee <typo3-coding@oliverklee.de>
-
Christian Kuhn authored
ReferenceIndex (table sys_refindex) has two main jobs: * It registers "soft" relations, for instance when a bodytext sets a link in its text string. Similar things are done for relations in anonymous flex form strings. * It is a registry of DB relations attached to TCA based table records. This patch is about the DB relation part of refindex. When a TCA record needs to know all its database relations attached to it, it can either ask the (clumsy) RelationHandler for relations of each field, which then queries the foreign table for relations, OR it could ask the refindex for all relations with a single query. It is possible to do this for multiple records in one query. Refindex has significant test coverage within DataHandler: With over a thousand functional tests validating the refindex, we can be confident in the accuracy of the functionality. This coverage has been in place and continuously improved since TYPO3 v11. This de-normalized nature of having a single table that tracks all TCA DB relations of all TCA tables is a powerful structure that allows us to query relations in a performant way. This is currently only leveraged in a couple of places in the backend, though. Integrating refindex within the frontend is promising to alleviate the query load on not-yet-cached pages, though: There are various places that tend to hammer the database with hundreds or thousand of queries to look up relations, RootlineUtility in particular is very demanding. Refindex however does not carry relation details important in the frontend: It does not know about hidden, starttime and endtime restrictions applied to single relations. The patch changes this by adding a series of columns to sys_refindex, and adapts class ReferenceIndex to take care of them. Adding fields to sys_refindex has one drawback: Primary key 'hash' is a hash of all columns. Adding columns invalidates all existing hashes, refindex needs to be rebuild. This is why the patch is so huge: All tests checking refindex integrity need new rows. It also means instances need to update refindex. The patch dedicates an Important.rst to this. With forcing a full re-index for everyone, the patch takes the opportunity to use xxh128 over md5 for the hash, which is a significantly quicker hash algorithm with good collision protection, and with the same length of 128 bit (128 bit = 16 bytes = 16 hex numbers = 32 chars). The patch also adds more fine grained table column and index definitions: Two changed indexes are designed to help queries having the typical query signature, and queries can be crafted to use large parts of the combined indexes. Another detail is that 'endtime' defaults to a high value: When a casual endtime-aware TCA record has no endtime set, it's column value is 0. This requires an OR in the query. refindex de-normalizes this to a high value instead, to always query rows with a "greater than now" where clause. The patch reveals a bug within MM when resorting rows. A single functional test is disabled for now. The situation will be fixed with another patch. sys_refindex contains columns for the "left" / "local" side, and columns for the "right" / "foreign" side. Foreign side columns are prefixed with "ref_". A quick rundown of sys_refindex table columns: hash: primaray key, xxh128 hash of the other column values tablename & ref_table: names of the involved tables. tablename is "_STRING" when dealing with a softref row. recuid & ref_uid: uids of the involved table rows. field & (new)ref_field: names of the involved table fields. sorting & ref_sorting: keep relations in a deterministic order. (new)hidden & (new)ref_hidden: int '1' if the table is TCA hidden aware and the row is hidden. (new)starttime & (new)ref_starttime: starttime timestamp of the row if the table is TCA starttime aware and a value is set, else '0'. (new)endtime & (new)ref_endtime: endtime timestamp of the row if the table is TCA endtime aware and a value is set, else 2^31-1 (year 2038) since postgres 32-bit int is always signed. Could be extended later. workspace: calculated workspace-uid this refindex row is relevant in. With MM relations, there can be rows with workspace-uid 0 on one side and workspace-uid 1 on the other side, with the sys_refindex row being valid for workspace-uid 1. (new)t3ver_state & (new)ref_t3ver_state: workspace versionState value of the table row, default int 0. Used to filter especially deleted placeholder rows (int 2). flexpointer, softref_key, softref_id, ref_string: softref and flex form path details fields. Resolves: #103748 Related: #103735 Related: #103680 Related: #103655 Releases: main Change-Id: I276eef06da4bbe5bd51d90fc850e27ebe6ff2130 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84050 Tested-by:
Christian Kuhn <lolli@schwarzbu.ch> Reviewed-by:
Anja Leichsenring <aleichsenring@ab-softlab.de> Tested-by:
Anja Leichsenring <aleichsenring@ab-softlab.de> Tested-by:
Stefan Bürk <stefan@buerk.tech> Reviewed-by:
Stefan Bürk <stefan@buerk.tech> Tested-by:
core-ci <typo3@b13.com> Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch>
-
- Apr 27, 2024
-
-
Christian Kuhn authored
A missing additional orderBy() in RelationHandler leads to the situation that different DB vendor may return relations in different order, *if* the MM table "local sorting" value isn't unique. Patch for issue #103735 added an according `@todo` for this scenario in RelationHandler already. The import CSV test set of RootlineUtilityTest from issue #103680 is a victim here since the category MM rows have no proper unique sorting on the local side. The patch fixes the import CSV to have proper sorting values. Resolves: #103747 Related: #103735 Related: #103680 Releases: main Change-Id: I5b37ae7445d5517fcde255e77ba8279800534d17 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84051 Tested-by:
Christian Kuhn <lolli@schwarzbu.ch> Tested-by:
Stefan Bürk <stefan@buerk.tech> Tested-by:
Andreas Nedbal <andy@pixelde.su> Tested-by:
core-ci <typo3@b13.com> Reviewed-by:
Andreas Nedbal <andy@pixelde.su> Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch> Reviewed-by:
Stefan Bürk <stefan@buerk.tech>
-
Christian Kuhn authored
All DataScenarios tests import a single CSV as DB base state to operate on. Single action tests verify in tearDown() the reference index is clean (an update changes nothing). This means the imported CSV must come with a clean refindex in the first place. The verifyCleanReferenceIndex() tests check this explicitely. The patch changes verifyCleanReferenceIndex() tests to actually run the reference index updater in non-test mode, to then assert the DB state with the initially imported CSV again: If the reference index updater changed something, the test fails. This change simplifies management of the refindex part of the import CSV, since the assert now output all broken rows in detail. This should make it more easy to change details of the imported base set. Resolves: #103746 Related: #103744 Related: #103742 Releases: main Change-Id: I60233e390fba32cfe877004c8d2d6dd5fdc2f34c Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84049 Tested-by:
André Buchmann <andy.schliesser@gmail.com> Tested-by:
core-ci <typo3@b13.com> Reviewed-by:
André Buchmann <andy.schliesser@gmail.com> Tested-by:
Christian Kuhn <lolli@schwarzbu.ch> Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch>
-
Christian Kuhn authored
Similar to #103742, the patch extracts tests dealing with localization actions to an own scenario setup. "Regular" tests now import exactly one CSV per test, and don't mix up things with multiple imports anymore, which simplifies overview and test management. Resolves: #103744 Related: #103742 Related: #103734 Releases: main Change-Id: I393e901d0d065a5b7ca6ce9d894874676c77737c Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84047 Tested-by:
core-ci <typo3@b13.com> Reviewed-by:
Anja Leichsenring <aleichsenring@ab-softlab.de> Tested-by:
André Buchmann <andy.schliesser@gmail.com> Tested-by:
Christian Kuhn <lolli@schwarzbu.ch> Reviewed-by:
André Buchmann <andy.schliesser@gmail.com> Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch> Tested-by:
Anja Leichsenring <aleichsenring@ab-softlab.de>
-
Jasmina Ließmann authored
With #103737 a new locallang key for the configuration heading was introduced, but it contains a typo. The patch now fixes this. Resolves: #103743 Related: #103737 Releases: main, 12.4 Change-Id: I5bcf5d2b792e1312daf813ec5d3347068d5ecbf2 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84046 Reviewed-by:
Oliver Klee <typo3-coding@oliverklee.de> Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch> Reviewed-by:
Torben Hansen <derhansen@gmail.com> Tested-by:
Jasmina Ließmann <minapokhalo+typo3@gmail.com> Reviewed-by:
Jasmina Ließmann <minapokhalo+typo3@gmail.com> Tested-by:
Christian Kuhn <lolli@schwarzbu.ch> Tested-by:
core-ci <typo3@b13.com> Tested-by:
Torben Hansen <derhansen@gmail.com>
-
Jasmina Ließmann authored
In the "Localization overview" view, an incorrect title was displayed when hovering over a page icon. This was caused by both an incorrect and duplicate title attribute. This patch fixes this behavior. Resolves: #103739 Related: #102472 Releases: main, 12.4 Change-Id: Ibb2ce64d0313c24c6d1e3f1e6b5fc6f55b172622 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84044 Reviewed-by:
Garvin Hicking <gh@faktor-e.de> Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch> Tested-by:
Christian Kuhn <lolli@schwarzbu.ch> Tested-by:
Garvin Hicking <gh@faktor-e.de> Tested-by:
Jasmina Ließmann <minapokhalo+typo3@gmail.com> Tested-by:
core-ci <typo3@b13.com> Reviewed-by:
Jasmina Ließmann <minapokhalo+typo3@gmail.com>
-
Jasmina Ließmann authored
If there are no records or the filter/search does not return a result, an information is now displayed in the "Log" backend module. Resolves: #103738 Releases: main, 12.4 Change-Id: I388e1e4db0885a143d3a626cd35199728b5c395b Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84043 Reviewed-by:
Garvin Hicking <gh@faktor-e.de> Tested-by:
core-ci <typo3@b13.com> Tested-by:
Christian Kuhn <lolli@schwarzbu.ch> Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch> Reviewed-by:
Jasmina Ließmann <minapokhalo+typo3@gmail.com> Tested-by:
Garvin Hicking <gh@faktor-e.de> Tested-by:
Jasmina Ließmann <minapokhalo+typo3@gmail.com>
-
Jasmina Ließmann authored
Resolves: #103736 Releases: main, 12.4 Change-Id: Ia93d67fc49fd9b7a123494928a4360515fc76cb3 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84041 Tested-by:
Christian Kuhn <lolli@schwarzbu.ch> Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch> Tested-by:
core-ci <typo3@b13.com> Reviewed-by:
Garvin Hicking <gh@faktor-e.de> Tested-by:
Garvin Hicking <gh@faktor-e.de> Tested-by:
Jasmina Ließmann <minapokhalo+typo3@gmail.com> Reviewed-by:
Jasmina Ließmann <minapokhalo+typo3@gmail.com>
-
Christian Kuhn authored
To further streamline the DataHandler/DataScenarios tests, the 'Regular' 'free mode' tests are extracted to an own scenario setup. This avoids importing multiple fixture files and separates the complex mix in 'Regular'. Resolves: #103742 Related: #103734 Releases: main Change-Id: I723c7f582910f3072fbbdcb3d7493f0eaf44e368 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84045 Tested-by:
André Buchmann <andy.schliesser@gmail.com> Reviewed-by:
André Buchmann <andy.schliesser@gmail.com> Tested-by:
core-ci <typo3@b13.com> Tested-by:
Oliver Klee <typo3-coding@oliverklee.de> Tested-by:
Anja Leichsenring <aleichsenring@ab-softlab.de> Reviewed-by:
Anja Leichsenring <aleichsenring@ab-softlab.de>
-
Jasmina Ließmann authored
As in the backend module "Configuration", search results can be displayed as badges next to the search input field. When the search input field is displayed with a label instead of placeholder text, the badge was displayed out of place. This patch aligns the badge to the search input field. In addition, the search field now takes up full width for small breakpoints. Resolves: #103716 Releases: main Change-Id: I322b4ab4c62823fa6dcf9d00fc30bc8671c57f09 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84013 Reviewed-by:
Garvin Hicking <gh@faktor-e.de> Tested-by:
Georg Ringer <georg.ringer@gmail.com> Tested-by:
Christian Kuhn <lolli@schwarzbu.ch> Tested-by:
core-ci <typo3@b13.com> Reviewed-by:
Georg Ringer <georg.ringer@gmail.com> Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch> Tested-by:
Garvin Hicking <gh@faktor-e.de>
-
André Buchmann authored
Tests in DataScenarios/Regular for the DataHandler are based on invalid source data. There are translated content elements on pages that have no translations. It's not possible to translate content elements without having a page translation first in the backend. A lot of the tests use workarounds and create those missing page translations first. The tests should be based on valid source data in order to check the pages and handling of the content. There is now a dedicated csv file containing tt_content and their related pages records to run tests with translations. For this reason, all tests that do not include a page translation process themselves import the default translations via a separate csv file. Accordingly, the tests localizePage*, localizeAndCopyPage*, localizeNestedPages* and movePageLocalized* do not import the default translations. It is also ensured that no content translation exist in the source data without a corresponding page translation. Resolves: #103734 Releases: main Change-Id: I9475c8e4fee53b1925a0d8bc4f33acd58dd29aa4 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/83632 Tested-by:
Eric Harrer <info@eric-harrer.de> Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch> Reviewed-by:
Eric Harrer <info@eric-harrer.de> Tested-by:
Christian Kuhn <lolli@schwarzbu.ch> Tested-by:
core-ci <typo3@b13.com> Tested-by:
Oliver Klee <typo3-coding@oliverklee.de>
-
- Apr 26, 2024
-
-
Jasmina Ließmann authored
Resolves: #103737 Releases: main, 12.4 Change-Id: I83278a84037a4fe46b85a8570b7ff345eabeb0a0 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84042 Tested-by:
Simon Schaufelberger <simonschaufi+typo3@gmail.com> Reviewed-by:
Christian Kuhn <lolli@schwarzbu.ch> Tested-by:
Christian Kuhn <lolli@schwarzbu.ch> Tested-by:
core-ci <typo3@b13.com> Reviewed-by:
Jasmina Ließmann <minapokhalo+typo3@gmail.com> Tested-by:
Jasmina Ließmann <minapokhalo+typo3@gmail.com> Reviewed-by:
Simon Schaufelberger <simonschaufi+typo3@gmail.com>
-