TYPO3 Forge: Issueshttp://forge.typo3.org/http://forge.typo3.org/themes/typo3_forge/favicon/favicon.png?17058661692021-05-18T07:39:24ZTYPO3 Forge
Redmine TYPO3 Core - Bug #94150 (Closed): Constants in Page TsConfig with multiple sites, caching problemhttp://forge.typo3.org/issues/941502021-05-18T07:39:24ZMarco Huber
<p>I think there is a problem with caching in \TYPO3\CMS\Core\Configuration\Parser\PageTsConfigParser, because it doesn't use the current site config in the cache identifier.</p>
<p>My test case with two sites:</p>
<p>config/sites/site-a/config.yaml:<br /><pre>
rootPageId: 1
settings:
access:
groupid: 1
</pre></p>
<p>config/sites/site-b/config.yaml:<br /><pre>
rootPageId: 2
settings:
access:
groupid: 2
</pre></p>
<p>Page TsConfig:<br /><pre>
TCEMAIN {
permissions {
groupid = {$access.groupid}
}
}
</pre></p>
<p>Clear the cache and then open the info modul and have a look at the page tsconfig for site-a, then {$access.groupid} is replaced with "1". But on site-b {$access.groupid} is not replaced. <br />Clear the cache again and open site-b first. Now {$access.groupid} is replaced on site-b with "2" but not on site-a.<br />Another test is to create pages and check the access rights in the Access module. The first site has the group set, the second site has no group set.</p>
<p>The related code should be in PageTsConfigParser:parse(). If I change `$hashOfContent = md5('PAGES:' . $content);` to `$hashOfContent = md5('PAGES:' . $content) . ($site ? $site->getIdentifier() : '');` then it works. But I'm not sure, if this is the best solution. I tested with 10.4 but the code in master is still the same. So the problem should exist there, too.</p>
<p>As a hotfix without changing the core an integrator can use good old conditions in the page TsConfig :-)<br /><pre>
[1 in tree.rootLineIds]
TCEMAIN {
permissions {
groupid = 1
}
}
[GLOBAL]
[2 in tree.rootLineIds]
TCEMAIN {
permissions {
groupid = 2
}
}
[GLOBAL]
</pre></p> TYPO3 Core - Bug #90761 (Closed): Fluid select viewhelper not added to __trustedProperties if mul...http://forge.typo3.org/issues/907612020-03-14T14:47:43ZMarco Huber
<p>The registerFieldNameForFormTokenGeneration is not called, if the viewhelper has multiple="true" but has no options. Then the field is not added to the hidden "__trustedProperties" field. But when the form is submitted, the select field is in the sent array with an empty string as value and then the extbase data mapper throws the exception 1297759968.</p>
<p>See: <a class="external" href="https://github.com/TYPO3/TYPO3.CMS/blob/master/typo3/sysext/fluid/Classes/ViewHelpers/Form/SelectViewHelper.php#L153">https://github.com/TYPO3/TYPO3.CMS/blob/master/typo3/sysext/fluid/Classes/ViewHelpers/Form/SelectViewHelper.php#L153</a></p> TYPO3 Core - Bug #83741 (Closed): HTTP Basic Authentication credentials in Google Chrome 64 not t...http://forge.typo3.org/issues/837412018-01-31T16:07:23ZMarco Huber
<p>Our project is protected by a HTTP Basic Authentication and we have to enter the username/password on every d3.json() call in Google Chrome. In TYPO3 8.7 this function is called in the SvgTree.js to build the tree in the tt_content/categories field, in TYPO3 9.x it's called for every(?) tree.</p>
<p>This is a bug in the d3.js (4.10) library, but it affects every TYPO3 8.7 and 9.x. An Update to d3.js 4.13 doesn't help and in d3.js 5.0 there is a similar issue.</p>
<p><a class="external" href="https://github.com/d3/d3-request/issues/33">https://github.com/d3/d3-request/issues/33</a><br /><a class="external" href="https://github.com/d3/d3-fetch/issues/10">https://github.com/d3/d3-fetch/issues/10</a></p>
<p>A dirty workaround would be, to set the credentials with some javascript workaround. But I'm not sure if this is the right way. Berhaps the d3.js developers have some ideas on github.</p>
<p><img src="http://forge.typo3.org/attachments/download/33145/d3.png" alt="" loading="lazy" /></p> TYPO3 Core - Bug #75020 (Closed): "Save and view" button shows root page for pages of type "Short...http://forge.typo3.org/issues/750202016-03-11T15:22:16ZMarco Huber
<p>If you edit the page properties of a page with the doktype "Shortcut" or "Link to External URL" and then klick on "Save and view" the rootpage is shown and not the current page or the current page's target.</p>
<p>If you click on "Show" in context menu in the page tree the current page or the current page's target is shown.</p> TYPO3 Core - Bug #73013 (Closed): Don't render the "more" link in the help popup if the user has ...http://forge.typo3.org/issues/730132016-01-29T16:07:25ZMarco Huber
<p>In the help popups the "read more" link is shown even if the user has no access to cshmanual BE module. If the user clicks on the link, the exception "#1294586448: Access Error: You don't have access to this module" is thrown.</p> TYPO3 Core - Bug #73009 (Closed): cshmanual module is not configurable by grouphttp://forge.typo3.org/issues/730092016-01-29T15:13:28ZMarco Huber
<p>Since <a class="external" href="https://forge.typo3.org/issues/63000">https://forge.typo3.org/issues/63000</a> the BE-Module can not be configured for a BE-Usergroup.</p> TYPO3 Core - Bug #72803 (Closed): denied file extensions are shown as allowed file extensionshttp://forge.typo3.org/issues/728032016-01-19T10:07:56ZMarco Huber
<p>In the filelist module in the "create new textfile" form there is a list with allowed file extension. This list shows also file extensions listed in $GLOBALS['TYPO3_CONF_VARS']['BE']['fileDenyPattern'].</p> TYPO3 Core - Bug #68367 (Rejected): checkSubmit should wait 500mshttp://forge.typo3.org/issues/683672015-07-19T12:50:56ZMarco Huber
<p>Steps to reproduce:<br />Create a new record which has a required field. Insert something in the required field. Click on save. The alert "The fields marked with an exclamation mark are not yet correctly filled in. Please complete them properly." is shown.</p>
<p>You have to click somewhere else before you click on save.</p>
<p>Because of the setTimeout in typo3/sysext/backend/Resources/Public/JavaScript/FormEngineValidation.js Line 59-62 around "FormEngineValidation.validate();" the checkSubmit function should also wait 500ms before it tries to submit the form.</p> TYPO3 Core - Bug #65364 (Closed): _languageUid gets overwritten on updating a new domain object.http://forge.typo3.org/issues/653642015-02-26T17:56:44ZMarco Huber
<p>When creating a new domain object the property _languageUid is NULL. When this object gets persisted \TYPO3\CMS\Extbase\Persistence\Generic\Backend::insertObject() sets the language field to "-1" like it is described in the documentation <a class="external" href="http://docs.typo3.org/typo3cms/ExtbaseFluidBook/9-CrosscuttingConcerns/1-localizing-and-internationalizing-an-extension.html#multi-language-domain-objects">http://docs.typo3.org/typo3cms/ExtbaseFluidBook/9-CrosscuttingConcerns/1-localizing-and-internationalizing-an-extension.html#multi-language-domain-objects</a>. But after the insert the objects are updated (f.e. to insert missing relation ids and stuff) immediately and persisted again. \TYPO3\CMS\Extbase\Persistence\Generic\Backend::updateObject() sets "$row[$dataMap->getLanguageIdColumnName()] = $object->_getProperty('_languageUid');" and because the object's property _languageUid is NULL a 0 is inserted in the database.</p>
<p>So if the object was created in a multi language environment (sys_language_uid > 0) extbase doesn't find it anymore.</p>
<p><strong>Solution 1:</strong><br />Update the object's property _languageUid in \TYPO3\CMS\Extbase\Persistence\Generic\Backend::insertObject(). But this should be done only, if the developer hasn't set _languageUid himself (see FORGE). Then the update finds the -1 in the property _languageUid and everything works like it is documentated.</p>
<pre>
diff --git a/typo3/sysext/extbase/Classes/Persistence/Generic/Backend.php b/typo3/sysext/extbase/Classes/Persistence/Generic/Backend.php
index 8c6e3f0..b7f1efd 100644
--- a/typo3/sysext/extbase/Classes/Persistence/Generic/Backend.php
+++ b/typo3/sysext/extbase/Classes/Persistence/Generic/Backend.php
@@ -635,6 +635,7 @@ class Backend implements \TYPO3\CMS\Extbase\Persistence\Generic\BackendInterface
$this->addCommonFieldsToRow($object, $row);
if ($dataMap->getLanguageIdColumnName() !== NULL && ($object->_getProperty('_languageUid') === NULL || !$object->_getProperty('_languageUid'))) {
$row[$dataMap->getLanguageIdColumnName()] = -1;
+ $object->_setProperty('_languageUid', -1);
}
if ($parentObject !== NULL && $parentPropertyName) {
$parentColumnDataMap = $this->dataMapper->getDataMap(get_class($parentObject))->getColumnMap($parentPropertyName);
</pre>
<p><strong>Solution 2:</strong><br />Do "$row[$dataMap->getLanguageIdColumnName()] = $object->_getProperty('_languageUid');" only if _languageUid is not NULL in \TYPO3\CMS\Extbase\Persistence\Generic\Backend::updateObject().</p>
<pre>
diff --git a/typo3/sysext/extbase/Classes/Persistence/Generic/Backend.php b/typo3/sysext/extbase/Classes/Persistence/Generic/Backend.php
index f3d89c9..c6aeb59 100644
--- a/typo3/sysext/extbase/Classes/Persistence/Generic/Backend.php
+++ b/typo3/sysext/extbase/Classes/Persistence/Generic/Backend.php
@@ -850,7 +850,9 @@ class Backend implements \TYPO3\CMS\Extbase\Persistence\Generic\BackendInterface
$this->addCommonFieldsToRow($object, $row);
$row['uid'] = $object->getUid();
if ($dataMap->getLanguageIdColumnName() !== NULL) {
- $row[$dataMap->getLanguageIdColumnName()] = $object->_getProperty('_languageUid');
+ if($object->_getProperty('_languageUid') !== NULL){
+ $row[$dataMap->getLanguageIdColumnName()] = $object->_getProperty('_languageUid');
+ }
if ($object->_getProperty('_localizedUid') !== NULL) {
$row['uid'] = $object->_getProperty('_localizedUid');
}
</pre>
<p>I would prefer the first solution, because it seems cleaner to me. Or should both solutions be implemented?</p>
<p>If someone has a good idea for a commit message I will submit a patch to gerrit.</p> TYPO3 Core - Bug #60886 (Closed): Backend via https throws "SEC7111: HTTPS security is compromise...http://forge.typo3.org/issues/608862014-08-11T13:16:11ZMarco Huber
<p>Our beloved InternetExplorer has a problem with javascript:false as Ext.SSL_SECURE_URL.</p>
<p>When you open the backend, than there is a hidden iFrame (typo3-navigationIframe) with an empty src attribute and the IE uses javascript:false as src (default for Ext.SSL_SECURE_URL [1]). <br />When you open the backend via https, the IE wants to show res://ieframe.dll/dnserrordiagoff.htm because javascript:false is not a valid url. But this is detected as an unsecure resource. So you see this warning in the developer tools: "SEC7111: HTTPS security is compromised by res://ieframe.dll/dnserrordiagoff.htm"</p>
<p>Setting the URL to the clear.gif as Ext.SSL_SECURE_URL in typo3/sysext/core/Classes/Page/PageRenderer.php helps and doesn't create too much unnecessary traffic.</p>
<p>[1] <a class="external" href="http://dev.sencha.com/playpen/docs/output/Ext.html#SSL_SECURE_URL">http://dev.sencha.com/playpen/docs/output/Ext.html#SSL_SECURE_URL</a></p> TYPO3 Core - Bug #60805 (Closed): Cachingframework FileBackend not usable for cache_pages and cac...http://forge.typo3.org/issues/608052014-08-05T17:13:10ZMarco Huber
<p>If you want to use t3lib_cache_backend_FileBackend for cache_pages or cache_pagesection you get the Exception 1231267498 (typo3/sysext/core/Classes/Cache/Backend/AbstractBackend.php Line 86). This happens because the LocalConfiguration-array ist overwritten with the DefaultConfiguration somewhere. And in DefaultConfiguration the option "compress" is set. And "compress" is no valid option for t3lib_cache_backend_FileBackend.<br />To work around this issue you have to set "$GLOBALS['TYPO3_CONF_VARS']['SYS']['caching']['cacheConfigurations']['cache_pages']['options'] = array();" in the AdditionalConfiguration.</p>
<p>Perhaps some other options for other cache backends produce this exception, too. I haven't testet that.</p>
<p>I don't know if this is really a bug, but at least it is very annoying and costed me some time to find out. :-)</p>
<p>LocalConfiguration:<br /><pre>
...
'SYS' => array(
'caching' => array(
'cacheConfigurations' => array(
'cache_pages' => array(
'backend' => 't3lib_cache_backend_FileBackend',
'frontend' => 't3lib_cache_frontend_VariableFrontend',
'groups' => array('pages', 'all'),
),
'cache_pagesection' => array(
'backend' => 't3lib_cache_backend_FileBackend',
'frontend' => 't3lib_cache_frontend_VariableFrontend',
'groups' => array('pages', 'all'),
),
...
</pre></p>
<p>P.S.: I know, the wiki says that the FileBackend should not be used for cache_pages (<a class="external" href="http://wiki.typo3.org/Caching_framework#Cache_configurations">http://wiki.typo3.org/Caching_framework#Cache_configurations</a>), but we have to. :-)</p> TYPO3 Core - Feature #56236 (Closed): Allow multiple headers of the same type in config.additiona...http://forge.typo3.org/issues/562362014-02-24T13:39:30ZMarco Huber
<p>Sometimes you need to set multiple headers of the same type via config.additionalHeaders. As an example, I tried to set the X-Robots-Tag.<br /><pre>
mypage.config.additionalHeaders = X-Robots-Tag: noarchive|X-Robots-Tag: nosnippet
</pre><br />But only the last one is delivered, becaus you can't set the replace parameter of the PHP function header(). (See <a class="external" href="http://php.net/header">http://php.net/header</a>)</p> TYPO3 Core - Feature #35945 (Closed): css_styled_content CE "Menu/Sitemap": new menu type "Sitema...http://forge.typo3.org/issues/359452012-04-13T11:34:35ZMarco Huber
<p>It would be nice to be able to select the root page for the sitemap. Because the current menu type "Sitemap" always uses the tree root. Therefor we could use the field "Selected Pages".</p> TYPO3 Core - Bug #35944 (Closed): css_styled_content CE "Menu/Sitemap": Hide the field "Selected ...http://forge.typo3.org/issues/359442012-04-13T11:28:28ZMarco Huber
<p>Because the Typoscript for the menu type "Sitemap" doesn't mind if there is something inserted in the field "Selected Pages" the field should not be shown in the backend.</p> TYPO3 Core - Feature #34597 (Closed): Disable forgot password formshttp://forge.typo3.org/issues/345972012-03-06T17:51:20ZMarco Huber
<p>If there are two login forms on a page (usecases described here: <a class="external" href="http://forge.typo3.org/issues/26910">http://forge.typo3.org/issues/26910</a>) the forgot feature does not work because the last generated forgot_hash overwrites all previous generated hashes in the session. This is already discussed here <a class="external" href="http://forge.typo3.org/issues/26910">http://forge.typo3.org/issues/26910</a> and I aggree that "it's nonsense and a sign of bad design if there are two forgot password forms on the same page" (<a class="external" href="http://forge.typo3.org/issues/26910#note-5">http://forge.typo3.org/issues/26910#note-5</a>).</p>
<p>So it would be nice to disable the forgot feature for one of the two login forms, perhaps by introducing two new Typoscript options "disableForgot" and "disableChangePassword" which simply disable the execution of the showForgot and changePassword functions.</p>
<p>I will create a patch for this later and send it to gerrit...</p>