TYPO3 Forge: Issueshttp://forge.typo3.org/http://forge.typo3.org/themes/typo3_forge/favicon/favicon.png?17058661692023-08-30T11:27:43ZTYPO3 Forge
Redmine TYPO3 Core - Bug #101798 (New): Prevent saving unchanged inline records to save performancehttp://forge.typo3.org/issues/1017982023-08-30T11:27:43ZSebastian Michaelsenmichaelsen@t3seo.de
<p><strong>Problem</strong></p>
<p>When you have a record, which has 10 inline items and the record is translated (along with the inline items) into 10 languages, then saving the record even with no changes to the inline items causes the DataHandler to save 110 database records which can take some 30 seconds.</p>
<p><strong>Why is that?</strong></p>
<p>The inline records have toggles to hide/unhide them (unless the table does no support that), which means when saving the record there will be a `someid => ['hidden' => '0']` entry for each inline item, which causes DataHandler to save that inline item, which then also triggers saving of its translations.</p>
<p><strong>Solution(?)</strong></p>
<p>It could be solved in backend JavaScript, so that the inline `hidden` form fields are only included in the request when their value was changed.</p>
<p><strong>Workaround</strong></p>
<p>For our project I created a backend middleware, that intercepts the `data` when a record is saved and removes any entries, that have just the hidden field and it is unchanged. (Yes, I create a database request for each of those entries but it's still <em>way</em> faster than before)</p> TYPO3 Core - Bug #98625 (Closed): Fluid syntax error in login templatehttp://forge.typo3.org/issues/986252022-10-16T06:04:26ZSebastian Michaelsenmichaelsen@t3seo.de
<p>In the default Login.html template of the <code>felogin</code> extension there's a space at the end of the <code>additionalAttributes</code> attribute, so that it is detected as string, when it should be an array, resulting in:</p>
<pre>
InvalidArgumentException: The argument "additionalAttributes" was registered with type "array", but is of type "string" in view helper "TYPO3\CMS\Fluid\ViewHelpers\Form\PasswordViewHelper"., in file /var/www/html/vendor/typo3fluid/fluid/src/Core/ViewHelper/AbstractViewHelper.php:352
</pre>
<p>This is where it happened</p> TYPO3 Core - Bug #97776 (New): Disabled scheduler tasks are not dimmed outhttp://forge.typo3.org/issues/977762022-06-15T09:50:04ZSebastian Michaelsenmichaelsen@t3seo.de
<p>The <code>SchedulerModueController</code> says <code>// Row is shown dimmed if task is disabled, unless it is still running</code> and a corresponding CSS class <code>disabled</code> is set on disabled tasks, but visually there is no difference.</p>
<p>Tested in TYPO3 v10, but I suppose this is also the case in higher versions.</p> TYPO3 Core - Bug #95368 (Closed): Passing an eID array URL parameter logs into the TYPO3 error loghttp://forge.typo3.org/issues/953682021-09-27T10:31:17ZSebastian Michaelsenmichaelsen@t3seo.de
<p>Calling <a class="external" href="https://www.example.com/index.php?eID[]=">https://www.example.com/index.php?eID[]=</a> produces an entry like this in the <code>sys_log</code>:</p>
<pre>
Core: Error handler (FE): PHP Warning: Illegal offset type in /path/to/project/typo3/sysext/frontend/Classes/Middleware/EidHandler.php line 70
</pre>
<p>This is the case for TYPO3 v10.4 and from looking at the code also at master.</p> TYPO3 Core - Feature #95172 (Rejected): Support different connections for read and write access t...http://forge.typo3.org/issues/951722021-09-10T07:57:29ZSebastian Michaelsenmichaelsen@t3seo.de
<p>If you have multiple redis containers with replications you will want to read from one redis instance and write to the other.<br />At the moment, the TYPO3 redis caching backend doesn't support configuring separate connectivity configuration for read and write.</p>
<p>Suggestion:</p>
<p>The possibility to configure <strong>one</strong> connection should be kept as it is for simplicity and backwards compatibility. Additionally the keys <code>read</code> and <code>write</code> can override individual options of the default connection.</p>
<pre><code class="yaml syntaxhl" data-language="yaml"><span class="na">SYS</span><span class="pi">:</span>
<span class="na">caching</span><span class="pi">:</span>
<span class="na">cacheConfigurations</span><span class="pi">:</span>
<span class="na">extbase</span><span class="pi">:</span>
<span class="na">backend</span><span class="pi">:</span> <span class="s1">'</span><span class="s">\TYPO3\CMS\Core\Cache\Backend\RedisBackend'</span>
<span class="na">options</span><span class="pi">:</span>
<span class="na">defaultLifetime</span><span class="pi">:</span> <span class="m">31536000</span>
<span class="na">hostname</span><span class="pi">:</span> <span class="s1">'</span><span class="s">%env(REDIS_REPLICA)%'</span>
<span class="na">port</span><span class="pi">:</span> <span class="m">6379</span>
<span class="na">database</span><span class="pi">:</span> <span class="m">0</span>
<span class="na">write</span><span class="pi">:</span>
<span class="na">hostname</span><span class="pi">:</span> <span class="s1">'</span><span class="s">%env(REDIS_MASTER)%'</span>
</code></pre> TYPO3 Core - Bug #95042 (Closed): email validation makes link generation unnecessary costlyhttp://forge.typo3.org/issues/950422021-08-31T06:11:44ZSebastian Michaelsenmichaelsen@t3seo.de
<p>Whenever links are generated with "legacy" parameter, the <code>\TYPO3\CMS\Core\LinkHandling\LegacyLinkNotationConverter</code> checks if the provided parameter is a valid email address. For validation we use the 3rd party library <code>egulias/email-validator</code>. With blackfire I determined that this library is quite costly in terms of memory and wall time.</p>
<p>I added this simple early return to <code>GeneralUtility::validEmail()</code>:</p>
<pre><code class="php syntaxhl" data-language="php"> <span class="k">if</span> <span class="p">(</span><span class="nb">strpos</span><span class="p">(</span><span class="nv">$email</span><span class="p">,</span> <span class="s1">'@'</span><span class="p">)</span> <span class="o">===</span> <span class="kc">false</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">false</span><span class="p">;</span>
<span class="p">}</span>
</code></pre>
<p>And it significantly improved the speed of links generation. I don't know if that is a suitable solution for the core, or if such a fix should get into the library itself.</p> TYPO3 Core - Task #94553 (Closed): Enforce trailing commas in multi line arrays with PHP CS Fixerhttp://forge.typo3.org/issues/945532021-07-13T11:47:17ZSebastian Michaelsenmichaelsen@t3seo.de
<p>The PHP CS Fixer rule <code> trailing_comma_in_multiline => ['arrays']</code> ensures that multi line arrays always have a trailing comma.</p>
<pre><code class="php syntaxhl" data-language="php"><span class="nv">$array</span> <span class="o">=</span> <span class="p">[</span>
<span class="s1">'one'</span><span class="p">,</span>
<span class="s1">'two'</span>
<span class="p">];</span>
</code></pre>
<p>becomes</p>
<pre><code class="php syntaxhl" data-language="php"><span class="nv">$array</span> <span class="o">=</span> <span class="p">[</span>
<span class="s1">'one'</span><span class="p">,</span>
<span class="s1">'two'</span><span class="p">,</span>
<span class="p">];</span>
</code></pre>
<p>Having trailing commas makes it easier to rearrange entries and when an entry is added to the list the line before doesn't need to be changed. This results in smaller git changes for a better overview and less likely merge conflicts.</p> TYPO3 Core - Bug #93480 (New): PDF Cropping configuration is not possible for editorshttp://forge.typo3.org/issues/934802021-02-10T09:42:03ZSebastian Michaelsenmichaelsen@t3seo.de
<p>TYPO3 can create images from PDFs and can also crop them. But for editors it's not possible to set that cropping, because the cropping wizard doesn't work for PDFs.</p> TYPO3 Core - Bug #93469 (Closed): Editing file metadata in a workspace takes immediate effect on ...http://forge.typo3.org/issues/934692021-02-09T08:09:54ZSebastian Michaelsenmichaelsen@t3seo.de
<p>Steps to reproduce:</p>
<ul>
<li>Switch into a Workspace</li>
<li>Open the File module and edit a file</li>
<li>Fill out or change the title and save</li>
<li>Switch into the LIVE environment again</li>
<li>Edit the same file again<br />=> There are your Workspace changes, immediately applied to the LIVE record.</li>
</ul>
<p>As an editor I must be sure that my workspace changes can not alter the current LIVE website. Otherwise I will lose trust into the whole workspace feature.</p> TYPO3 Core - Feature #93460 (New): Register provider function for custom permission optionshttp://forge.typo3.org/issues/934602021-02-08T09:21:54ZSebastian Michaelsenmichaelsen@t3seo.de
<p>With $GLOBALS['TYPO3_CONF_VARS']['BE']['customPermOptions'] you can provide additional options that backend user groups can get assigned.<br />Docs: <a class="external" href="https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ApiOverview/Examples/CustomPermissions/Index.html">https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ApiOverview/Examples/CustomPermissions/Index.html</a></p>
<p>This is done in ext_tables and you have to provide an array of options. However if you want to involve database calls or other expensive operations to determine the available options, it would slow down the whole installation because it would be re-evaluated every time ext_tables is loaded.</p>
<p>It would be better to offer a way to register provider functions, that are only called when needed (in the backend form for backend user groups).</p> TYPO3 Core - Bug #93433 (New): TCA placeholder __row|field doesn't translate related recordshttp://forge.typo3.org/issues/934332021-02-04T11:40:41ZSebastian Michaelsenmichaelsen@t3seo.de
<p>When using the __row|field syntax in placeholders, the related row is not overlaid with its translation.</p>
<p>example TCA for a tt_content field:<br /><pre>
'tx_myext_teaser_title' => [
'label' => $lll . '.tx_myext_teaser_title',
'config' => [
'type' => 'input',
'placeholder' => '__row|tx_myext_teaser_page|title',
],
],
</pre></p>
<p>For a translated content element, the placeholder should be filled with the value from the translated page record.</p> TYPO3 Core - Bug #93336 (Closed): Enabling translated content in workspace is not previewablehttp://forge.typo3.org/issues/933362021-01-21T09:35:08ZSebastian Michaelsenmichaelsen@t3seo.de
<p>When you enable content element translation in a WS (which is hidden in LIVE), you cannot see the effect in the workspace preview.</p>
<p>Setup:</p>
<table>
<tr>
<th>Workspace </th>
<th>Default Lang Content </th>
<th>Translated Content </th>
</tr>
<tr>
<td> LIVE </td>
<td> enabled </td>
<td> hidden </td>
</tr>
<tr>
<td> WS </td>
<td> enabled </td>
<td> enabled </td>
</tr>
</table>
<p><code>PageRepository->getRecordOverlay()</code> first does the language overlay and the version overlay afterwards. But the language overlay applies enable field restrictions, so the translation is not loaded (even it would be enabled in the WS version).</p> TYPO3 Core - Bug #71477 (Closed): TypoScript condition hostname checks for IP address instead of ...http://forge.typo3.org/issues/714772015-11-11T11:19:01ZSebastian Michaelsenmichaelsen@t3seo.de
<p><a class="external" href="https://github.com/TYPO3/TYPO3.CMS/blob/874a64c54712131350d195e77d775324682cc33a/typo3/sysext/core/Classes/Configuration/TypoScript/ConditionMatching/AbstractConditionMatcher.php#L323">https://github.com/TYPO3/TYPO3.CMS/blob/874a64c54712131350d195e77d775324682cc33a/typo3/sysext/core/Classes/Configuration/TypoScript/ConditionMatching/AbstractConditionMatcher.php#L323</a></p>
<pre>
case 'hostname':
return (bool)GeneralUtility::cmpFQDN(GeneralUtility::getIndpEnv('REMOTE_ADDR'), $value);
break;
</pre>
<p>Instead of checking against <code>REMOTE_HOST</code> (as it says in the documentation) it checks for <code>REMOTE_ADDR</code>.</p> TYPO3 Core - Task #44972 (Closed): Update documentation: Mark borderCol and rowSpace options from...http://forge.typo3.org/issues/449722013-01-30T15:34:54ZSebastian Michaelsenmichaelsen@t3seo.de
<p>Passing borderCol and rowSpace to IMGTEXT doesn't have any effect anymore.</p>
<p>However the correspoding constants {$styles.content.imgtext.borderColor}<br />and {$styles.content.imgtext.rowSpace} are used in CSC's default CSS.</p> TYPO3 Core - Feature #21928 (Accepted): Enable/Disable Control Icons in the List Module via Page...http://forge.typo3.org/issues/219282010-01-08T14:14:52ZSebastian Michaelsenmichaelsen@t3seo.de
<p>For each record in the databse the List module offers a variety of funtions. Depending on the Database Table, User Rights and other circumstances you can Edit, Move, Delete, Preview etc records.<br />But especially for editors with low technical skills the "wall of icons" in the extended view can be confusing.<br />Yes, you can disable the extended view, but then you might take away features the editor needs to perform his tasks.<br />Until now it's not possible to disable single Control Icons.</p>
<p>Solution is to introduce some properties to mod.web_list (which is avaiable in PageTS and UserTS).<br />My patch introduces the following properties:</p>
<p>mod.web_list.tableControls.[table].delete.disabled<br />mod.web_list.tableControls.[table].edit.disabled<br />mod.web_list.tableControls.[table].hideUnhide.disabled<br />mod.web_list.tableControls.[table].history.disabled<br />mod.web_list.tableControls.[table].info.disabled<br />mod.web_list.tableControls.[table].move.disabled<br />mod.web_list.tableControls.[table].moveLevels.disabled<br />mod.web_list.tableControls.[table].newRecordAfter.disabled<br />mod.web_list.tableControls.[table].permissions.disabled <br />mod.web_list.tableControls.[table].show.disabled<br />mod.web_list.tableControls.[table].upDown.disabled<br />mod.web_list.tableControls.[table].versions.disabled</p>
<p>Obviously all of them are boolean and "1" disables the certain icon.</p>
<p>Now you can disable Icons depending on Be-User, Page and Database Table.</p>
<p>Mind that some of the Controls are only available for certain tables. Eg. "moveLevels" is only for pages.</p>
<p>Though most Icons should be uite clear I attached a screenshot, showing which property belongs to which icon.<br />(issue imported from #M13183)</p>