TYPO3 Forge: Issueshttp://forge.typo3.org/http://forge.typo3.org/themes/typo3_forge/favicon/favicon.png?17058661692024-02-26T11:56:46ZTYPO3 Forge
Redmine TYPO3 Core - Bug #103202 (Resolved): TODO comments in FileInterface::setContents() cut offhttp://forge.typo3.org/issues/1032022024-02-26T11:56:46ZMathias Brodalambrodala@pagemachine.de
<p>Currently <code>FileInterface::setContents()</code> looks like this:</p>
<pre><code class="php syntaxhl" data-language="php"> <span class="cd">/**
* Replace the current file contents with the given string.
*
* @TODO : Consider to remove this function from the interface, as its
* @TODO : At the same time, it could be considered whether to make the whole
* @return $this
*/</span>
<span class="k">public</span> <span class="k">function</span> <span class="n">setContents</span><span class="p">(</span><span class="kt">string</span> <span class="nv">$contents</span><span class="p">):</span> <span class="kt">self</span><span class="p">;</span>
</code></pre>
<p>The TODO comments are cut off since the dreaded <code>[TASK] Move and Namespace (sic!) classes</code> commit. (<a class="issue tracker-4 status-5 priority-4 priority-default closed child" title="Task: Namespace switch core main patch (Closed)" href="http://forge.typo3.org/issues/40096">#40096</a>)</p>
<p>These should be restored for the time being.</p> TYPO3 Core - Bug #103057 (Resolved): Text as page ID silently convertedhttp://forge.typo3.org/issues/1030572024-02-06T08:02:50ZMathias Brodalambrodala@pagemachine.de
<p>Given you do a request like <code>/index.php?id=foobar</code>, thus a text instead of a number as <code>id</code> then you will see the start page of your site.</p>
<p>Also number-like texts like <code>/index.php?id=2step</code> will try to use the number part of the <code>id</code>, in this case <code>/index.php?id=2</code>.</p>
<p>In all of these cases the frontend should throw a 404 instead.</p>
<p>Especially since there is no more support for page aliases since <a class="issue tracker-4 status-5 priority-4 priority-default closed child" title="Task: Remove pages.alias database field (Closed)" href="http://forge.typo3.org/issues/87356">#87356</a></p> TYPO3 Core - Bug #102083 (Resolved): Validation triggered for fields in fieldsets disabled by var...http://forge.typo3.org/issues/1020832023-10-04T10:03:41ZMathias Brodalambrodala@pagemachine.de
<p>Given fields are placed in a fieldset and that fieldset is disabled using variants. Also given that these fields have validators.</p>
<p>Now if one tries to submit the form, it is displayed again without explanation. Inspection of the validation results shows that the validators of the fields have been triggered and couldn't validate the input of the fields. These fields could not be filled by the user since they are disabled together with their fieldset.</p>
<p>Validators of fields within disabled fieldsets should be ignored.</p> TYPO3 Core - Bug #102055 (Under Review): Form runtime next/previous page ignores variantshttp://forge.typo3.org/issues/1020552023-09-28T08:06:46ZMathias Brodalambrodala@pagemachine.de
<p>Given a form with conditional pages variants are not respected when the navigation is built. Example:</p>
<pre><code class="yaml syntaxhl" data-language="yaml"><span class="na">type</span><span class="pi">:</span> <span class="s">Form</span>
<span class="na">prototypeName</span><span class="pi">:</span> <span class="s">standard</span>
<span class="na">identifier</span><span class="pi">:</span> <span class="s">multi-step-form</span>
<span class="na">label</span><span class="pi">:</span> <span class="s">Muli step form</span>
<span class="na">renderables</span><span class="pi">:</span>
<span class="pi">-</span>
<span class="na">type</span><span class="pi">:</span> <span class="s">Page</span>
<span class="na">identifier</span><span class="pi">:</span> <span class="s">page-1</span>
<span class="na">label</span><span class="pi">:</span> <span class="s">First step</span>
<span class="na">renderables</span><span class="pi">:</span>
<span class="pi">-</span>
<span class="na">type</span><span class="pi">:</span> <span class="s">Checkbox</span>
<span class="na">identifier</span><span class="pi">:</span> <span class="s">checkbox-1</span>
<span class="na">label</span><span class="pi">:</span> <span class="s">Check this and the 2nd step will be skipped</span>
<span class="pi">-</span>
<span class="na">type</span><span class="pi">:</span> <span class="s">Page</span>
<span class="na">identifier</span><span class="pi">:</span> <span class="s">page-2</span>
<span class="na">label</span><span class="pi">:</span> <span class="s">Second step</span>
<span class="na">renderingOptions</span><span class="pi">:</span>
<span class="na">enabled</span><span class="pi">:</span> <span class="kc">false</span>
<span class="na">variants</span><span class="pi">:</span>
<span class="pi">-</span>
<span class="na">identifier</span><span class="pi">:</span> <span class="s">variant-2</span>
<span class="na">condition</span><span class="pi">:</span> <span class="s1">'</span><span class="s">traverse(formValues,</span><span class="nv"> </span><span class="s">"checkbox-1")</span><span class="nv"> </span><span class="s">==</span><span class="nv"> </span><span class="s">0'</span>
<span class="na">renderingOptions</span><span class="pi">:</span>
<span class="na">enabled</span><span class="pi">:</span> <span class="kc">true</span>
<span class="pi">-</span>
<span class="na">type</span><span class="pi">:</span> <span class="s">Page</span>
<span class="na">identifier</span><span class="pi">:</span> <span class="s">page-3</span>
<span class="na">label</span><span class="pi">:</span> <span class="s">Third step</span>
<span class="na">renderingOptions</span><span class="pi">:</span>
<span class="na">enabled</span><span class="pi">:</span> <span class="kc">false</span>
<span class="na">variants</span><span class="pi">:</span>
<span class="pi">-</span>
<span class="na">identifier</span><span class="pi">:</span> <span class="s">variant-2</span>
<span class="na">condition</span><span class="pi">:</span> <span class="s1">'</span><span class="s">traverse(formValues,</span><span class="nv"> </span><span class="s">"checkbox-1")</span><span class="nv"> </span><span class="s">==</span><span class="nv"> </span><span class="s">1'</span>
<span class="na">renderingOptions</span><span class="pi">:</span>
<span class="na">enabled</span><span class="pi">:</span> <span class="kc">true</span>
</code></pre>
<p>Enabling the checkbox on the 1st page and going to the next page will show the 3rd page and a "Submit" button.</p>
<p>Not enabling the checkbox on the 1st page and going to the next page will show the 2nd page and a "Next Page" button. However, there is no next page here. In this case the button should also say "Submit".</p>
<p>The example above generally disables all subsequent pages and conditionally enables them which is a logical approach IMO. Especially because it allows you to have conditions which match their page 1:1. The reverse logic as <a href="https://docs.typo3.org/c/typo3/cms-form/main/en-us/I/Concepts/Variants/Index.html?highlight=steps#hide-steps" class="external">suggested by the docs</a> also doesn't work however:</p>
<pre><code class="yaml syntaxhl" data-language="yaml"><span class="na">type</span><span class="pi">:</span> <span class="s">Form</span>
<span class="na">prototypeName</span><span class="pi">:</span> <span class="s">standard</span>
<span class="na">identifier</span><span class="pi">:</span> <span class="s">multi-step-form</span>
<span class="na">label</span><span class="pi">:</span> <span class="s">Muli step form</span>
<span class="na">renderables</span><span class="pi">:</span>
<span class="pi">-</span>
<span class="na">type</span><span class="pi">:</span> <span class="s">Page</span>
<span class="na">identifier</span><span class="pi">:</span> <span class="s">page-1</span>
<span class="na">label</span><span class="pi">:</span> <span class="s">First step</span>
<span class="na">renderables</span><span class="pi">:</span>
<span class="pi">-</span>
<span class="na">type</span><span class="pi">:</span> <span class="s">Checkbox</span>
<span class="na">identifier</span><span class="pi">:</span> <span class="s">checkbox-1</span>
<span class="na">label</span><span class="pi">:</span> <span class="s">Check this and the 2nd step will be skipped</span>
<span class="pi">-</span>
<span class="na">type</span><span class="pi">:</span> <span class="s">Page</span>
<span class="na">identifier</span><span class="pi">:</span> <span class="s">page-2</span>
<span class="na">label</span><span class="pi">:</span> <span class="s">Second step</span>
<span class="na">variants</span><span class="pi">:</span>
<span class="pi">-</span>
<span class="na">identifier</span><span class="pi">:</span> <span class="s">variant-2</span>
<span class="na">condition</span><span class="pi">:</span> <span class="s1">'</span><span class="s">traverse(formValues,</span><span class="nv"> </span><span class="s">"checkbox-1")</span><span class="nv"> </span><span class="s">==</span><span class="nv"> </span><span class="s">1'</span>
<span class="na">renderingOptions</span><span class="pi">:</span>
<span class="na">enabled</span><span class="pi">:</span> <span class="kc">false</span>
<span class="pi">-</span>
<span class="na">type</span><span class="pi">:</span> <span class="s">Page</span>
<span class="na">identifier</span><span class="pi">:</span> <span class="s">page-3</span>
<span class="na">label</span><span class="pi">:</span> <span class="s">Third step</span>
<span class="na">variants</span><span class="pi">:</span>
<span class="pi">-</span>
<span class="na">identifier</span><span class="pi">:</span> <span class="s">variant-2</span>
<span class="na">condition</span><span class="pi">:</span> <span class="s1">'</span><span class="s">traverse(formValues,</span><span class="nv"> </span><span class="s">"checkbox-1")</span><span class="nv"> </span><span class="s">==</span><span class="nv"> </span><span class="s">0'</span>
<span class="na">renderingOptions</span><span class="pi">:</span>
<span class="na">enabled</span><span class="pi">:</span> <span class="kc">false</span>
</code></pre> TYPO3 Core - Task #96267 (New): Add dedicated error for class construction without dependencieshttp://forge.typo3.org/issues/962672021-12-07T09:29:03ZMathias Brodalambrodala@pagemachine.de
<p>Right now if <code>GeneralUtility::makeInstance()</code> is used to construct a class which uses constructor dependency injection and has not being marked as <code>public</code>, a low-level <code>\ArgumentCountError</code> is thrown by PHP.</p>
<p>This should be improved by catching this case and replacing the error with a custom one (e.g. <code>MissingDependenciesError</code>). Either that custom error already hints at possible solutions or its dedicated error code is used to link to the docs with more details. The docs could then suggest to mark the class as <code>public</code> or manually pass the dependencies as arguments.</p> TYPO3 Core - Bug #96054 (Closed): Command "language:update" does not log error on missing transla...http://forge.typo3.org/issues/960542021-11-23T09:53:47ZMathias Brodalambrodala@pagemachine.de
<p>The CLI command <code>language:update</code> invokes <code>LanguagePackService::languagePackDownload()</code> for each active extension. Here a HTTP request is performed on the translation server which can fail with an exception on 404.</p>
<p>The <code>RequestFactory::request()</code> call here should be adjusted to include <a href="https://docs.guzzlephp.org/en/stable/request-options.html#http-errors" class="external"><code>['http_errors' => false]</code></a> to have Guzzle return the 404 response instead of throwing an exception. This would allow for logging this as a regular warning.</p> TYPO3 Core - Bug #96053 (Closed): Command "language:update" succeeds on missing translations but ...http://forge.typo3.org/issues/960532021-11-23T09:50:25ZMathias Brodalambrodala@pagemachine.de
<p>The CLI command <code>language:update</code> is supposed to always fail if translations could not be fetched for an extension. But the behavior is different if <code>--no-progress</code> (or <code>--verbose</code>) is passed.</p>
<p>To reproduce:</p>
<ol>
<li>Install any extension without translations on the TYPO3 translation server (private or public), e.g. <code>container</code></li>
<li>Run <code>language:update</code>: succeeds</li>
<li>Run <code>language:update --no-progress</code>: fails</li>
<li>Run <code>language:update --verbose</code>: fails</li>
</ol>
<p>(Notice that the order of <code>language:update</code> invocations doesn't matter here.)</p> TYPO3 Core - Bug #95525 (New): Field label "DB mounts" is unclearhttp://forge.typo3.org/issues/955252021-10-07T15:05:44ZMathias Brodalambrodala@pagemachine.de
<p>The field <strong>DB mounts</strong> in users/groups is used to grant access to pages and page trees.</p>
<p>Thus the field should actually be named <strong>Page mounts</strong> / <strong>Web mounts</strong> or similar to actually tell what this is about. The term "DB" does not make sense for any user.</p> TYPO3 Core - Bug #93679 (Closed): Cropping to 0 (zero) pixels height/width breaks page/content ed...http://forge.typo3.org/issues/936792021-03-08T14:49:53ZMathias Brodalambrodala@pagemachine.de
<p>It is possible to store an image cropping configuration of 0 (zero) pixels in width or height. For this an editor simply needs to reduce the cropping frame to 0 in width or height. After saving an error shows up:</p>
<blockquote>
<p>Width and height of the image must be greater than zero</p>
</blockquote>
<p>(See <a class="external" href="https://github.com/TYPO3/TYPO3.CMS/blob/10.4/typo3/sysext/core/Classes/Imaging/ImageDimension.php#L76">https://github.com/TYPO3/TYPO3.CMS/blob/10.4/typo3/sysext/core/Classes/Imaging/ImageDimension.php#L76</a>)</p>
<p>Unless the <code>crop</code> field of the affected <code>sys_file_reference</code> record is cleared/fixed manually in the database, viewing the page in the <em>Page</em> module or editing the affected record in the <em>List</em> module is impossible due to this error.</p>
<p>A few options to fix this:</p>
<ol>
<li>Require a minimum of 1x1 Pixel for cropping</li>
<li>Display error and disable <em>Accept</em> in the <em>Image manipulation</em> wizard</li>
<li>Handle a width/height of 0 Pixel more gratuitously in <code>ImageDimension</code>.</li>
</ol> TYPO3 Core - Bug #92969 (Closed): Sudo mode password prompt triggers "Password change" in passwor...http://forge.typo3.org/issues/929692020-12-01T14:23:23ZMathias Brodalambrodala@pagemachine.de
<p>Not sure about other password managers but the name/ID <code>confirmationPassword</code> used for the password field introduced in <a class="issue tracker-4 status-8 priority-4 priority-default" title="Task: Introduce Sudo Mode for Install Tool (Under Review)" href="http://forge.typo3.org/issues/92836">#92836</a> triggers a "Password change" workflow in the Enpass password manager.</p>
<p>To avoid usability issues like these the field should be renamed and <code>autocomplete</code> should be considered.</p> TYPO3 Core - Bug #92881 (Closed): FluidEmail not rendered for getHtmlBody()http://forge.typo3.org/issues/928812020-11-19T15:55:14ZMathias Brodalambrodala@pagemachine.de
<p>Currently the <code>FluidEmail</code> added with <a class="issue tracker-2 status-5 priority-4 priority-default closed" title="Feature: Fluid-based templated emails (Closed)" href="http://forge.typo3.org/issues/90266">#90266</a> triggers rendering of its text and HTML body only on <code>getBody()</code> call. When calling <code>getHtmlBody()</code> instead, no rendering is triggered. Calling <code>getHtmlBody()</code> after calling <code>getBody()</code> will return the rendered HTML body of course.</p>
<p>This needs to be fixed so that each body getter renders its own part.</p> TYPO3 Core - Bug #92361 (New): Inconsistent port usage in redirectshttp://forge.typo3.org/issues/923612020-09-21T16:07:48ZMathias Brodalambrodala@pagemachine.de
<p>Currently it is not possible to set up valid redirects with ports. One can enter a "<host>:<port>" as <code>source_host</code> but this will be dropped again on next form display since the <code>SourceHost</code> evaluation marks the host as invalid.</p>
<p>However, a port must be set here since the <code>RedirectHandler</code> does respect this. If redirects are set up without port, there is no match and the redirects won't work.</p> TYPO3 Core - Bug #89616 (Closed): Extbase returns deleted objects if only endtime is configuredhttp://forge.typo3.org/issues/896162019-11-08T12:50:25ZMathias Brodalambrodala@pagemachine.de
<p>Given a table configured like this in TCA:</p>
<pre><code class="php syntaxhl" data-language="php"><span class="k">return</span> <span class="p">[</span>
<span class="s1">'ctrl'</span> <span class="o">=></span> <span class="p">[</span>
<span class="c1">// ...</span>
<span class="s1">'delete'</span> <span class="o">=></span> <span class="s1">'deleted'</span><span class="p">,</span>
<span class="s1">'enablecolumns'</span> <span class="o">=></span> <span class="p">[</span>
<span class="s1">'endtime'</span> <span class="o">=></span> <span class="s1">'endtime'</span><span class="p">,</span>
<span class="p">],</span>
<span class="c1">// ...</span>
<span class="p">],</span>
<span class="c1">// ...</span>
<span class="p">];</span>
</code></pre>
<p>If used in the BE/CLI context, Extbase will now return deleted rows in case <code>endtime</code> is <code>0</code>.</p>
<p>This is caused by Extbase's usage of <code>BackendUtility::BEenableFields()</code> will lead <code>Typo3DbQueryParser::getBackendConstraintStatement()</code> to generate a broken statement fragment like this:</p>
<pre><code class="sql syntaxhl" data-language="sql"> <span class="k">AND</span> <span class="p">(</span><span class="nv">`tx_mytable`</span><span class="p">.</span><span class="nv">`endtime`</span> <span class="o">=</span> <span class="mi">0</span><span class="p">)</span> <span class="k">OR</span> <span class="p">(</span><span class="nv">`tx_mytable`</span><span class="p">.</span><span class="nv">`endtime`</span> <span class="o">></span> <span class="mi">1573213620</span><span class="p">)</span> <span class="k">AND</span> <span class="n">tx_mytable</span><span class="p">.</span><span class="n">deleted</span><span class="o">=</span><span class="mi">0</span>
</code></pre>
<p>This allows selecting rows which are <code>deleted</code> as long as <code>endtime</code> is <code>0</code></p>
<p>Workaround: add at least one additional <code>enablecolumn</code>, so either <code>disabled</code> or <code>starttime</code>. This will lead to a working statement fragment like this:</p>
<pre><code class="sql syntaxhl" data-language="sql"> <span class="k">AND</span> <span class="p">(</span><span class="nv">`tx_mytable`</span><span class="p">.</span><span class="nv">`starttime`</span> <span class="o"><=</span> <span class="mi">1573214160</span><span class="p">)</span> <span class="k">AND</span> <span class="p">((</span><span class="nv">`tx_mytable`</span><span class="p">.</span><span class="nv">`endtime`</span> <span class="o">=</span> <span class="mi">0</span><span class="p">)</span> <span class="k">OR</span> <span class="p">(</span><span class="nv">`tx_mytable`</span><span class="p">.</span><span class="nv">`endtime`</span> <span class="o">></span> <span class="mi">1573214160</span><span class="p">))</span> <span class="k">AND</span> <span class="n">tx_mytable</span><span class="p">.</span><span class="n">deleted</span><span class="o">=</span><span class="mi">0</span>
</code></pre> TYPO3 Core - Bug #87519 (Closed): Class 'TYPO3\CMS\Core\Http\JsonResponse' not foundhttp://forge.typo3.org/issues/875192019-01-22T12:39:40ZMathias Brodalambrodala@pagemachine.de
<p>The <code>RequireJsController</code> uses the <code>JsonResponse</code> class in TYPO3v8 which was added with TYPO3v9 however.</p>
<p>This must be rewritten to not break the BE login.</p> TYPO3 Core - Bug #87035 (Closed): AdditionalFactoryConfiguration.php not used anymorehttp://forge.typo3.org/issues/870352018-11-29T10:32:53ZMathias Brodalambrodala@pagemachine.de
<p>The <code>typo3conf/AdditionalFactoryConfiguration.php</code> file can be used to provide additional default values to be put into <code>typo3conf/LocalConfiguration.php</code> upon TYPO3 setup.</p>
<p>However, this file is not used anymore since TYPO3v9 and currently must be placed one level above instead, so basically next to <code>index.php</code>.</p>
<p>This is a regression introduced with <a class="issue tracker-4 status-5 priority-4 priority-default closed" title="Task: Replace further path usages with Environment API (Closed)" href="http://forge.typo3.org/issues/85560">#85560</a>.</p>