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 - 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 #91074 (Rejected): typo3conf/ folder is not created when using a custom app-dir ...http://forge.typo3.org/issues/910742020-04-17T01:15:10ZBenjamin Franzkeben@bnf.dev
<p>In composer mode in composer.json:</p>
<pre><code>"extra": {<br /> "typo3/cms": {<br /> "app-dir": "custom",<br /> "web-dir": "public" <br /> }<br /> },</code></pre>
<p>In this case Environment::$projectPath would be /path/to/root/custom and Environment::$publicPath would be /path/to/root/public.</p>
<p>The typo3conf folder is then generated in /path/to/root/custom/typo3conf instead of /path/to/root/public/typo3conf.</p>
<p>This is actually by accident, because "custom" and "public" have the same length.<br />Reason is the code in <a class="external" href="https://git.typo3.org/Packages/TYPO3.CMS.git/blob/9fb677f6f3b3a1cd584b9ef183b35da771d3e25d:/typo3/sysext/install/Classes/FolderStructure/DefaultFactory.php#l134">https://git.typo3.org/Packages/TYPO3.CMS.git/blob/9fb677f6f3b3a1cd584b9ef183b35da771d3e25d:/typo3/sysext/install/Classes/FolderStructure/DefaultFactory.php#l134</a><br /><pre>
$publicPath = substr(Environment::getPublicPath(), strlen(Environment::getProjectPath())+1);
</pre><br />which tries to substract the project path from the public path, while assuming that project path is an ancestor, which results in a public path <code>""</code> to be calculate.<br />The result should rather be <code>"../public"</code>.</p>
<p>We should rather generate a relative path and adapt the FolderStructur Factory to handle relative paths, include partent dots ("..").</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