[BUGFIX] Followup: Fix folder selection in ElementBrowser 27/36127/2
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 22:10:18 +0000 (23:10 +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/36127
Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl>
Tested-by: Wouter Wolters <typo3@wouterwolters.nl>
typo3/sysext/recordlist/Classes/Browser/ElementBrowser.php

index c379d49..b71ab8d 100644 (file)
@@ -2016,13 +2016,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;
@@ -2035,23 +2035,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;">');