- only using the new stream wrapper interface

- dropped all old code, images and translations
- the former comments are savely stored in the sqlfs table, but are currently not available via the GUI
This commit is contained in:
Ralf Becker 2008-04-14 05:54:10 +00:00
parent 501df49cbb
commit 80c717fb5c
80 changed files with 503 additions and 4902 deletions

View File

@ -1,12 +1,12 @@
#!/usr/bin/php -qC #!/usr/bin/php -qC
<?php <?php
/** /**
* Filemanager - Command line interface: ls * Filemanager - Command line interface
* *
* @link http://www.egroupware.org * @link http://www.egroupware.org
* @package filemanager * @package filemanager
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de> * @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @copyright (c) 2006 by Ralf Becker <RalfBecker-AT-outdoor-training.de> * @copyright (c) 2007/8 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @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
* @version $Id$ * @version $Id$
*/ */
@ -61,6 +61,7 @@ function usage($action=null,$ret=0)
echo "\t$cmd find URL [URL2 ...] [-type (d|f)][-depth][-mindepth n][-maxdepth n][-mime type[/sub]][-name pattern][-path pattern][-uid id][-user name][-nouser][-gid id][-group name][-nogroup][-size N][-cmin N][-ctime N][-mmin N][-mtime N] (N: +n --> >n, -n --> <n, n --> =n) [-limit N[,n]][-order (name|size|...)][-sort (ASC|DESC)]\n"; echo "\t$cmd find URL [URL2 ...] [-type (d|f)][-depth][-mindepth n][-maxdepth n][-mime type[/sub]][-name pattern][-path pattern][-uid id][-user name][-nouser][-gid id][-group name][-nogroup][-size N][-cmin N][-ctime N][-mmin N][-mtime N] (N: +n --> >n, -n --> <n, n --> =n) [-limit N[,n]][-order (name|size|...)][-sort (ASC|DESC)]\n";
echo "\t$cmd mount URL [path] (without path prints out the mounts)\n"; echo "\t$cmd mount URL [path] (without path prints out the mounts)\n";
echo "\t$cmd umount [-a|--all (restores default mounts)] URL|path\n"; echo "\t$cmd umount [-a|--all (restores default mounts)] URL|path\n";
echo "\t$cmd eacl URL [rwx-] [user or group]\n";
echo "\nCommon options: --user user --password password [--domain domain] can be used to pass eGW credentials without using the URL writing.\n"; echo "\nCommon options: --user user --password password [--domain domain] can be used to pass eGW credentials without using the URL writing.\n";
echo "\nURL: {vfs|sqlfs|oldvfs}://user:password@domain/home/user/file, /dir/file, ...\n"; echo "\nURL: {vfs|sqlfs|oldvfs}://user:password@domain/home/user/file, /dir/file, ...\n";
@ -82,7 +83,7 @@ if (!$argv) $argv = array('-h');
$args = $find_options = array(); $args = $find_options = array();
while(!is_null($option = array_shift($argv))) while(!is_null($option = array_shift($argv)))
{ {
if ($option[0] != '-') // no option --> argument if ($option == '-' || $option[0] != '-') // no option --> argument
{ {
$args[] = $option; $args[] = $option;
continue; continue;
@ -225,6 +226,9 @@ switch($cmd)
} }
break; break;
case 'eacl':
do_eacl($argv);
break;
case 'find': case 'find':
do_find($argv,$find_options); do_find($argv,$find_options);
@ -252,10 +256,14 @@ switch($cmd)
switch($cmd) switch($cmd)
{ {
case 'rm': case 'rm':
if ($recursive && class_exists('egw_vfs')) if ($recursive)
{ {
if (!class_exists('egw_vfs'))
{
die("rm -r only implemented for eGW streams!"); // dont want to repeat the code here
}
array_unshift($argv,$url); array_unshift($argv,$url);
egw_vfs::remove($argv); egw_vfs::remove($argv,true);
$argv = array(); $argv = array();
} }
else else
@ -422,32 +430,33 @@ switch($cmd)
*/ */
function load_wrapper($url) function load_wrapper($url)
{ {
switch($scheme = parse_url($url,PHP_URL_SCHEME)) $scheme = parse_url($url,PHP_URL_SCHEME);
if (!in_array($scheme,stream_get_wrappers()))
{ {
case 'webdav': switch($scheme)
require_once('HTTP/WebDAV/Client.php'); {
break; case 'webdav':
case 'smb': require_once('HTTP/WebDAV/Client.php');
require_once('../phpgwapi/inc/class.smb_stream_wrapper.inc.php'); break;
break; case '': // default scheme is file and alsways available
case 'oldvfs': break;
case 'vfs': default:
case 'sqlfs': if (!isset($GLOBALS['egw']) && !in_array($scheme,array('smb','imap')))
if (!isset($GLOBALS['egw_info'])) {
{ load_egw(parse_url($url,PHP_URL_USER),parse_url($url,PHP_URL_PASS),parse_url($url,PHP_URL_HOST));
load_egw(parse_url($url,PHP_URL_USER),parse_url($url,PHP_URL_PASS),parse_url($url,PHP_URL_HOST)); }
} // as eGW might not be loaded, we have to require the class exlicit
require_once(EGW_API_INC.'/class.'.$scheme.'_stream_wrapper.inc.php'); @include_once(EGW_API_INC.'/class.'.$scheme.'_stream_wrapper.inc.php');
break;
case '': // default scheme is file and alsways available if (!class_exists($scheme.'_stream_wrapper'))
break; {
default: die("Unknown scheme '$scheme' in $url !!!\n\n");
if (!in_array($scheme,stream_get_wrappers())) }
{ break;
die("Unknown scheme '$scheme' in $url !!!\n\n"); }
}
break;
} }
//print_r(stream_get_wrappers());
} }
/** /**
@ -504,7 +513,7 @@ function load_egw($user,$passwd,$domain='default')
set_exception_handler('cli_exception_handler'); // otherwise we get html! set_exception_handler('cli_exception_handler'); // otherwise we get html!
} }
$cmd = $GLOBALS['cmd']; $cmd = $GLOBALS['cmd'];
if (!in_array($cmd,array('ls','find','mount','umount')) && $GLOBALS['egw_info']['server']['files_dir'] && !is_writable($GLOBALS['egw_info']['server']['files_dir'])) if (!in_array($cmd,array('ls','find','mount','umount','eacl')) && $GLOBALS['egw_info']['server']['files_dir'] && !is_writable($GLOBALS['egw_info']['server']['files_dir']))
{ {
echo "\nError: eGroupWare's files directory {$GLOBALS['egw_info']['server']['files_dir']} is NOT writable by the user running ".basename(__FILE__)."!\n". echo "\nError: eGroupWare's files directory {$GLOBALS['egw_info']['server']['files_dir']} is NOT writable by the user running ".basename(__FILE__)."!\n".
"--> Please run it as the same user the webserver uses or root, otherwise the $cmd command will fail!\n\n"; "--> Please run it as the same user the webserver uses or root, otherwise the $cmd command will fail!\n\n";
@ -528,6 +537,59 @@ function _check_pw($hash_or_cleartext,$pw)
return $hash_or_cleartext == $pw; return $hash_or_cleartext == $pw;
} }
/**
* Set, delete or show the extended acl for a given path
*
* @param array $argv
*/
function do_eacl(array $argv)
{
$argc = count($argv);
if ($argc < 1 || $argc > 3)
{
usage();
}
load_wrapper($url = $argv[0]);
if (!class_exists('egw_vfs'))
{
die('eacl only implemented for eGW streams!');
}
if (!file_exists($url))
{
die("$url: no such file our directory!\n");
}
if ($argc == 1)
{
foreach(egw_vfs::get_eacl($url) as $acl)
{
$mode = ($acl['rights'] & egw_vfs::READABLE ? 'r' : '-').
($acl['rights'] & egw_vfs::WRITABLE ? 'w' : '-').
($acl['rights'] & egw_vfs::EXECUTABLE ? 'x' : '-');
echo $acl['path']."\t$mode\t".$GLOBALS['egw']->accounts->id2name($acl['owner'])."\n";
}
return;
}
if ($argc > 1 && !is_numeric($argv[1]))
{
$mode=$argv[1];
$argv[1] = null;
for($i = 0; $mode[$i]; ++$i)
{
switch($mode[$i])
{
case 'x': $argv[1] |= egw_vfs::EXECUTABLE; break;
case 'w': $argv[1] |= egw_vfs::WRITABLE; break;
case 'r': $argv[1] |= egw_vfs::READABLE; break;
}
}
}
if (!egw_vfs::eacl($url,$argv[1],$argc > 2 && !is_numeric($argv[2]) ? $GLOBALS['egw']->accounts->name2id($argv[2]) : $argv[2]))
{
echo "Error setting extended acl for $argv[0]!\n";
}
}
/** /**
* Give the stats for one file * Give the stats for one file
* *
@ -544,7 +606,11 @@ function do_stat($url,$long=false,$numeric=false,$full_path=false)
{ {
$bname = basename($bname); $bname = basename($bname);
} }
if ($long && ($stat = stat($url))) if (!file_exists($url) || !($stat = stat($url)))
{
echo "$bname: no such file or directory!\n";
}
elseif ($long)
{ {
//echo $url; print_r($stat); //echo $url; print_r($stat);
@ -657,6 +723,7 @@ function _cp($from,$to,$verbose=false,$perms=false)
{ {
die("Can't open $to for writing!\n"); die("Can't open $to for writing!\n");
} }
//stream_filter_append($from_fp,'convert.base64-decode');
$count = stream_copy_to_stream($from_fp,$to_fp); $count = stream_copy_to_stream($from_fp,$to_fp);
if ($verbose) echo hsize($count)." bytes written to $to\n"; if ($verbose) echo hsize($count)." bytes written to $to\n";

View File

@ -1,45 +0,0 @@
INSTALL
-------
Command examples are suggestions only. Use your head.
COMMAND SUMMARY
---------------
cp -a /some/path/to/egroupware/files /path/to/files
cd /path/to/files
chown -R nobody .
-OR-
chmod -R 777 .
http://yourhost.com/setup/ > Setup/Config > Edit Current Configuration
"Enter the full path for users and group files" => /path/to/files
FULL EXPLANATION
----------------
[REQUIRED] Copy egroupware/files to where you want to store the files.
THIS SHOULD BE SOMEWHERE NOT INSIDE THE WEBROOT AND NOT ACCESSIBLE TO THE WEB.
Having the files within the webroot is a huge security risk as well as a privacy concern.
The exception to this would be if you WANT the users' and groups' files to be accessible
from the web, such as when setting up public or semi-public web page/document hosting. In
this case, the files directory can be left where it is.
(Make sure you copy the directory, don't just make a new one. The necessary directories
are files/ and files/home/)
[REQUIRED] In http://yourhost.com/setup, login to Setup/Config, then Edit Current Configuration. Enter the FULL path for the files directory you created earlier in the second box from the top.
[REQUIRED] Change permissions for files directory and all it's subdirectories to be writable by Apache
This is the files directory you created earlier and specified in setup (Edit Current Configuration). Note that 'nobody' below could also be 'apache' on your system. Check the 'User' setting in your httpd.conf.
cd /path/to/files
chown -R nobody .
-OR-
chmod -R 777 .
SECURITY CONCERNS
-----------------
There are many security concerns related with allowing users to store files on the server. The most common problem is that users can upload any type of file, including CGI and PHP scripts. This in effect grants them local access to the machine, and can be used to read database passwords and other sensitive files. The ability to upload files of any type is not forbidden by phpwebhosting because it is sometimes desired, and also the types of vulnerable files differ from server to server. To combat this, you can add a simple entry to Apache's httpd.conf to prevent certain types of files from being executed. Included below is an example that results in .cgi, .pl, .php, .php3, and .phps files being treated as normal text files. It also explicitly turns all Options off, which includes turning Indexes (listing of files) off.
<Directory /path/to/files>
Options None
AllowOverride None
DirectoryIndex index.html
RemoveHandler cgi-script .cgi .pl
RemoveType application/x-httpd-php .php .php3
RemoveType application/x-httpd-php-source .phps
</Directory>

View File

@ -1,124 +0,0 @@
INSTALL : WebDAV file share
---------------------------
Note: if you don't know what WebDAV is you probably don't need it. The default
vfs_sql is generally faster and easier to setup.
Filemanager's WebDAV support allows you to store your files online in
egroupware, in a way that cooperates well with other web applications (for
instance, in Windows you can then access your files as a "web folder", and
similarly KDE, Gnome, MacOSX, and amultitude of applications (eg MS Office and
OpenOffice.org) all include some way of browsing files on a WebDAV share)
Installation
------------
To install:
1/ Setup a WebDAV server - currently this code has only been well tested using
Apache's mod_dav (http://www.webdav.org/mod_dav/). mod_dav is included in
Apache 2, and most Linux distributions include it as a package.
To setup mod_dav ensure that you have the module installed correctly ( RTFM :)
and create a virtual host (eg files.yourdomain.com) something like this:
<VirtualHost files.yourdomain.com:80>
AccessFileName .htaccess
ServerAdmin webmaster@yourdomain.com
DocumentRoot /var/files
<Location />
AllowOverride All
Options +Indexes
DAV on
DirectoryIndex /
RemoveHandler cgi-script .cgi .pl
RemoveType application/x-httpd-php .php .php3
RemoveType application/x-httpd-php-source .phps
</Location>
<Files ~ "^\.ht">
#This ensures egroupware can modify .htaccess files
order deny,allow
deny from all
#make sure your egroupware server is included here.
allow from localhost .localdomain
</Files>
ServerName files.yourdomain.com
ErrorLog logs/dav_err
CustomLog logs/dav_acc combined
</VirtualHost>
2/ On the setup page (egroupware/setup/config.php) specify
the WebDAV server URL (eg http://files.yourdomain.com ) in the: "Full path
for users and groups files" text area, and select DAV in the:
"Select where you want to store/retrieve filesystem information"
combo. If your file repository supports SSL you might want to enter
'https://files.yourdomain.com' instead - note that phpGroupWare itself wont
use SSL to access the repository, but when it redirects the users browser to
the repository it will use the secure https url.
3/ Make sure your WebDAV repository contains a "home" directory (important!)
So if your WebDAV directory is /var/files, you would need:
/var/files/
/var/files/home/
4/ You now want some kind of authentication on the WebDAV repository, so that
users accessing it directly still need their egroupware password. By default
there is no security through Apache's WebDAV module and anyone could access
your files.
To enable authentication you must use a third-party Apache authentication
module. Which you use depends on how you have setup authentication in
phpGroupWare - for instance if you use an SQL DB (the default) then set up
mod_auth_pgsql (http://www.giuseppetanzilli.it/mod_auth_pgsql/) or
mod_auth_mysql (http://modauthmysql.sourceforge.net/)
An example .htaccess file for your repository's root
(e.g. /var/files) when using mod_auth_mysql would be:
Options None
DirectoryIndex index.html
RemoveHandler cgi-script .cgi .pl
RemoveType application/x-httpd-php .php .php3
RemoveType application/x-httpd-php-source .phps
AuthMySQL_Host localhost
AuthMySQL_User <mysql user>
AuthMySQL_Password <mysql password>
Auth_MySQL_DB <mysql egroupware database>
AuthMySQL_Password_Table "phpgw_accounts AS users"
AuthMySQL_Username_Field users.account_lid
AuthMySQL_Password_Field account_pwd
Auth_MySQL_Encryption_Types PHP_MD5
AuthName "V-Manager"
AuthType Basic
require valid-user
eGroupWare's WebDAV vfs class has some support for adding
.htaccess files when creating new directories but does not do
so when creating a new directory for a new user so you will
need to do this by hand or modify the vfs_dav class. The .htaccess
file would look like "require user <username>"
Filemanager also supports group directories. Add the
following to the .htaccess file:
AuthMySQL_Group_Table "phpgw_accounts AS groups, phpgw_accounts AS users, phpgw_acl AS acl"
Auth_MySQL_Group_Field groups.account_lid
Auth_MySQL_Group_Clause " AND groups.account_type='g' AND users.account_type='u' AND groups.account_id=acl.acl_location AND users.account_id=acl.acl_account AND groups.account_lid='Admins'"
And finally make the group directories by hand:
mkdir home/Admins; mkdir home/Default
and each directory's .htaccess file by hand:
require group Admins
TODO:
Create group directories automaticly
Create .htaccess file for group directories automaticly
Create .htaccess files for new user directories automaticly
Only list group directories to which the user has access

View File

@ -1,351 +0,0 @@
<?php
/**************************************************************************\
* eGroupWare - Filemanager *
* http://www.egroupware.org *
* ------------------------------------------------------------------------ *
* This program is free software; you can redistribute it and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; either version 2 of the License, or (at your *
* option) any later version. *
\**************************************************************************/
require_once(EGW_INCLUDE_ROOT.'/filemanager/inc/class.sofilemanager.inc.php');
/* $Id$ */
class bofilemanager extends sofilemanager
{
// used
var $so;
var $vfs;
var $rootdir;
var $fakebase;
var $appname;
var $filesdir;
var $hostname;
var $userinfo = Array();
var $homedir;
var $sep;
var $file_attributes;
var $matches;//FIXME matches not defined
var $debug = False;
// Timestamps
//'vfs_created', 'vfs_modified',
var $timestamps=array(
);
/**
* Offset in secconds between user and server-time, it need to be add to a server-time to get the user-time
* or substracted from a user-time to get the server-time
*
* @var int
*/
var $tz_offset_s;
/**
* Current time as timestamp in user-time
*
* @var int
*/
var $now;
function bofilemanager()
{
$this->sofilemanager();
// discarded because of extension
//$this->so =& CreateObject('filemanager.sofilemanager');
//$this->so->db_init();
$this->db_init();
$this->vfs =& CreateObject('phpgwapi.vfs');
error_reporting(4);
### Start Configuration Options ###
### These are automatically set in eGW - do not edit ###
$this->sep = SEP;
$this->rootdir = $this->vfs->basedir;
$this->fakebase = $this->vfs->fakebase;
$this->appname = $GLOBALS['egw_info']['flags']['currentapp'];
if(stristr($this->rootdir, EGW_SERVER_ROOT))
{
$this->filesdir = substr($this->rootdir, strlen(EGW_SERVER_ROOT));
}
else
{
unset($this->filesdir);
}
$this->hostname = $GLOBALS['egw_info']['server']['webserver_url'] . $this->filesdir;
// die($this->hostname);
###
# Note that $userinfo["username"] is actually the id number, not the login name
###
$this->userinfo['username'] = $GLOBALS['egw_info']['user']['account_id'];
$this->userinfo['account_lid'] = $GLOBALS['egw']->accounts->id2name($this->userinfo['username']);
$this->userinfo['hdspace'] = 10000000000; // to settings
$this->homedir = $this->fakebase.'/'.$this->userinfo['account_lid'];
### End Configuration Options ###
if(!defined('NULL'))
{
define('NULL', '');
}
###
# Define the list of file attributes. Format is "internal_name" => "Displayed name"
# This is used both by internally and externally for things like preferences
###
$this->file_attributes = Array(
'name' => lang('File Name'),
'mime_type' => lang('MIME Type'),
'size' => lang('Size'),
'created' => lang('Created'),
'modified' => lang('Modified'),
'owner' => lang('Owner'),
'createdby_id' => lang('Created by'),
'modifiedby_id' => lang('Created by'),
'modifiedby_id' => lang('Modified by'),
'app' => lang('Application'),
'comment' => lang('Comment'),
'version' => lang('Version')
);
if (!is_object($GLOBALS['egw']->datetime))
{
$GLOBALS['egw']->datetime =& CreateObject('phpgwapi.datetime');
}
$this->tz_offset_s = $GLOBALS['egw']->datetime->tz_offset;
$this->now = time() + $this->tz_offset_s; // time() is server-time and we need a user-time
}
/**
* changes the data from the db-format to your work-format
*
* reimplemented to adjust the timezone of the timestamps (adding $this->tz_offset_s to get user-time)
* Please note, we do NOT call the method of the parent so_sql !!!
*
* @param array $data if given works on that array and returns result, else works on internal data-array
* @return array with changed data
*/
function db2data($data=null)
{
if (!is_array($data))
{
$data = &$this->data;
}
foreach($this->timestamps as $name)
{
if (isset($data[$name]) && $data[$name]) $data[$name] += $this->tz_offset_s;
}
return $data;
}
/**
* changes the data from your work-format to the db-format
*
* reimplemented to adjust the timezone of the timestamps (subtraction $this->tz_offset_s to get server-time)
* Please note, we do NOT call the method of the parent so_sql !!!
*
* @param array $data if given works on that array and returns result, else works on internal data-array
* @return array with changed data
*/
function data2db($data=null)
{
if ($intern = !is_array($data))
{
$data = &$this->data;
}
foreach($this->timestamps as $name)
{
if (isset($data[$name]) && $data[$name]) $data[$name] -= $this->tz_offset_s;
}
return $data;
}
###
# Calculate and display B or KB
# And yes, that first if is strange,
# but it does do something
###
function borkb($size, $enclosed = NULL, $return = 1)
{
if(!$size)
{
$size = 0;
}
if($enclosed)
{
$left = '(';
$right = ')';
}
if($size < 1024)
{
$rstring = $left . $size . 'B' . $right;
}
else
{
$rstring = $left . round($size/1024) . 'KB' . $right;
}
return($this->eor($rstring, $return));
}
###
# Check for and return the first unwanted character
###
function bad_chars($string, $all = True, $return = 0)
{
if($all)
{
if(preg_match("-([\\/<>\'\"\&])-", $string, $badchars))
{
$rstring = $badchars[1];
}
}
else
{
if(preg_match("-([\\/<>])-", $string, $badchars))
{
$rstring = $badchars[1];
}
}
return trim(($this->eor($rstring, $return)));
}
###
# Match character in string using ord().
###
function ord_match($string, $charnum)
{
for($i = 0; $i < strlen($string); $i++)
{
$character = ord(substr($string, $i, 1));
if($character == $charnum)
{
return True;
}
}
return False;
}
###
# Decide whether to echo or return. Used by HTML functions
###
function eor($rstring, $return)
{
if($return)
{
return($rstring);
}
else
{
$this->html_text($rstring . "\n");
return(0);
}
}
function html_text($string, $times = 1, $return = 0, $lang = 0)
{
if($lang)
{
$string = lang($string);
}
if($times == NULL)
{
$times = 1;
}
for($i = 0; $i != $times; $i++)
{
if($return)
{
$rstring .= $string;
}
else
{
echo $string;
}
}
if($return)
{
return($rstring);
}
}
###
# URL encode a string
# First check if its a query string, then if its just a URL, then just encodes it all
# Note: this is a hack. It was made to work with form actions, form values, and links only,
# but should be able to handle any normal query string or URL
###
function string_encode($string, $return = False)
{
//var_dump($string);
if(preg_match("/=(.*)(&|$)/U", $string))
{
$rstring = $string;
preg_match_all("/=(.*)(&|$)/U", $string, $matches, PREG_SET_ORDER);//FIXME matches not defined
reset($matches);//FIXME matches not defined
while(list(,$match_array) = each($matches))//FIXME matches not defined
{
$var_encoded = rawurlencode(base64_encode($match_array[1]));
$rstring = str_replace($match_array[0], '=' . $var_encoded . $match_array[2], $rstring);
}
}
elseif($this->hostname != "" && ereg('^'.$this->hostname, $string))
// elseif(ereg('^'.$this->hostname, $string))
{
$rstring = ereg_replace('^'.$this->hostname.'/', '', $string);
$rstring = preg_replace("/(.*)(\/|$)/Ue", "rawurlencode(base64_encode('\\1')) . '\\2'", $rstring);
$rstring = $this->hostname.'/'.$rstring;
}
else
{
$rstring = rawurlencode($string);
/* Terrible hack, decodes all /'s back to normal */
$rstring = preg_replace("/%2F/", '/', $rstring);
}
return($this->eor($rstring, $return));
}
function string_decode($string, $return = False)
{
$rstring = rawurldecode($string);
return($this->eor($rstring, $return));
}
###
# HTML encode a string
# This should be used with anything in an HTML tag that might contain < or >
###
function html_encode($string, $return)
{
$rstring = htmlspecialchars($string);
return($this->eor($rstring, $return));
}
}
?>

View File

@ -1,149 +0,0 @@
<?php
/**
* eGroupWare - Hooks for admin, preferences and sidebox-menus
*
* @link http://www.egroupware.org
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @package filemanager
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
/**
* Class containing admin, preferences and sidebox-menus (used as hooks)
*/
class filemanager_hooks
{
function all_hooks($args)
{
$appname = 'filemanager';
$location = is_array($args) ? $args['location'] : $args;
//echo "<p>admin_prefs_sidebox_hooks::all_hooks(".print_r($args,True).") appname='$appname', location='$location'</p>\n";
if ($location == 'sidebox_menu')
{
$title = $GLOBALS['egw_info']['apps'][$appname]['title'] . ' '. lang('Menu');
$file = Array(
'New interface' => $GLOBALS['egw']->link('/index.php',array('menuaction'=>'filemanager.filemanager_ui.index')),
'Old interface' => $GLOBALS['egw']->link('/index.php',array('menuaction'=>'filemanager.uifilemanager.index')),
'Search' => $GLOBALS['egw']->link('/index.php',array('menuaction'=>'filemanager.uifilemanager.index', 'action'=>'search')),
);
display_sidebox($appname,$title,$file);
}
if ($GLOBALS['egw_info']['user']['apps']['preferences'] && $location != 'admin')
{
$file = array(
'Filemanager Preferences' => $GLOBALS['egw']->link('/index.php','menuaction=preferences.uisettings.index&appname='.$appname),
'Grant Access' => $GLOBALS['egw']->link('/index.php','menuaction=preferences.uiaclprefs.index&acl_app='.$appname),
);
if ($location == 'preferences')
{
display_section($appname,$file);
}
else
{
display_sidebox($appname,lang('Preferences'),$file);
}
}
if ($GLOBALS['egw_info']['user']['apps']['admin'] && $location != 'preferences')
{
$file = Array(
'Grant Access' => $GLOBALS['egw']->link('/index.php','menuaction=preferences.uiaclprefs.index&acl_app='.$appname),
);
if ($location == 'admin')
{
display_section($appname,$file);
}
else
{
display_sidebox($appname,lang('Admin'),$file);
}
}
}
function settings($args)
{
settype($GLOBALS['settings'],'array');
$GLOBALS['settings']['display_attrs'] = array(
'type' => 'section',
'title' => 'Display attributes',
'name' => 'display_attrs',
'xmlrpc' => True,
'admin' => False
);
$file_attributes = Array(
'name' => 'File Name',
'mime_type' => 'MIME Type',
'size' => 'Size',
'created' => 'Created',
'modified' => 'Modified',
'owner' => 'Owner',
'createdby_id' => 'Created by',
'modifiedby_id' => 'Created by',
'modifiedby_id' => 'Modified by',
'app' => 'Application',
'comment' => 'Comment',
'version' => 'Version'
);
foreach($file_attributes as $key => $value)
{
$GLOBALS['settings'][$key] = array(
'type' => 'check',
'label' => "$value",
'name' => $key,
'xmlrpc' => True,
'admin' => False
);
}
$GLOBALS['settings']['other_settings'] = array(
'type' => 'section',
'title' => 'Other settings',
'name' => 'other_settings',
'xmlrpc' => True,
'admin' => False
);
$other_checkboxes = array (
"viewinnewwin" => "View documents in new window",
"viewonserver" => "View documents on server (if available)",
"viewtextplain" => "Unknown MIME-type defaults to text/plain when viewing",
"dotdot" => "Show ..",
"dotfiles" => "Show .files",
);
foreach($other_checkboxes as $key => $value)
{
$GLOBALS['settings'][$key] = array(
'type' => 'check',
'label' => "$value",
'name' => $key,
'xmlrpc' => True,
'admin' => False
);
}
$upload_boxes = array(
'1' => '1',
'5' => '5',
'10' => '10',
'20' => '20',
'30' => '30'
);
$GLOBALS['settings']['show_upload_boxes'] = array(
'label' => 'Default number of upload fields to show',
'name' => 'show_upload_boxes',
'values' => $upload_boxes,
'xmlrpc' => True,
'admin' => False
);
return true;
}
}

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Filemanager - user interface * eGroupWare - Filemanager - user interface
* *
* @link http://www.egroupware.org * @link http://www.egroupware.org
* @package filemanager * @package filemanager
@ -112,7 +112,7 @@ class filemanager_ui
{ {
$ses = $GLOBALS['egw']->session->appsession('index','filemanager'); $ses = $GLOBALS['egw']->session->appsession('index','filemanager');
$old_path = $ses['path']; $old_path = $ses['path'];
$content['nm']['path'] = $old_path.'/'.$content['nm']['path']; $content['nm']['path'] = egw_vfs::concat($old_path,$content['nm']['path']);
} }
if (!@egw_vfs::mkdir($content['nm']['path'],null,STREAM_MKDIR_RECURSIVE)) if (!@egw_vfs::mkdir($content['nm']['path'],null,STREAM_MKDIR_RECURSIVE))
{ {
@ -130,7 +130,7 @@ class filemanager_ui
$content['nm']['msg'] = self::action($clipboard_type.'_paste',$clipboard_files,$content['nm']['path']); $content['nm']['msg'] = self::action($clipboard_type.'_paste',$clipboard_files,$content['nm']['path']);
break; break;
case 'upload': case 'upload':
$to = $content['nm']['path'].'/'.$content['upload']['name']; $to = egw_vfs::concat($content['nm']['path'],$content['upload']['name']);
if ($content['upload'] && is_uploaded_file($content['upload']['tmp_name']) && if ($content['upload'] && is_uploaded_file($content['upload']['tmp_name']) &&
(egw_vfs::is_writable($content['nm']['path']) || egw_vfs::is_writable($to)) && (egw_vfs::is_writable($content['nm']['path']) || egw_vfs::is_writable($to)) &&
copy($content['upload']['tmp_name'],egw_vfs::PREFIX.$to)) copy($content['upload']['tmp_name'],egw_vfs::PREFIX.$to))
@ -209,7 +209,8 @@ class filemanager_ui
$post_max_size = ini_get('post_max_size'); $post_max_size = ini_get('post_max_size');
$max_upload = min(self::km2int($upload_max_filesize),self::km2int($post_max_size)-2800); $max_upload = min(self::km2int($upload_max_filesize),self::km2int($post_max_size)-2800);
return lang('Maximum size for uploads: %1 (php.ini: upload_max_filesize=%2, post_max_size=%3)',egw_vfs::hsize($max_upload),$upload_max_filesize,$post_max_size); return lang('Maximum size for uploads').': '.egw_vfs::hsize($max_upload).
" (php.ini: upload_max_filesize=$upload_max_filesize, post_max_size=$post_max_size)";
} }
/** /**
@ -268,7 +269,7 @@ class filemanager_ui
{ {
if (!egw_vfs::is_dir($path)) if (!egw_vfs::is_dir($path))
{ {
$to = $dir.'/'.egw_vfs::basename($path); $to = egw_vfs::concat($dir,egw_vfs::basename($path));
if ($path != $to && egw_vfs::copy($path,$to)) if ($path != $to && egw_vfs::copy($path,$to))
{ {
++$files; ++$files;
@ -313,7 +314,7 @@ class filemanager_ui
case 'cut_paste': case 'cut_paste':
foreach($selected as $path) foreach($selected as $path)
{ {
$to = $dir.'/'.egw_vfs::basename($path); $to = egw_vfs::concat($dir,egw_vfs::basename($path));
if ($path != $to && egw_vfs::rename($path,$to)) if ($path != $to && egw_vfs::rename($path,$to))
{ {
++$files; ++$files;
@ -338,9 +339,10 @@ class filemanager_ui
* *
* @param string $mime_type * @param string $mime_type
* @param int $size=16 * @param int $size=16
* @param boolean $et_image=true return $app/$icon string for etemplate (default) or html image tag if false
* @return string * @return string
*/ */
static private function mime_icon($mime_type, $size=16) static function mime_icon($mime_type, $size=16)
{ {
if ($mime_type == egw_vfs::DIR_MIME_TYPE) if ($mime_type == egw_vfs::DIR_MIME_TYPE)
{ {
@ -408,7 +410,7 @@ class filemanager_ui
$row['icon'] = self::mime_icon($row['mime']); $row['icon'] = self::mime_icon($row['mime']);
$row['perms'] = egw_vfs::int2mode($row['mode']); $row['perms'] = egw_vfs::int2mode($row['mode']);
// only show link if we have access to the file or dir // only show link if we have access to the file or dir
if (egw_vfs::check_access($row,egw_vfs::READABLE)) if (egw_vfs::check_access($path,egw_vfs::READABLE))
{ {
if ($row['mime'] == egw_vfs::DIR_MIME_TYPE) if ($row['mime'] == egw_vfs::DIR_MIME_TYPE)
{ {
@ -416,7 +418,7 @@ class filemanager_ui
} }
else else
{ {
$row['link'] = self::download_url($path); $row['link'] = egw_vfs::download_url($path);
} }
} }
$row['user'] = $row['uid'] ? $GLOBALS['egw']->accounts->id2name($row['uid']) : 'root'; $row['user'] = $row['uid'] ? $GLOBALS['egw']->accounts->id2name($row['uid']) : 'root';
@ -441,27 +443,16 @@ class filemanager_ui
return egw_vfs::$find_total; return egw_vfs::$find_total;
} }
/**
* URL to download the file
*
* We use our webdav handler as download url instead of an own download method.
* The webdav hander (filemanager/webdav.php) recognices eGW's session cookie and of cause understands regular GET requests.
*
* @param string $path
* @return string
*/
private static function download_url($path)
{
return '/filemanager/webdav.php'.$path;
}
/** /**
* Preferences of a file/directory * Preferences of a file/directory
* *
* @param array $content=null * @param array $content=null
* @param string $msg=''
*/ */
function file(array $content=null) function file(array $content=null,$msg='')
{ {
static $tabs = 'general|perms|eacl|preview';
$tpl = new etemplate('filemanager.file'); $tpl = new etemplate('filemanager.file');
if (!is_array($content)) if (!is_array($content))
@ -485,7 +476,7 @@ class filemanager_ui
{ {
$content['perms']['executable'] = (int)!!($content['mode'] & 0111); $content['perms']['executable'] = (int)!!($content['mode'] & 0111);
$mask = 6; $mask = 6;
$content['link'] = $GLOBALS['egw']->link(self::download_url($path)); $content['link'] = $GLOBALS['egw']->link(egw_vfs::download_url($path));
if (preg_match('/^text/',$content['mime']) && $content['size'] < 100000) if (preg_match('/^text/',$content['mime']) && $content['size'] < 100000)
{ {
$content['text_content'] = file_get_contents(egw_vfs::PREFIX.$path); $content['text_content'] = file_get_contents(egw_vfs::PREFIX.$path);
@ -493,62 +484,92 @@ class filemanager_ui
} }
else else
{ {
$content['perms']['sticky'] = (int)!!($content['mode'] & 0x201); //currently not implemented in backend $content['perms']['sticky'] = (int)!!($content['mode'] & 0x201);
$mask = 7; $mask = 7;
} }
foreach(array('owner' => 6,'group' => 3,'other' => 0) as $name => $shift) foreach(array('owner' => 6,'group' => 3,'other' => 0) as $name => $shift)
{ {
$content['perms'][$name] = ($content['mode'] >> $shift) & $mask; $content['perms'][$name] = ($content['mode'] >> $shift) & $mask;
} }
$content['is_owner'] = egw_vfs::has_owner_rights($path,$content);
} }
else else
{ {
//_debug_array($content);
$path = $content['path']; $path = $content['path'];
foreach($content['old'] as $name => $old_value)
list($button) = @each($content['button']); unset($content['button']);
if (in_array($button,array('save','apply')))
{ {
if (isset($content[$name]) && $old_value != $content[$name]) foreach($content['old'] as $name => $old_value)
{ {
switch($name) if (isset($content[$name]) && $old_value != $content[$name])
{ {
case 'name': switch($name)
if (egw_vfs::rename($path,$to = $content['dir'].'/'.$content['name'])) {
{ case 'name':
$msg = lang('Renamed %1 to %2.',$path,$to).' '; if (egw_vfs::rename($path,$to = egw_vfs::concat($content['dir'],$content['name'])))
} {
$path = $to; $msg = lang('Renamed %1 to %2.',$path,$to).' ';
break; }
default: $path = $to;
static $name2cmd = array('uid' => 'chown','gid' => 'chgrp','perms' => 'chmod'); break;
$cmd = array('egw_vfs',$name2cmd[$name]); default:
$value = $name == 'perms' ? self::perms2mode($content['perms']) : $content[$name]; static $name2cmd = array('uid' => 'chown','gid' => 'chgrp','perms' => 'chmod');
if ($content['modify_subs'] && $name == 'perms') $cmd = array('egw_vfs',$name2cmd[$name]);
{ $value = $name == 'perms' ? self::perms2mode($content['perms']) : $content[$name];
egw_vfs::find($path,array('type'=>'d'),$cmd,array($value)); if ($content['modify_subs'] && $name == 'perms')
egw_vfs::find($path,array('type'=>'f'),$cmd,array($value & 0666)); // no execute for files {
} egw_vfs::find($path,array('type'=>'d'),$cmd,array($value));
elseif ($content['modify_subs']) egw_vfs::find($path,array('type'=>'f'),$cmd,array($value & 0666)); // no execute for files
{ }
egw_vfs::find($path,null,$cmd,array($value)); elseif ($content['modify_subs'])
} {
else egw_vfs::find($path,null,$cmd,array($value));
}
{ else
call_user_func_array($cmd,array($path,$value)); {
} call_user_func_array($cmd,array($path,$value));
$msg .= lang('Permissions changed for %1.',$path.($content['modify_subs']?' '.lang('and all it\'s childeren'):'')); }
break; $msg .= lang('Permissions changed for %1.',$path.($content['modify_subs']?' '.lang('and all it\'s childeren'):''));
break;
}
}
}
}
elseif ($content['eacl'] && $content['is_owner'])
{
if ($content['eacl']['delete'])
{
list($ino_owner) = each($content['eacl']['delete']);
list($ino,$owner) = explode('-',$ino_owner);
$msg .= egw_vfs::eacl($path,null,$owner) ? lang('ACL deleted.') : lang('Error deleting the ACL entry!');
}
elseif ($button == 'eacl')
{
if (!$content['eacl']['owner'])
{
$msg .= lang('You need to select an owner!');
}
else
{
$msg .= egw_vfs::eacl($path,$content['eacl']['rights'],$content['eacl']['owner']) ?
lang('ACL added.') : lang('Error adding the ACL!');
} }
} }
} }
// refresh opender and close our window // refresh opender and close our window
$link = $GLOBALS['egw']->link('/index.php',array('menuaction'=>'filemanager.filemanager_ui.index','msg'=>$msg)); $link = $GLOBALS['egw']->link('/index.php',array('menuaction'=>'filemanager.filemanager_ui.index','msg'=>$msg));
$js = "opener.location.href='$link'; window.close();"; $js = "opener.location.href='$link';";
if ($button == 'save') $js .= "window.close();";
echo "<html>\n<body>\n<script>\n$js\n</script>\n</body>\n</html>\n"; echo "<html>\n<body>\n<script>\n$js\n</script>\n</body>\n</html>\n";
$GLOBALS['egw']->common->egw_exit(); if ($button == 'save')$GLOBALS['egw']->common->egw_exit();
} }
$content['msg'] = $msg;
if (($readonlys['uid'] = !egw_vfs::$is_root) && !$content['uid']) $content['ro_uid_root'] = 'root'; if (($readonlys['uid'] = !egw_vfs::$is_root) && !$content['uid']) $content['ro_uid_root'] = 'root';
// only owner can change group & perms // only owner can change group & perms
if (($readonlys['gid'] = !egw_vfs::$is_root && $content['uid'] != egw_vfs::$user || if (($readonlys['gid'] = !$content['is_owner'] ||
parse_url(egw_vfs::resolve_url($content['path']),PHP_URL_SCHEME) == 'oldvfs')) // no uid, gid or perms in oldvfs parse_url(egw_vfs::resolve_url($content['path']),PHP_URL_SCHEME) == 'oldvfs')) // no uid, gid or perms in oldvfs
{ {
if (!$content['gid']) $content['ro_gid_root'] = 'root'; if (!$content['gid']) $content['ro_gid_root'] = 'root';
@ -559,18 +580,27 @@ class filemanager_ui
} }
$readonlys['name'] = !egw_vfs::is_writable($content['dir']); $readonlys['name'] = !egw_vfs::is_writable($content['dir']);
if (parse_url(egw_vfs::resolve_url($content['path']),PHP_URL_SCHEME) == 'oldvfs') $readonlys[$tabs]['eacl'] = true; // eacl off by default
{
}
if ($content['is_dir']) if ($content['is_dir'])
{ {
$sel_options['owner']=$sel_options['group']=$sel_options['other'] = array( $readonlys[$tabs]['preview'] = true; // no preview tab for dirs
$sel_options['rights']=$sel_options['owner']=$sel_options['group']=$sel_options['other'] = array(
7 => lang('Display and modification of content'), 7 => lang('Display and modification of content'),
5 => lang('Display of content'), 5 => lang('Display of content'),
0 => lang('No access'), 0 => lang('No access'),
); );
if(($content['eacl'] = egw_vfs::get_eacl($content['path'])) !== false) // backend supports eacl
{
unset($readonlys[$tabs]['eacl']); // --> switch the tab on again
foreach($content['eacl'] as &$eacl)
{
$eacl['path'] = parse_url($eacl['path'],PHP_URL_PATH);
$readonlys['delete['.$eacl['ino'].'-'.$eacl['owner'].']'] = $eacl['ino'] != $content['ino'] ||
$eacl['path'] != $content['path'] || !$content['is_owner'];
}
array_unshift($content['eacl'],false); // make the keys start with 1, not 0
$content['eacl']['rights'] = $content['eacl']['owner'] = 0;
}
} }
else else
{ {
@ -578,7 +608,7 @@ class filemanager_ui
6 => lang('Read & write access'), 6 => lang('Read & write access'),
4 => lang('Read access only'), 4 => lang('Read access only'),
0 => lang('No access'), 0 => lang('No access'),
); );
} }
$preserve = $content; $preserve = $content;
if (!isset($preserve['old'])) if (!isset($preserve['old']))

View File

@ -1,59 +0,0 @@
<?php
/**************************************************************************\
* eGroupWare - Filemanager *
* http://www.egroupware.org *
* ------------------------------------------------------------------------ *
* This program is free software; you can redistribute it and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; either version 2 of the License, or (at your *
* option) any later version. *
\**************************************************************************/
/* $Id: class.sofilemanager.inc.php 19410 2005-10-14 10:41:15Z ralfbecker $ */
// added for eTemplate
include_once(PHPGW_INCLUDE_ROOT . '/etemplate/inc/class.so_sql.inc.php');
class sofilemanager extends so_sql
{
var $db;
// added for eTemplate
var $maintable='egw_vfs';
function sofilemanager()
{
$this->db = clone($GLOBALS['egw']->db);
$this->so_sql('phpgwapi',$this->maintable);
}
/* Any initializations that need to be done */
function db_init()
{
$this->db->Auto_Free = 0;
}
/* General SQL query */
function db_query($query)
{
return $this->db->query($query);
}
/* Fetch next array for $query_id */
function db_fetch_array($query_id)
{
// $egw->db->Query_ID = $query_id;
$this->db->next_record();
return $this->db->Record;
}
/*
General wrapper for all other db calls
Calls in here are simply returned, so not all will work
*/
function db_call($function, $query_id)
{
// $egw->db->Query_ID = $query_id;
return $this->db->$function();
}
}
?>

File diff suppressed because it is too large Load Diff

View File

@ -1,16 +0,0 @@
<?php
/**************************************************************************\
* eGroupWare - Setup *
* http://www.egroupware.org *
* -------------------------------------------- *
* This program is free software; you can redistribute it and/or modify it *
* under the terms of the GNU General Public License as published by the *
* Free Software Foundation; either version 2 of the License, or (at your *
* option) any later version. *
\**************************************************************************/
/* $Id$ */
$oProc->query("INSERT INTO phpgw_vfs (owner_id, createdby_id, modifiedby_id, created, modified, size, mime_type, deleteable, comment, app, directory, name, link_directory, link_name) VALUES (1,0,0,'1970-01-01',NULL,NULL,'Directory','Y',NULL,NULL,'/','', NULL, NULL)");
$oProc->query("INSERT INTO phpgw_vfs (owner_id, createdby_id, modifiedby_id, created, modified, size, mime_type, deleteable, comment, app, directory, name, link_directory, link_name) VALUES (2,0,0,'1970-01-01',NULL,NULL,'Directory','Y',NULL,NULL,'/','home', NULL, NULL)");
?>

View File

@ -1,4 +1,3 @@
%1 already exists as a file filemanager de Es gibt bereits eine Datei %1
%1 directories and %2 files copied. filemanager de %1 Verzeichnisse und %2 Dateien kopiert. %1 directories and %2 files copied. filemanager de %1 Verzeichnisse und %2 Dateien kopiert.
%1 directories and %2 files deleted. filemanager de %1 Verzeichnisse und %2 Dateien gelöscht. %1 directories and %2 files deleted. filemanager de %1 Verzeichnisse und %2 Dateien gelöscht.
%1 errors copying (%2 diretories and %3 files copied)! filemanager de %1 Fehler beim Kopieren (%2 Verzeichnisse und %3 Dateien kopiert)! %1 errors copying (%2 diretories and %3 files copied)! filemanager de %1 Fehler beim Kopieren (%2 Verzeichnisse und %3 Dateien kopiert)!
@ -7,169 +6,69 @@
%1 files copied. filemanager de %1 Dateien kopiert. %1 files copied. filemanager de %1 Dateien kopiert.
%1 files deleted. filemanager de %1 Dateien gelöscht. %1 files deleted. filemanager de %1 Dateien gelöscht.
%1 files moved. filemanager de %1 Dateien verschoben. %1 files moved. filemanager de %1 Dateien verschoben.
%1 starts with '%2' filemanager de %1 beginnt mit '%2'
%1 the following files into current directory filemanager de Die foldenden Dateien in das aktuelle Verzeichnis %1 %1 the following files into current directory filemanager de Die foldenden Dateien in das aktuelle Verzeichnis %1
%1 urls %2 to clipboard. filemanager de %1 Adressen in die Zwischenablage %2. %1 urls %2 to clipboard. filemanager de %1 Adressen in die Zwischenablage %2.
accessrights filemanager de Zugangsberechtigungen accessrights filemanager de Zugangsberechtigungen
acl added. filemanager de Zugrifsrecht hinzugefügt.
acl deleted. filemanager de Zugrifsrecht gelöscht.
actions filemanager de Befehle actions filemanager de Befehle
all subdirectories filemanager de Alle Unterverzeichnisse
and all it's childeren filemanager de und alle seine Kinder and all it's childeren filemanager de und alle seine Kinder
application filemanager de Anwendung
back to file manager filemanager de Zurück zur Dateiverwaltung
cancel editing %1 without saving filemanager de Bearbeiten abbrechen %1 ohne zu speichern
cannot create directory because it begins or ends in a space filemanager de Kann Verzeichnis nicht anlegen, da der Name mit einem Leerzeichen endet
cannot replace %1 because it is a directory filemanager de Kann %1 nicht ersetzen, da es ein Verzeichnis ist
check all filemanager de Alle auswählen check all filemanager de Alle auswählen
choosing dates where to-date is smaller than the from-date, will result in a search returning all entries but thoose between the two entered dates filemanager de Wenn Sie das bis Datum kleiner als das von Datum wählen, finden Sie alle Einträge, ausser denen, deren Datum im Zeitraum der beiden Daten liegt.
choosing only one date (from/to) will result in a search returning all entries older/younger than the entered date filemanager de Wenn Sie nur ein Datum (von/bis) wählen, finden Sie alle Einträge deren Bezugsdatum älter, bzw. jünger als das jeweilige angegebene Datum ist
clear search filemanager de Suchfelder zurücksetzen clear search filemanager de Suchfelder zurücksetzen
command sucessfully run filemanager de Kommando erfolgreich ausgeführt
comment filemanager de Kommentar
comments cannot contain "%1" filemanager de Kommentare dürfen kein "%1" enthalten
copied filemanager de kopiert copied filemanager de kopiert
copied %1 to %2 filemanager de %1 nach %2 kopiert
copy to filemanager de Kopieren nach
copy to clipboard filemanager de Kopieren in die Zwischenablage copy to clipboard filemanager de Kopieren in die Zwischenablage
copy to: filemanager de Kopieren nach:
could not copy %1 to %2 filemanager de Konnte %1 nicht nach %2 kopieren
could not copy file because no destination directory is given filemanager de Konnte Datei nicht kopieren, da kein Zielverzeichnis angegeben wurde
could not create %1 filemanager de Konnte %1 nicht anlegen
could not create directory %1 filemanager de Konnte Verzeichnis %1 nicht anlegen
could not delete %1 filemanager de Konnte %1 nicht löschen
could not move %1 to %2 filemanager de Konnte %1 nicht nach %2 verschieben
could not move file because no destination directory is given filemanager de Konnte Datei nicht verschieben, da kein Zielverzeichnis angegeben wurde
could not rename %1 to %2 filemanager de Konnte %1 nicht nach %2 umbenennen
could not save %1 filemanager de Konnte %1 nicht speichern
create directory filemanager de Verzeichnis anlegen create directory filemanager de Verzeichnis anlegen
create file filemanager de Neue Datei
create folder filemanager de Neues Verzeichnis
created filemanager de Erstellt created filemanager de Erstellt
created %1 filemanager de %1 erstellt
created %1,%2 filemanager de %1,%2 erstellt
created between filemanager de erstellt zwischen created between filemanager de erstellt zwischen
created by filemanager de Erstellt von current directory filemanager de Aktuelles Verzeichnis
created directory %1 filemanager de Verzeichnis %1 erstellt
cut filemanager de Ausschneiden cut filemanager de Ausschneiden
cut to clipboard filemanager de Ausschneiden in die Zwischenablage cut to clipboard filemanager de Ausschneiden in die Zwischenablage
date filemanager de Datum
default number of upload fields to show filemanager de Vorgabe für Anzahl Felder zum Hochladen
delete filemanager de Löschen
delete this file or directory filemanager de Datei oder Verzeichnis löschen delete this file or directory filemanager de Datei oder Verzeichnis löschen
deleted %1 filemanager de %1 gelöscht
directory filemanager de Verzeichnis directory filemanager de Verzeichnis
directory %1 already exists filemanager de Verzeichnis %1 existiert bereits
directory %1 does not exist filemanager de Verzeichnis %1 existiert nicht
directory names cannot contain "%1" filemanager de Verzeichnisnamen dürfen kein "%1" enthalten
directory not found or no permission to access it! filemanager de Verzeichnis nicht gefunden oder keine Rechte darauf zuzugreifen! directory not found or no permission to access it! filemanager de Verzeichnis nicht gefunden oder keine Rechte darauf zuzugreifen!
display and modification of content filemanager de Anzeigen und Verändern des Inhaltes display and modification of content filemanager de Anzeigen und Verändern des Inhaltes
display attributes filemanager de Anzeigeattribute
display of content filemanager de Anzeigen des Inhaltes display of content filemanager de Anzeigen des Inhaltes
download filemanager de Herunterladen
edit filemanager de Bearbeiten
edit comments filemanager de Kommentare bearbeiten
edit settings filemanager de Einstellungen bearbeiten edit settings filemanager de Einstellungen bearbeiten
error running command filemanager de Fehler beim Ausführen des Kommandos error adding the acl! filemanager de Fehler beim Hinzufügen des Zugriffsrechts!
error deleting the acl entry! filemanager de Fehler beim Löschen des Zugriffsrechts!
error uploading file! filemanager de Fehler beim Hochladen der Datei! error uploading file! filemanager de Fehler beim Hochladen der Datei!
executable filemanager de Ausführbar executable filemanager de Ausführbar
execute filemanager de Ausführen extended access control list filemanager de Erweiterte Zugriffsrechte
failed to create directory filemanager de Verzeichnis konnte nicht erstellt werden extended acl filemanager de Erweiterte ACL
failed to create directory! filemanager de Konnte Verzeichnis nicht anlegen! failed to create directory! filemanager de Konnte Verzeichnis nicht anlegen!
fake base dir did not exist, egroupware created a new one. filemanager de Dateimanager Wurzelverzeichnis existierte nicht, eGroupWare hat es jetzt angelegt.
file filemanager de Datei
file %1 already exists. please edit it or delete it first. filemanager de Datei %1 existiert bereits. Bitte zuerst bearbeiten oder löschen.
file %1 could not be created. filemanager de Datei %1 konnte nicht erstellt werden.
file %1 may be too big. contact your systemadministrator for further info filemanager de Datei %1 ist möglicherweise zu gross. Kontaktieren Sie Ihren Systemadministrator um weitergehende Informationen zu erhalten
file deleted. filemanager de Datei gelöscht. file deleted. filemanager de Datei gelöscht.
file name filemanager de Dateiname
file names cannot contain or / filemanager de Dateinamen dürfen kein \ oder / enthalten
file names cannot contain "%1" filemanager de Dateinamen dürfen kein "%1" enthalten
file names cannot contain \ or / filemanager de Dateinamen dürfen kein \ oder / enthalten
file or directory not found! filemanager de Datei oder Verzeichnis nicht gefunden! file or directory not found! filemanager de Datei oder Verzeichnis nicht gefunden!
file successful uploaded. filemanager de Datei erfolgreich hochgeladen. file successful uploaded. filemanager de Datei erfolgreich hochgeladen.
filemanager common de Dateiverwaltung
filemanager preferences filemanager de Dateiverwaltungs-Einstellungen
files filemanager de Dateien
files in this directory filemanager de Dateien in diesem Verzeichnis
folder filemanager de Verzeichnisse
folder up filemanager de Ein Verzeichnis nach oben
general filemanager de Allgemein general filemanager de Allgemein
go home filemanager de Zum Heimverzeichnis wechseln
go to filemanager de Gehe zu go to filemanager de Gehe zu
go to %1 filemanager de Gehe zu %1
go to your home directory filemanager de Zu Ihrem Heimverzeichnis wechseln go to your home directory filemanager de Zu Ihrem Heimverzeichnis wechseln
go to: filemanager de Gehe zu:
go up filemanager de einen Ordner nach oben
home filemanager de Home
id filemanager de Id id filemanager de Id
location filemanager de Pfad inherited filemanager de Geerbt
locked filemanager de Gesperrt maximum size for uploads filemanager de Maximale Größe beim Hochladen
mime type filemanager de MIME-Typ mime type filemanager de MIME-Typ
modified filemanager de Verändert modified filemanager de Verändert
modified between filemanager de verändert zwischen modified between filemanager de verändert zwischen
modified by filemanager de Verändert von
modify all subdirectories and their content filemanager de Änderungen auf alle Unterverzeichnisse und ihre Inhalte anwenden modify all subdirectories and their content filemanager de Änderungen auf alle Unterverzeichnisse und ihre Inhalte anwenden
move filemanager de Verschieben move filemanager de Verschieben
move to filemanager de Verschieben nach
move to: filemanager de Verschieben nach:
moved %1 to %2 filemanager de %1 nach %2 verschoben
no access filemanager de Kein Zugriff no access filemanager de Kein Zugriff
no files in this directory. filemanager de Keine Dateien in diesem Verzeichnis vorhanden
no preview available filemanager de Keine Vorschau verfügbar no preview available filemanager de Keine Vorschau verfügbar
no version history for this file/directory filemanager de Keine Versionshistorie für dies Datei / Verzeichnis
only owner can rename or delete the content filemanager de Nur der Besitzer kann den Inhalt umbenennen oder löschen only owner can rename or delete the content filemanager de Nur der Besitzer kann den Inhalt umbenennen oder löschen
operation filemanager de Operation
other settings filemanager de Weitere Einstellungen
owner filemanager de Eigentümer
permission denied! filemanager de Zugriff verweigert! permission denied! filemanager de Zugriff verweigert!
permissions filemanager de Zugriffsrechte permissions filemanager de Zugriffsrechte
permissions changed for %1. filemanager de Zugriffsrechte für %1 geändert. permissions changed for %1. filemanager de Zugriffsrechte für %1 geändert.
please select a file to delete. filemanager de Bitte wählen Sie die Datei aus welche Sie löschen möchten
preview filemanager de Vorschau preview filemanager de Vorschau
preview %1 filemanager de Vorschau %1
preview of %1 filemanager de Vorschau von %1
quick jump to filemanager de Sprung zu
read & write access filemanager de Lese- und Schreibzugriff read & write access filemanager de Lese- und Schreibzugriff
read access only filemanager de Nur Lesezugriff read access only filemanager de Nur Lesezugriff
reload filemanager de aktualisieren
rename filemanager de Umbenennen
rename, change permissions or ownership filemanager de Umbennen, Zugriffsrechte oder Besitzer ändern rename, change permissions or ownership filemanager de Umbennen, Zugriffsrechte oder Besitzer ändern
renamed %1 to %2 filemanager de %1 nach %2 umbenannt
renamed %1 to %2. filemanager de %1 nach %2 umbenannt. renamed %1 to %2. filemanager de %1 nach %2 umbenannt.
replaced %1 filemanager de %1 ersetzt rights filemanager de Rechte
root filemanager de root root filemanager de root
save %1 filemanager de %1 speichern
save %1, and go back to file listing filemanager de %1 speichern und zurück zur Übersicht wechseln
save all filemanager de Alles speichern
save changes filemanager de Änderungen speichern
saved %1 filemanager de %1 gespeichert
search for '%1' filemanager de Suche nach '%1'
searchstring filemanager de Suchbegriff searchstring filemanager de Suchbegriff
select action... filemanager de Befehl auswählen... select action... filemanager de Befehl auswählen...
select file to upload in current directory filemanager de Datei zum hochladen in das aktuelle Verzeichnis auswählen select file to upload in current directory filemanager de Datei zum hochladen in das aktuelle Verzeichnis auswählen
show filemanager de Anzeigen
show .. filemanager de Anzeigen ...
show .files filemanager de .Dateien anzeigen
show command line (experimental. dangerous.) filemanager de Kommando anzeigen (EXPERIMENTELL / GEFÄHRLICH)
show help filemanager de Hilfe anzeigen
size filemanager de Größe size filemanager de Größe
sort by: filemanager de Sortieren nach:
start search filemanager de Suche starten start search filemanager de Suche starten
the future filemanager, now for testing purposes only, please send bugreports filemanager de Der neue Dateimanager, jetzt NUR ZUM TESTEN, bitte Fehlermeldungen senden
total files filemanager de Anzahl Dateien
unknown mime-type defaults to text/plain when viewing filemanager de Zum Anzeigen von unbekannte MIME-Typen text/plain verwenden
unused space filemanager de Unbenutzer Speicherplatz
up filemanager de Nach oben up filemanager de Nach oben
update filemanager de Aktualisieren you need to select an owner! filemanager de Sie müssen einen Eigentümer auswählen!
updated comment for %1 filemanager de Kommentar für %1 aktualisiert
upload filemanager de Hochladen
upload fields filemanager de Felder zum Hochladen
upload files filemanager de Dateien hochladen
use new experimental filemanager? filemanager de Neuen experimentellen Dateimanager benutzen?
used space filemanager de Benutzter Speicherplatz
users filemanager de Benutzer
version filemanager de Version
view documents in new window filemanager de Dokumente in neuem Fenster anzeigen
view documents on server (if available) filemanager de Dokument auf Server anzeigen (falls verfügbar)
who filemanager de Wer
you do not have access to %1 filemanager de Sie haben keinen Zugang zu %1
you need to select some files first! filemanager de Sie müssen zuerst die Dateien auswählen! you need to select some files first! filemanager de Sie müssen zuerst die Dateien auswählen!
your home dir did not exist, egroupware created a new one. filemanager de Ihre Benutzerverzeichnis existierte nicht, eGroupWare hat es jetzt angelegt.

View File

@ -1,4 +1,3 @@
%1 already exists as a file filemanager en %1 already exists as a file
%1 directories and %2 files copied. filemanager en %1 directories and %2 files copied. %1 directories and %2 files copied. filemanager en %1 directories and %2 files copied.
%1 directories and %2 files deleted. filemanager en %1 directories and %2 files deleted. %1 directories and %2 files deleted. filemanager en %1 directories and %2 files deleted.
%1 errors copying (%2 diretories and %3 files copied)! filemanager en %1 errors copying (%2 diretories and %3 files copied)! %1 errors copying (%2 diretories and %3 files copied)! filemanager en %1 errors copying (%2 diretories and %3 files copied)!
@ -7,170 +6,69 @@
%1 files copied. filemanager en %1 files copied. %1 files copied. filemanager en %1 files copied.
%1 files deleted. filemanager en %1 files deleted. %1 files deleted. filemanager en %1 files deleted.
%1 files moved. filemanager en %1 files moved. %1 files moved. filemanager en %1 files moved.
%1 starts with '%2' filemanager en %1 starts with '%2'
%1 the following files into current directory filemanager en %1 the following files into current directory %1 the following files into current directory filemanager en %1 the following files into current directory
%1 urls %2 to clipboard. filemanager en %1 URLs %2 to clipboard. %1 urls %2 to clipboard. filemanager en %1 URLs %2 to clipboard.
accessrights filemanager en Accessrights accessrights filemanager en Accessrights
acl added. filemanager en ACL added.
acl deleted. filemanager en ACL deleted.
actions filemanager en Actions actions filemanager en Actions
all subdirectories filemanager en All subdirectories
and all it's childeren filemanager en and all it's childeren and all it's childeren filemanager en and all it's childeren
application filemanager en Application
back to file manager filemanager en Back to file manager
cancel editing %1 without saving filemanager en Cancel editing %1 without saving
cannot create directory because it begins or ends in a space filemanager en Cannot create directory because it begins or ends in a space
cannot replace %1 because it is a directory filemanager en Cannot replace %1 because it is a directory
check all filemanager en Check all check all filemanager en Check all
choosing dates where to-date is smaller than the from-date, will result in a search returning all entries but thoose between the two entered dates filemanager en Choosing dates where to-date is smaller than the from-date, will result in a search returning all entries but thoose between the two entered dates
choosing only one date (from/to) will result in a search returning all entries older/younger than the entered date filemanager en Choosing only one date (from/to) will result in a search returning all entries older/younger than the entered date
clear search filemanager en clear search clear search filemanager en clear search
command sucessfully run filemanager en Command sucessfully run
comment filemanager en Comment
comments cannot contain "%1" filemanager en Comments cannot contain "%1"
copied filemanager en copied copied filemanager en copied
copied %1 to %2 filemanager en Copied %1 to %2
copy to filemanager en Copy To
copy to clipboard filemanager en Copy to clipboard copy to clipboard filemanager en Copy to clipboard
copy to: filemanager en Copy to:
could not copy %1 to %2 filemanager en Could not copy %1 to %2
could not copy file because no destination directory is given filemanager en Could not copy file because no destination directory is given
could not create %1 filemanager en Could not create %1
could not create directory %1 filemanager en Could not create directory %1
could not delete %1 filemanager en Could not delete %1
could not move %1 to %2 filemanager en Could not move %1 to %2
could not move file because no destination directory is given filemanager en Could not move file because no destination directory is given
could not rename %1 to %2 filemanager en Could not rename %1 to %2
could not save %1 filemanager en Could not save %1
create directory filemanager en Create directory create directory filemanager en Create directory
create file filemanager en Create File created filemanager en created
create folder filemanager en Create Folder
created filemanager en Created
created %1 filemanager en Created %1
created %1,%2 filemanager en Created %1,%2
created between filemanager en created between created between filemanager en created between
created by filemanager en Created by current directory filemanager en Current directory
created directory %1 filemanager en Created directory %1
cut filemanager en cut cut filemanager en cut
cut to clipboard filemanager en Cut to clipboard cut to clipboard filemanager en Cut to clipboard
date filemanager en Date
debug filemanager en Debug
debuginfos filemanager en Debuginfos
default number of upload fields to show filemanager en Default number of upload fields to show
delete filemanager en Delete
delete this file or directory filemanager en Delete this file or directory delete this file or directory filemanager en Delete this file or directory
deleted %1 filemanager en Deleted %1
directory filemanager en Directory directory filemanager en Directory
directory %1 already exists filemanager en Directory %1 already exists
directory %1 does not exist filemanager en Directory %1 does not exist
directory names cannot contain "%1" filemanager en Directory names cannot contain "%1"
directory not found or no permission to access it! filemanager en Directory not found or no permission to access it! directory not found or no permission to access it! filemanager en Directory not found or no permission to access it!
display and modification of content filemanager en Display and modification of content display and modification of content filemanager en Display and modification of content
display attributes filemanager en Display attributes
display of content filemanager en Display of content display of content filemanager en Display of content
download filemanager en Download
edit filemanager en Edit
edit comments filemanager en Edit comments
edit settings filemanager en Edit settings edit settings filemanager en Edit settings
error running command filemanager en Error running command error adding the acl! filemanager en Error adding the ACL!
error deleting the acl entry! filemanager en Error deleting the ACL entry!
error uploading file! filemanager en Error uploading file! error uploading file! filemanager en Error uploading file!
executable filemanager en Executable executable filemanager en Executable
execute filemanager en Execute extended access control list filemanager en Extended access control list
failed to create directory filemanager en failed to create directory extended acl filemanager en Extended ACL
failed to create directory! filemanager en Failed to create directory! failed to create directory! filemanager en Failed to create directory!
fake base dir did not exist, egroupware created a new one. filemanager en Fake Base Dir did not exist, eGroupWare created a new one.
file filemanager en File
file %1 already exists. please edit it or delete it first. filemanager en File %1 already exists. Please edit it or delete it first.
file %1 could not be created. filemanager en File %1 could not be created.
file %1 may be too big. contact your systemadministrator for further info filemanager en File %1 may be too big. Contact your Systemadministrator for further info
file deleted. filemanager en File deleted. file deleted. filemanager en File deleted.
file name filemanager en File Name
file names cannot contain "%1" filemanager en File names cannot contain "%1"
file names cannot contain \ or / filemanager en File names cannot contain \ or /
file or directory not found! filemanager en File or directory not found! file or directory not found! filemanager en File or directory not found!
file successful uploaded. filemanager en File successful uploaded. file successful uploaded. filemanager en File successful uploaded.
filemanager common en Filemanager
filemanager preferences filemanager en FileManager preferences
files filemanager en Files
files in this directory filemanager en Files in this directory
folder filemanager en Folder
folder up filemanager en Folder Up
general filemanager en General general filemanager en General
go home filemanager en go home go to filemanager en Go to
go to filemanager en Go To
go to %1 filemanager en Go to %1
go to your home directory filemanager en Go to your home directory go to your home directory filemanager en Go to your home directory
go to: filemanager en Go to:
go up filemanager en go up
home filemanager en Home
id filemanager en Id id filemanager en Id
location filemanager en Location inherited filemanager en Inherited
locked filemanager en Locked maximum size for uploads filemanager en Maximum size for uploads
mime type filemanager en MIME Type mime type filemanager en mime type
modified filemanager en Modified modified filemanager en modified
modified between filemanager en modified between modified between filemanager en modified between
modified by filemanager en Modified by
modify all subdirectories and their content filemanager en Modify all Subdirectories and their content modify all subdirectories and their content filemanager en Modify all Subdirectories and their content
move filemanager en Move move filemanager en Move
move to filemanager en Move To
move to: filemanager en Move to:
moved %1 to %2 filemanager en Moved %1 to %2
no access filemanager en No access no access filemanager en No access
no files in this directory. filemanager en No files in this directory.
no preview available filemanager en No preview available no preview available filemanager en No preview available
no version history for this file/directory filemanager en No version history for this file/directory
only owner can rename or delete the content filemanager en Only owner can rename or delete the content only owner can rename or delete the content filemanager en Only owner can rename or delete the content
operation filemanager en Operation
other settings filemanager en Other settings
owner filemanager en Owner
permission denied! filemanager en Permission denied! permission denied! filemanager en Permission denied!
permissions filemanager en Permissions permissions filemanager en Permissions
permissions changed for %1. filemanager en Permissions changed for %1. permissions changed for %1. filemanager en Permissions changed for %1.
please select a file to delete. filemanager en Please select a file to delete.
preview filemanager en Preview preview filemanager en Preview
preview %1 filemanager en Preview %1
preview of %1 filemanager en Preview of %1
quick jump to filemanager en Quick jump to
read & write access filemanager en Read & write access read & write access filemanager en Read & write access
read access only filemanager en Read access only read access only filemanager en Read access only
reload filemanager en reload
rename filemanager en Rename
rename, change permissions or ownership filemanager en Rename, change permissions or ownership rename, change permissions or ownership filemanager en Rename, change permissions or ownership
renamed %1 to %2 filemanager en Renamed %1 to %2
renamed %1 to %2. filemanager en Renamed %1 to %2. renamed %1 to %2. filemanager en Renamed %1 to %2.
replaced %1 filemanager en Replaced %1 rights filemanager en Rights
root filemanager en root root filemanager en root
save %1 filemanager en Save %1
save %1, and go back to file listing filemanager en Save %1, and go back to file listing
save all filemanager en Save all
save changes filemanager en Save changes
saved %1 filemanager en Saved %1
search for '%1' filemanager en Search for '%1'
searchstring filemanager en searchstring searchstring filemanager en searchstring
select action... filemanager en Select action... select action... filemanager en Select action...
select file to upload in current directory filemanager en Select file to upload in current directory select file to upload in current directory filemanager en Select file to upload in current directory
show filemanager en Show
show .. filemanager en Show ..
show .files filemanager en Show .files
show command line (experimental. dangerous.) filemanager en Show command line (EXPERIMENTAL. DANGEROUS.)
show help filemanager en Show help
size filemanager en Size size filemanager en Size
sort by: filemanager en Sort by:
start search filemanager en start search start search filemanager en start search
the future filemanager, now for testing purposes only, please send bugreports filemanager en The future filemanager, now for TESTING PURPOSES ONLY, please send bugreports
total files filemanager en Total Files
unknown mime-type defaults to text/plain when viewing filemanager en Unknown MIME-type defaults to text/plain when viewing
unused space filemanager en Unused space
up filemanager en Up up filemanager en Up
update filemanager en Update you need to select an owner! filemanager en You need to select an owner!
updated comment for %1 filemanager en Updated comment for %1
upload filemanager en Upload
upload fields filemanager en upload fields
upload files filemanager en Upload files
use new experimental filemanager? filemanager en Use new experimental Filemanager?
used space filemanager en Used Space
users filemanager en Users
version filemanager en Version
view documents in new window filemanager en View documents in new window
view documents on server (if available) filemanager en View documents on server (if available)
who filemanager en Who
you do not have access to %1 filemanager en You do not have access to %1
you need to select some files first! filemanager en You need to select some files first! you need to select some files first! filemanager en You need to select some files first!
your home dir did not exist, egroupware created a new one. filemanager en Your Home Dir did not exist, eGroupWare created a new one.

View File

@ -1,22 +1,26 @@
<?php <?php
/** /**
* eGroupWare - eTemplates for Application filemanager * eGroupWare - eTemplates for Application filemanager
* http://www.egroupware.org * http://www.egroupware.org
* generated by soetemplate::dump4setup() 2008-03-03 23:31 * generated by soetemplate::dump4setup() 2008-04-10 10:08
* *
* @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
* @subpackage setup * @subpackage setup
* @version $Id$ * @version $Id$
*/ */
$templ_version=1; $templ_version=1;
$templ_data[] = array('name' => 'filemanager.file','template' => '','lang' => '','group' => '0','version' => '1.5.001','data' => 'a:1:{i:0;a:4:{s:4:"type";s:4:"grid";s:4:"data";a:4:{i:0;a:1:{s:2:"h1";s:6:",!@msg";}i:1;a:1:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"span";s:10:",redItalic";s:4:"name";s:3:"msg";}}i:2;a:1:{s:1:"A";a:4:{s:4:"type";s:3:"tab";s:5:"label";s:27:"General|Permissions|Preview";s:4:"name";s:21:"general|perms|preview";s:4:"span";s:3:"all";}}i:3;a:1:{s:1:"A";a:4:{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:4:"Save";s:4:"name";s:4:"save";}i:2;a:4:{s:4:"type";s:10:"buttononly";s:5:"label";s:6:"Cancel";s:4:"name";s:14:"button[cancel]";s:7:"onclick";s:15:"window.close();";}}}}s:4:"rows";i:3;s:4:"cols";i:1;}}','size' => '','style' => '','modified' => '1204554434',); $templ_data[] = array('name' => 'filemanager.file','template' => '','lang' => '','group' => '0','version' => '1.5.001','data' => 'a:1:{i:0;a:4:{s:4:"type";s:4:"grid";s:4:"data";a:4:{i:0;a:1:{s:2:"h1";s:6:",!@msg";}i:1;a:1:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"span";s:10:",redItalic";s:4:"name";s:3:"msg";}}i:2;a:1:{s:1:"A";a:4:{s:4:"type";s:3:"tab";s:5:"label";s:27:"General|Permissions|Preview";s:4:"name";s:21:"general|perms|preview";s:4:"span";s:3:"all";}}i:3;a:1:{s:1:"A";a:4:{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:4:"Save";s:4:"name";s:4:"save";}i:2;a:4:{s:4:"type";s:10:"buttononly";s:5:"label";s:6:"Cancel";s:4:"name";s:14:"button[cancel]";s:7:"onclick";s:15:"window.close();";}}}}s:4:"rows";i:3;s:4:"cols";i:1;}}','size' => '','style' => '','modified' => '1204554434',);
$templ_data[] = array('name' => 'filemanager.file','template' => '','lang' => '','group' => '0','version' => '1.5.002','data' => 'a:1:{i:0;a:4:{s:4:"type";s:4:"grid";s:4:"data";a:4:{i:0;a:1:{s:2:"h1";s:6:",!@msg";}i:1;a:1:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"span";s:13:"all,redItalic";s:4:"name";s:3:"msg";}}i:2;a:1:{s:1:"A";a:4:{s:4:"type";s:3:"tab";s:5:"label";s:40:"General|Permissions|Extended ACL|Preview";s:4:"name";s:26:"general|perms|eacl|preview";s:4:"span";s:3:"all";}}i:3;a:1:{s:1:"A";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"3";i:1;a:3:{s:4:"type";s:6:"button";s:5:"label";s:4:"Save";s:4:"name";s:12:"button[save]";}i:2;a:3:{s:4:"type";s:6:"button";s:4:"name";s:13:"button[apply]";s:5:"label";s:5:"Apply";}i:3;a:4:{s:4:"type";s:10:"buttononly";s:5:"label";s:6:"Cancel";s:4:"name";s:14:"button[cancel]";s:7:"onclick";s:15:"window.close();";}}}}s:4:"rows";i:3;s:4:"cols";i:1;}}','size' => '','style' => '.eaclAccount select,.eaclRights select { width: 160px; }','modified' => '1207725030',);
$templ_data[] = array('name' => 'filemanager.file.eacl','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:4:",top";s:2:"c2";s:7:",bottom";s:2:"h2";s:11:",!@is_owner";}i:1;a:3:{s:1:"A";a:5:{s:4:"type";s:8:"groupbox";s:4:"size";s:1:"1";s:4:"span";s:3:"all";s:5:"label";s:28:"Extended access control list";i:1;a:7:{s:4:"type";s:4:"grid";s:4:"size";s:17:"100%,200,,,,,auto";s:4:"data";a:3:{i:0;a:7:{s:1:"A";s:2:"80";s:1:"B";s:2:"80";s:1:"D";s:2:"16";s:2:"h2";s:4:",!@1";s:1:"C";s:3:"20%";s:2:"c1";s:2:"th";s:2:"c2";s:3:"row";}i:1;a:4:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:5:"Owner";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:5:"label";s:6:"Rights";}s:1:"C";a:2:{s:4:"type";s:5:"label";s:5:"label";s:9:"Inherited";}s:1:"D";a:1:{s:4:"type";s:5:"label";}}i:2;a:4:{s:1:"A";a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:13:"${row}[owner]";s:8:"readonly";s:1:"1";}s:1:"B";a:3:{s:4:"type";s:6:"select";s:4:"name";s:14:"${row}[rights]";s:8:"readonly";s:1:"1";}s:1:"C";a:2:{s:4:"type";s:5:"label";s:4:"name";s:12:"${row}[path]";}s:1:"D";a:5:{s:4:"type";s:6:"button";s:4:"size";s:6:"delete";s:5:"label";s:6:"Delete";s:4:"name";s:39:"delete[$row_cont[ino]-$row_cont[owner]]";s:7:"onclick";s:43:"return confirm(\'Delete this extended ACL\');";}}}s:4:"name";s:4:"eacl";s:4:"rows";i:2;s:4:"cols";i:4;s:7:"options";a:3:{i:0;s:4:"100%";i:1;s:3:"200";i:6;s:4:"auto";}}}s:1:"B";a:1:{s:4:"type";s:5:"label";}s:1:"C";a:1:{s:4:"type";s:5:"label";}}i:2;a:3:{s:1:"A";a:5:{s:4:"type";s:14:"select-account";s:4:"size";s:15:"select one,both";s:4:"name";s:11:"eacl[owner]";s:4:"span";s:12:",eaclAccount";s:5:"label";s:5:"Owner";}s:1:"B";a:4:{s:4:"type";s:6:"select";s:4:"name";s:12:"eacl[rights]";s:4:"span";s:11:",eaclRights";s:5:"label";s:6:"Rights";}s:1:"C";a:3:{s:4:"type";s:6:"button";s:5:"label";s:3:"Add";s:4:"name";s:12:"button[eacl]";}}}s:4:"rows";i:2;s:4:"cols";i:3;s:4:"size";s:12:"450,300,,,10";s:7:"options";a:3:{i:0;s:3:"450";i:1;s:3:"300";i:4;s:2:"10";}}}','size' => '450,300,,,10','style' => '','modified' => '1207724932',);
$templ_data[] = array('name' => 'filemanager.file.general','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:9:{i:0;a:2:{s:1:"A";s:2:"80";s:2:"h1";s:2:"60";}i:1;a:2:{s:1:"A";a:4:{s:4:"type";s:5:"image";s:4:"name";s:4:"icon";s:4:"span";s:9:",mimeHuge";s:5:"align";s:6:"center";}s:1:"B";a:4:{s:4:"type";s:4:"text";s:4:"name";s:4:"name";s:6:"needed";s:1:"1";s:4:"span";s:9:",fileName";}}i:2;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"hrule";s:4:"span";s:3:"all";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:3;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:4:"Type";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:4:"name";s:4:"mime";}}i:4;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:9:"Directory";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:4:"name";s:3:"dir";}}i:5;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:4:"Size";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:4:"name";s:5:"hsize";s:5:"label";s:17:"%s ($cont[size]b)";}}i:6;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"Created";}s:1:"B";a:3:{s:4:"type";s:9:"date-time";s:4:"name";s:5:"ctime";s:8:"readonly";s:1:"1";}}i:7;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:8:"Modified";}s:1:"B";a:3:{s:4:"type";s:9:"date-time";s:4:"name";s:5:"mtime";s:8:"readonly";s:1:"1";}}i:8;a:2:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:8;s:4:"cols";i:2;s:4:"size";s:12:"450,300,,,10";s:7:"options";a:3:{i:0;s:3:"450";i:1;s:3:"300";i:4;s:2:"10";}}}','size' => '450,300,,,10','style' => '','modified' => '1204554817',); $templ_data[] = array('name' => 'filemanager.file.general','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:9:{i:0;a:2:{s:1:"A";s:2:"80";s:2:"h1";s:2:"60";}i:1;a:2:{s:1:"A";a:4:{s:4:"type";s:5:"image";s:4:"name";s:4:"icon";s:4:"span";s:9:",mimeHuge";s:5:"align";s:6:"center";}s:1:"B";a:4:{s:4:"type";s:4:"text";s:4:"name";s:4:"name";s:6:"needed";s:1:"1";s:4:"span";s:9:",fileName";}}i:2;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"hrule";s:4:"span";s:3:"all";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:3;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:4:"Type";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:4:"name";s:4:"mime";}}i:4;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:9:"Directory";}s:1:"B";a:2:{s:4:"type";s:5:"label";s:4:"name";s:3:"dir";}}i:5;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:4:"Size";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:4:"name";s:5:"hsize";s:5:"label";s:17:"%s ($cont[size]b)";}}i:6;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"Created";}s:1:"B";a:3:{s:4:"type";s:9:"date-time";s:4:"name";s:5:"ctime";s:8:"readonly";s:1:"1";}}i:7;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:8:"Modified";}s:1:"B";a:3:{s:4:"type";s:9:"date-time";s:4:"name";s:5:"mtime";s:8:"readonly";s:1:"1";}}i:8;a:2:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:8;s:4:"cols";i:2;s:4:"size";s:12:"450,300,,,10";s:7:"options";a:3:{i:0;s:3:"450";i:1;s:3:"300";i:4;s:2:"10";}}}','size' => '450,300,,,10','style' => '','modified' => '1204554817',);
$templ_data[] = array('name' => 'filemanager.file.perms','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:4:{i:0;a:1:{s:2:"h3";s:9:",!@is_dir";}i:1;a:1:{s:1:"A";a:4:{s:4:"type";s:8:"groupbox";s:4:"size";s:1:"1";s:5:"label";s:12:"Accessrights";i:1;a:5:{s:4:"type";s:4:"grid";s:4:"data";a:6:{i:0;a:3:{s:1:"A";s:2:"80";s:2:"h5";s:9:",!@is_dir";s:2:"h4";s:8:",@is_dir";}i:1;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:5:"Owner";}s:1:"B";a:2:{s:4:"type";s:6:"select";s:4:"name";s:12:"perms[owner]";}}i:2;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:5:"Group";}s:1:"B";a:2:{s:4:"type";s:6:"select";s:4:"name";s:12:"perms[group]";}}i:3;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:5:"Other";}s:1:"B";a:2:{s:4:"type";s:6:"select";s:4:"name";s:12:"perms[other]";}}i:4;a:2:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:3:{s:4:"type";s:8:"checkbox";s:5:"label";s:10:"Executable";s:4:"name";s:17:"perms[executable]";}}i:5;a:2:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:3:{s:4:"type";s:8:"checkbox";s:5:"label";s:43:"Only owner can rename or delete the content";s:4:"name";s:13:"perms[sticky]";}}}s:4:"rows";i:5;s:4:"cols";i:2;s:7:"options";a:0:{}}}}i:2;a:1:{s:1:"A";a:4:{s:4:"type";s:8:"groupbox";s:4:"size";s:1:"1";s:5:"label";s:5:"Owner";i:1;a:5:{s:4:"type";s:4:"grid";s:7:"options";a:0:{}s:4:"data";a:3:{i:0;a:1:{s:1:"A";s:2:"80";}i:1;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:4:"User";}s:1:"B";a:4:{s:4:"type";s:14:"select-account";s:4:"size";s:13:"root,accounts";s:4:"name";s:3:"uid";s:5:"label";s:12:"@ro_uid_root";}}i:2;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:5:"Group";}s:1:"B";a:4:{s:4:"type";s:14:"select-account";s:4:"size";s:11:"root,groups";s:4:"name";s:3:"gid";s:5:"label";s:12:"@ro_gid_root";}}}s:4:"rows";i:2;s:4:"cols";i:2;}}}i:3;a:1:{s:1:"A";a:3:{s:4:"type";s:8:"checkbox";s:5:"label";s:43:"Modify all Subdirectories and their content";s:4:"name";s:11:"modify_subs";}}}s:4:"rows";i:3;s:4:"cols";i:1;s:4:"size";s:12:"450,300,,,10";s:7:"options";a:3:{i:0;s:3:"450";i:1;s:3:"300";i:4;s:2:"10";}}}','size' => '450,300,,,10','style' => '','modified' => '1204567746',); $templ_data[] = array('name' => 'filemanager.file.perms','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:4:{i:0;a:1:{s:2:"h3";s:9:",!@is_dir";}i:1;a:1:{s:1:"A";a:4:{s:4:"type";s:8:"groupbox";s:4:"size";s:1:"1";s:5:"label";s:12:"Accessrights";i:1;a:5:{s:4:"type";s:4:"grid";s:4:"data";a:6:{i:0;a:3:{s:1:"A";s:2:"80";s:2:"h5";s:2:",1";s:2:"h4";s:8:",@is_dir";}i:1;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:5:"Owner";}s:1:"B";a:2:{s:4:"type";s:6:"select";s:4:"name";s:12:"perms[owner]";}}i:2;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:5:"Group";}s:1:"B";a:2:{s:4:"type";s:6:"select";s:4:"name";s:12:"perms[group]";}}i:3;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:5:"Other";}s:1:"B";a:2:{s:4:"type";s:6:"select";s:4:"name";s:12:"perms[other]";}}i:4;a:2:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:3:{s:4:"type";s:8:"checkbox";s:5:"label";s:10:"Executable";s:4:"name";s:17:"perms[executable]";}}i:5;a:2:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:3:{s:4:"type";s:8:"checkbox";s:5:"label";s:43:"Only owner can rename or delete the content";s:4:"name";s:13:"perms[sticky]";}}}s:4:"rows";i:5;s:4:"cols";i:2;s:7:"options";a:0:{}}}}i:2;a:1:{s:1:"A";a:4:{s:4:"type";s:8:"groupbox";s:4:"size";s:1:"1";s:5:"label";s:5:"Owner";i:1;a:5:{s:4:"type";s:4:"grid";s:7:"options";a:0:{}s:4:"data";a:3:{i:0;a:1:{s:1:"A";s:2:"80";}i:1;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:4:"User";}s:1:"B";a:4:{s:4:"type";s:14:"select-account";s:4:"size";s:13:"root,accounts";s:4:"name";s:3:"uid";s:5:"label";s:12:"@ro_uid_root";}}i:2;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:5:"Group";}s:1:"B";a:4:{s:4:"type";s:14:"select-account";s:4:"size";s:11:"root,groups";s:4:"name";s:3:"gid";s:5:"label";s:12:"@ro_gid_root";}}}s:4:"rows";i:2;s:4:"cols";i:2;}}}i:3;a:1:{s:1:"A";a:3:{s:4:"type";s:8:"checkbox";s:5:"label";s:43:"Modify all Subdirectories and their content";s:4:"name";s:11:"modify_subs";}}}s:4:"rows";i:3;s:4:"cols";i:1;s:4:"size";s:12:"450,300,,,10";s:7:"options";a:3:{i:0;s:3:"450";i:1;s:3:"300";i:4;s:2:"10";}}}','size' => '450,300,,,10','style' => '','modified' => '1204567746',);
$templ_data[] = array('name' => 'filemanager.file.preview','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:4:{i:0;a:5:{s:2:"c1";s:4:",top";s:2:"h1";s:16:",!@mime=/^image/";s:2:"h3";s:22:",@mime=/^(image|text)/";s:2:"h2";s:18:"280,!@text_content";s:2:"c2";s:4:",top";}i:1;a:1:{s:1:"A";a:3:{s:4:"type";s:5:"image";s:4:"name";s:4:"link";s:4:"span";s:13:",previewImage";}}i:2;a:1:{s:1:"A";a:4:{s:4:"type";s:8:"textarea";s:4:"name";s:12:"text_content";s:4:"span";s:12:",previewText";s:8:"readonly";s:1:"1";}}i:3;a:1:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:20:"No preview available";}}}s:4:"rows";i:3;s:4:"cols";i:1;s:4:"size";s:18:"450,300,,,10,,auto";s:7:"options";a:4:{i:0;s:3:"450";i:1;s:3:"300";i:6;s:4:"auto";i:4;s:2:"10";}}}','size' => '450,300,,,10,,auto','style' => '','modified' => '1204567479',); $templ_data[] = array('name' => 'filemanager.file.preview','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:4:{i:0;a:5:{s:2:"c1";s:4:",top";s:2:"h1";s:16:",!@mime=/^image/";s:2:"h3";s:22:",@mime=/^(image|text)/";s:2:"h2";s:18:"280,!@text_content";s:2:"c2";s:4:",top";}i:1;a:1:{s:1:"A";a:3:{s:4:"type";s:5:"image";s:4:"name";s:4:"link";s:4:"span";s:13:",previewImage";}}i:2;a:1:{s:1:"A";a:4:{s:4:"type";s:8:"textarea";s:4:"name";s:12:"text_content";s:4:"span";s:12:",previewText";s:8:"readonly";s:1:"1";}}i:3;a:1:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:20:"No preview available";}}}s:4:"rows";i:3;s:4:"cols";i:1;s:4:"size";s:18:"450,300,,,10,,auto";s:7:"options";a:4:{i:0;s:3:"450";i:1;s:3:"300";i:6;s:4:"auto";i:4;s:2:"10";}}}','size' => '450,300,,,10,,auto','style' => '','modified' => '1204567479',);

View File

@ -1,43 +1,36 @@
<?php <?php
/**************************************************************************\ /**
* eGroupWare - Filemanager * * eGroupWare - Filemanager - setup
* http://www.egroupware.org * *
* -------------------------------------------- * * @link http://www.egroupware.org
* This program is free software; you can redistribute it and/or modify it * * @package filemanager
* under the terms of the GNU General Public License as published by the * * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* Free Software Foundation; either version 2 of the License, or (at your * * @version $Id$
* option) any later version. * */
\**************************************************************************/
/* $Id$ */ $setup_info['filemanager']['name'] = 'filemanager';
$setup_info['filemanager']['title'] = 'Filemanager';
$setup_info['filemanager']['version'] = '1.5';
$setup_info['filemanager']['app_order'] = 6;
$setup_info['filemanager']['enable'] = 1;
$setup_info['filemanager']['name'] = 'filemanager'; /* The hooks this app includes, needed for hooks registration */
$setup_info['filemanager']['title'] = 'Filemanager';
$setup_info['filemanager']['version'] = '1.4';
$setup_info['filemanager']['app_order'] = 6;
$setup_info['filemanager']['enable'] = 1;
/* The hooks this app includes, needed for hooks registration */
$setup_info['filemanager']['hooks']['preferences'] = 'filemanager.filemanager_hooks.all_hooks';
$setup_info['filemanager']['hooks']['deleteaccount'] = 'filemanager.filemanager_hooks.all_hooks';
$setup_info['filemanager']['hooks']['settings'] = 'filemanager.filemanager_hooks.settings';
$setup_info['filemanager']['hooks']['sidebox_menu'] = 'filemanager.filemanager_hooks.all_hooks';
/* Dependencies for this app to work */
/* Dependencies for this app to work */ $setup_info['filemanager']['depends'][] = array(
$setup_info['filemanager']['depends'][] = array( 'appname' => 'phpgwapi',
'appname' => 'phpgwapi', 'versions' => array('1.3','1.4','1.5')
'versions' => array('1.3','1.4','1.5') );
);
// installation checks for filemanager // installation checks for filemanager
$setup_info['filemanager']['check_install'] = array( $setup_info['filemanager']['check_install'] = array(
'' => array( '' => array(
'func' => 'pear_check', 'func' => 'pear_check',
'from' => 'Filemanager', 'from' => 'Filemanager',
), ),
'HTTP_WebDAV_Server' => array( 'HTTP_WebDAV_Server' => array(
'func' => 'pear_check', 'func' => 'pear_check',
'from' => 'Filemanager', 'from' => 'Filemanager',
), ),
); );

View File

@ -1,33 +0,0 @@
<!-- BEGIN file_edit_header -->
<!-- END file_edit_header -->
<!-- BEGIN column -->
<!-- END column -->
<!-- BEGIN row -->
{preview_content}<br/>
<form method="post" action="{form_action}">
<input type="hidden" name="edit" value="1" />
<input type="hidden" name="edit_file" value="{edit_file}" />
{filemans_hidden}
<textarea name="edit_file_content" rows="10" cols="50">{file_content}</textarea>
<!-- </td>
</tr>
<tr>
<td align=center>-->
<!--<input type="submit" name="edit_preview" value="{lang_preview}" />-->
<!--<input type="submit" name="edit_save" value="{lang_save}" />-->
<table>
<tr>
{buttonSave} {buttonPreview} {buttonDone} {buttonCancel}
</tr>
</table>
</form>
<!-- END row -->
<!-- BEGIN file_edit_footer -->
<!-- END file_edit_footer -->

View File

@ -1,6 +0,0 @@
<!-- BEGIN error_page -->
{errors}
<!-- END error_page -->
<!-- BEGIN ind_error -->
{error}
<!-- END ind_error -->

View File

@ -0,0 +1,228 @@
<?xml version="1.0"?>
<!-- $Id$ -->
<overlay>
<template id="filemanager.file.general" template="" lang="" group="0" version="1.5.001">
<grid width="450" height="300" spacing="10">
<columns>
<column width="80"/>
<column/>
</columns>
<rows>
<row height="60">
<image src="icon" class="mimeHuge" align="center"/>
<textbox id="name" needed="1" class="fileName"/>
</row>
<row>
<hrule span="all"/>
</row>
<row>
<description value="Type"/>
<description id="mime"/>
</row>
<row>
<description value="Directory"/>
<description id="dir"/>
</row>
<row>
<description value="Size"/>
<description id="hsize" value="%s ($cont[size]b)"/>
</row>
<row>
<description value="Created"/>
<date-time id="ctime" readonly="true"/>
</row>
<row>
<description value="Modified"/>
<date-time id="mtime" readonly="true"/>
</row>
<row>
<description/>
<description/>
</row>
</rows>
</grid>
</template>
<template id="filemanager.file.perms" template="" lang="" group="0" version="1.5.001">
<grid width="450" height="300" spacing="10">
<columns>
<column/>
</columns>
<rows>
<row>
<groupbox>
<caption label="Accessrights"/>
<grid>
<columns>
<column width="80"/>
<column/>
</columns>
<rows>
<row>
<description value="Owner"/>
<menulist>
<menupopup id="perms[owner]"/>
</menulist>
</row>
<row>
<description value="Group"/>
<menulist>
<menupopup id="perms[group]"/>
</menulist>
</row>
<row>
<description value="Other"/>
<menulist>
<menupopup id="perms[other]"/>
</menulist>
</row>
<row disabled="@is_dir">
<description/>
<checkbox label="Executable" id="perms[executable]"/>
</row>
<row disabled="1">
<description/>
<checkbox label="Only owner can rename or delete the content" id="perms[sticky]"/>
</row>
</rows>
</grid>
</groupbox>
</row>
<row>
<groupbox>
<caption label="Owner"/>
<grid>
<columns>
<column width="80"/>
<column/>
</columns>
<rows>
<row>
<description value="User"/>
<menulist>
<menupopup type="select-account" options="root,accounts" id="uid" label="@ro_uid_root"/>
</menulist>
</row>
<row>
<description value="Group"/>
<menulist>
<menupopup type="select-account" options="root,groups" id="gid" label="@ro_gid_root"/>
</menulist>
</row>
</rows>
</grid>
</groupbox>
</row>
<row disabled="!@is_dir">
<checkbox label="Modify all Subdirectories and their content" id="modify_subs"/>
</row>
</rows>
</grid>
</template>
<template id="filemanager.file.eacl" template="" lang="" group="0" version="1.5.001">
<grid width="450" height="300" spacing="10">
<columns>
<column/>
<column/>
<column/>
</columns>
<rows>
<row valign="top">
<groupbox span="all">
<caption label="Extended access control list"/>
<grid width="100%" height="200" overflow="auto" id="eacl">
<columns>
<column width="80"/>
<column width="80"/>
<column width="20%"/>
<column width="16"/>
</columns>
<rows>
<row class="th">
<description value="Owner"/>
<description value="Rights"/>
<description value="Inherited"/>
<description/>
</row>
<row class="row" disabled="!@1">
<menulist>
<menupopup type="select-account" id="${row}[owner]" readonly="true"/>
</menulist>
<menulist>
<menupopup id="${row}[rights]" readonly="true"/>
</menulist>
<description id="${row}[path]"/>
<button image="delete" label="Delete" id="delete[$row_cont[ino]-$row_cont[owner]]" onclick="return confirm('Delete this extended ACL');"/>
</row>
</rows>
</grid>
</groupbox>
</row>
<row valign="bottom" disabled="!@is_owner">
<menulist class="eaclAccount">
<menupopup type="select-account" options="select one,both" id="eacl[owner]" label="Owner"/>
</menulist>
<menulist class="eaclRights">
<menupopup id="eacl[rights]" label="Rights"/>
</menulist>
<button label="Add" id="button[eacl]"/>
</row>
</rows>
</grid>
</template>
<template id="filemanager.file.preview" template="" lang="" group="0" version="1.5.001">
<grid width="450" height="300" spacing="10" overflow="auto">
<columns>
<column/>
</columns>
<rows>
<row valign="top" disabled="!@mime=/^image/">
<image src="link" class="previewImage"/>
</row>
<row valign="top" height="280" disabled="!@text_content">
<textbox multiline="true" id="text_content" class="previewText" readonly="true"/>
</row>
<row disabled="@mime=/^(image|text)/">
<description value="No preview available"/>
</row>
</rows>
</grid>
</template>
<template id="filemanager.file" template="" lang="" group="0" version="1.5.002">
<grid>
<columns>
<column/>
</columns>
<rows>
<row disabled="!@msg">
<description span="all" class="redItalic" id="msg"/>
</row>
<row>
<tabbox span="all">
<tabs>
<tab label="General" statustext=""/>
<tab label="Permissions" statustext=""/>
<tab label="Extended ACL" statustext=""/>
<tab label="Preview" statustext=""/>
</tabs>
<tabpanels>
<template id="filemanager.file.general"/>
<template id="filemanager.file.perms"/>
<template id="filemanager.file.eacl"/>
<template id="filemanager.file.preview"/>
</tabpanels>
</tabbox>
</row>
<row>
<hbox>
<button label="Save" id="button[save]"/>
<button id="button[apply]" label="Apply"/>
<buttononly label="Cancel" id="button[cancel]" onclick="window.close();"/>
</hbox>
</row>
</rows>
</grid>
<styles>
.eaclAccount select,.eaclRights select { width: 160px; }
</styles>
</template>
</overlay>

View File

@ -1,32 +0,0 @@
<!-- BEGIN filemanager_header -->
<form name="formfm" method="post" action="{form_action}">
{toolbar0}
<div id="fmMenu">
{toolbar1}
</div>
<div id="fmFileWindow">
{messages} <table cellspacing="0" cellpadding="2">
<tbody>
<!-- END filemanager_header -->
<!-- BEGIN column -->
<td valign="top" style="padding-left:2px;padding-right:2px;">{col_data}&nbsp;</td>
<!-- END column -->
<!-- BEGIN row -->
<tr bgcolor="{row_tr_color}">
<td style="padding-left:2px;padding-right:2px;">{actions}</td>
{columns}
</tr>
<!-- END row -->
<!-- BEGIN filemanager_footer -->
{lang_no_files}
</tbody></table>
</div>
<div id="fmStatusBar"><b>{lang_files_in_this_dir}:</b> {files_in_this_dir} <b>{lang_used_space}: </b> {used_space}</div>
</form>
<!-- END filemanager_footer -->

View File

@ -1,29 +0,0 @@
<!-- BEGIN history -->
<table width="100%" border="1" cols="4">
<tr>
<td align="center" colspan="4">
<table width="100%" border="1">
<tr{tr_extras}>
<td align="center">
Path: {path}
</td>
<td align="center">
Filename: {filename}
</td>
</tr>
</table>
</hr>
</td>
</tr>
{col_row}
</table>
<!-- END history -->
<!-- BEGIN column_rows -->
<tr{tr_extras}>
{col_headers}
</tr>
<!-- END column_rows -->
<!-- BEGIN column_headers -->
<td{td_extras}>{column_header}</td>
<!-- END column_headers -->

Binary file not shown.

Before

Width:  |  Height:  |  Size: 996 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 961 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 883 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 590 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 951 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 663 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 998 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 769 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 881 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 991 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 667 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 772 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 772 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 606 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 719 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 B

View File

@ -1,52 +0,0 @@
<!-- BEGIN index -->
<table width="100%" border="1" cols="{colspan}">
<!--<tr>
<td align="center" colspan="{colspan}">{error}
</td>
</tr>-->
<tr>
<td align="center" colspan="{colspan}">{error}
<form action="{form_action}" method="post">
<table width="100%" border="1">
<tr{tr_extras}>
<td align="center">
{img_up}
{help_up}
</td>
<td align="center">
{img_home}
{dir}
{help_home}
</td>
</tr>
</table>
</hr>
</td>
</tr>{col_row}
<tr>
<td align="center" colspan="{colspan}">
</hr>{buttons}
</form>
</td>
</tr>
<tr>
<td align="center" colspan="{colspan}">{info}
</td>
</tr>
<tr>
<td align="center" colspan="{colspan}">{uploads}
</td>
</tr>
</table>
<!-- END index -->
<!-- BEGIN column_rows -->
<tr{tr_extras}>{col_headers}
</tr>
<!-- END column_rows -->
<!-- BEGIN column_headers -->
<td{td_extras}><font size="-2">{column_header}</font></td>
<!-- END column_headers -->
<!-- BEGIN column_headers_normal -->
<td{td_extras}>{column_header}</td>
<!-- END column_headers_normal -->

View File

@ -1,7 +0,0 @@
<p><b>{title}:</b><hr><p>
<form action="{action_url}" method="POST">
<table border="0" align="center">
{row}
</table>
<center><input type="submit" name="submit" value="{submit_lang}"></center>
</form>

View File

@ -1,4 +0,0 @@
<tr bgcolor="{bg_color}">
<td colspan="2">{text}</td>
</tr>

View File

@ -1,5 +0,0 @@
<tr bgcolor="{bg_color}">
<td align="right">{field}</td>
<td align="left">{data}</td>
</tr>

View File

@ -1,9 +0,0 @@
<!-- $Id$ -->
<tr class="{row_class}">
<td>{user}</td>
<td align="center"><input type="checkbox" name="{read}" value="Y"{read_selected}></td>
<td align="center"><input type="checkbox" name="{add}" value="Y"{add_selected}></td>
<td align="center"><input type="checkbox" name="{edit}" value="Y"{edit_selected}></td>
<td align="center"><input type="checkbox" name="{delete}" value="Y"{delete_selected}></td>
<td align="center"><input type="checkbox" name="{private}" value="Y"{private_selected}></td>
</tr>

View File

@ -1,8 +0,0 @@
<tr class="th">
<td>{string}</td>
<td align="center">{lang_read}</td>
<td align="center">{lang_add}</td>
<td align="center">{lang_edit}</td>
<td align="center">{lang_delete}</td>
<td align="center">{lang_private}</td>
</tr>

View File

@ -1,24 +0,0 @@
<!-- $Id$ -->
<br><br>
<center>
<form method="POST" name="prefs_form" action="{actionurl}">
<table width="70%" border="0" cellspacing="2" cellpadding="2">
<tr>
<td colspan="2" bgcolor="#c0c0c0" align="center"><font face="{font}"><b>{lang_action}</b></font></td>
</tr>
<tr>
<td align="right"><font face="{font}">{lang_select_font}:</font></td>
<td><font face="{font}" size="{font_size}"><select name="notes_font">{notes_font}</select></font></td>
</tr>
<tr>
<td align="right"><font face="{font}">{lang_select_size}:</font></td>
<td><font face="{font}" size="{font_size}"><select name="notes_font_size">{notes_font_size}</select></font></td>
</tr>
<tr valign="bottom">
<td height="50"><font face="{font}">
<input type="submit" name="submit" value="{lang_edit}"></font>
</form></td>
<td>&nbsp;</td>
</tr>
</table>
</center>

View File

@ -1,15 +0,0 @@
<!-- BEGIN table -->
<table width="100%" border="1"{table_extras}>{list}
</table>
<!-- END table -->
<!-- BEGIN column_rows -->
<tr{tr_extras}>{col_headers}
</tr>
<!-- END column_rows -->
<!-- BEGIN column_headers -->
<td{td_extras}><font size="-2">{column_header}</font></td>
<!-- END column_headers -->
<!-- BEGIN column_headers_normal -->
<td{td_extras}>{column_header}</td>
<!-- END column_headers_normal -->

View File

@ -1,30 +0,0 @@
<!-- BEGIN upload_header -->
<form method="post" action="{form_action}" enctype="multipart/form-data">
<div>
<table cellspacing="0" cellpadding="2">
<tbody>
<tr bgcolor="#dedede">
<td><strong>{lang_file}</strong></td>
<td><strong>{lang_comment}</strong></td>
</tr>
<!-- END upload_header -->
<!-- BEGIN row -->
<tr >
<td><input maxlength="255" name="upload_file[]" type="file"></td>
<td><input name="upload_comment[]" type="text"></td>
</tr>
<!-- END row -->
<!-- BEGIN upload_footer -->
</tbody></table>
<input value="true" name="uploadprocess" type="hidden">
<input value="{path}" name="path" type="hidden">
<input value="{num_upload_boxes}" name="show_upload_boxes" type="hidden">
<input value="{lang_upload}" name="upload_files" type="submit">
<br/>
{change_upload_boxes}
</div>
</form>
<!-- END upload_footer -->

View File

@ -1,61 +0,0 @@
<?php
$phpgw_info["flags"] = array("currentapp" => "filemanager",
"noheader" => False,
"noappheader" => False,
"enable_vfs_class" => True);
include("../../header.inc.php");
function getmicrotime()
{
list($usec, $sec) = explode(" ",microtime());
return ((float)$usec + (float)$sec);
}
function stats($array)
{
$mean = array_sum($array)/count($array);
$a = 0;
foreach ($array as $value)
{
$a += ($value - $mean)*($value - $mean);
}
$std = sqrt($a/count($array));
$error = $std/sqrt(count($array));
echo "mean time: $mean error: +-$error";
}
echo '<b>Benchmarking vfs::ls</b><br>';
$times = array();
$phpgw->vfs->cd();
for ($i=0;$i<20; $i++)
{
$phpgw->vfs->dav_client->cached_props = array();
$time1 = getmicrotime();
$result = $phpgw->vfs->ls (array ('string' => ''));
$time = getmicrotime() - $time1;
$times[] = $time;
echo "run $i: $time<br>";
//sleep(1);
flush();
}
stats($times);
echo '<br><b>Benchmarking dav_client::get_properties</b><br>';
$times = array();
$phpgw->vfs->cd();
for ($i=0;$i<20; $i++)
{
$phpgw->vfs->dav_client->cached_props = array();
$time1 = getmicrotime();
$result = $phpgw->vfs->dav_client->get_properties('/home/sim');
$time = getmicrotime() - $time1;
$times[] = $time;
echo "run $i: $time<br>";
flush();
}
stats($times);
?>

View File

@ -1,279 +0,0 @@
<?php
$phpgw_info["flags"] = array("currentapp" => "filemanager",
"noheader" => False,
"noappheader" => False,
"enable_vfs_class" => True);
include("../header.inc.php");
/*
General format for output is:
sequence number - function - current directory - input[...] - what output should be - what output was
*/
html_break (1);
html_text_italic (PHP_OS . " - " . $phpgw_info["server"]["db_type"] . " - " . PHP_VERSION . " - " . $phpgw->vfs->basedir);
html_break (1);
$sep = SEP;
$user = $phpgw->vfs->working_lid;
$homedir = $phpgw->vfs->fakebase . "/" . $user;
$realhomedir = preg_replace ("|/|", $sep, $homedir);
$filesdir = $phpgw->vfs->basedir;
$currentapp = $phpgw_info["flags"]["currentapp"];
###
# start of getabsolutepath tests
$sequence_num = 1;
$phpgw->vfs->cd ();
$io = array ("" => "$homedir", "dir" => "$homedir/dir", "dir/file" => "$homedir/dir/file", "dir/dir2" => "$homedir/dir/dir2", "dir/dir2/file" => "$homedir/dir/dir2/file", "`~!@#$%^&*()-_=+/|[{]};:'\",<.>?" => "$homedir/`~!@#$%^&*()-_=+/|[{]};:'\",<.>?");
while (list ($i, $o) = each ($io))
{
if (($ao = $phpgw->vfs->getabsolutepath (array ('string' => $i))) != $o)
{
echo "<br>$sequence_num - getabsolutepath - $cd - $i - $o - $ao";
}
}
$sequence_num = 2;
$cd = "test";
$phpgw->vfs->cd (array(
'string' => $cd,
'relative' => False,
'relatives' => array (RELATIVE_NONE)
)
);
$io = array ("" => "/test", "dir" => "/test/dir", "dir/file" => "/test/dir/file", "dir/dir2" => "/test/dir/dir2", "dir/dir2/file" => "/test/dir/dir2/file", "`~!@#$%^&*()-_=+/|[{]};:'\",<.>?" => "/test/`~!@#$%^&*()-_=+/|[{]};:'\",<.>?");
while (list ($i, $o) = each ($io))
{
if (($ao = $phpgw->vfs->getabsolutepath (array ('string' => $i))) != $o)
{
echo "<br>$sequence_num - getabsolutepath - $cd - $i - $o - $ao";
}
}
$sequence_num = 3;
$cd = "test/test2/test3";
$phpgw->vfs->cd (array(
'string' => $cd,
'relative' => False,
'relatives' => array (RELATIVE_NONE)
)
);
$io = array ("" => "/test/test2/test3", "dir" => "/test/test2/test3/dir", "dir/file" => "/test/test2/test3/dir/file", "dir/dir2" => "/test/test2/test3/dir/dir2", "dir/dir2/file" => "/test/test2/test3/dir/dir2/file", "`~!@#$%^&*()-_=+/|[{]};:'\",<.>?" => "/test/test2/test3/`~!@#$%^&*()-_=+/|[{]};:'\",<.>?");
while (list ($i, $o) = each ($io))
{
if (($ao = $phpgw->vfs->getabsolutepath (array ('string' => $i))) != $o)
{
echo "<br>$sequence_num - getabsolutepath - $cd - $i - $o - $ao";
}
}
/* Actually means cd to home directory */
$sequence_num = 4;
$cd = "";
$phpgw->vfs->cd (array(
'string' => $cd
)
);
$relatives = array (RELATIVE_USER);
$io = array ("" => "$homedir", "dir" => "$homedir/dir", "dir/file" => "$homedir/dir/file", "`~!@#$%^&*()-_=+/|[{]};:'\",<.>?" => "$homedir/`~!@#$%^&*()-_=+/|[{]};:'\",<.>?");
while (list ($i, $o) = each ($io))
{
if (($ao = $phpgw->vfs->getabsolutepath (array ('string' => $i, 'mask' => $relatives))) != $o)
{
echo '<br><b>HERE</b>';
echo "<br>$sequence_num - getabsolutepath - $cd - $i - $relatives[0] - $o - $ao";
}
}
/* $cd shouldn't affect this test, but we'll set it anyways */
$sequence_num = 5;
$cd = "test2/test4";
$phpgw->vfs->cd (array(
'string' => $cd,
'relative' => False,
'relatives' => array (RELATIVE_NONE)
)
);
$relatives = array (RELATIVE_NONE);
$io = array ("" => "", "dir" => "dir", "dir/file" => "dir/file", "`~!@#$%^&*()-_=+/|[{]};:'\",<.>?" => "`~!@#$%^&*()-_=+/|[{]};:'\",<.>?");
while (list ($i, $o) = each ($io))
{
if (($ao = $phpgw->vfs->getabsolutepath (array ('string' => $i, 'mask' => $relatives))) != $o)
{
echo "<br>$sequence_num - getabsolutepath - $cd (shouldn't matter) - $i - $relatives[0] - $o - $ao";
}
}
/* $cd shouldn't affect this test, but we'll set it anyways */
$sequence_num = 6;
$cd = "test3/test5";
$phpgw->vfs->cd (array(
'string' => $cd,
'relative' => False,
'relatives' => array (RELATIVE_NONE)
)
);
$relatives = array (RELATIVE_USER_APP);
$io = array ("" => "$homedir/.$currentapp", "dir" => "$homedir/.$currentapp/dir", "dir/dir2" => "$homedir/.$currentapp/dir/dir2", "dir/file" => "$homedir/.$currentapp/dir/file", "dir/dir2/dir3/file" => "$homedir/.$currentapp/dir/dir2/dir3/file", "`~!@#$%^&*()-_=+/|[{]};:'\",<.>?" => "$homedir/.$currentapp/`~!@#$%^&*()-_=+/|[{]};:'\",<.>?");
while (list ($i, $o) = each ($io))
{
if (($ao = $phpgw->vfs->getabsolutepath (array ('string' => $i, 'mask' => $relatives))) != $o)
{
echo "<br>$sequence_num - getabsolutepath - $cd (shouldn't matter) - $i - $relatives[0] - $o - $ao";
}
}
/* $cd shouldn't affect this test, but we'll set it anyways */
$sequence_num = 7;
$cd = "test4/test6";
$phpgw->vfs->cd (array(
'string' => $cd,
'relative' => False,
'relatives' => array (RELATIVE_NONE)
)
);
$relatives = array (RELATIVE_ROOT);
$io = array ("" => "", "dir" => "/dir", "/dir/dir2/dir3" => "/dir/dir2/dir3", "dir/file" => "/dir/file", "dir/dir2/dir3" => "/dir/dir2/dir3", "`~!@#$%^&*()-_=+/|[{]};:'\",<.>?" => "/`~!@#$%^&*()-_=+/|[{]};:'\",<.>?");
while (list ($i, $o) = each ($io))
{
if (($ao = $phpgw->vfs->getabsolutepath (array ('string' => $i, 'mask' => $relatives))) != $o)
{
echo "<br>$sequence_num - getabsolutepath - $cd (shouldn't matter) - $i - $relatives[0] - $o - $ao";
}
}
/* Now a few to test the VFS_REAL capabilities */
$sequence_num = 8;
$cd = "";
$phpgw->vfs->cd (array(
'string' => $cd,
'relative' => False,
'relatives' => array (RELATIVE_NONE)
)
);
$relatives = array (RELATIVE_ROOT|VFS_REAL);
$io = array ("" => "$filesdir", "dir" => "$filesdir$sep" . "dir", "dir/dir2/dir3" => "$filesdir$sep" . "dir$sep" . "dir2$sep" . "dir3", "dir/file" => "$filesdir$sep" . "dir$sep" . "file", "dir/dir2/dir3/file" => "$filesdir$sep" . "dir$sep" . "dir2$sep" . "dir3$sep" . "file", "`~!@#$%^&*()-_=+/|[{]};:'\",<.>?" => "$filesdir$sep" . "`~!@#$%^&*()-_=+$sep" . "|[{]};:'\",<.>?");
while (list ($i, $o) = each ($io))
{
if (($ao = $phpgw->vfs->getabsolutepath (array ('string' => $i, 'mask' => $relatives, 'fake' =>False))) != $o)
{
echo "<br>$sequence_num - getabsolutepath - $cd (shouldn't matter) - $i - $relatives[0] - $o - $ao";
}
}
$sequence_num = 9;
$cd = "test5/test7";
$phpgw->vfs->cd (array(
'string' => $cd,
'relative' => False,
'relatives' => array (RELATIVE_NONE)
)
);
$relatives = array (RELATIVE_USER|VFS_REAL);
$io = array ("" => "$filesdir$realhomedir", "dir" => "$filesdir$realhomedir$sep" . "dir", "dir/dir2/dir3" => "$filesdir$realhomedir$sep" . "dir$sep" . "dir2$sep" . "dir3", "dir/file" => "$filesdir$realhomedir$sep" . "dir$sep" . "file", "dir/dir2/dir3/file" => "$filesdir$realhomedir$sep" . "dir$sep" . "dir2$sep" . "dir3$sep" . "file", "`~!@#$%^&*()-_=+/|[{]};:'\",<.>?" => "$filesdir$realhomedir$sep" . "`~!@#$%^&*()-_=+$sep" . "|[{]};:'\",<.>?");
while (list ($i, $o) = each ($io))
{
if (($ao = $phpgw->vfs->getabsolutepath (array ('string' => $i, 'mask' => $relatives, 'fake' => False))) != $o)
{
echo "<br>$sequence_num - getabsolutepath - $cd (shouldn't matter) - $i - $relatives[0] - $o - $ao";
}
}
$sequence_num = 10;
$cd = "test6/test8";
$phpgw->vfs->cd (array(
'string' => $cd,
'relative' => False,
'relatives' => array (RELATIVE_USER)
)
);
/* RELATIVE_CURRENT should be implied */
$relatives = array (VFS_REAL);
$io = array ("" => "$filesdir$realhomedir$sep$cd", "dir" => "$filesdir$realhomedir$sep$cd$sep" . "dir", "dir/dir2/dir3" => "$filesdir$realhomedir$sep$cd$sep" . "dir$sep" . "dir2$sep" . "dir3", "dir/file" => "$filesdir$realhomedir$sep$cd$sep" . "dir$sep" . "file", "dir/dir2/dir3/file" => "$filesdir$realhomedir$sep$cd$sep" . "dir$sep" . "dir2$sep" . "dir3$sep" . "file", "`~!@#$%^&*()-_=+/|[{]};:'\",<.>?" => "$filesdir$realhomedir$sep$cd$sep" . "`~!@#$%^&*()-_=+$sep" . "|[{]};:'\",<.>?");
while (list ($i, $o) = each ($io))
{
if (($ao = $phpgw->vfs->getabsolutepath (array ('string' => $i, 'mask' => $relatives, 'fake' => False))) != $o)
{
echo "<br>$sequence_num - getabsolutepath - $cd - $i - $relatives[0] - $o - $ao";
}
}
$sequence_num = 11;
$cd = "test7/test9";
$phpgw->vfs->cd (array(
'string' => $cd,
'relative' => False,
'relatives' => array (RELATIVE_USER)
)
);
$relatives = array (RELATIVE_USER_APP|VFS_REAL);
$io = array ("" => "$filesdir$realhomedir$sep.$currentapp", "dir" => "$filesdir$realhomedir$sep.$currentapp$sep" . "dir", "dir/dir2/dir3" => "$filesdir$realhomedir$sep.$currentapp$sep" . "dir$sep" . "dir2$sep" . "dir3", "dir/file" => "$filesdir$realhomedir$sep.$currentapp$sep" . "dir$sep" . "file", "dir/dir2/dir3/file" => "$filesdir$realhomedir$sep.$currentapp$sep" . "dir$sep" . "dir2$sep" . "dir3$sep" . "file", "`~!@#$%^&*()-_=+/|[{]};:'\",<.>?" => "$filesdir$realhomedir$sep.$currentapp$sep`~!@#$%^&*()-_=+$sep" . "|[{]};:'\",<.>?");
while (list ($i, $o) = each ($io))
{
if (($ao = $phpgw->vfs->getabsolutepath (array ('string' => $i, 'mask' => $relatives, 'fake' => False))) != $o)
{
echo "<br>$sequence_num - getabsolutepath - $cd (shouldn't matter) - $i - $relatives[0] - $o - $ao";
}
}
# end of getabsolutepath tests
###
###
# start of path_parts tests
/* Just for convienience
$io = array ("" => array ("fake_full_path" => "", "fake_leading_dirs" => "", "fake_extra_path" => "", "fake_name" => "", "real_full_path" => "", "real_leading_dirs" => "", "real_extra_path" => "", "real_name" => ""));
`~!@#$%^&*()-_=+/|[{]};:'\",<.>?
*/
$sequence_num = 12;
$cd = "test8/test10";
$relatives[0] = RELATIVE_USER;
$phpgw->vfs->cd (array(
'string' => $cd,
'relative' => False,
'relatives' => array ($relatives[0])
)
);
$subhome = substr ($homedir, 1);
$io = array ("" => array ("fake_full_path" => "$homedir/$cd", "fake_leading_dirs" => "$homedir/test8", "fake_extra_path" => "$subhome/test8", "fake_name" => "test10", "real_full_path" => "$filesdir$homedir/$cd", "real_leading_dirs" => "$filesdir$homedir/test8", "real_extra_path" => "$subhome/test8", "real_name" => "test10"), "dir2/file" => array ("fake_full_path" => "$homedir/$cd/dir2/file", "fake_leading_dirs" => "$homedir/$cd/dir2", "fake_extra_path" => "$subhome/$cd/dir2", "fake_name" => "file", "real_full_path" => "$filesdir$homedir/$cd/dir2/file", "real_leading_dirs" => "$filesdir$homedir/$cd/dir2", "real_extra_path" => "$subhome/$cd/dir2", "real_name" => "file"), "`~!@#$%^&*()-_=+/|[{]};:'\",<.>?" => array ("fake_full_path" => "$homedir/$cd/`~!@#$%^&*()-_=+/|[{]};:'\",<.>?", "fake_leading_dirs" => "$homedir/$cd/`~!@#$%^&*()-_=+", "fake_extra_path" => "$subhome/$cd/`~!@#$%^&*()-_=+", "fake_name" => "|[{]};:'\",<.>?", "real_full_path" => "$filesdir$homedir/$cd/`~!@#$%^&*()-_=+/|[{]};:'\",<.>?", "real_leading_dirs" => "$filesdir$homedir/$cd/`~!@#$%^&*()-_=+", "real_extra_path" => "$subhome/$cd/`~!@#$%^&*()-_=+", "real_name" => "|[{]};:'\",<.>?"));
while (list ($i, $o) = each ($io))
{
$ao = $phpgw->vfs->path_parts (array ('string' => $i));
while (list ($key, $value) = each ($o))
{
if ($ao->$key != $o[$key])
{
echo "<br>$sequence_num - path_parts - $cd - $i - $relatives[0] - $key - $o[$key] - $ao[$key]";
}
}
}
# end of path_parts tests
###
$phpgw->vfs->cd ();
html_break (2);
html_text_bold ("The less output, the better. Please file errors as a " . html_link ("https://sourceforge.net/tracker/?group_id=7305&atid=107305", "bug report", True, False) . ". Be sure to include the system information line at the top, and anything special about your setup. Thanks!");
html_page_close ();
?>

View File

@ -1,531 +0,0 @@
<?php
function ok($string){
/* html_table_row_begin();
html_table_col_begin();*/
echo "<h3>$string ";
/* html_table_col_end();
html_table_col_begin();*/
echo " OK</h3>";
/* html_table_col_end();
html_table_row_end();*/
}
function fail($string){
/* html_table_row_begin();
html_table_col_begin();*/
echo "<h3>$string ";
/* html_table_col_end();
html_table_col_begin();*/
echo " <b>FAILED!</b></h3>";
/* html_table_col_end();
html_table_row_end(); */
}
$phpgw_info["flags"] = array("currentapp" => "filemanager",
"noheader" => False,
"noappheader" => False,
"enable_vfs_class" => True);
include("../../header.inc.php");
html_text('VFS_DAV tests:');
html_break (1);
html_text_italic (PHP_OS . " - " . $phpgw_info["server"]["db_type"] . " - " . PHP_VERSION . " - " . $phpgw->vfs->basedir);
html_break (1);
//html_table_begin();
$sep = SEP;
$user = $phpgw->vfs->working_lid;
$homedir = $phpgw->vfs->fakebase . "/" . $user;
$realhomedir = preg_replace ("|/|", $sep, $homedir);
$filesdir = $phpgw->vfs->basedir;
$currentapp = $phpgw_info["flags"]["currentapp"];
$time1 = time();
echo ' override locks : ';print_r($phpgw->vfs->override_locks);
###
# write test
$phpgw->vfs->cd ();
$testfile = 'sdhdsjjkldggfsbhgbnirooaqojsdkljajklvagbytoi-test';
$teststring = 'delete me' ;
if (!$result = $phpgw->vfs->write (array ('string' => $testfile,
'content' => $teststring
)))
{
fail( __LINE__." failed writing file!");
}
else
{
ok("write");
}
#read
$phpgw->vfs->cd ();
$result = $phpgw->vfs->read (array ('string' => $testfile, 'noview' => true ));
if (!$result==$teststring)
{
fail( __LINE__." failed reading file!");
}
else
{
ok(" read");
}
###
# ls test
$result1 = $phpgw->vfs->ls (array ('string' => $testfile ));
if (!count($result1))
{
fail(__LINE__." failed listing file!");
}
else
{
ok(" ls : known file");
}
//list the parent dir
$result = $phpgw->vfs->ls (array ('string' => ''));
foreach ($result as $file)
{
if ($testfile == $file['name'])
{
$found = true;
break;
}
}
if (!$found)
{
fail(__LINE__." failed listing file!");
}
else
{
ok(" ls : parent");
}
$found = false;
foreach ($result as $file)
{
if ($result1[0]['directory'] == $file['full_name'])
{
$found = true;
break;
}
}
if ($found)
{
fail(__LINE__." parent is present in its own listing!");
}
else
{
ok(" ls : parent self reference");
}
# getsize
$phpgw->vfs->cd ();
$result = $phpgw->vfs->get_size (array ('string' => $testfile ));
$len = strlen($teststring);
if (!($result== $len))
{
fail(__LINE__." failed getting size of file result $result strlen $len");
}
else
{
ok("get_size");
}
#filetype
$phpgw->vfs->cd ();
$result = $phpgw->vfs->file_type(array ('string' => $testfile ));
$len = strlen($teststring);
if (!($result== 'application/octet-stream'))
{
fail(__LINE__." failed getting file type $result");
}
else
{
ok("file_type");
}
#file_exists
$phpgw->vfs->cd ();
$result = $phpgw->vfs->file_exists(array ('string' => $testfile ));
if (!$result)
{
fail(__LINE__." file_exist failed: $result");
}
else
{
ok("file_exists");
}
#lock
$phpgw->vfs->cd ();
$result = $phpgw->vfs->lock (array ('string' => $testfile ));
if (!$result)
{
fail(__LINE__."failed locking file!");
}
else
{
ok(" lock");
}
$ls_array = $GLOBALS['phpgw']->vfs->ls (array (
'string' => $testfile,
'relatives' => array (RELATIVE_ALL),
'checksubdirs' => False
)
);
if (!count($ls_array[0]['locks']))
{
fail(__LINE__."after locking file no locks exist!");
}
else
{
ok(" lock: after locking lock exists.");
}
$lock = end($ls_array[0]['locks']);
$tokens = end($lock['lock_tokens']);
$token = $tokens['name'];
//write should now fail
$result = $phpgw->vfs->write (array ('string' => $testfile,
'content' => 'delete me'
));
if ($result)
{
fail(__LINE__."I can write a supposidly locked file!");
}
else
{
ok("lock: after locking write fails");
}
$phpgw->vfs->add_lock_override(array ('string' => $testfile));
$result = $phpgw->vfs->write (array ('string' => $testfile,
'content' => 'delete me'
));
if (!$result)
{
fail(__LINE__."I cant write a locked file after overriding the lock!");
}
else
{
ok("lock: after lock override write succeeds");
}
###
# unlock test
$phpgw->vfs->cd ();
$result = $phpgw->vfs->unlock (array ('string' => $testfile ), $token);
if (!$result)
{
fail( __LINE__."failed unlocking file!");
}
else
{
OK("unlock");
}
#server side copy
$phpgw->vfs->cd ();
$result = $phpgw->vfs->cp(array ('from' => $testfile,
'to' => $testfile.'2',
'relatives' => array (RELATIVE_ALL, RELATIVE_ALL)
));
if (!$result)
{
fail(__LINE__." failed copying! returned: $result");
}
else
{
ok("server-side copy");
}
$result = $phpgw->vfs->file_exists(array ('string' => $testfile.'2'
));
if (!$result)
{
fail(__LINE__." after copy, target doesnt exist!");
}
else
{
ok("server-side copy : test for target");
}
$result = $phpgw->vfs->read (array ('string' => "$testfile".'2',
'noview' => true,
'relatives' => array (RELATIVE_ALL)
));
if (!$result==$teststring)
{
fail( __LINE__."after copy, read returned '$result' not '$teststring' ");
}
else
{
ok(" server-side copy: read target");
}
$result = $phpgw->vfs->delete(array ('string' => $testfile.'2'
));
if (!$result)
{
fail(__LINE__." failed copying! delete copied file returned: $result");
}
else
{
ok("server-side copy : delete target");
}
#remote -> local copy
$phpgw->vfs->cd ();
echo "<pre>";
$result = $phpgw->vfs->cp(array ('from' => $testfile,
'to' => "/tmp/$testfile".'2',
'relatives' => array (RELATIVE_ALL, RELATIVE_NONE | VFS_REAL)
));
echo "</pre>";
if (!$result)
{
fail(__LINE__." failed remote->local copying! returned: $result");
}
else
{
ok("remote->local copy");
}
echo "<pre>";
$result = $phpgw->vfs->file_exists(array ('string' => "/tmp/$testfile".'2',
'relatives' => array (RELATIVE_NONE | VFS_REAL)
));
echo "</pre>";
if (!$result)
{
fail(__LINE__." after remote->local copy, target doesnt exist!");
}
else
{
ok("remote->local copy : test for target");
}
$phpgw->vfs->cd ();
echo "<pre>";
$result = $phpgw->vfs->read (array ('string' => "/tmp/$testfile".'2',
'noview' => true,
'relatives' => array (RELATIVE_NONE | VFS_REAL)
));
echo "</pre>";
if (!$result==$teststring)
{
fail( __LINE__."after remote->local copy, returned $result");
}
else
{
ok(" remote->local copy: read target");
}
echo "<pre>";
$result = $phpgw->vfs->delete(array ('string' => "/tmp/$testfile".'2',
'relatives' => array (RELATIVE_NONE | VFS_REAL)
));
echo "</pre>";
if (!$result)
{
fail(__LINE__." failed copying! delete copied file returned: $result");
}
else
{
ok("remote->local copy : delete target");
}
#move
$phpgw->vfs->cd ();
echo "<pre>";
$result = $phpgw->vfs->mv(array ('from' => $testfile,
'to' => $testfile.'2',
'relatives' => array (RELATIVE_ALL, RELATIVE_ALL)
));
echo "</pre>";
if (!$result)
{
fail(__LINE__." failed moving! returned: $result");
}
else
{
ok("server-side move");
}
$result = $phpgw->vfs->file_exists(array ('string' => $testfile,
));
if ($result)
{
fail(__LINE__." failed moving! returned: $result");
}
else
{
ok("server-side move : test for source");
}
$result = $phpgw->vfs->file_exists(array ('string' => $testfile.'2',
));
if (!$result)
{
fail(__LINE__." failed moving! returned: $result");
}
else
{
ok("server-side move : test for target");
}
echo "<pre>";
$result = $phpgw->vfs->read (array ('string' => $testfile.'2',
'noview' => true,
'relatives' => array (RELATIVE_ALL)
));
echo "</pre>";
if (!$result==$teststring)
{
fail( __LINE__."after move, read returned '$result' not '$teststring' ");
}
else
{
ok(" server-side move: read target");
}
echo "<pre>";
$result = $phpgw->vfs->mv(array ('from' => $testfile.'2',
'to' => $testfile,
'relatives' => array (RELATIVE_ALL, RELATIVE_ALL)
));
echo "</pre>";
if (!$result)
{
fail(__LINE__." failed moving! returned: $result");
}
else
{
ok("server-side move : move back");
}
#remote->local move
echo "<pre>";
$phpgw->vfs->cd ();
$result = $phpgw->vfs->mv(array ('from' => $testfile,
'to' => '/tmp/'.$testfile.'2',
'relatives' => array (RELATIVE_ALL, RELATIVE_NONE | VFS_REAL)
));
echo "</pre>";
if (!$result)
{
fail(__LINE__." failed moving! returned: $result");
}
else
{
ok("remote->local move");
}
$result = $phpgw->vfs->file_exists(array ('string' => $testfile,
));
if ($result)
{
fail(__LINE__." failed moving! returned: $result");
}
else
{
ok("remote->local move : test for source");
}
$result = $phpgw->vfs->file_exists(array ('string' => '/tmp/'.$testfile.'2',
'relatives' => array(RELATIVE_NONE | VFS_REAL)
));
if (!$result)
{
fail(__LINE__." failed moving! returned: $result");
}
else
{
ok("remote->local move : test for target");
}
$result = $phpgw->vfs->read (array ('string' => '/tmp/'.$testfile.'2',
'noview' => true,
'relatives' => array(RELATIVE_NONE | VFS_REAL)
));
if (!$result==$teststring)
{
fail( __LINE__."after move, read returned '$result' not '$teststring' ");
}
else
{
ok("remote->local move: read target");
}
echo "<pre>";
$result = $phpgw->vfs->mv(array ('from' => '/tmp/'.$testfile.'2',
'to' => $testfile,
'relatives' => array (RELATIVE_NONE | VFS_REAL, RELATIVE_ALL)
));
echo "</pre>";
if (!$result)
{
fail(__LINE__." failed moving! returned: $result");
}
else
{
ok("server-side move : move back");
}
###
# delete test
$phpgw->vfs->cd ();
$result = $phpgw->vfs->delete(array ('string' => $testfile ));
if (!$result)
{
fail(__LINE__."failed deleting file! returned: $result");
}
else
{
ok("delete");
}
###
# mkdir test
$phpgw->vfs->cd ();
$result = $phpgw->vfs->mkdir(array ('string' => $testfile ));
if (!$result)
{
fail(__LINE__."failed creating collection! returned: $result");
}
else
{
ok("mkdir");
}
$result = $phpgw->vfs->write (array ('string' => $testfile.'/'.$testfile.'2',
'content' => $teststring
));
if (!$result)
{
fail( __LINE__." failed writing file into new dir!");
}
else
{
ok("mkdir : write into dir");
}
###
# rm dir test
$phpgw->vfs->cd ();
$result = $phpgw->vfs->rm(array ('string' => $testfile ));
if (!$result)
{
fail(__LINE__." failed deleting collection! returned: $result");
}
else
{
ok("delete dir");
}
//html_table_end();
$time = time() - $time1;
html_text("Done in $time s");
html_page_close ();
?>

View File

@ -1,33 +0,0 @@
display
- practical out of the box userconfiguration
- seperate colors for row off an on
- sort by with sort arrows so we know whats sorted
- sort by up and down
- nicer colheads
- toolbar cleanup
- toolbar prefs
- different colors for messages
- more mime icons
- better mime handling
extra funtionality
- send file as email attachment
- create pdf
- not just presume a file is treated like a ascii file
- cut/copy/paste
- sidebox with explorerstyle (Reiner loves this)
- other views (with image preview mode?!!)
- new popup
- zip
- handling for when the vfs is not correct
remove functionaliteit
- some conf options
bugs
- still slow
- total bytes/kbytes is not correct
- downloading file gives index.php
- messages not working everywhere (check all)
- errors with errorreporting 8
- errors with uploading thouh it works

View File

@ -8,7 +8,7 @@
* @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 filemanger * @package filemanger
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de> * @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @copyright (c) 2006 by Ralf Becker <RalfBecker-AT-outdoor-training.de> * @copyright (c) 2006-8 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @version $Id$ * @version $Id$
*/ */
@ -37,18 +37,18 @@ function check_access(&$account)
return $sessionid; return $sessionid;
} }
// if we are called with a /apps/$app path, use that $app as currentapp, to not require filemanager rights for the links
$parts = explode('/',$_SERVER['PATH_INFO']);
$app = count($parts) > 3 && $parts[1] == 'apps' ? $parts[2] : 'filemanager';
$GLOBALS['egw_info']['flags'] = array( $GLOBALS['egw_info']['flags'] = array(
'disable_Template_class' => True, 'disable_Template_class' => True,
'noheader' => True, 'noheader' => True,
'currentapp' => 'filemanager', 'currentapp' => $app,
'autocreate_session_callback' => 'check_access', 'autocreate_session_callback' => 'check_access',
); );
// if you move this file somewhere else, you need to adapt the path to the header! // if you move this file somewhere else, you need to adapt the path to the header!
include('../header.inc.php'); include('../header.inc.php');
// only enable one of the following WebDAV server: $webdav_server = new vfs_webdav_server();
// 1. this uses the old webdav class, using the old vfs classes direct (1.4 and current default) $webdav_server->ServeRequest();
ExecMethod('phpgwapi.oldvfs_webdav_server.ServeRequest');
// 2. this uses the new streamwrapper VFS interface
//ExecMethod('phpgwapi.vfs_webdav_server.ServeRequest');