setState('folder', $folder); $parent = str_replace("\\", "/", dirname($folder)); $parent = ($parent == '.') ? null : $parent; $this->setState('parent', $parent); $set = true; } return parent::getState($property); } /** * Image Manager Popup * * @param string $listFolder The image directory to display * @since 1.5 */ function getFolderList($base = null) { global $mainframe; // Get some paths from the request if (empty($base)) { $base = COM_MEDIA_BASE; } // Get the list of folders jimport('joomla.filesystem.folder'); $folders = JFolder::folders($base, '.', true, true); // Load appropriate language files $lang = & JFactory::getLanguage(); $lang->load('', JPATH_ADMINISTRATOR); $lang->load(JRequest::getCmd( 'option' ), JPATH_ADMINISTRATOR); $document =& JFactory::getDocument(); $document->setTitle(JText::_('Insert Image')); // Build the array of select options for the folder list $options[] = JHTML::_('select.option', "","/"); foreach ($folders as $folder) { $folder = str_replace(COM_MEDIA_BASE, "", $folder); $value = substr($folder, 1); $text = str_replace(DS, "/", $folder); $options[] = JHTML::_('select.option', $value, $text); } // Sort the folder list array if (is_array($options)) { sort($options); } // Create the drop-down folder select list $list = JHTML::_('select.genericlist', $options, 'folderlist', "class=\"inputbox\" size=\"1\" onchange=\"ImageManager.setFolder(this.options[this.selectedIndex].value)\" ", 'value', 'text', $base); return $list; } function getFolderTree($base = null) { // Get some paths from the request if (empty($base)) { $base = COM_MEDIA_BASE; } $mediaBase = str_replace(DS, '/', COM_MEDIA_BASE.'/'); // Get the list of folders jimport('joomla.filesystem.folder'); $folders = JFolder::folders($base, '.', true, true); $tree = array(); foreach ($folders as $folder) { $folder = str_replace(DS, '/', $folder); $name = substr($folder, strrpos($folder, '/') + 1); $relative = str_replace($mediaBase, '', $folder); $absolute = $folder; $path = explode('/', $relative); $node = (object) array('name' => $name, 'relative' => $relative, 'absolute' => $absolute); $tmp = &$tree; for ($i=0,$n=count($path); $i<$n; $i++) { if (!isset($tmp['children'])) { $tmp['children'] = array(); } if ($i == $n-1) { // We need to place the node $tmp['children'][$relative] = array('data' =>$node, 'children' => array()); break; } if (array_key_exists($key = implode('/', array_slice($path, 0, $i+1)), $tmp['children'])) { $tmp = &$tmp['children'][$key]; } } } $tree['data'] = (object) array('name' => JText::_('Media'), 'relative' => '', 'absolute' => $base); return $tree; } }