[BUGFIX] Show folder icons in ElementBrowser file tree 39/46339/2
authorDaniel Maier <dani-maier@gmx.de>
Sun, 24 Jan 2016 14:08:58 +0000 (15:08 +0100)
committerFrans Saris <franssaris@gmail.com>
Fri, 29 Jan 2016 21:14:24 +0000 (22:14 +0100)
The folder icons are now also shown in the ElementBrowser file tree,
but without context-menu. As the icon link handling provided by the
general FolderTree wrapIcon function does not match in ElementBrowser
mode, an own implementation of this function is introduced in
ElementBrowserFolderTreeView.

Resolves: #69802
Releases: master, 7.6
Change-Id: I4854a69ac5b5459d3e284472ccad5c602a277883
Reviewed-on: https://review.typo3.org/46339
Reviewed-by: Frans Saris <franssaris@gmail.com>
Tested-by: Frans Saris <franssaris@gmail.com>
typo3/sysext/backend/Classes/Controller/FileSystemNavigationFrameController.php
typo3/sysext/backend/Classes/Tree/View/ElementBrowserFolderTreeView.php

index d4710f6..70d190b 100644 (file)
@@ -132,7 +132,7 @@ class FileSystemNavigationFrameController
             $this->foldertree->thisScript = BackendUtility::getModuleUrl('file_navframe');
         }
         // Only set ext_IconMode if we are not running an ajax request from the ElementBrowser,
-        // which has this property hardcoded to 1.
+        // which has this property hardcoded to "titlelink".
         if (!$this->foldertree instanceof ElementBrowserFolderTreeView) {
             $this->foldertree->ext_IconMode = $this->getBackendUser()->getTSConfigVal('options.folderTree.disableIconLinkToContextmenu');
         }
index 2220fca..680790d 100644 (file)
@@ -29,9 +29,9 @@ use TYPO3\CMS\Recordlist\Tree\View\LinkParameterProviderInterface;
 class ElementBrowserFolderTreeView extends FolderTreeView
 {
     /**
-     * @var int
+     * @var string
      */
-    public $ext_IconMode = 1;
+    public $ext_IconMode = 'titlelink';
 
     /**
      * @var LinkParameterProviderInterface
@@ -50,6 +50,30 @@ class ElementBrowserFolderTreeView extends FolderTreeView
     }
 
     /**
+     * Wrapping the folder icon
+     *
+     * @param string $icon The image tag for the icon
+     * @param Folder $folderObject The row for the current element
+     *
+     * @return string The processed icon input value.
+     * @internal
+     */
+    public function wrapIcon($icon, $folderObject)
+    {
+        // Add title attribute to input icon tag
+        $theFolderIcon = '';
+
+        // Wrap icon in link (in ElementBrowser only the "titlelink" is used).
+        if ($this->ext_IconMode === 'titlelink' && $this->ext_isLinkable($folderObject)) {
+            $parameters = GeneralUtility::implodeArrayForUrl('', $this->linkParameterProvider->getUrlParameters(['identifier' => $folderObject->getCombinedIdentifier()]));
+            $aOnClick = 'return jumpToUrl(' . GeneralUtility::quoteJSvalue($this->getThisScript() . ltrim($parameters, '&')) . ');';
+            $theFolderIcon = '<a href="#" onclick="' . htmlspecialchars($aOnClick) . '">' . $icon . '</a>';
+        }
+
+        return $theFolderIcon;
+    }
+
+    /**
      * Wrapping the title in a link, if applicable.
      *
      * @param string $title Title, ready for output.