[BUGFIX] Context menu for offline storages raises exception 81/19181/2
authorNicole Cordes <typo3@cordes.co>
Fri, 22 Mar 2013 13:57:11 +0000 (14:57 +0100)
committerAndreas Wolf <andreas.wolf@typo3.org>
Fri, 22 Mar 2013 21:28:29 +0000 (22:28 +0100)
If you try to call the context menu for an offline storage an exception is
raised. Therefore an offline storage shouldn't be linked with a context
menu.

Change-Id: I2845d173bd2a22c96e23bb58bf1a57239109829a
Fixes: #46551
Releases: 6.1, 6.0
Reviewed-on: https://review.typo3.org/19181
Reviewed-by: Benjamin Mack
Tested-by: Benjamin Mack
Reviewed-by: Andreas Wolf
Tested-by: Andreas Wolf
typo3/sysext/backend/Classes/Tree/View/FolderTreeView.php

index 209e5b0..034ff9f 100644 (file)
@@ -130,6 +130,10 @@ class FolderTreeView extends \TYPO3\CMS\Backend\Tree\View\AbstractTreeView {
                $theFolderIcon = $this->addTagAttributes($icon, $this->titleAttrib ? $this->titleAttrib . '="' . $this->getTitleAttrib($folderObject) . '"' : '');
                // Wrap icon in click-menu link.
                if (!$this->ext_IconMode) {
+                       // Disable context menu for offline storages
+                       if (!$folderObject->getStorage()->isOnline()) {
+                               return $theFolderIcon;
+                       }
                        $theFolderIcon = $GLOBALS['TBE_TEMPLATE']->wrapClickMenuOnIcon($theFolderIcon, $folderObject->getCombinedIdentifier(), '', 0);
                } elseif (!strcmp($this->ext_IconMode, 'titlelink')) {
                        $aOnClick = 'return jumpTo(\'' . $this->getJumpToParam($folderObject) . '\',this,\'' . $this->domIdPrefix . $this->getId($folderObject) . '\',' . $this->bank . ');';
@@ -148,8 +152,14 @@ class FolderTreeView extends \TYPO3\CMS\Backend\Tree\View\AbstractTreeView {
         * @internal
         */
        public function wrapTitle($title, \TYPO3\CMS\Core\Resource\Folder $folderObject, $bank = 0) {
+               // Disable context menu for offline storages
+               if (!$folderObject->getStorage()->isOnline()) {
+                       return $title;
+               }
+
                $aOnClick = 'return jumpTo(\'' . $this->getJumpToParam($folderObject) . '\', this, \'' . $this->domIdPrefix . $this->getId($folderObject) . '\', ' . $bank . ');';
                $CSM = ' oncontextmenu="' . htmlspecialchars($GLOBALS['TBE_TEMPLATE']->wrapClickMenuOnIcon('', $folderObject->getCombinedIdentifier(), '', 0, ('&bank=' . $this->bank), '', TRUE)) . '"';
+
                return '<a href="#" title="' . htmlspecialchars($title) . '" onclick="' . htmlspecialchars($aOnClick) . '"' . $CSM . '>' . $title . '</a>';
        }
 
@@ -268,7 +278,12 @@ class FolderTreeView extends \TYPO3\CMS\Backend\Tree\View\AbstractTreeView {
                                $rootIcon = 'minusonly';
                        }
                        $icon = '<img' . \TYPO3\CMS\Backend\Utility\IconUtility::skinImg($this->backPath, ('gfx/ol/' . $rootIcon . '.gif')) . ' alt="" />';
-                       $firstHtml = $this->PM_ATagWrap($icon, $cmd);
+                       // Only link icon if storage is browseable
+                       if (in_array($rootIcon, array('minusonly', 'plusonly'))) {
+                               $firstHtml = $this->PM_ATagWrap($icon, $cmd);
+                       } else {
+                               $firstHtml = $icon;
+                       }
                        // @todo: create sprite icons for user/group mounts etc
                        if ($storageObject->isBrowsable() === FALSE) {
                                $icon = 'apps-filetree-folder-locked';