TYPO3 Forge: Issueshttp://forge.typo3.org/http://forge.typo3.org/themes/typo3_forge/favicon/favicon.png?17058661692024-03-06T10:28:44ZTYPO3 Forge
Redmine TYPO3 Core - Bug #103296 (Resolved): Composer-Mode public resource paths are not correctly resolv...http://forge.typo3.org/issues/1032962024-03-06T10:28:44ZBenjamin Franzkeben@bnf.dev
<pre>
Refused to apply style from 'https://t3core.localhost/Build/composer/public/typo3/main?token=80d4c64f1e289e50651c299d3e3a173d58b7c763' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled.
</pre>
<p><img src="http://forge.typo3.org/attachments/download/38296/inline-ajax-public-resource-url-wrong-composer-mode.png" alt="" loading="lazy" /></p>
<p>Found via patchset 9 of <a class="external" href="https://review.typo3.org/c/Packages/TYPO3.CMS/+/83027/9">https://review.typo3.org/c/Packages/TYPO3.CMS/+/83027/9</a><br /><a class="external" href="https://git.typo3.org/typo3/CI/cms/-/jobs/3016881">https://git.typo3.org/typo3/CI/cms/-/jobs/3016881</a></p>
<pre>
1) Inline1nCest: Disable an Inline Element which has no checkbox for disabled state
Test Acceptance/Application/FormEngine/Inline1nCest.php:disableInline1nInlineElementWithoutRenderedDisableField
Found following JavaScript errors in the browser console:
18:25:42.44 SEVERE - http://web/typo3/record/edit?token=7f59b97d48ea3fd858f2b2c1bc91542804b38b1e&edit%5Btx_styleguide_inline_1n%5D%5B1%5D=edit&returnUrl=/typo3/module/web/list?token%3De6f62f45187ab9f4523b043b9357378cf58cdf7c%26id%3D127%26table%3D%26pointer%3D1 - Refused to apply style from 'http://web/typo3/main?token=56002678c4b7605eb7a5d9d1760554f92e7bf5d1' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled.
Scenario Steps:
19. $I->click("button span[data...","[data-field-name...") at Acceptance/Application/FormEngine/Inline1nCest.php:172
18. $I->waitForElement("input[data-formengine-input-na...") at Acceptance/Application/FormEngine/Inline1nCest.php:169
17. $I->click("div[data-bs-togg...","[data-field-name...") at Acceptance/Application/FormEngine/Inline1nCest.php:168
16. $I->click("inline_2") at Acceptance/Application/FormEngine/Inline1nCest.php:165
15. $I->waitForText("Edit Form",3,"h1") at Acceptance/Application/FormEngine/Inline1nCest.php:44
14. $I->click("#recordlist-tx_styleguide_inline_1n a[a...") at Acceptance/Application/FormEngine/Inline1nCest.php:43
Artifacts:
Png: /builds/typo3/CI/cms/typo3/sysext/core/Tests/../../../../typo3temp/var/tests/AcceptanceReports/TYPO3.CMS.Core.Tests.Acceptance.Application.FormEngine.Inline1nCest.disableInline1nInlineElementWithoutRenderedDisableField.ci.composer.headless.fail.png
Html: /builds/typo3/CI/cms/typo3/sysext/core/Tests/../../../../typo3temp/var/tests/AcceptanceReports/TYPO3.CMS.Core.Tests.Acceptance.Application.FormEngine.Inline1nCest.disableInline1nInlineElementWithoutRenderedDisableField.ci.composer.headless.fail.html
</pre> TYPO3 Core - Bug #103294 (Resolved): Race condition in DI cache persistencehttp://forge.typo3.org/issues/1032942024-03-06T09:10:49ZBenjamin Franzkeben@bnf.dev
<p>With <a class="issue tracker-4 status-5 priority-4 priority-default closed" title="Task: Improve dependency injection container caching (Closed)" href="http://forge.typo3.org/issues/90418">#90418</a> the container cache has been excluded from the<br />regular cache-flush-pipeline.<br />Therefore flushing has been explicitly performed when writing a<br />new cache entry (with the intent to clean up old cache entries).</p>
<p>Issue is: Cleaning up the entire folder by deleting the folder means<br />a concurrent request – that is creating the same DI cache as well –<br />will fail to write the cache when the folder is (re)moved in that<br />moment.</p>
<pre>
In SimpleFileBackend.php line 232:
The temporary cache file "/var/www/html/typo3temp/var/cache/code/di/65e832cba8809119262340.temp" could not be written.
</pre> TYPO3 Core - Bug #102676 (Resolved): Sanitize embedded HTML in Installation-Wide Configuration GUIhttp://forge.typo3.org/issues/1026762023-12-15T12:31:09ZBenjamin Franzkeben@bnf.dev
<p>Input data is statically provided by EXT:core only, so there is no<br />security issue known right now. This change is a preparation to avoid<br />possible future security issues.</p> TYPO3 Core - Bug #102520 (Resolved): UserSessionManager tries to access normalizedParams since 12...http://forge.typo3.org/issues/1025202023-11-27T07:59:44ZBenjamin Franzkeben@bnf.dev
<p>Extensions relied on the fact that `normalizedParams` was not provided until 12.4.7, so they could pass a blunt ServerRequest to <code>BackendUserAuthentication->start()</code></p>
<p>This leads to an exception with EXT:container upgrade wizards, see attachment and following link<br />See also <a class="external" href="https://github.com/b13/container/issues/460">https://github.com/b13/container/issues/460</a></p> TYPO3 Core - Bug #102292 (Resolved): Respect the AsCommand `hidden` constructor argumenthttp://forge.typo3.org/issues/1022922023-10-30T16:47:00ZBenjamin Franzkeben@bnf.dev
<p>Symfony's AsCommand attribute encodes `hidden = true` into<br />a trailing `|` for the name attribute. Drop that for our<br />command list and mark the command as hidden in the command<br />registry.</p> TYPO3 Core - Bug #102245 (Resolved): CKEditor5 removePlugins configuration is not properly serial...http://forge.typo3.org/issues/1022452023-10-24T14:49:46ZBenjamin Franzkeben@bnf.dev
<p>Reported by Johannes Schlier:</p>
<p>Example configuration:</p>
<pre><code class="yaml syntaxhl" data-language="yaml"><span class="na">editor</span><span class="pi">:</span>
<span class="na">config</span><span class="pi">:</span>
<span class="na">removePlugins</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">image</span>
<span class="pi">-</span> <span class="s">specialchar</span>
</code></pre>
<p><code>"image"</code> is migrated which leaves <code>"specialchar"</code>, but the array is encoded to JSON as<br /><pre><code class="javascript syntaxhl" data-language="javascript"><span class="p">{</span><span class="dl">"</span><span class="s2">1</span><span class="dl">"</span><span class="p">:</span><span class="dl">"</span><span class="s2">specialchar</span><span class="dl">"</span><span class="p">}</span>
</code></pre><br />Instead of<br /><pre><code class="javascript syntaxhl" data-language="javascript"><span class="p">[</span><span class="dl">"</span><span class="s2">specialchar</span><span class="dl">"</span><span class="p">]</span>
</code></pre></p>
<p>Resulting in a CKEditor5 runtime error because the array method <code>some()</code> is tried to be executed on an object:</p>
<pre>
VM2902 ckeditor5-core.js:17 Uncaught (in promise) TypeError: e.some is not a function
at v (VM2902 ckeditor5-core.js:17:2271)
at VM2902 ckeditor5-core.js:17:1146
at Array.filter (<anonymous>)
at x.init (VM2902 ckeditor5-core.js:17:1134)
at w.initPlugins (VM2902 ckeditor5-core.js:37:2082)
at VM2846 ckeditor5-editor-classic.js:14:636
at new Promise (<anonymous>)
at w.create (VM2846 ckeditor5-editor-classic.js:14:593)
at CKEditor5Element.firstUpdated (VM2808 ckeditor5.js:13:3194)
</pre> TYPO3 Core - Bug #102243 (Under Review): RTE CKEditor5 "externalPlugins" configuration is not mig...http://forge.typo3.org/issues/1022432023-10-24T11:58:09ZBenjamin Franzkeben@bnf.dev
<p>The following CKEditor config loaded and configured the wordcount plugin in TYPO3 v11, but does not in TYPO3 v12.4.0-v12.4.7:</p>
<pre><code class="yaml syntaxhl" data-language="yaml"><span class="na">editor</span><span class="pi">:</span>
<span class="na">externalPlugins</span><span class="pi">:</span>
<span class="na">wordcount</span><span class="pi">:</span>
<span class="na">resource</span><span class="pi">:</span> <span class="s2">"</span><span class="s">EXT:rte_ckeditor/Resources/Public/JavaScript/Contrib/plugins/wordcount/plugin.js"</span>
<span class="na">maxCharCount</span><span class="pi">:</span> <span class="m">100</span>
<span class="na">maxWordCount</span><span class="pi">:</span> <span class="m">50</span>
<span class="na">showCharCount</span><span class="pi">:</span> <span class="kc">true</span>
<span class="na">showRemaining</span><span class="pi">:</span> <span class="kc">true</span>
</code></pre>
<p>Note that this was not the recommended v11 config for "internal" plugins, but it did work and was used according to Josef Glatz (who reported this).</p>
<p>Note that the equivalent "official" v11 style config works and is properly migrated:</p>
<pre><code class="yaml syntaxhl" data-language="yaml"><span class="na">editor</span><span class="pi">:</span>
<span class="na">config</span><span class="pi">:</span>
<span class="na">extraPlugins</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">wordcount</span>
<span class="na">wordcount</span><span class="pi">:</span>
<span class="na">maxCharCount</span><span class="pi">:</span> <span class="m">100</span>
<span class="na">maxWordCount</span><span class="pi">:</span> <span class="m">50</span>
<span class="na">showCharCount</span><span class="pi">:</span> <span class="kc">true</span>
<span class="na">showRemaining</span><span class="pi">:</span> <span class="kc">true</span>
</code></pre>
<p>Ideally both formats would be supported in TYPO3 v12.</p> TYPO3 Core - Bug #102006 (Resolved): RTE link browser creates empty when updating an existing linkhttp://forge.typo3.org/issues/1020062023-09-22T08:55:51ZBenjamin Franzkeben@bnf.dev
<p>Place a cursor (do not select any characters) in an existing link.<br />Edit via RTE link browser.<br />See that an empty link is appended:</p>
<p><img src="http://forge.typo3.org/attachments/download/37970/rte-empty-link-after-update-via-link-browser.png" alt="" loading="lazy" /></p> TYPO3 Core - Bug #102005 (Resolved): RTE does not preserve allowedClasses when some classesAnchor...http://forge.typo3.org/issues/1020052023-09-22T08:07:02ZBenjamin Franzkeben@bnf.dev
<p>Example RTE config:</p>
<pre>
classesAnchor:
page:
class: 'link-page'
type: 'page'
buttons:
link:
properties:
class:
allowedClasses: 'link-page, link-arrow'
</pre>
<p>Now open the RTE link browser on link with the class "link-arrow".</p>
<p>It is expected that the value is marked as available, but the value is set to "".<br />Instead the value can be selected again, but will be removed upon reponing the link again.</p> TYPO3 Core - Bug #101851 (Resolved): Race condition in module produces duplicate module contents ...http://forge.typo3.org/issues/1018512023-09-05T20:24:56ZBenjamin Franzkeben@bnf.dev
<p>Reproduction:<br />Clear all browser caches/Throttle network.<br />Reload Backend and <strong>very</strong> quickly switch modules after load.</p>
<p>Then the output looks something like:</p>
<p><img src="http://forge.typo3.org/attachments/download/37950/module-router-race-condition.png" alt="" loading="lazy" /></p> TYPO3 Core - Bug #101765 (Resolved): Installer: Toogle password visibility icon not visible after...http://forge.typo3.org/issues/1017652023-08-27T18:02:17ZBenjamin Franzkeben@bnf.dev
<p>The toggled icon is not visible. The JavaScript icon API throws the following error:</p>
<pre>
icons.js?bust=1693158860:109 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'ajaxUrls')
at Icons.getIconRegistryCache (icons.js?bust=1693158860:109:720)
at Icons.getIcon (icons.js?bust=1693158860:109:261)
at IconElement.render (icon-element.js?bust=1693158860:13:1016)
at IconElement.update (lit-element.js?bust=1693158860:6:304)
at IconElement.performUpdate (reactive-element.js?bust=1693158860:6:4846)
at IconElement.scheduleUpdate (reactive-element.js?bust=1693158860:6:4493)
at IconElement._$Ej (reactive-element.js?bust=1693158860:6:4401)
</pre> TYPO3 Core - Bug #101750 (Resolved): Console error when tabbing through EXT:form inspector of a n...http://forge.typo3.org/issues/1017502023-08-25T04:30:58ZBenjamin Franzkeben@bnf.dev
<p><img src="http://forge.typo3.org/attachments/download/37932/form-console-error-tab-through.png" alt="" loading="lazy" /></p>
<p>Tabbing through an elemenet is considered an "input" by<br />the browser, which is why the "input" even is triggered.<br />The result is an empty input element (as before), but<br />an intent is made to delete the underlying property<br />from the form element object model.<br />When the object model is empty (remeber, it is a new element),<br />and an input field refers to a nested property<br />(e.g. properties.fluidAdditionalAttributes.placeholder)<br />removing an element (e.g. 'placeholder')<br />will fail when the parent has not yet been set<br />(e.g. properties.fluidAdditionalAttributes)</p>
<pre>
core.js?bust=1692909490:911 Uncaught TypeError: Cannot convert undefined or null to object
at Object.unset (core.js?bust=1692909490:911:39)
at HTMLInputElement.<anonymous> (inspector-component.…=1692909490:1390:45)
at HTMLInputElement.dispatch (jquery.js?bust=1692909490:5468:27)
at elemData.handle (jquery.js?bust=1692909490:5272:28)
unset @ core.js?bust=1692909490:911
(anonymous) @ inspector-component.…ust=1692909490:1390
dispatch @ jquery.js?bust=1692909490:5468
elemData.handle @ jquery.js?bust=1692909490:5272
</pre> TYPO3 Core - Bug #101684 (Under Review): <typo3-backend-icon> changed to inline element in TYPO3 v12http://forge.typo3.org/issues/1016842023-08-15T07:32:44ZBenjamin Franzkeben@bnf.dev
<p>Expect: <typo3-backend-icon> should render as in TYPO3 v11</p> TYPO3 Core - Bug #93270 (Under Review): BroadcastMessage.fromData() is not idempotenthttp://forge.typo3.org/issues/932702021-01-12T06:35:24ZBenjamin Franzkeben@bnf.dev
<p>If BroadcastMessage is recreated using <code>BroadcastMessage.fromData()</code> it does not retain the original object structure. This is because <code>BroadcastMessage.fromData()</code> nests the entrire data (which includes a <code>payload</code> property itself) into another wrapping <code>payload</code> property.</p>
<p>Given following JavaScript code (executable in a Browser console in a window of the TYPO3 Backend):</p>
<pre><code class="javascript syntaxhl" data-language="javascript"><span class="nb">window</span><span class="p">.</span><span class="nf">require</span><span class="p">([</span><span class="dl">'</span><span class="s1">TYPO3/CMS/Backend/BroadcastMessage</span><span class="dl">'</span><span class="p">],</span> <span class="p">({</span><span class="nx">BroadcastMessage</span><span class="p">})</span> <span class="o">=></span> <span class="p">{</span>
<span class="kd">const</span> <span class="nx">bm1</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">BroadcastMessage</span><span class="p">(</span><span class="dl">'</span><span class="s1">component</span><span class="dl">'</span><span class="p">,</span> <span class="dl">'</span><span class="s1">eventName</span><span class="dl">'</span><span class="p">,</span> <span class="p">{</span><span class="na">foo</span><span class="p">:</span> <span class="dl">'</span><span class="s1">bar</span><span class="dl">'</span><span class="p">})</span>
<span class="c1">// Create bm2 from bm1, as if bm1 has been sent via broadcastchannel</span>
<span class="kd">const</span> <span class="nx">bm2</span> <span class="o">=</span> <span class="nx">BroadcastMessage</span><span class="p">.</span><span class="nf">fromData</span><span class="p">(</span><span class="nx">bm1</span><span class="p">)</span>
<span class="nx">console</span><span class="p">.</span><span class="nf">log</span><span class="p">(</span><span class="dl">'</span><span class="s1">bm1</span><span class="dl">'</span><span class="p">,</span> <span class="nx">bm1</span><span class="p">.</span><span class="nx">payload</span><span class="p">)</span>
<span class="nx">console</span><span class="p">.</span><span class="nf">log</span><span class="p">(</span><span class="dl">'</span><span class="s1">bm2</span><span class="dl">'</span><span class="p">,</span> <span class="nx">bm2</span><span class="p">.</span><span class="nx">payload</span><span class="p">)</span>
<span class="p">})</span>
</code></pre>
<p>The expected result/output is that <code>payload</code> contains the same value for both <code>BroadcastMessage</code> instances:<br /><pre>
bm1 {foo: "bar"}
bm2 {foo: "bar"}
</pre></p>
<p>While it actually is:<br /><pre>
bm1 {foo: "bar"}
bm2 {payload: {foo: "bar"}}
</pre></p>
<p><code>BroadcastMessage.fromData()</code> should be fixed to be idempotent, while keeping backwards compatibility (to existing event-subscribers) by doing the "additional" payload wrapping in <code>BroadcastMessage.createCustomEvent</code>. The "good" thing is, that BroadcastMessage isn't used directly by subscribers, it is transformed into a <code>CustomEvent</code>, therefore this can be fixed without breaking BC.</p> TYPO3 Core - Bug #91220 (Accepted): ExtensionManager dependency calculation does not take extensi...http://forge.typo3.org/issues/912202020-04-28T11:40:12ZBenjamin Franzkeben@bnf.dev
<p>When one extension depends on two extensions where both extensions depend on a third one, but with a different set of matching versions, then ExtensionManager is unable to find the common dependency version that is allowed by both extensions, because it decided for a very too early.</p>
<p>Sound very complicated in written words, therefore an example:</p>
<p>Two custom extensions: "master" and "other_ext"</p>
<p>EXT:master (allowing powermail v6-v8 and depending on `other_ext`)</p>
<pre><code>'constraints' => array(<br /> 'depends' => array(<br /> 'typo3' => '9.5.0-9.5.99',<br /> 'powermail' => '6.0.0-8.99.99',<br /> 'other_ext' => '*',<br /> ),<br /> ),<br />EXT:other_ext (allowing only powermail v6)</code></pre>
<pre><code>'constraints' => array(<br /> 'depends' => array(<br /> 'typo3' => '9.5.0-9.5.99',<br /> 'powermail' => '6.0.0-6.99.99',<br /> ),<br /> ),</code></pre>
<p>When installing "master" on 9.5 the error "powermail was requested to be downloaded in different versions (6.2.0 and 7.4.0)." will be thrown.</p>
<p>That is because the latest version of powermail is used when checking dependencies for "EXT:master" – the compatible v6 should/could be taken into account as both extensions are marked to be compatible with it and v6 itself is marked to be v9.5 compatible.</p>
<p>Note: This is <strong>not</strong> a bug that was introduced with <a class="external" href="https://review.typo3.org/c/Packages/TYPO3.CMS/+/64308/">https://review.typo3.org/c/Packages/TYPO3.CMS/+/64308/</a> (that patch is fine) – it's just an additional and more complex case.</p>
<p><a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: Special dependencies are not checked during install of dependencies (Closed)" href="http://forge.typo3.org/issues/91179">#91179</a> is therefore related, but not the source of this bug.</p>