TYPO3 Forge: Issueshttp://forge.typo3.org/http://forge.typo3.org/themes/typo3_forge/favicon/favicon.png?17058661692023-09-28T10:21:50ZTYPO3 Forge
Redmine TYPO3 Core - Bug #102058 (New): Meta tags rendered as XHTMLhttp://forge.typo3.org/issues/1020582023-09-28T10:21:50ZOliver Haderoliver.hader@typo3.org
<pre>
<meta name="generator" content="TYPO3 CMS" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<meta name="robots" content="index,follow" />
...
<meta property="og:image:type" content="image/png" />
<meta property="og:title" content="IN.DIE.musik e.V." />
<meta name="twitter:card" content="summary" />
<meta name="twitter:site" content="@InDieMusik" />
</pre>
<p><a class="external" href="https://github.com/TYPO3/typo3/blob/main/typo3/sysext/core/Classes/MetaTag/AbstractMetaTagManager.php#L226-L239">https://github.com/TYPO3/typo3/blob/main/typo3/sysext/core/Classes/MetaTag/AbstractMetaTagManager.php#L226-L239</a></p>
<pre>
$metaTags[] = '<meta ' .
htmlspecialchars($nameAttribute) . '="' . htmlspecialchars($property) . '" ' .
htmlspecialchars($contentAttribute) . '="' . htmlspecialchars($propertyItem['content']) . '" />';
</pre> TYPO3 Core - Task #99046 (New): DOCS: Routing Troubleshooting Sectionhttp://forge.typo3.org/issues/990462022-11-10T11:39:03ZOliver Haderoliver.hader@typo3.org
<ul>
<li><a class="external" href="https://forge.typo3.org/issues/91530">https://forge.typo3.org/issues/91530</a>
<ul>
<li>describe consequences of using <code>PageType</code> decorator</li>
<li>concerning optional route variables (using <code>defaults</code>)</li>
</ul>
</li>
<li><a class="external" href="https://forge.typo3.org/issues/94585">https://forge.typo3.org/issues/94585</a>
<ul>
<li>describe consequences of using route without specific segment, e.g. <code>/{variable}</code></li>
<li>suggest to use specific segment, e.g. <code>/show/{variable}</code></li>
</ul>
</li>
<li><a class="external" href="https://forge.typo3.org/issues/90959#note-3">https://forge.typo3.org/issues/90959#note-3</a>
<ul>
<li>describe consequences of ambiguity</li>
</ul></li>
</ul> TYPO3 Core - Bug #96435 (New): Apply rate limiter to mail formshttp://forge.typo3.org/issues/964352021-12-27T18:09:10ZOliver Haderoliver.hader@typo3.org
<p>In order to limit sending forms again and again (which can be automated e.g. by using Selenium or similar techniques), sending out a particular form should be rate-limited (available since TYPO3 v11).</p> TYPO3 Core - Bug #95725 (New): Title shown twice with pdfinfo using PDF/X fileshttp://forge.typo3.org/issues/957252021-10-21T18:44:48ZOliver Haderoliver.hader@typo3.org
<p>The following report has been sent to me via mail by Josef Sigritz, I'm just dumping it here:</p>
<hr />
<p>wir haben ein Problem mit dem FileContentParser der Indexed_Search: pdfinfo gibt bei PDF/X-Dateien zweimal den Title aus. Dadurch wird der eigentliche Title überschrieben.</p>
<p>Beispiel:<br />pdfinfo test.pdf</p>
<pre>
*Title: BAA010718_Broschüre_Chancen_bieten_V2.indd*
Creator: Adobe InDesign CC 13.0 (Macintosh)
Producer: Adobe PDF Library 15.0
CreationDate: Thu Feb 22 15:51:27 2018 CET
ModDate: Mon Mar 12 12:12:12 2018 CET
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 20
Encrypted: no
Page size: 595.276 x 841.89 pts (A4)
Page rot: 0
File size: 2292621 bytes
Optimized: yes
PDF version: 1.3
PDF subtype: PDF/X-3:2002
*Title: ISO 15930 - Electronic document file format for prepress digital data exchange (PDF/X)*
Abbreviation: PDF/X-3:2002
Subtitle: Part 3: Complete exchange suitable for colour-managed workflows (PDF/X-3)
Standard: ISO 15930-3
</pre>
<p>Verbesserungsvorschlag:<br />Klasse: typo3/typo3/sysext/indexed_search/Classes/FileContentParser.php, function splitPdfInfo</p>
<pre>
public function splitPdfInfo($pdfInfoArray)
{
$res = [];
if (is_array($pdfInfoArray)) {
foreach ($pdfInfoArray as $line) {
$parts = explode(':', $line, 2);
if (count($parts) > 1 && trim($parts[0])) {
if (!array_key_exists(strtolower(trim($parts[0])), $res)){
$res[strtolower(trim($parts[0]))] = trim($parts[1]);
}
$res[strtolower(trim($parts[0]))] = trim($parts[1]);
}
}
}
return $res;
}
</pre> TYPO3 Core - Task #91703 (New): Add configuration guard for ambiguous literals in route pathshttp://forge.typo3.org/issues/917032020-06-23T23:57:56ZOliver Haderoliver.hader@typo3.org
<pre>
routePath: '/{value__value}/{other__}'
_arguments:
value__value: 'value/value'
other__: 'other__'
</pre>
<p>Given URL parameters would look like <code>&value[value]=a&other__=b</code>.<br />Literal <code>__</code> using as delimiter in <code>VariableProcessor</code>, see <a class="external" href="https://github.com/TYPO3/TYPO3.CMS/blob/9.5/typo3/sysext/core/Classes/Routing/Enhancer/VariableProcessor.php#L24">https://github.com/TYPO3/TYPO3.CMS/blob/9.5/typo3/sysext/core/Classes/Routing/Enhancer/VariableProcessor.php#L24</a></p>
<ul>
<li>add test-cases for those scenarios</li>
<li>adjust implementation, add guards based on findings</li>
</ul> TYPO3 Core - Task #89252 (New): Enhance usability of Install Tool presetshttp://forge.typo3.org/issues/892522019-09-24T18:29:54ZOliver Haderoliver.hader@typo3.org
<ul>
<li>in Install Tool</li>
<li>all settings for instance allow to make use of dropdowns (using <code>allowedValues</code>)</li>
<li>this rendering possibility is not available in presets which makes it hard to select proper values</li>
<li>besides that, not description is rendered in presets</li>
</ul>
<p>This way, using presets and having to fill in settings is actually harder than doing that among all settings.</p>
<p><img src="http://forge.typo3.org/attachments/download/34574/89252.png" alt="" loading="lazy" /></p> TYPO3 Core - Bug #88613 (New): Replace ObjectStorage & LazyObjectStorage with symfony/collectionhttp://forge.typo3.org/issues/886132019-06-21T21:37:23ZOliver Haderoliver.hader@typo3.org
<p>For regular ObjectStorage deserialization most probably would work - however there are inconsitencies concerning object integrity due to ObjectStorage using spl_object_hash() internally. In a result it would not be possible to detach an object retrieved from repository from some deserialized ObjectStorage - basically uid should be used as identifier here which would turn ObjectStorage into EntityStorage. So, we could live with serialization of ObjectStorage.</p>
<p>For LazyObjectStorage things are getting more difficult since serialization of it would mean to serialize backreferences to parent object as well as DataMapper state, ObjectManager state and in the end class Reflection state - that turns out to be a massive collection of serialized data.</p>
<p>Thus, we experience most pain with LazyObjectStorage and its current implementation.</p> TYPO3 Core - Epic #84920 (New): Provide generic context based data retrieval APIhttp://forge.typo3.org/issues/849202018-05-03T14:50:35ZOliver Haderoliver.hader@typo3.org
<p>In order to avoid the requirement of specific knowledge of TYPO3 persistence behavior, such as localization or workspaces, a generic API to retrieve data shall be provided.</p>
The functional relies on these base parameters:
<ul>
<li>context (language, workspace)</li>
<li>permissions (pages, tables, fields, ..., context permissions)</li>
<li>optional behavior (language fallback, individual handling)</li>
</ul>
Basic functionality:
<ul>
<li>retrieve specific entities for the given base parameters (e.g. languages & workspaces resolved automatically)</li>
<li>retrieve any relational entities (children) for the given base parameters (not caring whether 1:n inline or m:n group/db has been defined)</li>
</ul>
Extended functionality:
<ul>
<li>retrieve data based on individual/custom query (fields, constraints, sorting)</li>
<li>retrieve data based on GraphQL query</li>
</ul> TYPO3 Core - Epic #84918 (New): Streamline Permission Layerhttp://forge.typo3.org/issues/849182018-05-03T14:41:43ZOliver Haderoliver.hader@typo3.org
<p>Concerning data handling and persistence, basically only the backend context is considered (in DataHandler, PageLayoutView et al). General permission handling in Extbase and other frontend related implementation is only implemented on the visibility of pages and frontend user groups.</p>
<p>In order to overcome these differences. Permission handling has to be generalized and used in affected components.<br />For instance as an impact, DataHandler does not rely on a BackendUserAuthentication (BE_USER) instance anymore, but on a generic Permission definition that can be used in backend and frontend context.</p> TYPO3 Core - Story #84917 (New): Make use of schema definition & relationship layerhttp://forge.typo3.org/issues/849172018-05-03T14:36:29ZOliver Haderoliver.hader@typo3.org
<ul>
<li>DataHandler, RelationHandler, DataMapProcessor</li>
<li>Extbase DataMapFactory, Storage Backend</li>
<li>FormEngine DataProviders, Containers</li>
<li>RootlineUtility</li>
</ul>
<p>... and more ...</p> TYPO3 Core - Story #84916 (New): Provide generic entity relationship modelhttp://forge.typo3.org/issues/849162018-05-03T14:30:00ZOliver Haderoliver.hader@typo3.org
<p>Expected goal</p>
<pre>
$contentSchemaDefinition = (new SomeService)->getSchemaDefinition('tt_content');
$fileReferenceSchemaDefinition = (new SomeService)->getSchemaDefinition('sys_file_reference');
var_dump($contentSchemaDefinition->getProperty('media')->getRelations());
var_dump($fileReferenceSchemaDefinition->getProperty('uid_foreign')->getRelations());
</pre>
<p>might output something like</p>
<pre>
# relations for tt_content.media
+ ActiveRelation: schemaName "sys_file_reference"
</pre>
<pre>
# relations for sys_file_reference.uid_foreign
+ PassiveRelation: schemaName "tt_content", propertyName: "image"
+ PassiveRelation: schemaName "tt_content", propertyName: "media"
+ PassiveRelation: schemaName "tt_content", propertyName: "assets"
</pre>
<p>Currently the "opposite usage" for relations is not explicitly known. In order to enhance look ups this information should be cached along with the plain schema definition (e.g. TCA).</p> TYPO3 Core - Story #84915 (New): Provide generic entity schema definitionhttp://forge.typo3.org/issues/849152018-05-03T14:19:06ZOliver Haderoliver.hader@typo3.org
<p>Expected goal</p>
<pre>
$factory = new TcaSchemaDefinitionFactory($GLOBALS['TCA']);
$schemaDefinition = $factory->buildForTable('tt_content');
$service = new SchemaDefinitionService();
$mediaProperty = $schemaDefinition->getProperty('media');
$service->isRelational(mediaProperty);
if ($service->getRelationType($mediaProperty) === Relation::TYPE_ONE_TO_MANY_COMPOSITION)) { ... }
</pre>
<p>The API above can still change. Besides that Extbase <code>DataMapFactory</code> could be considered as foundation as well.</p> TYPO3 Core - Epic #84914 (New): Streamline entity configuration layerhttp://forge.typo3.org/issues/849142018-05-03T14:08:35ZOliver Haderoliver.hader@typo3.org
<p>Entity configuration in TYPO3 is done by using TCA (table configuration array). Currently the interpretation of e.g. "what is a 1:n composition (IRRE)" is spread over multiple locations - most importantly to mention are DataHandler, Extbase and FormEngine - but there are much more.</p>
<p>In order to avoid individual (and possible) different interpretation of entity definitions and features and generic configuration shall be introduce to provide access to the the semantics of TCA and FlexForm data structures.</p> TYPO3 Core - Bug #81552 (New): Disable creating new inline child records if allowLanguageSynchron...http://forge.typo3.org/issues/815522017-06-12T13:14:29ZOliver Haderoliver.hader@typo3.org
<p><img src="http://forge.typo3.org/attachments/download/32533/81552.png" alt="" loading="lazy" /><br /><img src="http://forge.typo3.org/attachments/download/32538/81552_2.png" alt="" loading="lazy" /></p>
<p>If allowLanguageSynchronization is active for inline child elements, the "create new" buttons and any other interaction shall be disabled for localized parent records - since these child records. Otherwise there's the possibility to create inconsistent and non-synchronized scenarios.</p> TYPO3 Core - Feature #33747 (New): Implement usort() and moveItemAt() in AbstractRecordCollectionhttp://forge.typo3.org/issues/337472012-02-07T21:22:01ZOliver Haderoliver.hader@typo3.org
<p>Current situation:</p>
<pre>
public function usort($callbackFunction) {
// TODO: Implement usort() method with TCEforms in mind
throw new RuntimeException('This method is not yet supported.', 1322545589);
}
public function moveItemAt($currentPosition, $newPosition = 0) {
// TODO: Implement usort() method with TCEforms in mind
throw new RuntimeException('This method is not yet supported.', 1322545626);
}
</pre>