- 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
@ -1,12 +1,12 @@
|
||||
#!/usr/bin/php -qC
|
||||
<?php
|
||||
/**
|
||||
* Filemanager - Command line interface: ls
|
||||
* Filemanager - Command line interface
|
||||
*
|
||||
* @link http://www.egroupware.org
|
||||
* @package filemanager
|
||||
* @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
|
||||
* @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 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 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 "\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();
|
||||
while(!is_null($option = array_shift($argv)))
|
||||
{
|
||||
if ($option[0] != '-') // no option --> argument
|
||||
if ($option == '-' || $option[0] != '-') // no option --> argument
|
||||
{
|
||||
$args[] = $option;
|
||||
continue;
|
||||
@ -225,6 +226,9 @@ switch($cmd)
|
||||
}
|
||||
break;
|
||||
|
||||
case 'eacl':
|
||||
do_eacl($argv);
|
||||
break;
|
||||
|
||||
case 'find':
|
||||
do_find($argv,$find_options);
|
||||
@ -252,10 +256,14 @@ switch($cmd)
|
||||
switch($cmd)
|
||||
{
|
||||
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);
|
||||
egw_vfs::remove($argv);
|
||||
egw_vfs::remove($argv,true);
|
||||
$argv = array();
|
||||
}
|
||||
else
|
||||
@ -422,32 +430,33 @@ switch($cmd)
|
||||
*/
|
||||
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':
|
||||
require_once('HTTP/WebDAV/Client.php');
|
||||
break;
|
||||
case 'smb':
|
||||
require_once('../phpgwapi/inc/class.smb_stream_wrapper.inc.php');
|
||||
break;
|
||||
case 'oldvfs':
|
||||
case 'vfs':
|
||||
case 'sqlfs':
|
||||
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));
|
||||
}
|
||||
require_once(EGW_API_INC.'/class.'.$scheme.'_stream_wrapper.inc.php');
|
||||
break;
|
||||
case '': // default scheme is file and alsways available
|
||||
break;
|
||||
default:
|
||||
if (!in_array($scheme,stream_get_wrappers()))
|
||||
{
|
||||
die("Unknown scheme '$scheme' in $url !!!\n\n");
|
||||
}
|
||||
break;
|
||||
switch($scheme)
|
||||
{
|
||||
case 'webdav':
|
||||
require_once('HTTP/WebDAV/Client.php');
|
||||
break;
|
||||
case '': // default scheme is file and alsways available
|
||||
break;
|
||||
default:
|
||||
if (!isset($GLOBALS['egw']) && !in_array($scheme,array('smb','imap')))
|
||||
{
|
||||
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
|
||||
@include_once(EGW_API_INC.'/class.'.$scheme.'_stream_wrapper.inc.php');
|
||||
|
||||
if (!class_exists($scheme.'_stream_wrapper'))
|
||||
{
|
||||
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!
|
||||
}
|
||||
$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".
|
||||
"--> 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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
*
|
||||
@ -544,7 +606,11 @@ function do_stat($url,$long=false,$numeric=false,$full_path=false)
|
||||
{
|
||||
$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);
|
||||
|
||||
@ -657,6 +723,7 @@ function _cp($from,$to,$verbose=false,$perms=false)
|
||||
{
|
||||
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);
|
||||
|
||||
if ($verbose) echo hsize($count)." bytes written to $to\n";
|
||||
|
@ -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>
|
@ -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
|
@ -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));
|
||||
}
|
||||
}
|
||||
?>
|
@ -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;
|
||||
}
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/**
|
||||
* Filemanager - user interface
|
||||
* eGroupWare - Filemanager - user interface
|
||||
*
|
||||
* @link http://www.egroupware.org
|
||||
* @package filemanager
|
||||
@ -112,7 +112,7 @@ class filemanager_ui
|
||||
{
|
||||
$ses = $GLOBALS['egw']->session->appsession('index','filemanager');
|
||||
$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))
|
||||
{
|
||||
@ -130,7 +130,7 @@ class filemanager_ui
|
||||
$content['nm']['msg'] = self::action($clipboard_type.'_paste',$clipboard_files,$content['nm']['path']);
|
||||
break;
|
||||
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']) &&
|
||||
(egw_vfs::is_writable($content['nm']['path']) || egw_vfs::is_writable($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');
|
||||
$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))
|
||||
{
|
||||
$to = $dir.'/'.egw_vfs::basename($path);
|
||||
$to = egw_vfs::concat($dir,egw_vfs::basename($path));
|
||||
if ($path != $to && egw_vfs::copy($path,$to))
|
||||
{
|
||||
++$files;
|
||||
@ -313,7 +314,7 @@ class filemanager_ui
|
||||
case 'cut_paste':
|
||||
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))
|
||||
{
|
||||
++$files;
|
||||
@ -338,9 +339,10 @@ class filemanager_ui
|
||||
*
|
||||
* @param string $mime_type
|
||||
* @param int $size=16
|
||||
* @param boolean $et_image=true return $app/$icon string for etemplate (default) or html image tag if false
|
||||
* @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)
|
||||
{
|
||||
@ -408,7 +410,7 @@ class filemanager_ui
|
||||
$row['icon'] = self::mime_icon($row['mime']);
|
||||
$row['perms'] = egw_vfs::int2mode($row['mode']);
|
||||
// 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)
|
||||
{
|
||||
@ -416,7 +418,7 @@ class filemanager_ui
|
||||
}
|
||||
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';
|
||||
@ -441,27 +443,16 @@ class filemanager_ui
|
||||
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
|
||||
*
|
||||
* @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');
|
||||
|
||||
if (!is_array($content))
|
||||
@ -485,7 +476,7 @@ class filemanager_ui
|
||||
{
|
||||
$content['perms']['executable'] = (int)!!($content['mode'] & 0111);
|
||||
$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)
|
||||
{
|
||||
$content['text_content'] = file_get_contents(egw_vfs::PREFIX.$path);
|
||||
@ -493,62 +484,92 @@ class filemanager_ui
|
||||
}
|
||||
else
|
||||
{
|
||||
$content['perms']['sticky'] = (int)!!($content['mode'] & 0x201);
|
||||
//currently not implemented in backend $content['perms']['sticky'] = (int)!!($content['mode'] & 0x201);
|
||||
$mask = 7;
|
||||
}
|
||||
foreach(array('owner' => 6,'group' => 3,'other' => 0) as $name => $shift)
|
||||
{
|
||||
$content['perms'][$name] = ($content['mode'] >> $shift) & $mask;
|
||||
}
|
||||
$content['is_owner'] = egw_vfs::has_owner_rights($path,$content);
|
||||
}
|
||||
else
|
||||
{
|
||||
//_debug_array($content);
|
||||
$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':
|
||||
if (egw_vfs::rename($path,$to = $content['dir'].'/'.$content['name']))
|
||||
{
|
||||
$msg = lang('Renamed %1 to %2.',$path,$to).' ';
|
||||
}
|
||||
$path = $to;
|
||||
break;
|
||||
default:
|
||||
static $name2cmd = array('uid' => 'chown','gid' => 'chgrp','perms' => 'chmod');
|
||||
$cmd = array('egw_vfs',$name2cmd[$name]);
|
||||
$value = $name == 'perms' ? self::perms2mode($content['perms']) : $content[$name];
|
||||
if ($content['modify_subs'] && $name == 'perms')
|
||||
{
|
||||
egw_vfs::find($path,array('type'=>'d'),$cmd,array($value));
|
||||
egw_vfs::find($path,array('type'=>'f'),$cmd,array($value & 0666)); // no execute for files
|
||||
}
|
||||
elseif ($content['modify_subs'])
|
||||
{
|
||||
egw_vfs::find($path,null,$cmd,array($value));
|
||||
}
|
||||
else
|
||||
|
||||
{
|
||||
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;
|
||||
switch($name)
|
||||
{
|
||||
case 'name':
|
||||
if (egw_vfs::rename($path,$to = egw_vfs::concat($content['dir'],$content['name'])))
|
||||
{
|
||||
$msg = lang('Renamed %1 to %2.',$path,$to).' ';
|
||||
}
|
||||
$path = $to;
|
||||
break;
|
||||
default:
|
||||
static $name2cmd = array('uid' => 'chown','gid' => 'chgrp','perms' => 'chmod');
|
||||
$cmd = array('egw_vfs',$name2cmd[$name]);
|
||||
$value = $name == 'perms' ? self::perms2mode($content['perms']) : $content[$name];
|
||||
if ($content['modify_subs'] && $name == 'perms')
|
||||
{
|
||||
egw_vfs::find($path,array('type'=>'d'),$cmd,array($value));
|
||||
egw_vfs::find($path,array('type'=>'f'),$cmd,array($value & 0666)); // no execute for files
|
||||
}
|
||||
elseif ($content['modify_subs'])
|
||||
{
|
||||
egw_vfs::find($path,null,$cmd,array($value));
|
||||
}
|
||||
else
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
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
|
||||
$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";
|
||||
$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';
|
||||
// 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
|
||||
{
|
||||
if (!$content['gid']) $content['ro_gid_root'] = 'root';
|
||||
@ -559,18 +580,27 @@ class filemanager_ui
|
||||
}
|
||||
$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'])
|
||||
{
|
||||
$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'),
|
||||
5 => lang('Display of content'),
|
||||
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
|
||||
{
|
||||
@ -578,7 +608,7 @@ class filemanager_ui
|
||||
6 => lang('Read & write access'),
|
||||
4 => lang('Read access only'),
|
||||
0 => lang('No access'),
|
||||
);
|
||||
);
|
||||
}
|
||||
$preserve = $content;
|
||||
if (!isset($preserve['old']))
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
?>
|
@ -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)");
|
||||
?>
|
@ -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 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)!
|
||||
@ -7,169 +6,69 @@
|
||||
%1 files copied. filemanager de %1 Dateien kopiert.
|
||||
%1 files deleted. filemanager de %1 Dateien gelöscht.
|
||||
%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 urls %2 to clipboard. filemanager de %1 Adressen in die Zwischenablage %2.
|
||||
accessrights filemanager de Zugangsberechtigungen
|
||||
acl added. filemanager de Zugrifsrecht hinzugefügt.
|
||||
acl deleted. filemanager de Zugrifsrecht gelöscht.
|
||||
actions filemanager de Befehle
|
||||
all subdirectories filemanager de Alle Unterverzeichnisse
|
||||
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
|
||||
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
|
||||
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 %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: 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 file filemanager de Neue Datei
|
||||
create folder filemanager de Neues Verzeichnis
|
||||
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 by filemanager de Erstellt von
|
||||
created directory %1 filemanager de Verzeichnis %1 erstellt
|
||||
current directory filemanager de Aktuelles Verzeichnis
|
||||
cut filemanager de Ausschneiden
|
||||
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
|
||||
deleted %1 filemanager de %1 gelöscht
|
||||
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!
|
||||
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
|
||||
download filemanager de Herunterladen
|
||||
edit filemanager de Bearbeiten
|
||||
edit comments filemanager de Kommentare 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!
|
||||
executable filemanager de Ausführbar
|
||||
execute filemanager de Ausführen
|
||||
failed to create directory filemanager de Verzeichnis konnte nicht erstellt werden
|
||||
extended access control list filemanager de Erweiterte Zugriffsrechte
|
||||
extended acl filemanager de Erweiterte ACL
|
||||
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 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 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
|
||||
go home filemanager de Zum Heimverzeichnis wechseln
|
||||
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: filemanager de Gehe zu:
|
||||
go up filemanager de einen Ordner nach oben
|
||||
home filemanager de Home
|
||||
id filemanager de Id
|
||||
location filemanager de Pfad
|
||||
locked filemanager de Gesperrt
|
||||
inherited filemanager de Geerbt
|
||||
maximum size for uploads filemanager de Maximale Größe beim Hochladen
|
||||
mime type filemanager de MIME-Typ
|
||||
modified filemanager de Verändert
|
||||
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
|
||||
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 files in this directory. filemanager de Keine Dateien in diesem Verzeichnis vorhanden
|
||||
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
|
||||
operation filemanager de Operation
|
||||
other settings filemanager de Weitere Einstellungen
|
||||
owner filemanager de Eigentümer
|
||||
permission denied! filemanager de Zugriff verweigert!
|
||||
permissions filemanager de Zugriffsrechte
|
||||
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 %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 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
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
sort by: filemanager de Sortieren nach:
|
||||
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
|
||||
update filemanager de Aktualisieren
|
||||
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 an owner! filemanager de Sie müssen einen Eigentümer 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.
|
||||
|
@ -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 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)!
|
||||
@ -7,170 +6,69 @@
|
||||
%1 files copied. filemanager en %1 files copied.
|
||||
%1 files deleted. filemanager en %1 files deleted.
|
||||
%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 urls %2 to clipboard. filemanager en %1 URLs %2 to clipboard.
|
||||
accessrights filemanager en Accessrights
|
||||
acl added. filemanager en ACL added.
|
||||
acl deleted. filemanager en ACL deleted.
|
||||
actions filemanager en Actions
|
||||
all subdirectories filemanager en All subdirectories
|
||||
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
|
||||
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
|
||||
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 %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: 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 file filemanager en Create File
|
||||
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 filemanager en created
|
||||
created between filemanager en created between
|
||||
created by filemanager en Created by
|
||||
created directory %1 filemanager en Created directory %1
|
||||
current directory filemanager en Current directory
|
||||
cut filemanager en cut
|
||||
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
|
||||
deleted %1 filemanager en Deleted %1
|
||||
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!
|
||||
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
|
||||
download filemanager en Download
|
||||
edit filemanager en Edit
|
||||
edit comments filemanager en Edit comments
|
||||
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!
|
||||
executable filemanager en Executable
|
||||
execute filemanager en Execute
|
||||
failed to create directory filemanager en failed to create directory
|
||||
extended access control list filemanager en Extended access control list
|
||||
extended acl filemanager en Extended ACL
|
||||
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 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 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
|
||||
go home filemanager en go home
|
||||
go to filemanager en Go To
|
||||
go to %1 filemanager en Go to %1
|
||||
go to filemanager en Go to
|
||||
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
|
||||
location filemanager en Location
|
||||
locked filemanager en Locked
|
||||
mime type filemanager en MIME Type
|
||||
modified filemanager en Modified
|
||||
inherited filemanager en Inherited
|
||||
maximum size for uploads filemanager en Maximum size for uploads
|
||||
mime type filemanager en mime type
|
||||
modified filemanager en modified
|
||||
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
|
||||
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 files in this directory. filemanager en No files in this directory.
|
||||
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
|
||||
operation filemanager en Operation
|
||||
other settings filemanager en Other settings
|
||||
owner filemanager en Owner
|
||||
permission denied! filemanager en Permission denied!
|
||||
permissions filemanager en Permissions
|
||||
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 %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 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
|
||||
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
|
||||
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
|
||||
select action... filemanager en Select action...
|
||||
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
|
||||
sort by: filemanager en Sort by:
|
||||
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
|
||||
update filemanager en Update
|
||||
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 an owner! filemanager en You need to select an owner!
|
||||
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.
|
||||
|
@ -1,22 +1,26 @@
|
||||
<?php
|
||||
/**
|
||||
* eGroupWare - eTemplates for Application filemanager
|
||||
* http://www.egroupware.org
|
||||
* generated by soetemplate::dump4setup() 2008-03-03 23:31
|
||||
*
|
||||
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||
* @package filemanager
|
||||
* @subpackage setup
|
||||
* @version $Id$
|
||||
*/
|
||||
/**
|
||||
* eGroupWare - eTemplates for Application filemanager
|
||||
* http://www.egroupware.org
|
||||
* generated by soetemplate::dump4setup() 2008-04-10 10:08
|
||||
*
|
||||
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||
* @package filemanager
|
||||
* @subpackage setup
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
$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.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.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',);
|
||||
|
||||
|
@ -1,43 +1,36 @@
|
||||
<?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. *
|
||||
\**************************************************************************/
|
||||
/**
|
||||
* eGroupWare - Filemanager - setup
|
||||
*
|
||||
* @link http://www.egroupware.org
|
||||
* @package filemanager
|
||||
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/* $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';
|
||||
$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 */
|
||||
|
||||
/* 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 */
|
||||
$setup_info['filemanager']['depends'][] = array(
|
||||
'appname' => 'phpgwapi',
|
||||
'versions' => array('1.3','1.4','1.5')
|
||||
);
|
||||
/* Dependencies for this app to work */
|
||||
$setup_info['filemanager']['depends'][] = array(
|
||||
'appname' => 'phpgwapi',
|
||||
'versions' => array('1.3','1.4','1.5')
|
||||
);
|
||||
|
||||
// installation checks for filemanager
|
||||
$setup_info['filemanager']['check_install'] = array(
|
||||
'' => array(
|
||||
'func' => 'pear_check',
|
||||
'from' => 'Filemanager',
|
||||
),
|
||||
'HTTP_WebDAV_Server' => array(
|
||||
'func' => 'pear_check',
|
||||
'from' => 'Filemanager',
|
||||
),
|
||||
);
|
||||
// installation checks for filemanager
|
||||
$setup_info['filemanager']['check_install'] = array(
|
||||
'' => array(
|
||||
'func' => 'pear_check',
|
||||
'from' => 'Filemanager',
|
||||
),
|
||||
'HTTP_WebDAV_Server' => array(
|
||||
'func' => 'pear_check',
|
||||
'from' => 'Filemanager',
|
||||
),
|
||||
);
|
||||
|
@ -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 -->
|
||||
|
@ -1,6 +0,0 @@
|
||||
<!-- BEGIN error_page -->
|
||||
{errors}
|
||||
<!-- END error_page -->
|
||||
<!-- BEGIN ind_error -->
|
||||
{error}
|
||||
<!-- END ind_error -->
|
228
filemanager/templates/default/file.xet
Normal 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>
|
@ -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} </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 -->
|
@ -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 -->
|
||||
|
Before Width: | Height: | Size: 996 B |
Before Width: | Height: | Size: 961 B |
Before Width: | Height: | Size: 883 B |
Before Width: | Height: | Size: 590 B |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 951 B |
Before Width: | Height: | Size: 663 B |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 998 B |
Before Width: | Height: | Size: 769 B |
Before Width: | Height: | Size: 881 B |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 991 B |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 667 B |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 772 B |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 772 B |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 606 B |
Before Width: | Height: | Size: 719 B |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 43 B |
@ -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 -->
|
||||
|
@ -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>
|
@ -1,4 +0,0 @@
|
||||
<tr bgcolor="{bg_color}">
|
||||
<td colspan="2">{text}</td>
|
||||
</tr>
|
||||
|
@ -1,5 +0,0 @@
|
||||
<tr bgcolor="{bg_color}">
|
||||
<td align="right">{field}</td>
|
||||
<td align="left">{data}</td>
|
||||
</tr>
|
||||
|
@ -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>
|
@ -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>
|
@ -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> </td>
|
||||
</tr>
|
||||
</table>
|
||||
</center>
|
@ -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 -->
|
||||
|
@ -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 -->
|
@ -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);
|
||||
|
||||
|
||||
?>
|
@ -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 ();
|
||||
|
||||
?>
|
@ -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 ();
|
||||
|
||||
?>
|
@ -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
|
@ -8,7 +8,7 @@
|
||||
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||
* @package filemanger
|
||||
* @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$
|
||||
*/
|
||||
|
||||
@ -37,18 +37,18 @@ function check_access(&$account)
|
||||
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(
|
||||
'disable_Template_class' => True,
|
||||
'noheader' => True,
|
||||
'currentapp' => 'filemanager',
|
||||
'currentapp' => $app,
|
||||
'autocreate_session_callback' => 'check_access',
|
||||
);
|
||||
// if you move this file somewhere else, you need to adapt the path to the header!
|
||||
include('../header.inc.php');
|
||||
|
||||
// only enable one of the following WebDAV server:
|
||||
// 1. this uses the old webdav class, using the old vfs classes direct (1.4 and current default)
|
||||
ExecMethod('phpgwapi.oldvfs_webdav_server.ServeRequest');
|
||||
|
||||
// 2. this uses the new streamwrapper VFS interface
|
||||
//ExecMethod('phpgwapi.vfs_webdav_server.ServeRequest');
|
||||
$webdav_server = new vfs_webdav_server();
|
||||
$webdav_server->ServeRequest();
|