TYPO3 Forge: Issueshttp://forge.typo3.org/http://forge.typo3.org/themes/typo3_forge/favicon/favicon.png?17058661692024-02-07T10:59:45ZTYPO3 Forge
Redmine TYPO3 Core - Feature #103072 (New): Manage translation DB fieldshttp://forge.typo3.org/issues/1030722024-02-07T10:59:45ZMathias Brodalambrodala@pagemachine.de
<p>Currently the TCA of TYPO3 knows these <code>ctrl</code> options to enable and manage translation behavior for tables:</p>
<p>- <code>languageField</code> (<code>sys_language_uid</code> by convention)<br />- <code>transOrigPointerField</code> (<code>l10n_parent</code> by convention, <code>l18n_parent</code> in <code>tt_content</code>)<br />- <code>translationSource</code>(<code>l10n_source</code> by convention)<br />- <code>transOrigDiffSourceField</code> (<code>l10n_diffsource</code> by convention, <code>l18n_diffsource</code> in <code>tt_content</code>)</p>
<p>Each of these have 2 purposes:</p>
<p>1. Enable translations or a related feature<br />2. Tell TYPO3 which DB field to use in queries</p>
<p>This by itself is a problem but the main question is whether the names of these DB fields need to be configurable at all.</p>
<p>There are recently a lot of consolidations and simplifications in TCA. The same could be applied here:</p>
<p>- Turn these options from <code>string</code> to <code>bool</code>, thus only enable/disable the feature. TYPO3 would then use fixed DB field names and thus fully manage these.<br />- Consolidate/merge these options with better and clearer names, e.g. <code>'enableTranslations' => true</code>, <code>'trackTranslationDifferences' => true</code> or similar.</p> 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 - 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 - Feature #89417 (New): Snippets/components in form definitionshttp://forge.typo3.org/issues/894172019-10-15T09:58:57ZMathias Brodalambrodala@pagemachine.de
<p>It would be useful if the Form framework did support snippets/components. These could then be referenced in a regular form definition and would be inserted on the fly as soon as the form is built.</p>
<p>Obviously some kind of parameter support would be necessary here to make it easy to e.g. set the name for a form field provided by a snippet.</p>
<p>Maybe this could be achieved with <a class="issue tracker-2 status-5 priority-4 priority-default closed child parent" title="Feature: Support "imports" within forms form definition files (Closed)" href="http://forge.typo3.org/issues/84204">#84204</a> and YAML anchors/references.</p> TYPO3 Core - Bug #86917 (Closed): Missing support for options in "Execute console commands" sched...http://forge.typo3.org/issues/869172018-11-13T14:44:14ZMathias Brodalambrodala@pagemachine.de
<p>The <strong>Execute console commands</strong> scheduler task added in <a class="issue tracker-2 status-5 priority-5 priority-high3 closed" title="Feature: Symfony CLI executable via scheduler task (Closed)" href="http://forge.typo3.org/issues/79462">#79462</a> only supports command arguments. Command options (aka "flags") are currently not supported.</p>
<p>These should be supported and rendered as checkboxes to provide a full replacement for the legacy Extbase CommandController task.</p> TYPO3 Core - Feature #83175 (New): Add option to disable "Move page" prompthttp://forge.typo3.org/issues/831752017-11-30T15:04:43ZMathias Brodalambrodala@pagemachine.de
<p>The new page tree shows a modal prompt when a page was moved to ask for Move, Copy or Cancel.</p>
<p>Since this slows down editing workflows considerably there should be an option to disable this and default to move and copy when pressing the Ctrl key during drag-and-drop.</p>
<p>Cancelling everything via the Esc key during drag would be the icing on the cake. ;-)</p> TYPO3 Core - Feature #82019 (New): Accept array instead of CSV in TCAhttp://forge.typo3.org/issues/820192017-08-01T14:14:26ZMathias Brodalambrodala@pagemachine.de
<p>There are various locations in TCA which require a CSV string of values, e.g. <code>ctrl/searchFields</code> or <code>types/N/showitem</code>.</p>
<p>To make it easer to handle this e.g. in Git one can use a multi-line string or the <code>implode()</code> function to convert an array of strings back to an CSV string.</p>
<p>Arrays of strings should be supported natively here to streamline TCA config.</p> TYPO3 Core - Bug #81709 (Closed): Multiple INCLUDE_TYPOSCRIPT extensions with spaces not workinghttp://forge.typo3.org/issues/817092017-06-27T12:18:53ZMathias Brodalambrodala@pagemachine.de
<p>The following TypoScript snippet won't include files with anything but the first file extension:</p>
<pre>
<INCLUDE_TYPOSCRIPT: source="DIR: ./Library" extensions="ts, setupts, tx">
</pre>
<p>The reason is the space after the comma which in the end lets <code>TypoScriptParser::includeDirectory()</code> (more specifically <code>GeneralUtility::getFilesInDir()</code> handle them as "<code>ts</code>", "<code> setupts</code>" and "<code> tx</code>" (mind the leading space).</p>
<p>This should probably cleaned up with <code>GeneralUtility::trimExplode()</code>.</p> TYPO3 Core - Task #77708 (Closed): Follow semverhttp://forge.typo3.org/issues/777082016-08-31T10:35:39ZMathias Brodalambrodala@pagemachine.de
<p>The TYPO3 development/release cycle could be changed to follow <a href="http://semver.org/" class="external">semver</a></p>
<p>This would mean reliable release versions with 100% guarantee of no breaking changes in patch and minor releases. Currently breaking changes also go into minor releases up until the next LTS.</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 #61090 (Closed): Static access to Enumeration constantshttp://forge.typo3.org/issues/610902014-08-20T09:28:28ZMathias Brodalambrodala@pagemachine.de
<p>To get all available constants for a <code>TYPO3\CMS\Core\Type\Enumeration</code>, one has to create an instance and call the <code>getConstants()</code> method. This is weird for various purposes:</p>
<ol>
<li>You have to rely on a <code>__default</code> being defined or have to pick an arbitrary value to create the instance</li>
<li>The enumeration constants are stored statically anyways so one should not need an instance to get them.</li>
</ol>
<p>Compare the current state:</p>
<pre>
$myEnum = new MyEnum(MyEnum::VALID_VALUE);
print_r($myEnum->getConstants());
</pre>
<p>With the desired state:</p>
<pre>
print_r(MyEnum::getConstants());
</pre>
<p>With PHP 5.3 the <a href="http://php.net/get_called_class" class="external">get_called_class()</a> function was introduced which can be used here. In fact it is already used in <code>Enumeration::cast()</code> and it is beyond me why not here.</p>
<p>To fix this, the <code>getConstants()</code> method can be made static which fortunately <a href="http://php.net/manual/en/language.oop5.static.php" class="external">does not break instance invocation</a>:</p>
<blockquote>
<p>A property declared as static cannot be accessed with an instantiated class object (though a static method can).</p>
</blockquote>
<p>Thus the first example above will continue to work.</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 #55757 (Closed): Add PageTSconfig analyzerhttp://forge.typo3.org/issues/557572014-02-07T12:26:47ZMathias Brodalambrodala@pagemachine.de
<p>Similar to what the Template Analyzer does for the TypoScript Object Browser an additional mod function for analyzing PageTS would be useful.</p>
<p>ATM one can only see the currently parsed PageTS for pages. It is impossible to find out where and how this configuration was set which makes debugging for larger sites harder than it should be.</p>
<p>A PageTSconfig analyzer could help here by showing the content of added PageTS files and dynamically added sections like <code>defaultPageTSconfig</code>.</p> TYPO3 Core - Task #53455 (Closed): Update backend page titlehttp://forge.typo3.org/issues/534552013-11-08T15:22:28ZMathias Brodalambrodala@pagemachine.de
<p>Since the introduction text of the install tool has been updated recently for 6.2 I think it is about time the page title of the backend is also updated to reflect the brand change. Thus "TYPO3 <version>" becomes "TYPO3 CMS <version>".</p>