TYPO3 Forge: Issues
http://forge.typo3.org/
http://forge.typo3.org/themes/typo3_forge/favicon/favicon.png?1705866169
2018-03-19T21:35:37Z
TYPO3 Forge
Redmine
TYPO3 Core - Bug #84488 (Closed): linkvalidator failes on checking wrong links <a href="file://...
http://forge.typo3.org/issues/84488
2018-03-19T21:35:37Z
Sascha Maier
<p>When checking links in RTE fields like:<br /><a href="file://".... <br />the planer task and the module failes with message:<br />Folder ... does not exits. 1314516810</p>
<p>Reason:<br />- only the FileDoesNotExistException is catched</p>
<p>linkvalidator/Classes/Linktype/FileLinktype.php:</p>
<pre>
public function checkLink($url, $softRefEntry, $reference)
{
$resourceFactory = GeneralUtility::makeInstance(ResourceFactory::class);
try {
$file = $resourceFactory->retrieveFileOrFolderObject($url);
} catch (FileDoesNotExistException $e) {
return false;
}
return !$file->isMissing();
}
</pre>
<p>Solution:<br />- additionally catch the FolderDoesNotExistException<br /><pre>
public function checkLink($url, $softRefEntry, $reference)
{
$resourceFactory = GeneralUtility::makeInstance(ResourceFactory::class);
try {
$file = $resourceFactory->retrieveFileOrFolderObject($url);
} catch (FileDoesNotExistException $e) {
return false;
} catch (FolderDoesNotExistException $e) {
return false;
}
return !$file->isMissing();
}
</pre></p>
TYPO3 Core - Bug #81308 (Closed): Deleting a referenced file via filelist module, definined in sy...
http://forge.typo3.org/issues/81308
2017-05-22T22:45:44Z
Sascha Maier
<p>We extended the sys_file_metadata table to add references to existing files in normal filelist entries. For admin Users everything is ok. Unfortunately for non-admin users the "delete" button to remove the reference is missing.</p>
<p>Our TCA changes:<br /><pre><code class="php syntaxhl" data-language="php"><span class="cp"><?php</span>
<span class="nc">\TYPO3\CMS\Core\Utility\ExtensionManagementUtility</span><span class="o">::</span><span class="nf">addTCAcolumns</span><span class="p">(</span><span class="s1">'sys_file_metadata'</span><span class="p">,</span> <span class="k">array</span><span class="p">(</span>
<span class="s1">'attachments'</span> <span class="o">=></span> <span class="k">array</span><span class="p">(</span>
<span class="s1">'exclude'</span> <span class="o">=></span> <span class="mi">1</span><span class="p">,</span>
<span class="s1">'label'</span> <span class="o">=></span> <span class="s1">'LLL:EXT:as_formular_center/Resources/Private/Language/locallang_be.xlf:sys_file_metadata.as_attachments'</span><span class="p">,</span>
<span class="s1">'config'</span> <span class="o">=></span> <span class="nc">\TYPO3\CMS\Core\Utility\ExtensionManagementUtility</span><span class="o">::</span><span class="nf">getFileFieldTCAConfig</span><span class="p">(</span>
<span class="s1">'files'</span><span class="p">,</span>
<span class="k">array</span><span class="p">(</span>
<span class="s1">'appearance'</span> <span class="o">=></span> <span class="k">array</span><span class="p">(</span>
<span class="s1">'createNewRelationLinkTitle'</span> <span class="o">=></span> <span class="s1">'LLL:EXT:cms/locallang_ttc.xlf:files.addFileReference'</span>
<span class="p">)</span>
<span class="p">)</span>
<span class="p">)</span>
<span class="p">)</span>
<span class="p">));</span>
<span class="nc">\TYPO3\CMS\Core\Utility\ExtensionManagementUtility</span><span class="o">::</span><span class="nf">addToAllTCAtypes</span><span class="p">(</span><span class="s1">'sys_file_metadata'</span><span class="p">,</span> <span class="s1">'attachments'</span><span class="p">,</span> <span class="s1">''</span><span class="p">,</span> <span class="s1">'after:source'</span><span class="p">);</span>
</code></pre></p>
<p>Applied the following changes and the button is shown:<br /><pre><code class="diff syntaxhl" data-language="diff"><span class="gh">diff --git a/typo3/sysext/backend/Classes/Form/Container/InlineRecordContainer.php b/typo3/sysext/backend/Classes/Form/Container/InlineRecordContainer.php
index a67800777d..835bc8b470 100644
</span><span class="gd">--- a/typo3/sysext/backend/Classes/Form/Container/InlineRecordContainer.php
</span><span class="gi">+++ b/typo3/sysext/backend/Classes/Form/Container/InlineRecordContainer.php
</span><span class="p">@@ -525,7 +525,11 @@</span> class InlineRecordContainer extends AbstractContainer
// "Delete" link:
if ($enabledControls['delete'] && ($isPagesTable && $localCalcPerms & Permission::PAGE_DELETE
|| !$isPagesTable && $calcPerms & Permission::CONTENT_EDIT
<span class="gd">- || $isSysFileReferenceTable && $calcPerms & Permission::PAGE_EDIT)
</span><span class="gi">+ || $isSysFileReferenceTable && (
+ ( $calcPerms & Permission::PAGE_EDIT )
+ || ( $rec['table_local'] === 'sys_file' && $rec ['pid'] === 0)
+ )
+ )
</span> ) {
$title = htmlspecialchars($languageService->sL('LLL:EXT:lang/Resources/Private/Language/locallang_mod_web_list.xlf:delete'));
$icon = $this->iconFactory->getIcon('actions-edit-delete', Icon::SIZE_SMALL)->render();
</code></pre></p>
<p>Problem is, calPerms will not work on rows with pid == 0.</p>
<p><img src="http://forge.typo3.org/attachments/download/32465/sys_file_metadata_file_reference.png" alt="" loading="lazy" /></p>