"allow to specifiy an onclick handler for vfs widget (instead of using download-url or filemanager to display dirs)"

This commit is contained in:
Ralf Becker 2009-04-15 21:06:41 +00:00
parent 03e7348896
commit 6f34257730

View File

@ -70,7 +70,7 @@ class vfs_widget
$readonly = $cell['readonly'] || $readonlys; $readonly = $cell['readonly'] || $readonlys;
// check if we have a path and not the raw value, in that case we have to do a stat first // check if we have a path and not the raw value, in that case we have to do a stat first
if (in_array($type,array('vfs-size','vfs-mode','vfs-uid','vfs-gid')) && !is_numeric($value)) if (in_array($type,array('vfs-size','vfs-mode','vfs-uid','vfs-gid')) && !is_numeric($value) || $type == 'vfs' && !$value)
{ {
if (!$value || !($stat = egw_vfs::stat($value))) if (!$value || !($stat = egw_vfs::stat($value)))
{ {
@ -123,16 +123,16 @@ class vfs_widget
$cell['name'] = ''; $cell['name'] = '';
$cell['type'] = 'hbox'; $cell['type'] = 'hbox';
$cell['size'] = '0,,0,0'; $cell['size'] = '0,,0,0';
foreach($comps=explode('/',$name) as $n => $component) foreach($name != '/' ? explode('/',$name) : array('') as $n => $component)
{ {
if ($n) if ($n > (int)($path === '/'))
{ {
$sep = soetemplate::empty_cell('label','',array('label' => '/')); $sep = soetemplate::empty_cell('label','',array('label' => '/'));
soetemplate::add_child($cell,$sep); soetemplate::add_child($cell,$sep);
unset($sep); unset($sep);
} }
$value['c'.$n] = $component; $value['c'.$n] = $component !== '' ? $component : '/';
$path .= '/'.$component; $path .= ($path != '/' ? '/' : '').$component;
// replace id's in /apps again with human readable titles // replace id's in /apps again with human readable titles
$path_parts = explode('/',$path); $path_parts = explode('/',$path);
if ($path_parts[1] == 'apps') if ($path_parts[1] == 'apps')
@ -163,14 +163,29 @@ class vfs_widget
$target = ',,,_blank'; $target = ',,,_blank';
} }
} }
$comp = etemplate::empty_cell('label',$cell_name.'[c'.$n.']',array( if ($cell['onclick'])
'size' => ',@'.$cell_name.'[l'.$n.']'.$target, {
'no_lang' => true, $comp = etemplate::empty_cell('button',$cell_name.'[c'.$n.']',array(
'span' => ',vfsFilename' 'size' => '1',
)); 'no_lang' => true,
'span' => ',vfsFilename',
'label' => $value['c'.$n],
'onclick' => str_replace('$path',"'".addslashes($path)."'",$cell['onclick']),
));
}
else
{
$comp = etemplate::empty_cell('label',$cell_name.'[c'.$n.']',array(
'size' => ',@'.$cell_name.'[l'.$n.']'.$target,
'no_lang' => true,
'span' => ',vfsFilename',
));
}
etemplate::add_child($cell,$comp); etemplate::add_child($cell,$comp);
unset($comp); unset($comp);
} }
unset($cell['onclick']); // otherwise it's handled by the grid too
//_debug_array($comps); _debug_array($cell); _debug_array($value);
break; break;
case 'vfs-mime': case 'vfs-mime':