[BUGFIX] Followup: Fix folder selection in ElementBrowser 56/35956/4
authorFrans Saris <franssaris@gmail.com>
Sun, 11 Jan 2015 18:57:14 +0000 (19:57 +0100)
committerWouter Wolters <typo3@wouterwolters.nl>
Mon, 19 Jan 2015 21:59:00 +0000 (22:59 +0100)
With the introduction of FAL folders are now addressed with their
combinedIdentifier. Parts of the ElementBrowser were not adjusted yet.

This patch makes sure the combinedIdentifier is used for folders
so you can also use/select folders from non-public and remote storages.

Resolves: #63651
Releases: master, 6.2
Change-Id: Id2f2021040950ade48f664c9576f5cd191afe324
Reviewed-on: http://review.typo3.org/35956
Reviewed-by: Markus Klein <klein.t3@reelworx.at>
Tested-by: Markus Klein <klein.t3@reelworx.at>
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
typo3/sysext/recordlist/Classes/Browser/ElementBrowser.php

index fa1cc88..6fd007b 100644 (file)
@@ -2069,13 +2069,13 @@ class ElementBrowser {
        public function folderList(Folder $baseFolder) {
                $content = '';
                $folders = $baseFolder->getSubfolders();
-               $baseFolderPath = $baseFolder->getPublicUrl();
+               $folderIdentifier = $baseFolder->getCombinedIdentifier();
                // Create headline (showing number of folders):
                $content .= $this->barheader(sprintf($GLOBALS['LANG']->getLL('folders') . ' (%s):', count($folders)));
                $titleLength = (int)$GLOBALS['BE_USER']->uc['titleLen'];
                // Create the header of current folder:
-               $aTag = '<a href="#" onclick="return insertElement(\'\',' . GeneralUtility::quoteJSvalue($baseFolderPath)
-                       . ', \'folder\', ' . GeneralUtility::quoteJSvalue($baseFolderPath) . ', ' . GeneralUtility::quoteJSvalue($baseFolderPath)
+               $aTag = '<a href="#" onclick="return insertElement(\'\',' . GeneralUtility::quoteJSvalue($folderIdentifier)
+                       . ', \'folder\', ' . GeneralUtility::quoteJSvalue($folderIdentifier) . ', ' . GeneralUtility::quoteJSvalue($folderIdentifier)
                        . ', \'\', \'\',\'\',1);">';
                // Add the foder icon
                $folderIcon = $aTag;
@@ -2088,23 +2088,22 @@ class ElementBrowser {
                $lines = array();
                // Traverse the folder list:
                foreach ($folders as $subFolder) {
-                       $folderPath = $subFolder->getPublicUrl();
-                       $pathInfo = pathinfo($folderPath);
+                       $subFolderIdentifier = $subFolder->getCombinedIdentifier();
                        // Create folder icon:
                        $icon = '<img src="clear.gif" width="16" height="16" alt="" /><img'
                                . IconUtility::skinImg($GLOBALS['BACK_PATH'], 'gfx/i/_icon_webfolders.gif',
-                                       'width="16" height="16"') . ' title="' . htmlspecialchars(($pathInfo['basename']))
+                                       'width="16" height="16"') . ' title="' . htmlspecialchars($subFolder->getName())
                                . '" class="absmiddle" alt="" />';
                        // Create links for adding the folder:
                        if ($this->P['itemName'] != '' && $this->P['formName'] != '') {
-                               $aTag = '<a href="#" onclick="return set_folderpath(' . GeneralUtility::quoteJSvalue($folderPath)
+                               $aTag = '<a href="#" onclick="return set_folderpath(' . GeneralUtility::quoteJSvalue($subFolderIdentifier)
                                        . ');">';
                        } else {
-                               $aTag = '<a href="#" onclick="return insertElement(\'\',' . GeneralUtility::quoteJSvalue($folderPath)
-                                       . ', \'folder\', ' . GeneralUtility::quoteJSvalue($folderPath) . ', '
-                                       . GeneralUtility::quoteJSvalue($folderPath) . ', \'' . $pathInfo['extension'] . '\', \'\');">';
+                               $aTag = '<a href="#" onclick="return insertElement(\'\',' . GeneralUtility::quoteJSvalue($subFolderIdentifier)
+                                       . ', \'folder\', ' . GeneralUtility::quoteJSvalue($subFolderIdentifier) . ', '
+                                       . GeneralUtility::quoteJSvalue($subFolderIdentifier) . ', \'\', \'\');">';
                        }
-                       if (strstr($folderPath, ',') || strstr($folderPath, '|')) {
+                       if (strstr($subFolderIdentifier, ',') || strstr($subFolderIdentifier, '|')) {
                                // In case an invalid character is in the filepath, display error message:
                                $errorMessage = GeneralUtility::quoteJSvalue(sprintf($GLOBALS['LANG']->getLL('invalidChar'), ', |'));
                                $aTag = ($aTag_alt = '<a href="#" onclick="alert(' . $errorMessage . ');return false;">');