Project

General

Profile

Feature #16942 » directory_picker.diff

Administrator Admin, 2008-03-03 20:08

View differences:

t3lib/class.t3lib_tceforms.php (working copy)
'inline' => array('appearance', 'behaviour', 'foreign_label', 'foreign_selector', 'foreign_unique', 'maxitems', 'minitems', 'size', 'autoSizeMax', 'symmetric_label'),
);
// Create instance of t3lib_TCEforms_inline only if this a non-IRRE-AJAX call:
// Create instance of t3lib_TCEforms_inline only if this a non-IRRE-AJAX call:
if (!isset($GLOBALS['ajaxID']) || strpos($GLOBALS['ajaxID'], 't3lib_TCEforms_inline::')!==0) {
$this->inline = t3lib_div::makeInstance('t3lib_TCEforms_inline');
}
......
}
$collapsed = $this->isPalettesCollapsed($table,$palette);
$thePalIcon = '';
if ($collapsed && $collapsedHeader !== NULL) {
list($thePalIcon,) = $this->wrapOpenPalette('<img'.t3lib_iconWorks::skinImg($this->backPath,'gfx/options.gif','width="18" height="16"').' border="0" title="'.htmlspecialchars($this->getLL('l_moreOptions')).'" alt="" />',$table,$row,$palette,1);
......
}
$paletteHtml = $this->wrapPaletteField($this->printPalette($parts), $table, $row ,$palette, $collapsed);
$out .= $this->intoTemplate(
array('PALETTE' => $thePalIcon . $paletteHtml),
$this->palFieldTemplate
......
if ($this->edit_docModuleUpload) $item.='<input type="file" name="'.$PA['itemFormElName_file'].'"'.$this->formWidth().' size="60" />';
}
break;
case 'folder': // If the element is of the internal type "folder":
// array of folder items:
$itemArray = t3lib_div::trimExplode(',', $PA['itemFormElValue'], 1);
// Creating the element:
$params = array(
'size' => $size,
'dontShowMoveIcons' => ($maxitems <= 1),
'autoSizeMax' => t3lib_div::intInRange($config['autoSizeMax'], 0),
'maxitems' => $maxitems,
'style' => isset($config['selectedListStyle']) ?
' style="'.htmlspecialchars($config['selectedListStyle']).'"'
: ' style="'.$this->defaultMultipleSelectorStyle.'"',
'info' => $info,
'readOnly' => $disabled
);
$item.= $this->dbFileIcons(
$PA['itemFormElName'],
'folder',
'',
$itemArray,
'',
$params,
$PA['onFocus']
);
break;
case 'db': // If the element is of the internal type "db":
// Creating string showing allowed types:
......
}
break;
case 'file':
case 'folder':
while(list(,$pp)=each($itemArray)) {
$pParts = explode('|',$pp);
$uidList[]=$pUid=$pTitle = $pParts[0];
typo3/browse_links.php (working copy)
break;
case 'file':
case 'filedrag':
case 'folder':
// Setting alternative browsing mounts (ONLY local to browse_links.php this script so they stay "read-only")
$altMountPoints = trim($GLOBALS['BE_USER']->getTSConfigVal('options.folderTree.altElementBrowserMountPoints'));
if ($altMountPoints) {
......
case 'filedrag':
$this->content = $this->browser->main_file();
break;
case 'folder':
$this->content = $this->browser->main_folder();
break;
case 'wizard':
$this->content = $this->browser->main_rte(1);
break;
typo3/class.browse_links.php (working copy)
global $BE_USER,$BACK_PATH;
// Main GPvars:
$this->pointer = t3lib_div::_GP('pointer');
$this->bparams = t3lib_div::_GP('bparams');
$this->P = t3lib_div::_GP('P');
$this->pointer = t3lib_div::_GP('pointer');
$this->bparams = t3lib_div::_GP('bparams');
$this->P = t3lib_div::_GP('P');
$this->RTEtsConfigParams = t3lib_div::_GP('RTEtsConfigParams');
$this->expandPage = t3lib_div::_GP('expandPage');
$this->expandFolder = t3lib_div::_GP('expandFolder');
$this->PM = t3lib_div::_GP('PM');
$this->expandPage = t3lib_div::_GP('expandPage');
$this->expandFolder = t3lib_div::_GP('expandFolder');
$this->PM = t3lib_div::_GP('PM');
// Find "mode"
$this->mode=t3lib_div::_GP('mode');
$this->mode = t3lib_div::_GP('mode');
if (!$this->mode) {
$this->mode='rte';
$this->mode = 'rte';
}
// init hook objects:
......
$this->thisScript = t3lib_div::getIndpEnv('SCRIPT_NAME');
// CurrentUrl - the current link url must be passed around if it exists
if ($this->mode=='wizard') {
if ($this->mode == 'wizard') {
$currentLinkParts = t3lib_div::trimExplode(' ',$this->P['currentValue']);
$this->curUrlArray = array(
'target' => $currentLinkParts[1]
......
// Rich Text Editor specific configuration:
$addPassOnParams='';
if ((string)$this->mode=='rte') {
if ((string)$this->mode == 'rte') {
$RTEtsConfigParts = explode(':',$this->RTEtsConfigParams);
$addPassOnParams.='&RTEtsConfigParams='.rawurlencode($this->RTEtsConfigParams);
$RTEsetup = $GLOBALS['BE_USER']->getTSConfig('RTE',t3lib_BEfunc::getPagesTSconfig($RTEtsConfigParts[5]));
......
}
';
if ($this->mode=='wizard') { // Functions used, if the link selector is in wizard mode (= TCEforms fields)
if ($this->mode == 'wizard') { // Functions used, if the link selector is in wizard mode (= TCEforms fields)
unset($this->P['fieldChangeFunc']['alert']);
reset($this->P['fieldChangeFunc']);
$update='';
......
break;
case 'file':
case 'filedrag':
case 'folder':
if (isset($this->expandFolder)) {
$data['expandFolder']=$this->expandFolder;
$store = true;
......
$content=$this->doc->startPage('RTE link');
// Initializing the action value, possibly removing blinded values etc:
$allowedItems = array_diff(explode(',','page,file,url,mail,spec'),t3lib_div::trimExplode(',',$this->thisConfig['blindLinkOptions'],1));
$allowedItems = array_diff($allowedItems, t3lib_div::trimExplode(',',$this->P['params']['blindLinkOptions']));
$allowedItems = array_diff(
explode(',','page,file,folder,url,mail,spec'),
t3lib_div::trimExplode(',',$this->thisConfig['blindLinkOptions'],1)
);
$allowedItems = array_diff(
$allowedItems,
t3lib_div::trimExplode(',',$this->P['params']['blindLinkOptions'])
);
//call hook for extra options
foreach($this->hookObjects as $hookObject) {
......
$menuDef['file']['url'] = '#';
$menuDef['file']['addParams'] = 'onclick="jumpToUrl(\'?act=file\');return false;"';
}
if (in_array('folder',$allowedItems)){
$menuDef['folder']['isActive'] = $this->act == 'folder';
$menuDef['folder']['label'] = $LANG->getLL('folder', 1);
$menuDef['folder']['url'] = '#';
$menuDef['folder']['addParams'] = 'onclick="jumpToUrl(\'?act=folder\');return false;"';
}
if (in_array('url',$allowedItems)) {
$menuDef['url']['isActive'] = $this->act=='url';
$menuDef['url']['label'] = $LANG->getLL('extUrl',1);
......
$content.=$extUrl;
break;
case 'file':
$foldertree = t3lib_div::makeInstance('rteFolderTree');
case 'folder':
$foldertree = t3lib_div::makeInstance('rteFolderTree');
$foldertree->thisScript = $this->thisScript;
$tree=$foldertree->getBrowsableTree();
$tree = $foldertree->getBrowsableTree();
if (!$this->curUrlInfo['value'] || $this->curUrlInfo['act'] != $this->act) {
$cmpPath = '';
} elseif (substr(trim($this->curUrlInfo['info']), -1) != '/') {
$cmpPath = PATH_site.dirname($this->curUrlInfo['info']).'/';
if (!$this->curUrlInfo['value'] || $this->curUrlInfo['act']!='file') {
$cmpPath='';
} elseif (substr(trim($this->curUrlInfo['info']),-1)!='/') {
$cmpPath=PATH_site.dirname($this->curUrlInfo['info']).'/';
if (!isset($this->expandFolder)) $this->expandFolder = $cmpPath;
if (!isset($this->expandFolder)) {
$this->expandFolder = $cmpPath;
}
} else {
$cmpPath=PATH_site.$this->curUrlInfo['info'];
$cmpPath = PATH_site.$this->curUrlInfo['info'];
}
list(,,$specUid) = explode('_',$this->PM);
$files = $this->expandFolder($foldertree->specUIDmap[$specUid], $this->P['params']['allowedExtensions']);
list(, , $specUid) = explode('_', $this->PM);
$files = $this->expandFolder(
$foldertree->specUIDmap[$specUid],
$this->P['params']['allowedExtensions']
);
$content.= '
......
$content.= '
<!--
Wrapper table for folder tree / file list:
Wrapper table for folder tree / file/folder list:
-->
<table border="0" cellpadding="0" cellspacing="0" id="typo3-linkFiles">
<tr>
......
// Ending page, returning content:
$content.= $this->doc->endPage();
$content = $this->doc->insertStylesAndJS($content);
return $content;
}
/**
* TYPO3 Element Browser: Showing a folder tree, allowing you to browse for folders.
*
* @return string HTML content for the module
*/
function main_folder() {
global $BE_USER;
// Starting content:
$content = $this->doc->startPage('TBE folder selector');
// Init variable:
$parameters = explode('|', $this->bparams);
// Create upload/create folder forms, if a path is given:
$fileProcessor = t3lib_div::makeInstance('t3lib_basicFileFunctions');
$fileProcessor->init(
$GLOBALS['FILEMOUNTS'],
$GLOBALS['TYPO3_CONF_VARS']['BE']['fileExtensions']
);
$path = $this->expandFolder;
if(!$path || !@is_dir($path)) {
$path = $fileProcessor->findTempFolder().'/'; // The closest TEMP-path is found
}
if($path != '/' && @is_dir($path)) {
$createFolder = $this->createFolder($path);
} else {
$createFolder='';
}
// Create folder tree:
$foldertree = t3lib_div::makeInstance('TBE_FolderTree');
$foldertree->thisScript = $this->thisScript;
$foldertree->ext_noTempRecyclerDirs = ($this->mode == 'filedrag');
$tree = $foldertree->getBrowsableTree(false);
list(, , $specUid) = explode('_', $this->PM);
if($this->mode == 'filedrag') {
$folders = $this->TBE_dragNDrop(
$foldertree->specUIDmap[$specUid],
$parameters[3]
);
} else {
$folders = $this->TBE_expandSubFolders($foldertree->specUIDmap[$specUid]);
}
// Putting the parts together, side by side:
$content.= '
<!--
Wrapper table for folder tree / folder list:
-->
<table border="0" cellpadding="0" cellspacing="0" id="typo3-EBfiles">
<tr>
<td class="c-wCell" valign="top">'.$this->barheader($GLOBALS['LANG']->getLL('folderTree').':').$tree.'</td>
<td class="c-wCell" valign="top">'.$folders.'</td>
</tr>
</table>
';
// Adding create folder if applicable:
if($BE_USER->isAdmin() || $BE_USER->getTSConfigVal('options.createFoldersInEB')) {
$content .= $createFolder;
}
// Add some space
$content .= '<br /><br />';
// Ending page, returning content:
$content.= $this->doc->endPage();
$content = $this->doc->insertStylesAndJS($content);
return $content;
}
......
}
/**
* Render list of folders inside a folder.
*
* @param string string of the current folder
* @return string HTML output
*/
function TBE_expandSubFolders($expandFolder=0) {
$content = '';
$expandFolder = $expandFolder ?
$expandFolder :
$this->expandFolder;
if($expandFolder && $this->checkFolder($expandFolder)) {
if(t3lib_div::isFirstPartOfStr($expandFolder, PATH_site)) {
$rootFolder = substr($expandFolder, strlen(PATH_site));
}
$folders = array();
// Listing the folders:
$folders = t3lib_div::get_dirs($expandFolder);
if(count($folders) > 0) {
foreach($folders as $index => $folder) {
$folders[$index] = $rootFolder.$folder.'/';
}
}
$content.= $this->folderList($rootFolder, $folders);
}
// Return accumulated content for folderlisting:
return $content;
}
......
return $out;
}
/**
* Render list of folders.
*
* @param array List of folders. See t3lib_div::get_dirs
* @param string If set a header with a folder icon and folder name are shown
* @return string HTML output
*/
function folderList($baseFolder, $folders) {
global $LANG, $BACK_PATH;
$content = '';
// Create headline (showing number of folders):
$content.=$this->barheader(
sprintf($GLOBALS['LANG']->getLL('folders').' (%s):',count($folders))
);
$titleLength = intval($GLOBALS['BE_USER']->uc['titleLen']);
// Create the header of current folder:
if($baseFolder) {
if (strstr($baseFolder, ',') || strstr($baseFolder, '|')) {
// In case an invalid character is in the filepath, display error message:
$errorMessage = $LANG->JScharCode(sprintf($LANG->getLL('invalidChar'),', |'));
$aTag = $aTag_alt = "<a href=\"#\" onclick=\"alert(".$errorMessage.");return false;\">";
} else {
// If foldername is OK, just add it:
$aTag = "<a href=\"#\" onclick=\"return insertElement('','".rawurlencode($baseFolder)."', 'folder', '".rawurlencode($baseFolder)."', unescape('".rawurlencode($baseFolder)."'), '".$fI['extension']."', '".$ficon."');\">";
$aTag_alt = substr($aTag,0,-4).",'',1);\">";
}
$aTag_e = '</a>';
// add the foder icon
$folderIcon = $aTag_alt;
$folderIcon.= '<img'.t3lib_iconWorks::skinImg(
$BACK_PATH,
'gfx/i/_icon_webfolders.gif','width="18" height="16"'
).' alt="" />';
$folderIcon.= htmlspecialchars(
t3lib_div::fixed_lgd_cs(basename($baseFolder),$titleLength)
);
$folderIcon.= $aTag_e;
$content.=$folderIcon.'<br />';
}
// Listing the folders:
if(is_array($folders)) {
if(count($folders) > 0) {
// Traverse the folder list:
$lines = array();
foreach($folders as $folderPath) {
$pathInfo = pathinfo($folderPath);
// Create folder icon:
$icon = '<img src="clear.gif" width="16" height="16" alt="" /><img'.t3lib_iconWorks::skinImg($BACK_PATH, 'gfx/i/_icon_webfolders.gif','width="16" height="16"').' title="'.htmlspecialchars($pathInfo['basename'].$size).'" class="absmiddle" alt="" />';
// Create links for adding the folder:
if($this->P['itemName'] != '' && $this->P['formName'] != '') {
$aTag = "<a href=\"#\" onclick=\"return set_folderpath(unescape('".rawurlencode($folderPath)."'));\">";
} else {
$aTag = "<a href=\"#\" onclick=\"return insertElement('','".rawurlencode($folderPath)."', 'folder', '".rawurlencode($folderPath)."', unescape('".rawurlencode($folderPath)."'), '".$pathInfo['extension']."', '".$ficon."');\">";
}
if (strstr($folderPath,',') || strstr($folderPath,'|')) {
// In case an invalid character is in the filepath, display error message:
$errorMessage = $LANG->JScharCode(sprintf($LANG->getLL('invalidChar'),', |'));
$aTag = $aTag_alt = "<a href=\"#\" onclick=\"alert(".$errorMessage.");return false;\">";
} else {
// If foldername is OK, just add it:
$aTag_alt = substr($aTag,0,-4).",'',1);\">";
}
$aTag_e='</a>';
// Combine icon and folderpath:
$foldernameAndIcon = $aTag_alt.$icon.htmlspecialchars(
t3lib_div::fixed_lgd_cs(basename($folderPath),$titleLength)
).$aTag_e;
if($this->P['itemName'] != '') {
$lines[] = '
<tr class="bgColor4">
<td nowrap="nowrap">'.$foldernameAndIcon.'&nbsp;</td>
<td>&nbsp;</td>
</tr>';
} else {
$lines[] = '
<tr class="bgColor4">
<td nowrap="nowrap">'.$foldernameAndIcon.'&nbsp;</td>
<td>'.$aTag.'<img'.t3lib_iconWorks::skinImg($BACK_PATH,'gfx/plusbullet2.gif','width="18" height="16"').' title="'.$LANG->getLL('addToList',1).'" alt="" />'.$aTag_e.'</td>
<td>&nbsp;</td>
</tr>';
}
$lines[] = '
<tr>
<td colspan="3"><img src="clear.gif" width="1" height="3" alt="" /></td>
</tr>';
}
}
// Wrap all the rows in table tags:
$content.='
<!--
Folder listing
-->
<table border="0" cellpadding="0" cellspacing="1" id="typo3-folderList">
'.implode('', $lines).'
</table>';
}
// Return accumulated content for folderlisting:
return $content;
}
/**
* For RTE: This displays all IMAGES (gif,png,jpg) (from extensionList) from folder. Thumbnails are shown for images.
* This listing is of images located in the web-accessible paths ONLY - the listing is for drag-n-drop use in the RTE
(3-3/3)