TYPO3 Forge: Issueshttp://forge.typo3.org/http://forge.typo3.org/themes/typo3_forge/favicon/favicon.png?17058661692024-03-21T04:31:37ZTYPO3 Forge
Redmine TYPO3 Core - Bug #103444 (Resolved): YamlFileLoader has no logger instancehttp://forge.typo3.org/issues/1034442024-03-21T04:31:37ZBenjamin Franzkeben@bnf.dev
<p>Uncaught TYPO3 Exception Call to a member function error() on null<br />thrown in file /home/ben/src/TYPO3.CMS/typo3/sysext/core/Classes/Configuration/Loader/YamlFileLoader.php<br />in line 171</p> TYPO3 Core - Bug #103382 (Resolved): Context-Menu placed in invisible area when opened at bottom ...http://forge.typo3.org/issues/1033822024-03-13T09:21:55ZBenjamin Franzkeben@bnf.dev
<p><a class="external" href="https://typo3.slack.com/archives/C03AM9R17/p1710271829140209?thread_ts=1710244943.836959&cid=C03AM9R17">https://typo3.slack.com/archives/C03AM9R17/p1710271829140209?thread_ts=1710244943.836959&cid=C03AM9R17</a><br /><a class="external" href="https://typo3.slack.com/archives/C03AM9R17/p1710244943836959">https://typo3.slack.com/archives/C03AM9R17/p1710244943836959</a></p> TYPO3 Core - Bug #103067 (Resolved): TCA password is autofilled when editing a user recordhttp://forge.typo3.org/issues/1030672024-02-07T09:18:25ZBenjamin Franzkeben@bnf.dev
<p><img src="http://forge.typo3.org/attachments/download/38237/tca-password-username-autocomplete.png" alt="" loading="lazy" /></p> TYPO3 Core - Bug #102994 (Resolved): typo3 setup throws exception as port is not casted to inthttp://forge.typo3.org/issues/1029942024-01-30T12:33:24ZBenjamin Franzkeben@bnf.dev
<pre>
TYPO3_DB_PORT=3306 \
TYPO3_DB_USERNAME=db \
TYPO3_DB_HOST=db \
TYPO3_DB_DBNAME=db \
TYPO3_DB_PASSWORD=db \
TYPO3_DB_DRIVER=mysqli \
TYPO3_SERVER_TYPE=other \
TYPO3_SETUP_ADMIN_EMAIL=admin@example.com \
TYPO3_SETUP_ADMIN_USERNAME=admin \
TYPO3_SETUP_ADMIN_PASSWORD='Pa$$w0rd' \
TYPO3_SETUP_CREATE_SITE="${DDEV_PRIMARY_URL}/" \
TYPO3_PROJECT_NAME="Test Install" \
vendor/bin/typo3 setup --force
Enter the database "port" [default: 3306] ? 3306
Uncaught TYPO3 Exception mysqli::real_connect(): Argument #5 ($port) must be of type ?int, string given
thrown in file /var/www/html/.build/v13/vendor/doctrine/dbal/src/Driver/Mysqli/Driver.php
in line 44
</pre> TYPO3 Core - Bug #102748 (Resolved): table wizard connected callback is not guaranteed to have ac...http://forge.typo3.org/issues/1027482024-01-04T08:27:29ZBenjamin Franzkeben@bnf.dev
<p>The <code><textarea></code> element is not guaranteed to be available, when it is rendered/delivered after the wizard element.</p> TYPO3 Core - Bug #102603 (Resolved): link-element initialization race conditionhttp://forge.typo3.org/issues/1026032023-12-05T07:55:23ZBenjamin Franzkeben@bnf.dev
<p><img src="http://forge.typo3.org/attachments/download/38151/link-browser-race-condition.png" alt="" loading="lazy" /></p> TYPO3 Core - Bug #102550 (Resolved): race condition in value-picker initialization http://forge.typo3.org/issues/1025502023-11-29T08:17:52ZBenjamin Franzkeben@bnf.dev
<p>(Custom) element children are not guaranteed to be available by the time<br />the element is added to the DOM — i.e. when the connectedCallback() is<br />triggered by the browser. That means we can not assume that value-picker<br /><select> children will always be available.</p>
<p>Note that it worked most of the times, because JavaScript modules are<br />loaded asynchronously, and thus "most of the times" execute later after<br />the DOM is rendered, but when the server is really busy, the HTML output<br />can be rendered very late, so that a connectedCallback is triggered<br />immediately when an opening tag is written to the DOM — even before the<br />childrens are attached. (Otherwise the browsers would have to delay the<br />connectedCallback's until the closing tag is rendered, but that's not<br />the case — at least not in google chrome.)</p>
<p>Error:<br /><img src="http://forge.typo3.org/attachments/download/38138/connected-callback-children.png" alt="" loading="lazy" /></p> TYPO3 Core - Bug #102377 (Resolved): Backend requests are cached (and used) within 1s timeframehttp://forge.typo3.org/issues/1023772023-11-16T05:26:57ZBenjamin Franzkeben@bnf.dev
<p>Backend responses must never be cached. The Cache-Control instruction "must-revalidate" implicitly enables<br />caching in order to possibly reuse a response. While that could only happen when two requests to the same URL are<br />invoked withing one second (because the browsers `If-Modified-Since` header and our `Last-Modified` header<br />do match, causing the webserver to issue a 304 response), that is certainly possible in CI setups or fast user clicks.</p>
<p>Nightly runs (and new CI) caught following CSP errors that happended because a previous request to the same backend URL<br />was tried to be reused.<br />That means the browser sends a `If-Modified-Since` header, the server compares that to our <code>Last-Modified</code> header and because those match for 1s (given times on server and client are equal), the server responds with a 304 response and new CSP headers.</p>
<p>Now, the client uses those new CSP headers on the old (cached) content, causing CSP errors.</p>
<p>Log from a previous nightly: <a class="external" href="https://git.typo3.org/typo3/CI/cms/-/jobs/2719694">https://git.typo3.org/typo3/CI/cms/-/jobs/2719694</a></p>
<pre>
1) TemplateCest: Open the TypoScript Object Browser and search a keyword.
Test Acceptance/Application/Template/TemplateCest.php:searchInTypoScriptActive
Step Use existing session "admin"
Fail Found following JavaScript errors in the browser console:
01:12:43.964 SEVERE - http://web/typo3/index.php 24 Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'self' 'nonce-q-0rXT6ndm1d4k1PB_skehGuei9NU4RmepZIoI0jaD4t4mptySRwtg' 'report-sample'". Either the 'unsafe-inline' keyword, a hash ('sha256-mOe1j2nA39ZHBa9vuj8vjm6s1j12BoBxmU5pq+c8myY='), or a nonce ('nonce-...') is required to enable inline execution.
01:12:43.965 SEVERE - http://web/typo3/index.php 28 Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'self' 'nonce-q-0rXT6ndm1d4k1PB_skehGuei9NU4RmepZIoI0jaD4t4mptySRwtg' 'report-sample'". Either the 'unsafe-inline' keyword, a hash ('sha256-eYBX9tiv0eShqtr6+0ybc98Tpn+++UDyS8IavaWnnig='), or a nonce ('nonce-...') is required to enable inline execution.
01:12:43.985 SEVERE - http://web/typo3/sysext/core/Resources/Public/JavaScript/java-script-item-handler.js?1699903243 12:137 Uncaught TypeError: Failed to resolve module specifier '@typo3/core/java-script-item-processor.js'
Scenario Steps:
1. $I->useExistingSession("admin") at Acceptance/Application/Template/TemplateCest.php:26
Artifacts:
Png: /builds/typo3/CI/cms/typo3/sysext/core/Tests/../../../../typo3temp/var/tests/AcceptanceReports/TYPO3.CMS.Core.Tests.Acceptance.Application.Template.TemplateCest.searchInTypoScriptActive.headless.fail.png
Html: /builds/typo3/CI/cms/typo3/sysext/core/Tests/../../../../typo3temp/var/tests/AcceptanceReports/TYPO3.CMS.Core.Tests.Acceptance.Application.Template.TemplateCest.searchInTypoScriptActive.headless.fail.html
FAILURES!
Tests: 36, Assertions: 162, Failures: 1.
</pre> TYPO3 Core - Bug #102328 (Resolved): Regression in cObjGethttp://forge.typo3.org/issues/1023282023-11-06T18:21:34ZBenjamin Franzkeben@bnf.dev
<p>Reported by Rafael Kähm in <a class="external" href="https://forge.typo3.org/issues/99503#note-13">https://forge.typo3.org/issues/99503#note-13</a></p>
<blockquote>
<p>Please reopen, because applied patch makes unnecessary BC at least on 11.5.<br />See:</p>
</blockquote>
<pre><code class="php syntaxhl" data-language="php">
<span class="k">public</span> <span class="k">function</span> <span class="n">cObjGet</span><span class="p">(</span><span class="nv">$setup</span><span class="p">,</span> <span class="nv">$addKey</span> <span class="o">=</span> <span class="s1">''</span><span class="p">)</span>
<span class="p">{</span>
<span class="k">return</span> <span class="nb">implode</span><span class="p">(</span><span class="s1">''</span><span class="p">,</span> <span class="nv">$this</span><span class="o">-></span><span class="nf">cObjGetSeparated</span><span class="p">(</span><span class="nv">$setup</span><span class="p">,</span> <span class="nv">$addKey</span><span class="p">));</span>
<span class="p">}</span>
<span class="k">public</span> <span class="k">function</span> <span class="n">cObjGetSeparated</span><span class="p">(</span><span class="kt">?array</span> <span class="nv">$setup</span><span class="p">,</span> <span class="kt">string</span> <span class="nv">$addKey</span> <span class="o">=</span> <span class="s1">''</span><span class="p">):</span> <span class="kt">array</span>
<span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nb">is_array</span><span class="p">(</span><span class="nv">$setup</span><span class="p">)</span> <span class="o">||</span> <span class="nv">$setup</span> <span class="o">===</span> <span class="p">[])</span> <span class="p">{</span>
<span class="k">return</span> <span class="p">[];</span>
<span class="p">}</span>
</code></pre>
<blockquote>
<p>Proposal:</p>
</blockquote>
<pre><code class="php syntaxhl" data-language="php"> <span class="k">public</span> <span class="k">function</span> <span class="n">cObjGet</span><span class="p">(</span><span class="nv">$setup</span><span class="p">,</span> <span class="nv">$addKey</span> <span class="o">=</span> <span class="s1">''</span><span class="p">)</span>
<span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nb">is_array</span><span class="p">(</span><span class="nv">$setup</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span> <span class="s1">''</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nb">implode</span><span class="p">(</span><span class="s1">''</span><span class="p">,</span> <span class="nv">$this</span><span class="o">-></span><span class="nf">cObjGetSeparated</span><span class="p">(</span><span class="nv">$setup</span><span class="p">,</span> <span class="nv">$addKey</span><span class="p">));</span>
<span class="p">}</span>
<span class="k">public</span> <span class="k">function</span> <span class="n">cObjGetSeparated</span><span class="p">(</span><span class="kt">?array</span> <span class="nv">$setup</span> <span class="o">=</span> <span class="p">[],</span> <span class="kt">string</span> <span class="nv">$addKey</span> <span class="o">=</span> <span class="s1">''</span><span class="p">):</span> <span class="kt">array</span>
<span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="k">empty</span><span class="p">(</span><span class="nv">$setup</span><span class="p">))</span> <span class="p">{</span>
<span class="k">return</span> <span class="p">[];</span>
<span class="p">}</span>
<span class="p">}</span>
</code></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 #102012 (Resolved): CKeditor5 link title (or other attributes) can not be unsethttp://forge.typo3.org/issues/1020122023-09-22T10:36:00ZBenjamin Franzkeben@bnf.dev
<p>When a link title is edited via CKEditor5 RTE Link browser, its value can not be unset, only changed.</p> TYPO3 Core - Bug #101918 (Resolved): CKEditor5 migration for contentsCss with cache busting query...http://forge.typo3.org/issues/1019182023-09-14T09:18:05ZBenjamin Franzkeben@bnf.dev
<p>With the following valid TYPO3 v11 ckeditor configuration in a v12 installation…</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">contentsCss</span><span class="pi">:</span> <span class="s2">"</span><span class="s">EXT:site/Resources/Public/Page/css/rte.css?v=4"</span>
</code></pre>
<p>…the CSS file is not taken into account, but a PHP warning is emitted instead.</p>
<p>The happens because the URL is read from the filesystem (by the ScssProcessor) instead of being requested directly via web request, without stripping the query string:<br /><pre>
PHP Warning
Core: Error handler (BE): PHP Warning: sha1_file(/var/www/html/typo3conf/ext/site/Resources/Public/Page/css/rte.css?v=4): Failed to open stream: No such file or directory in /var/www/html/typo3/sysext/rte_ckeditor/Classes/Form/Element/RichTextElement.php line 135
</pre></p>
<p>Note: A query string needed to be appended to RTE contentCss configuration in order to enforce browser cache busting on updates of the CSS file, when the default TYPO3 .htaccess configuration is used, which applies long-lived cache headers for resources by default.</p> TYPO3 Core - Story #101904 (Accepted): CKEditor5 UIhttp://forge.typo3.org/issues/1019042023-09-13T03:56:05ZBenjamin Franzkeben@bnf.dev
<p>Tracker for UI related CKEditor5 bugs or tasks.</p> TYPO3 Core - Bug #86372 (Closed): CacheManager 'assets' cache is not configurable in ext_localcon...http://forge.typo3.org/issues/863722018-09-25T14:39:41ZBenjamin Franzkeben@bnf.dev
<p>Since commit <a class="external" href="https://review.typo3.org/c/54020/">https://review.typo3.org/c/54020/</a> + followup <a class="external" href="https://review.typo3.org/54061">https://review.typo3.org/54061</a> (released only in v9) it is no longer possible to configure the 'assets' cache in ext_localconf.php files.</p>
<p>The IconRegisty is loaded in backend mode and reads the configuration (caches from 'assets') during object construction.<br />IconRegistry is usually instantiated during ext_localconf.php (due to extensions registering icons),<br />and therefore create's the 'assets' cache during ext_localconf.php loading.</p>
<p>After CacheManager has created the assets cache once, it will never be recreated again,<br />when the final configuration is set, after all ext_localconf.php files have been loaded.</p> TYPO3 Core - Task #83953 (Closed): Inject the PackageManager into the DependencyResolverhttp://forge.typo3.org/issues/839532018-02-17T18:58:36ZBenjamin Franzkeben@bnf.dev