Ported revisions 33494-33496 from trunk to 10.1 (egw.stylite bug 8295)

This commit is contained in:
Andreas Stöckel 2011-01-27 09:29:52 +00:00
parent dbdb0c092e
commit bfd0871d18
7 changed files with 309 additions and 114 deletions

View File

@ -275,7 +275,14 @@ class vfs_widget
$extension_data = array('type' => $type,'allowPath' => $allowPath); $extension_data = array('type' => $type,'allowPath' => $allowPath);
break; break;
case 'vfs-mime': case 'vfs-mime': // size: [thsize] (thumbnail size)
//Read the thumbnail size
list($thsize) = explode(',', $cell['size']);
if (!is_numeric($thsize))
{
$thsize = NULL;
}
if (!$value) if (!$value)
{ {
$cell = etemplate::empty_cell(); $cell = etemplate::empty_cell();
@ -320,7 +327,16 @@ class vfs_widget
{ {
$path = parse_url(egw_vfs::resolve_url_symlinks($path),PHP_URL_PATH); $path = parse_url(egw_vfs::resolve_url_symlinks($path),PHP_URL_PATH);
} }
$value = $GLOBALS['egw']->link('/etemplate/thumbnail.php',array('path' => $path));
//Assemble the thumbnail parameters
$thparams = array('path' => $path);
if ($thsize)
{
$thparams['thsize'] = $thsize;
}
$value = $GLOBALS['egw']->link('/etemplate/thumbnail.php', $thparams);
} }
else else
{ {

View File

@ -122,7 +122,7 @@
height: 16px; height: 16px;
} }
.vfsFilename { .vfsFilename {
white-space: nowrap; /* white-space: nowrap; << deactivated as images may be scaled strangely */
} }
/** /**
* mark a file (icon) as link * mark a file (icon) as link
@ -152,4 +152,4 @@
max-height: 6.75em; max-height: 6.75em;
overflow: auto; overflow: auto;
padding-right: 15px; padding-right: 15px;
} }

View File

@ -5,23 +5,15 @@
* @link http://www.egroupware.org * @link http://www.egroupware.org
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @author Nathan Gray * @author Nathan Gray
* @author Andreas Stöckel
* @package etemplate * @package etemplate
* @version $Id$ * @version $Id$
*/ */
if (isset($_GET['app']))
{
$app = $_GET['app'];
}
elseif(isset($_GET['path']))
{
list(,$apps,$app) = explode('/',$_GET['path']);
if ($apps !== 'apps') $app = 'filemanager';
}
if (!preg_match('/^[a-z0-9_-]+$/i',$app)) die('Stop'); // just to prevent someone doing nasty things
//Set all necessary info and fire up egroupware
$GLOBALS['egw_info']['flags'] = array( $GLOBALS['egw_info']['flags'] = array(
'currentapp' => $app, 'currentapp' => get_app(),
'noheader' => true, 'noheader' => true,
'nonavbar' => true 'nonavbar' => true
); );
@ -36,125 +28,300 @@ if (get_magic_quotes_gpc() && $_GET)
// no need to keep the session open (it stops other parallel calls) // no need to keep the session open (it stops other parallel calls)
$GLOBALS['egw']->session->commit_session(); $GLOBALS['egw']->session->commit_session();
if (isset($_GET['path'])) if (!read_thumbnail(get_srcfile()))
{ {
$g_srcfile = $_GET['path'];
}
else
{
$g_srcfile = egw_link::vfs_path($_GET['app'],$_GET['id'],$_GET['file'],true);
}
$g_dstfile = $GLOBALS['egw_info']['server']['temp_dir'] . '/egw-thumbs'.$g_srcfile;
$g_srcfile = egw_vfs::PREFIX.$g_srcfile;
if (!file_exists($g_srcfile) || !egw_vfs::is_readable($g_srcfile))
{
//error_log("file_exists('$g_srcfile')=".(int)file_exists($g_srcfile).", egw_vfs::is_readable('$g_srcfile')=".(int)egw_vfs::is_readable($g_srcfile));
header('404 Not found'); header('404 Not found');
exit;
}
// Check for existing thumbnail
if(file_exists($g_dstfile) && filemtime($g_dstfile) >= filemtime($g_srcfile)) {
header('Content-Type: image/png');
readfile($g_dstfile);
return;
}
$thumbnail = get_thumbnail($file, true);
if($thumbnail) {
header('Content-Type: image/png');
imagepng( $thumbnail );
imagedestroy($thumbnail);
} }
/** /**
* Private function to get a thumbnail image for a linked image file. * Reads the source file from the path parameters
* */
* This function creates a thumbnail of the given image, if possible, and stores it in $GLOBALS['egw_info']['server']['temp_dir']. function get_srcfile()
* Returns the image, or false if the file could not be thumbnailed. Thumbnails are PNGs.
*
* @param array $file VFS File array to thumbnail
* @return image or false
*
* @author Nathan Gray
*/
function get_thumbnail($file, $return_data = true)
{ {
global $g_srcfile,$g_dstfile; if (isset($_GET['path']))
{
$g_srcfile = $_GET['path'];
}
else
{
$g_srcfile = egw_link::vfs_path($_GET['app'], $_GET['id'], $_GET['file'], true);
}
$max_width = $max_height = (string)$GLOBALS['egw_info']['server']['link_list_thumbnail'] == '' ? 32 : return egw_vfs::PREFIX.$g_srcfile;
}
/**
* Returns the currently active app.
*/
function get_app()
{
if (isset($_GET['app']))
{
$app = $_GET['app'];
}
elseif (isset($_GET['path']))
{
list(, $apps, $app) = explode('/', $_GET['path']);
if ($apps !== 'apps')
{
$app = 'filemanager';
}
}
if (!preg_match('/^[a-z0-9_-]+$/i',$app))
{
die('Stop'); // just to prevent someone doing nasty things
}
return $app;
}
/**
* Returns the maximum width/height of a thumbnail
*/
function get_maxsize()
{
$preset = (string)$GLOBALS['egw_info']['server']['link_list_thumbnail'] == '' ? 32 :
$GLOBALS['egw_info']['server']['link_list_thumbnail']; $GLOBALS['egw_info']['server']['link_list_thumbnail'];
//error_log(__METHOD__."() src=$g_srcfile, dst=$g_dstfile, size=$max_width"); // Another maximum size may be passed if thumbnails are turned on
if ($preset != 0 && isset($_GET['thsize']) && is_numeric($_GET['thsize']))
{
$preset = (int)$_GET['thsize'];
}
if($max_width == 0) { return $preset;
// thumbnailing disabled }
return false;
} elseif( !gdVersion() ) { /**
// GD disabled or not installed * Either loads the thumbnail for the given file form cache or generates a new
* one
*
* @param string $file is the file of which a thumbnail should be created
* @returns false if the file doesn't exist or any other error occured.
*/
function read_thumbnail($src)
{
//Check whether the source file is readable and exists
if (!file_exists($src) || !egw_vfs::is_readable($src))
{
return false; return false;
} }
// Quality // Get the maxsize of an thumbnail. If thumbnailing is turned off, the value
$g_imgcomp=55; // will be 0
$maxsize = get_maxsize();
$dst_dir = dirname($g_dstfile); // Check whether the destination directory exists, if not, create it. If this
// files dont exist, if you have no access permission // process failes, dont' return an image.
if((file_exists($dst_dir) || mkdir($dst_dir, 0700, true)) && file_exists($g_srcfile)) { $dst = gen_dstfile($src, $maxsize);
$g_is=getimagesize($g_srcfile); $dst_dir = dirname($dst);
if($g_is[0] < $max_width && $g_is[1] < $max_height) { if(file_exists($dst_dir) || mkdir($dst_dir, 0700, true))
$g_iw = $g_is[0]; {
$g_ih = $g_is[1]; // Check whether the destination file already exists and is newer than
} elseif(($g_is[0]-$max_width)>=($g_is[1]-$max_height)) { // the source file. Assume the file doesn't exist if thumbnailing is turned off.
$g_iw=$max_width; $exists = ($maxsize > 0) && (file_exists($dst) && filemtime($dst) >= filemtime($src));
$g_ih=($max_width/$g_is[0])*$g_is[1];
} else { // Only generate the thumbnail if the destination file does not match the
$g_ih=$max_height; // conditions mentioned above. Abort if $maxsize is 0.
$g_iw=($g_ih/$g_is[1])*$g_is[0]; $gen_thumb = ($maxsize > 0) && (!$exists);
if ($gen_thumb && ($thumb = gd_image_thumbnail($src, $maxsize, $maxsize)))
{
// Save the file to disk...
imagepng($thumb, $dst);
// Previous versions generated a new copy of the png to output it -
// as encoding pngs is quite cpu-intensive I think it might
// be better to just read it from the temp dir again - as it is probably
// still in the fs-cache
$exists = true;
imagedestroy($thumb);
} }
// Get mime type $output_mime = 'image/png';
list($type, $image_type) = explode('/',egw_vfs::mime_content_type($g_srcfile));
if($type != 'image') { // If some error occured during thumbnail generation or thumbnailing is turned off,
return false; // simply output the mime type icon
if (!$exists)
{
$mime = egw_vfs::mime_content_type($src);
list($app, $icon) = explode('/', egw_vfs::mime_icon($mime), 2);
list(, $path) = explode($GLOBALS['egw_info']['server']['webserver_url'],
$GLOBALS['egw']->common->image($app, $icon), 2);
$dst = EGW_SERVER_ROOT.$path;
$output_mime = mime_content_type($dst);
} }
switch ($image_type) { if ($dst)
{
header('Content-Type: '.$output_mime);
readfile($dst);
return true;
}
}
return false;
}
function gen_dstfile($src, $maxsize)
{
// Previous versions of this code didn't use an md5-sum of $src but appended
// it directly - this might have been an security issue as thumbnails from
// multiple instances might get mixed up.
return $GLOBALS['egw_info']['server']['temp_dir'] . '/egw-thumbs/thumb_' .
md5($src . $GLOBALS['egw_info']['server']['webserver_url'] . $maxsize).'.png';
}
/**
* Function which calculates the sizes of an image with the width w and the height
* h, which should be scaled to an thumbnail of the maximum dimensions maxw and
* maxh
*
* @param int $w original width of the image
* @param int $h original height of the image
* @param int $maxw maximum width of the image
* @param int $maxh maximum height of the image
* @returns an array with two elements, w, h or "false" if the original dimensions
* of the image are that "odd", that one of the output sizes is smaller than one pixel.
*
* TODO: As this is a general purpose function, it might probably be moved
* to some other php file or an "image utils" class.
*/
function get_scaled_image_size($w, $h, $maxw, $maxh)
{
//Set the output width to zero
$wout = 0.0;
$hout = 0.0;
//Scale will contain the factor by which the image has to be scaled down
$scale = 1.0;
//Select the constraining dimension
if ($w > $h) //The constraining factor will be $maxw
{
$scale = $maxw / $w;
}
else //The constraning factor will be $maxh
{
$scale = $maxh / $h;
}
// Don't scale images up
if ($scale > 1.0)
{
$scale = 1.0;
}
$wout = $w * $scale;
$hout = $h * $scale;
//Return the calculated values
if ($wout < 1 || $hout < 1)
{
return false;
}
else
{
return array(round($wout), round($hout));
}
}
/**
* Loads the given imagefile - returns "false" if the file wasn't an image,
* otherwise the gd-image is returned.
*
* @param string $file the file which to load
* @returns false or a gd_image
*/
function gd_image_load($file)
{
// Get mime type
list($type, $image_type) = explode('/', egw_vfs::mime_content_type($file));
// Call the according gd constructor depending on the file type
if($type == 'image')
{
switch ($image_type)
{
case 'png': case 'png':
$img_src = imagecreatefrompng($g_srcfile); return imagecreatefrompng($file);
break;
case 'jpg': case 'jpg':
case 'jpeg': case 'jpeg':
$img_src = imagecreatefromjpeg($g_srcfile); return imagecreatefromjpeg($file);
break;
case 'gif': case 'gif':
$img_src = imagecreatefromgif($g_srcfile); return imagecreatefromgif($file);
break;
case 'bmp': case 'bmp':
$img_src = imagecreatefromwbmp($g_srcfile); return imagecreatefromwbmp($file);
break;
default:
return false;
}
if(!($gdVersion = gdVersion())) {
return false;
} elseif ($gdVersion >= 2) {
$img_dst=imagecreatetruecolor($g_iw,$g_ih);
imageSaveAlpha($img_dst, true);
$trans_color = imagecolorallocatealpha($img_dst, 0, 0, 0, 127);
imagefill($img_dst, 0, 0, $trans_color);
} else {
$img_dst = imagecreate($g_iw, $g_ih);
} }
}
imagecopyresampled($img_dst, $img_src, 0, 0, 0, 0, $g_iw, $g_ih, $g_is[0], $g_is[1]); return false;
imagepng($img_dst, $g_dstfile); }
return $return_data ? $img_dst : $g_dstfile;
} else { /**
* Create an gd_image with transparent background.
*
* @param int $w the width of the resulting image
* @param int $h the height of the resutling image
*/
function gd_create_transparent_image($w, $h)
{
if (!($gdVersion = gdVersion()))
{
//Looking up the gd version failed, return false
return false; return false;
} }
elseif ($gdVersion >= 2)
{
//Create an 32-bit image and fill it with transparency.
$img_dst = imagecreatetruecolor($w, $h);
imageSaveAlpha($img_dst, true);
$trans_color = imagecolorallocatealpha($img_dst, 0, 0, 0, 127);
imagefill($img_dst, 0, 0, $trans_color);
return $img_dst;
}
else
{
//Just crate a simple image
return imagecreate($w, $h);
}
}
/**
* Creates a scaled version of the given image - returns the gd-image or false if the
* process failed.
*
* @param string $file the filename of the file
* @param int $maxw the maximum width of the thumbnail
* @param int $maxh the maximum height of the thumbnail
* @return the gd_image or false if one of the steps taken to produce the thumbnail
* failed.
*/
function gd_image_thumbnail($file, $maxw, $maxh)
{
//Load the image
if (($img_src = gd_image_load($file)) !== false)
{
//Get the constraints of the image
$w = imagesx($img_src);
$h = imagesy($img_src);
//Calculate the actual size of the thumbnail
$scaled = get_scaled_image_size($w, $h, $maxw, $maxh);
if ($scaled !== false)
{
list($sw, $sh) = $scaled;
//Now scale it down
$img_dst = gd_create_transparent_image($sw, $sh);
imagecopyresampled($img_dst, $img_src, 0, 0, 0, 0, $sw, $sh, $w, $h);
return $img_dst;
}
}
return false;
} }
/** /**

View File

@ -221,6 +221,7 @@ class filemanager_select
$content['path'] = filemanager_ui::get_home_dir(); $content['path'] = filemanager_ui::get_home_dir();
} }
if (!($files = egw_vfs::find($content['path'],array( if (!($files = egw_vfs::find($content['path'],array(
'dirsontop' => true,
'order' => 'name', 'order' => 'name',
'sort' => 'ASC', 'sort' => 'ASC',
'maxdepth' => 1, 'maxdepth' => 1,

View File

@ -2,7 +2,7 @@
/** /**
* eGroupWare - eTemplates for Application filemanager * eGroupWare - eTemplates for Application filemanager
* http://www.egroupware.org * http://www.egroupware.org
* generated by soetemplate::dump4setup() 2010-09-16 14:31 * generated by soetemplate::dump4setup() 2010-12-31 15:27
* *
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @package filemanager * @package filemanager
@ -43,5 +43,5 @@ $templ_data[] = array('name' => 'filemanager.search','template' => '','lang' =>
$templ_data[] = array('name' => 'filemanager.search.rows','template' => '','lang' => '','group' => '0','version' => '1.5.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:3:{s:2:"c1";s:2:"th";s:2:"c2";s:3:"row";s:1:"A";s:2:"20";}i:1;a:12:{s:1:"A";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:4:"Type";s:4:"name";s:13:"vfs_mime_type";}s:1:"B";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:2:"Id";s:4:"name";s:11:"vfs_file_id";}s:1:"C";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:4:"File";s:4:"name";s:7:"fulldir";}s:1:"D";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:9:"Directory";s:4:"name";s:13:"vfs_directory";}s:1:"E";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:4:"name";s:4:"name";s:8:"vfs_name";}s:1:"F";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:9:"mime type";s:4:"name";s:9:"mime_type";}s:1:"G";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:4:"Size";s:4:"name";s:8:"vfs_size";}s:1:"H";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:7:"comment";s:4:"name";s:11:"vfs_comment";}s:1:"I";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:7:"created";s:4:"name";s:11:"vfs_created";}s:1:"J";a:3:{s:4:"type";s:23:"nextmatch-accountfilter";s:4:"size";s:10:"Created by";s:4:"name";s:16:"vfs_createdby_id";}s:1:"K";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:8:"modified";s:4:"name";s:12:"vfs_modified";}s:1:"L";a:3:{s:4:"type";s:23:"nextmatch-accountfilter";s:4:"size";s:11:"Modified by";s:4:"name";s:17:"vfs_modifiedby_id";}}i:2;a:12:{s:1:"A";a:4:{s:4:"type";s:5:"image";s:5:"label";s:24:"$row_cont[vfs_mime_type]";s:4:"name";s:12:"${row}[icon]";s:5:"align";s:6:"center";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:4:"name";s:19:"${row}[vfs_file_id]";s:7:"no_lang";s:1:"1";}s:1:"C";a:4:{s:4:"type";s:5:"label";s:4:"name";s:12:"${row}[file]";s:7:"no_lang";s:1:"1";s:4:"size";s:21:",$row_cont[file_link]";}s:1:"D";a:4:{s:4:"type";s:5:"label";s:4:"name";s:21:"${row}[vfs_directory]";s:7:"no_lang";s:1:"1";s:4:"size";s:20:",$row_cont[dir_link]";}s:1:"E";a:4:{s:4:"type";s:5:"label";s:4:"name";s:16:"${row}[vfs_name]";s:7:"no_lang";s:1:"1";s:4:"size";s:21:",$row_cont[file_link]";}s:1:"F";a:2:{s:4:"type";s:5:"label";s:4:"name";s:21:"${row}[vfs_mime_type]";}s:1:"G";a:3:{s:4:"type";s:5:"label";s:4:"name";s:16:"${row}[vfs_size]";s:5:"align";s:5:"right";}s:1:"H";a:3:{s:4:"type";s:5:"label";s:4:"name";s:19:"${row}[vfs_comment]";s:7:"no_lang";s:1:"1";}s:1:"I";a:4:{s:4:"type";s:9:"date-time";s:4:"name";s:19:"${row}[vfs_created]";s:4:"size";s:11:"Y-m-d H:i:s";s:8:"readonly";s:1:"1";}s:1:"J";a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:24:"${row}[vfs_createdby_id]";s:8:"readonly";s:1:"1";}s:1:"K";a:4:{s:4:"type";s:9:"date-time";s:4:"name";s:20:"${row}[vfs_modified]";s:4:"size";s:11:"Y-m-d H:i:s";s:8:"readonly";s:1:"1";}s:1:"L";a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:25:"${row}[vfs_modifiedby_id]";s:8:"readonly";s:1:"1";}}}s:4:"rows";i:2;s:4:"cols";i:12;s:4:"size";s:9:"100%,auto";s:7:"options";a:2:{i:0;s:4:"100%";i:1;s:4:"auto";}}}','size' => '100%,auto','style' => '','modified' => '1173104345',); $templ_data[] = array('name' => 'filemanager.search.rows','template' => '','lang' => '','group' => '0','version' => '1.5.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:3:{s:2:"c1";s:2:"th";s:2:"c2";s:3:"row";s:1:"A";s:2:"20";}i:1;a:12:{s:1:"A";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:4:"Type";s:4:"name";s:13:"vfs_mime_type";}s:1:"B";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:2:"Id";s:4:"name";s:11:"vfs_file_id";}s:1:"C";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:4:"File";s:4:"name";s:7:"fulldir";}s:1:"D";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:9:"Directory";s:4:"name";s:13:"vfs_directory";}s:1:"E";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:4:"name";s:4:"name";s:8:"vfs_name";}s:1:"F";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:9:"mime type";s:4:"name";s:9:"mime_type";}s:1:"G";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:4:"Size";s:4:"name";s:8:"vfs_size";}s:1:"H";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:7:"comment";s:4:"name";s:11:"vfs_comment";}s:1:"I";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:7:"created";s:4:"name";s:11:"vfs_created";}s:1:"J";a:3:{s:4:"type";s:23:"nextmatch-accountfilter";s:4:"size";s:10:"Created by";s:4:"name";s:16:"vfs_createdby_id";}s:1:"K";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:8:"modified";s:4:"name";s:12:"vfs_modified";}s:1:"L";a:3:{s:4:"type";s:23:"nextmatch-accountfilter";s:4:"size";s:11:"Modified by";s:4:"name";s:17:"vfs_modifiedby_id";}}i:2;a:12:{s:1:"A";a:4:{s:4:"type";s:5:"image";s:5:"label";s:24:"$row_cont[vfs_mime_type]";s:4:"name";s:12:"${row}[icon]";s:5:"align";s:6:"center";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:4:"name";s:19:"${row}[vfs_file_id]";s:7:"no_lang";s:1:"1";}s:1:"C";a:4:{s:4:"type";s:5:"label";s:4:"name";s:12:"${row}[file]";s:7:"no_lang";s:1:"1";s:4:"size";s:21:",$row_cont[file_link]";}s:1:"D";a:4:{s:4:"type";s:5:"label";s:4:"name";s:21:"${row}[vfs_directory]";s:7:"no_lang";s:1:"1";s:4:"size";s:20:",$row_cont[dir_link]";}s:1:"E";a:4:{s:4:"type";s:5:"label";s:4:"name";s:16:"${row}[vfs_name]";s:7:"no_lang";s:1:"1";s:4:"size";s:21:",$row_cont[file_link]";}s:1:"F";a:2:{s:4:"type";s:5:"label";s:4:"name";s:21:"${row}[vfs_mime_type]";}s:1:"G";a:3:{s:4:"type";s:5:"label";s:4:"name";s:16:"${row}[vfs_size]";s:5:"align";s:5:"right";}s:1:"H";a:3:{s:4:"type";s:5:"label";s:4:"name";s:19:"${row}[vfs_comment]";s:7:"no_lang";s:1:"1";}s:1:"I";a:4:{s:4:"type";s:9:"date-time";s:4:"name";s:19:"${row}[vfs_created]";s:4:"size";s:11:"Y-m-d H:i:s";s:8:"readonly";s:1:"1";}s:1:"J";a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:24:"${row}[vfs_createdby_id]";s:8:"readonly";s:1:"1";}s:1:"K";a:4:{s:4:"type";s:9:"date-time";s:4:"name";s:20:"${row}[vfs_modified]";s:4:"size";s:11:"Y-m-d H:i:s";s:8:"readonly";s:1:"1";}s:1:"L";a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:25:"${row}[vfs_modifiedby_id]";s:8:"readonly";s:1:"1";}}}s:4:"rows";i:2;s:4:"cols";i:12;s:4:"size";s:9:"100%,auto";s:7:"options";a:2:{i:0;s:4:"100%";i:1;s:4:"auto";}}}','size' => '100%,auto','style' => '','modified' => '1173104345',);
$templ_data[] = array('name' => 'filemanager.select','template' => '','lang' => '','group' => '0','version' => '1.7.003','data' => 'a:2:{i:0;a:4:{s:4:"type";s:5:"label";s:4:"name";s:3:"msg";s:4:"span";s:6:",error";s:5:"align";s:6:"center";}i:1;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:2:{i:0;a:2:{s:2:"c1";s:4:",top";s:1:"A";s:2:"32";}i:1;a:2:{s:1:"A";a:7:{s:4:"type";s:4:"grid";s:5:"align";s:6:"center";s:4:"data";a:3:{i:0;a:2:{s:2:"h2";s:2:"40";s:2:"h1";s:4:",!@0";}i:1;a:1:{s:1:"A";a:5:{s:4:"type";s:6:"button";s:4:"size";s:9:"favorites";s:5:"label";s:9:"Favorites";s:5:"align";s:6:"center";s:4:"name";s:9:"favorites";}}i:2;a:1:{s:1:"A";a:5:{s:4:"type";s:6:"button";s:4:"size";s:16:"$row_cont/navbar";s:5:"label";s:9:"$row_cont";s:5:"align";s:6:"center";s:4:"name";s:6:"${row}";}}}s:4:"rows";i:2;s:4:"cols";i:1;s:4:"name";s:4:"apps";s:7:"options";a:0:{}}s:1:"B";a:6:{s:4:"type";s:4:"grid";s:4:"data";a:7:{i:0;a:4:{s:2:"c2";s:11:"selectFiles";s:2:"h3";s:35:",@mode=/(open-multiple|select-dir)/";s:2:"h4";s:15:",!@options-mime";s:2:"h5";s:11:",@no_upload";}i:1;a:1:{s:1:"A";a:7:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"5";i:1;a:2:{s:4:"type";s:4:"html";s:4:"name";s:2:"js";}i:2;a:4:{s:4:"type";s:6:"button";s:4:"name";s:10:"button[up]";s:4:"size";s:4:"goup";s:5:"label";s:2:"Up";}i:3;a:4:{s:4:"type";s:6:"button";s:4:"name";s:12:"button[home]";s:4:"size";s:6:"gohome";s:5:"label";s:25:"Go to your home directory";}i:4;a:4:{s:4:"type";s:3:"box";s:4:"size";s:1:"1";i:1;a:4:{s:4:"type";s:3:"vfs";s:4:"name";s:4:"path";s:7:"onclick";s:87:"path=document.getElementById(form::name(\'path\')); path.value=$path; path.form.submit();";s:4:"span";s:11:",selectPath";}s:4:"span";s:20:",selectPathContainer";}i:5;a:3:{s:4:"type";s:4:"text";s:4:"name";s:4:"path";s:4:"span";s:12:",displayNone";}}}i:2;a:1:{s:1:"A";a:7:{s:4:"type";s:4:"grid";s:4:"size";s:17:"100%,400,,,,,auto";s:4:"name";s:3:"dir";s:4:"data";a:2:{i:0;a:3:{s:2:"c1";s:3:"row";s:1:"A";s:2:"20";s:1:"C";s:23:"1%,!@mode=open-multiple";}i:1;a:3:{s:1:"A";a:4:{s:4:"type";s:8:"vfs-mime";s:4:"name";s:12:"${row}[path]";s:4:"span";s:11:",selectIcon";s:5:"align";s:6:"center";}s:1:"B";a:3:{s:4:"type";s:3:"vfs";s:4:"name";s:4:"$row";s:7:"onclick";s:18:"$row_cont[onclick]";}s:1:"C";a:4:{s:4:"type";s:8:"checkbox";s:4:"size";s:17:""$row_cont[name]"";s:4:"name";s:10:"selected[]";s:5:"align";s:5:"right";}}}s:4:"rows";i:1;s:4:"cols";i:3;s:7:"options";a:3:{i:0;s:4:"100%";i:1;s:3:"400";i:6;s:4:"auto";}}}i:3;a:1:{s:1:"A";a:3:{s:4:"type";s:4:"text";s:4:"name";s:4:"name";s:4:"span";s:11:",selectName";}}i:4;a:1:{s:1:"A";a:5:{s:4:"type";s:6:"select";s:4:"size";s:9:"All files";s:4:"name";s:4:"mime";s:4:"span";s:11:",selectMime";s:8:"onchange";i:1;}}i:5;a:1:{s:1:"A";a:6:{s:4:"type";s:8:"groupbox";s:4:"size";s:1:"2";s:5:"label";s:11:"File upload";s:4:"name";s:15:"upload_groupbox";i:1;a:2:{s:4:"type";s:5:"label";s:5:"label";s:27:"Choose a file for uploading";}i:2;a:2:{s:4:"type";s:4:"file";s:4:"name";s:11:"file_upload";}}}i:6;a:1:{s:1:"A";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";i:1;a:3:{s:4:"type";s:6:"button";s:5:"label";s:6:"@label";s:4:"name";s:10:"button[ok]";}i:2;a:4:{s:4:"type";s:10:"buttononly";s:4:"name";s:14:"button[cancel]";s:5:"label";s:6:"Cancel";s:7:"onclick";s:15:"window.close();";}s:5:"align";s:5:"right";}}}s:4:"rows";i:6;s:4:"cols";i:1;s:7:"options";a:1:{i:0;s:4:"100%";}s:4:"size";s:4:"100%";}}}s:4:"rows";i:1;s:4:"cols";i:2;s:4:"size";s:3:"600";s:7:"options";a:1:{i:0;s:3:"600";}}}','size' => '600','style' => '.error{color:red; font-style:italic;}','modified' => '1274435121',); $templ_data[] = array('name' => 'filemanager.select','template' => '','lang' => '','group' => '0','version' => '1.7.004','data' => 'a:2:{i:0;a:4:{s:4:"type";s:5:"label";s:4:"name";s:3:"msg";s:4:"span";s:6:",error";s:5:"align";s:6:"center";}i:1;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:2:{i:0;a:2:{s:2:"c1";s:4:",top";s:1:"A";s:2:"32";}i:1;a:2:{s:1:"A";a:7:{s:4:"type";s:4:"grid";s:5:"align";s:6:"center";s:4:"data";a:3:{i:0;a:2:{s:2:"h2";s:2:"40";s:2:"h1";s:4:",!@0";}i:1;a:1:{s:1:"A";a:5:{s:4:"type";s:6:"button";s:4:"size";s:9:"favorites";s:5:"label";s:9:"Favorites";s:5:"align";s:6:"center";s:4:"name";s:9:"favorites";}}i:2;a:1:{s:1:"A";a:5:{s:4:"type";s:6:"button";s:4:"size";s:16:"$row_cont/navbar";s:5:"label";s:9:"$row_cont";s:5:"align";s:6:"center";s:4:"name";s:6:"${row}";}}}s:4:"rows";i:2;s:4:"cols";i:1;s:4:"name";s:4:"apps";s:7:"options";a:0:{}}s:1:"B";a:6:{s:4:"type";s:4:"grid";s:4:"data";a:7:{i:0;a:4:{s:2:"c2";s:11:"selectFiles";s:2:"h3";s:35:",@mode=/(open-multiple|select-dir)/";s:2:"h4";s:15:",!@options-mime";s:2:"h5";s:11:",@no_upload";}i:1;a:1:{s:1:"A";a:7:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"5";i:1;a:2:{s:4:"type";s:4:"html";s:4:"name";s:2:"js";}i:2;a:4:{s:4:"type";s:6:"button";s:4:"name";s:10:"button[up]";s:4:"size";s:4:"goup";s:5:"label";s:2:"Up";}i:3;a:4:{s:4:"type";s:6:"button";s:4:"name";s:12:"button[home]";s:4:"size";s:6:"gohome";s:5:"label";s:25:"Go to your home directory";}i:4;a:4:{s:4:"type";s:3:"box";s:4:"size";s:1:"1";i:1;a:4:{s:4:"type";s:3:"vfs";s:4:"name";s:4:"path";s:7:"onclick";s:87:"path=document.getElementById(form::name(\'path\')); path.value=$path; path.form.submit();";s:4:"span";s:11:",selectPath";}s:4:"span";s:20:",selectPathContainer";}i:5;a:3:{s:4:"type";s:4:"text";s:4:"name";s:4:"path";s:4:"span";s:12:",displayNone";}}}i:2;a:1:{s:1:"A";a:7:{s:4:"type";s:4:"grid";s:4:"size";s:17:"100%,400,,,,,auto";s:4:"name";s:3:"dir";s:4:"data";a:2:{i:0;a:3:{s:2:"c1";s:3:"row";s:1:"A";s:2:"20";s:1:"C";s:23:"1%,!@mode=open-multiple";}i:1;a:3:{s:1:"A";a:5:{s:4:"type";s:8:"vfs-mime";s:4:"name";s:12:"${row}[path]";s:4:"span";s:11:",selectIcon";s:5:"align";s:6:"center";s:4:"size";s:2:"16";}s:1:"B";a:3:{s:4:"type";s:3:"vfs";s:4:"name";s:4:"$row";s:7:"onclick";s:18:"$row_cont[onclick]";}s:1:"C";a:4:{s:4:"type";s:8:"checkbox";s:4:"size";s:17:""$row_cont[name]"";s:4:"name";s:10:"selected[]";s:5:"align";s:5:"right";}}}s:4:"rows";i:1;s:4:"cols";i:3;s:7:"options";a:3:{i:0;s:4:"100%";i:1;s:3:"400";i:6;s:4:"auto";}}}i:3;a:1:{s:1:"A";a:3:{s:4:"type";s:4:"text";s:4:"name";s:4:"name";s:4:"span";s:11:",selectName";}}i:4;a:1:{s:1:"A";a:5:{s:4:"type";s:6:"select";s:4:"size";s:9:"All files";s:4:"name";s:4:"mime";s:4:"span";s:11:",selectMime";s:8:"onchange";i:1;}}i:5;a:1:{s:1:"A";a:6:{s:4:"type";s:8:"groupbox";s:4:"size";s:1:"2";s:5:"label";s:11:"File upload";s:4:"name";s:15:"upload_groupbox";i:1;a:2:{s:4:"type";s:5:"label";s:5:"label";s:27:"Choose a file for uploading";}i:2;a:2:{s:4:"type";s:4:"file";s:4:"name";s:11:"file_upload";}}}i:6;a:1:{s:1:"A";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";i:1;a:3:{s:4:"type";s:6:"button";s:5:"label";s:6:"@label";s:4:"name";s:10:"button[ok]";}i:2;a:4:{s:4:"type";s:10:"buttononly";s:4:"name";s:14:"button[cancel]";s:5:"label";s:6:"Cancel";s:7:"onclick";s:15:"window.close();";}s:5:"align";s:5:"right";}}}s:4:"rows";i:6;s:4:"cols";i:1;s:7:"options";a:1:{i:0;s:4:"100%";}s:4:"size";s:4:"100%";}}}s:4:"rows";i:1;s:4:"cols";i:2;s:4:"size";s:3:"600";s:7:"options";a:1:{i:0;s:3:"600";}}}','size' => '600','style' => '.error{color:red; font-style:italic;}','modified' => '1293805622',);

View File

@ -19,6 +19,6 @@
.selectPathContainer { width: 480px; overflow: auto; } .selectPathContainer { width: 480px; overflow: auto; }
.selectName input { width: 100%; } .selectName input { width: 100%; }
.selectMime select { width: 100%; } .selectMime select { width: 100%; }
.selectIcon img { height: 16px; } /*.selectIcon img { height: 16px; }*/
.displayNone input { display: none; } .displayNone input { display: none; }
.selectFiles td div { border-style: groove; } .selectFiles td div { border-style: groove; }

View File

@ -1,7 +1,8 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<!-- $Id$ --> <!-- $Id$ -->
<overlay> <overlay>
<template id="filemanager.select" template="" lang="" group="0" version="1.7.002"> <template id="filemanager.select" template="" lang="" group="0" version="1.7.004">
<description id="msg" class="error" align="center"/>
<grid width="600"> <grid width="600">
<columns> <columns>
<column width="32"/> <column width="32"/>
@ -47,7 +48,7 @@
</columns> </columns>
<rows> <rows>
<row class="row"> <row class="row">
<vfs-mime id="${row}[path]" class="selectIcon" align="center"/> <vfs-mime id="${row}[path]" class="selectIcon" align="center" options="16"/>
<vfs id="$row" onclick="$row_cont[onclick]"/> <vfs id="$row" onclick="$row_cont[onclick]"/>
<checkbox options="&quot;$row_cont[name]&quot;" id="selected[]" align="right"/> <checkbox options="&quot;$row_cont[name]&quot;" id="selected[]" align="right"/>
</row> </row>
@ -55,13 +56,20 @@
</grid> </grid>
</row> </row>
<row disabled="@mode=/(open-multiple|select-dir)/"> <row disabled="@mode=/(open-multiple|select-dir)/">
<textbox id="name" class="selectName" needed="1"/> <textbox id="name" class="selectName"/>
</row> </row>
<row disabled="!@options-mime"> <row disabled="!@options-mime">
<menulist class="selectMime"> <menulist class="selectMime">
<menupopup options="All files" id="mime" onchange="1"/> <menupopup options="All files" id="mime" onchange="1"/>
</menulist> </menulist>
</row> </row>
<row disabled="@no_upload">
<groupbox id="upload_groupbox">
<caption label="File upload"/>
<description value="Choose a file for uploading"/>
<file id="file_upload"/>
</groupbox>
</row>
<row> <row>
<hbox align="right"> <hbox align="right">
<button label="@label" id="button[ok]"/> <button label="@label" id="button[ok]"/>
@ -73,5 +81,8 @@
</row> </row>
</rows> </rows>
</grid> </grid>
<styles>
.error{color:red; font-style:italic;}
</styles>
</template> </template>
</overlay> </overlay>