TYPO3 Forge: Issueshttp://forge.typo3.org/http://forge.typo3.org/themes/typo3_forge/favicon/favicon.png?17058661692023-10-02T09:20:30ZTYPO3 Forge
Redmine TYPO3 Core - Feature #102077 (Closed): Custom default value for getFormValue() function in varian...http://forge.typo3.org/issues/1020772023-10-02T09:20:30ZMathias Brodalambrodala@pagemachine.de
<p>The "form" extension provides a <code>getFormValue()</code> function to be used in variant conditions. It allows accessing form values without triggering an "undefined array index" error in PHP.</p>
<p>However, it unconditionally returns <code>null</code> in case a form value is undefined. This should be extended to optionally provide a custom default/fallback value. This would shorten conditions considerably, e.g. when checking for values of a <code>MultiCheckbox</code> field:</p>
<table>
<tr>
<th>Before</th>
<th>After</th>
</tr>
<tr>
<td> getFormValue("multiCheckboxField") && "foo" in getFormValue("multiCheckboxField") </td>
<td> "foo" in getformValue("multiCheckboxField", []) </td>
</tr>
</table> TYPO3 Core - Task #97873 (Closed): Named handlers in HTTP stackhttp://forge.typo3.org/issues/978732022-07-08T08:57:25ZMathias Brodalambrodala@pagemachine.de
<p>Since <a class="issue tracker-1 status-5 priority-3 priority-lowest closed" title="Bug: RequestFactory respects Guzzle Middleware/Handler configuration from TYPO3_CONF_VARS (Closed)" href="http://forge.typo3.org/issues/88871">#88871</a> one can add custom middlewares/handlers to the handler stack used by Guzzle within TYPO3 via <code>$GLOBALS['TYPO3_CONF_VARS']['HTTP']['handler']</code>.</p>
<p>These are pushed onto the handler stack without name. Chances are high that a name is available in the <code>$GLOBALS['TYPO3_CONF_VARS']['HTTP']['handler']</code> array so this should be pushed together with the middleware/handler.</p>
<p>Benefit: easier debugging.</p> TYPO3 Core - Bug #97522 (Closed): Word "new" in command "description" breaks DIhttp://forge.typo3.org/issues/975222022-04-29T16:44:01ZMathias Brodalambrodala@pagemachine.de
<p>Given a command definition like this ...</p>
<pre><code class="yaml syntaxhl" data-language="yaml"><span class="na">services</span><span class="pi">:</span>
<span class="na">_defaults</span><span class="pi">:</span>
<span class="na">autowire</span><span class="pi">:</span> <span class="kc">true</span>
<span class="na">autoconfigure</span><span class="pi">:</span> <span class="kc">true</span>
<span class="na">public</span><span class="pi">:</span> <span class="kc">false</span>
<span class="na">Acme\Foo\</span><span class="pi">:</span>
<span class="na">resource</span><span class="pi">:</span> <span class="s1">'</span><span class="s">../Classes/*'</span>
<span class="na">Acme\Foo\Command\BarCommand</span><span class="pi">:</span>
<span class="na">tags</span><span class="pi">:</span>
<span class="pi">-</span> <span class="na">name</span><span class="pi">:</span> <span class="s">console.command</span>
<span class="na">command</span><span class="pi">:</span> <span class="s">example:bar</span>
<span class="na">description</span><span class="pi">:</span> <span class="s">Build a new bar</span>
<span class="na">schedulable</span><span class="pi">:</span> <span class="kc">false</span>
<span class="na">Acme\Foo\Command\QuxCommand</span><span class="pi">:</span>
<span class="na">tags</span><span class="pi">:</span>
<span class="pi">-</span> <span class="na">name</span><span class="pi">:</span> <span class="s">console.command</span>
<span class="na">command</span><span class="pi">:</span> <span class="s">example:qux</span>
<span class="na">description</span><span class="pi">:</span> <span class="s">Do something</span>
<span class="na">schedulable</span><span class="pi">:</span> <span class="kc">false</span>
</code></pre>
<p>... you get an error like this:</p>
<pre>
[ ParseError ]
syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM), expecting '('
Exception trace:
#0 ()
var/cache/code/di/DependencyInjectionContainer_<hash>.php:<line>
...
</pre>
<p>The generated service in the DI cache file:</p>
<pre><code class="php syntaxhl" data-language="php"> <span class="cd">/**
* Gets the public 'Acme\Foo\Command\BarCommand' shared autowired service.
*
* @return \Acme\Foo\Command\BarCommand
*/</span>
<span class="k">protected</span> <span class="k">function</span> <span class="n">getBarCommandService</span><span class="p">()</span>
<span class="p">{</span>
<span class="nv">$this</span><span class="o">-></span><span class="n">services</span><span class="p">[</span><span class="s1">'Acme\\Foo\\Command\\BarCommand'</span><span class="p">]</span> <span class="o">=</span> <span class="nv">$instance</span> <span class="o">=</span> <span class="nc">\TYPO3\CMS\Core\Utility\GeneralUtility</span><span class="o">::</span><span class="nf">makeInstanceForDi</span><span class="p">(</span><span class="nc">\Acme\Foo\Command\BarCommand</span><span class="o">::</span><span class="n">class</span><span class="p">,</span> <span class="nc">\TYPO3\CMS\Core\Utility\GeneralUtility</span><span class="o">::</span><span class="nf">makeInstanceForDi</span><span class="p">(</span><span class="nc">\Acme\Foo\Security\BarDependency</span><span class="o">::</span><span class="n">class</span><span class="p">));</span>
<span class="nv">$instance</span><span class="o">-></span><span class="nf">setName</span><span class="p">(</span><span class="s1">'example:bar'</span><span class="p">);</span>
<span class="nv">$instance</span><span class="o">-></span><span class="nf">setDescription</span><span class="p">(</span><span class="s1">'Build a \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstanceForDi(bar'</span><span class="p">);</span>
<span class="k">return</span> <span class="nv">$instance</span><span class="p">;</span>
<span class="p">}</span>
<span class="cd">/**
* Gets the public 'Acme\Foo\Command\QuxCommand' shared autowired service.
*
* @return \Acme\Foo\Command\QuxCommand
*/</span>
<span class="k">protected</span> <span class="k">function</span> <span class="n">getQuxCommandService</span><span class="p">::</span><span class="kt">class</span><span class="p">)</span>
<span class="p">{</span>
<span class="c1"># ...</span>
<span class="p">}</span>
</code></pre>
<p>This is very likely caused by the rather simple replacement here:</p>
<p><a class="external" href="https://github.com/TYPO3/typo3/blob/6f7514f51634fd98a4d4def818c3f16e28aff538/typo3/sysext/core/Classes/DependencyInjection/ContainerBuilder.php#L166">https://github.com/TYPO3/typo3/blob/6f7514f51634fd98a4d4def818c3f16e28aff538/typo3/sysext/core/Classes/DependencyInjection/ContainerBuilder.php#L166</a></p>
<pre><code class="php syntaxhl" data-language="php"><span class="nv">$code</span> <span class="o">=</span> <span class="nb">preg_replace</span><span class="p">(</span><span class="s1">'/new ([^\(\s]+)\(/'</span><span class="p">,</span> <span class="s1">'\\TYPO3\\CMS\\Core\\Utility\\GeneralUtility::makeInstanceForDi(\\1::class, '</span><span class="p">,</span> <span class="nv">$code</span><span class="p">);</span>
</code></pre> TYPO3 Core - Bug #96929 (Closed): TCA / TCA overrides with variable leakshttp://forge.typo3.org/issues/969292022-02-16T15:38:05ZMathias Brodalambrodala@pagemachine.de
<p>All TCA and TCA overrides files are included without any scoping. This means that variables defined in these files can leak into the following files.</p>
<p>Also all variables defined in <code>ExtensionManagementUtility::buildBaseTcaFromSingleFiles()</code> exist in TCA and TCA override files and could even be manipulated.</p>
<p>See <a class="external" href="https://github.com/TYPO3/typo3/blob/35f7bbb381514efd483b9bfe1570229fc454dd8f/typo3/sysext/core/Classes/Utility/ExtensionManagementUtility.php#L1477">https://github.com/TYPO3/typo3/blob/35f7bbb381514efd483b9bfe1570229fc454dd8f/typo3/sysext/core/Classes/Utility/ExtensionManagementUtility.php#L1477</a></p>
<p>Possible solution: wrap the <code>require</code> calls for TCA / TCA override files with a closure.</p> TYPO3 Core - Feature #96055 (Closed): Let the command "language:update" issue warningshttp://forge.typo3.org/issues/960552021-11-23T09:57:29ZMathias Brodalambrodala@pagemachine.de
<p>Currently the CLI command <code>language:update</code> fails hard if translations could not be fetched. (No matter if for a private extension or a public extension without translations, see <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: CLI command language:update fails due to packages without translation packs (Closed)" href="http://forge.typo3.org/issues/95700">#95700</a>)</p>
<p>It would be useful if these where warnings instead by default since failed translations are updates are usually not that important and low priority.</p>
<p>An optional CLI option could be added to turn these warnings into errors again which would be useful for CI systems.</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 #85320 (Rejected): Translation arguments not inserted into default valuehttp://forge.typo3.org/issues/853202018-06-20T16:37:57ZMathias Brodalambrodala@pagemachine.de
<p>Given is a form with a default value for a form element label which includes placeholders like <code>%s</code> and <a href="https://docs.typo3.org/typo3cms/extensions/form/Concepts/FrontendRendering/Index.html#form-element-translation-arguments-are-supported" class="external">translation arguments via TypoScript</a>.</p>
<p>When viewing the page with the form in English then the translation arguments are not inserted into the form element label. Instead the default value for the label is shown including placeholders.</p> TYPO3 Core - Bug #83246 (Rejected): TCA "check" eval "maximumRecordsChecked*" not implemented any...http://forge.typo3.org/issues/832462017-12-07T10:56:21ZMathias Brodalambrodala@pagemachine.de
<p>The two <code>eval</code> options <code>maximumRecordsChecked</code> and <code>maximumRecordsCheckedInPid</code> mentioned in the <a href="https://docs.typo3.org/typo3cms/TCAReference/ColumnsConfig/Type/Check.html#eval" class="external">docs for TCA type <code>check</code></a> are not implemented anymore. This might have been dropped with the FormEngine refactor.</p> TYPO3 Core - Feature #71038 (Rejected): Install extensions with dependencies on CLIhttp://forge.typo3.org/issues/710382015-10-26T14:31:03ZMathias Brodalambrodala@pagemachine.de
<p>The <code>ExtensionCommandController</code> provides the <code>extension:install</code> command which can be used to install extensions via CLI while ignoring all dependencies.</p>
<p>A switch like <code>--with-dependencies</code> could be added which triggers installation of all extensions required by the extension to install. Of course these must exist when invoking this command. (Which is already given if the extension was fetched via Composer.)</p> TYPO3 Core - Bug #69790 (Rejected): Page tree hidden after going back from syslog linkhttp://forge.typo3.org/issues/697902015-09-14T15:38:46ZMathias Brodalambrodala@pagemachine.de
<p>The system information menu in the header of the backend shows a link to the Log module in case there are errors. Upon clicking this link, the page tree component is hidden since it's not used in the Log module.</p>
<p>If you go back via the browser back button afterwards, the page tree stays hidden.</p>
<p>The page tree should be displayed again instead.</p> TYPO3 Core - Task #69748 (Rejected): Use IconRegistry API to register iconshttp://forge.typo3.org/issues/697482015-09-13T10:45:19ZMathias Brodalambrodala@pagemachine.de
<p>Currently icons of all shipped TYPO3 extensions have their icons registered directly within the <code>IconRegistry</code>. This should be refactored to use our own API for registering icons in each extension. (aka "Eating your own dog food".)</p>
<p>This should be done last after all icons have been moved to <code>IconRegistry</code>/<code>IconFactory</code>.</p> TYPO3 Core - Feature #61066 (Rejected): Configuration per application contexthttp://forge.typo3.org/issues/610662014-08-19T15:00:14ZMathias Brodalambrodala@pagemachine.de
<p>TYPO3 Flow allows for different configuration per application context (even subcontexts). The same should be supported in CMS, too.</p> TYPO3 Core - Feature #60546 (Rejected): Flash message support for command controllershttp://forge.typo3.org/issues/605462014-07-24T21:42:41ZMathias Brodalambrodala@pagemachine.de
<p>Command controllers should be able to create flash messages just like action controllers.</p>
<p>Displaying them in the backend if executed as Scheduler task should be pretty straightforward as every backend module can do this.</p>
<p>Displaying them in CLI would take quite a lot of work unless the Symfony console is merged with <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: [FEATURE] Integrate Symfony/Console into CommandController (Closed)" href="http://forge.typo3.org/issues/59606">#59606</a>. In that case Symfony's native support for <a href="http://symfony.com/doc/current/components/console/helpers/formatterhelper.html#print-messages-in-a-block" class="external">outputting a message block</a> with appropriate colors should do the trick.</p> TYPO3 Core - Feature #59899 (Rejected): Clear system caches selectivelyhttp://forge.typo3.org/issues/598992014-06-26T11:57:02ZMathias Brodalambrodala@pagemachine.de
<p>There should be a way to selectively clear system caches.</p>
<p>This would speed up development tremendously, e.g. if one needs to clear the database query cache but doesn't care about any of the other caches.</p>
<p>A possible solution would be either a dialog with checkboxes or a submenu with a list of caches.</p> TYPO3 Core - Bug #52888 (Rejected): FIRST_INSTALL file is ignoredhttp://forge.typo3.org/issues/528882013-10-16T13:40:24ZMathias Brodalambrodala@pagemachine.de
<p>The <code>FIRST_INSTALL</code> file which may be used to have the TYPO3 installer automatically create the <code>ENABLE_INSTALL_TOOL</code> file is completely ignored in the new installer. In fact, a file search yields nothing.</p>