use new api in filemanager

This commit is contained in:
Ralf Becker 2016-05-05 07:20:07 +00:00
parent 0eeb8b56c0
commit 1587c977b8
10 changed files with 222 additions and 244 deletions

View File

@ -1,7 +1,7 @@
#!/usr/bin/php -qC #!/usr/bin/php -qC
<?php <?php
/** /**
* Filemanager - Command line interface * EGroupware Filemanager - Command line interface
* *
* @link http://www.egroupware.org * @link http://www.egroupware.org
* @package filemanager * @package filemanager
@ -13,6 +13,9 @@
* @todo --domain does NOT work with --user root_* for domains other then the first in header.inc.php * @todo --domain does NOT work with --user root_* for domains other then the first in header.inc.php
*/ */
use EGroupware\Api;
use EGroupware\Api\Vfs;
chdir(dirname(__FILE__)); // to enable our relative pathes to work chdir(dirname(__FILE__)); // to enable our relative pathes to work
error_reporting(error_reporting() & ~E_NOTICE & ~E_DEPRECATED); error_reporting(error_reporting() & ~E_NOTICE & ~E_DEPRECATED);
@ -190,16 +193,16 @@ switch($cmd)
usage('Wrong number of parameters!'); usage('Wrong number of parameters!');
} }
if (($url = $argv[0])) load_wrapper($url); if (($url = $argv[0])) load_wrapper($url);
if(!egw_vfs::$is_root) if(!Vfs::$is_root)
{ {
die("You need to be root to do that!\n"); die("You need to be root to do that!\n");
} }
if ($all) if ($all)
{ {
config::save_value('vfs_fstab',$GLOBALS['egw_info']['server']['vfs_fstab']='','phpgwapi'); Api\Config::save_value('vfs_fstab',$GLOBALS['egw_info']['server']['vfs_fstab']='','phpgwapi');
echo "Restored default mounts:\n"; echo "Restored default mounts:\n";
} }
elseif (!egw_vfs::umount($url)) elseif (!Vfs::umount($url))
{ {
die("$url is NOT mounted!\n"); die("$url is NOT mounted!\n");
} }
@ -215,11 +218,11 @@ switch($cmd)
} }
load_wrapper($url=$argv[0]); load_wrapper($url=$argv[0]);
if($argc > 1 && !egw_vfs::$is_root) if($argc > 1 && !Vfs::$is_root)
{ {
die("You need to be root to do that!\n"); die("You need to be root to do that!\n");
} }
$fstab = egw_vfs::mount($url,$path=$argv[1]); $fstab = Vfs::mount($url,$path=$argv[1]);
if (is_array($fstab)) if (is_array($fstab))
{ {
foreach($fstab as $path => $url) foreach($fstab as $path => $url)
@ -261,12 +264,12 @@ switch($cmd)
break; break;
case 'migrate-db2fs': case 'migrate-db2fs':
if (empty($user) || empty($passwd) || !egw_vfs::$is_root) if (empty($user) || empty($passwd) || !Vfs::$is_root)
{ {
die("\nYou need to be root to do that!\n\n"); die("\nYou need to be root to do that!\n\n");
} }
if (!is_writable($GLOBALS['egw_info']['server']['files_dir'])) exit; // we need write access, error msg already given if (!is_writable($GLOBALS['egw_info']['server']['files_dir'])) exit; // we need write access, error msg already given
$fstab = egw_vfs::mount(); $fstab = Vfs::mount();
if (!is_array($fstab) || !isset($fstab['/']) || strpos($fstab['/'],'storage=db') === false) if (!is_array($fstab) || !isset($fstab['/']) || strpos($fstab['/'],'storage=db') === false)
{ {
foreach($fstab as $path => $url) foreach($fstab as $path => $url)
@ -275,11 +278,11 @@ switch($cmd)
} }
die("\n/ NOT mounted with 'storage=db' --> no need to convert!\n\n"); die("\n/ NOT mounted with 'storage=db' --> no need to convert!\n\n");
} }
$num_files = sqlfs_utils::migrate_db2fs(); // throws exception on error $num_files = Vfs\Sqlfs\Utils::migrate_db2fs(); // throws exception on error
echo "\n$num_files files migrated from DB to filesystem.\n"; echo "\n$num_files files migrated from DB to filesystem.\n";
$new_url = preg_replace('/storage=db&?/','',$fstab['/']); $new_url = preg_replace('/storage=db&?/','',$fstab['/']);
if (substr($new_url,-1) == '?') $new_url = substr($new_url,0,-1); if (substr($new_url,-1) == '?') $new_url = substr($new_url,0,-1);
if (egw_vfs::mount($new_url,'/')) if (Vfs::mount($new_url,'/'))
{ {
echo "/ successful re-mounted on $new_url\n"; echo "/ successful re-mounted on $new_url\n";
} }
@ -307,7 +310,7 @@ switch($cmd)
die("rm -r only implemented for eGW streams!"); // dont want to repeat the code here die("rm -r only implemented for eGW streams!"); // dont want to repeat the code here
} }
array_unshift($argv,$url); array_unshift($argv,$url);
egw_vfs::remove($argv,true); Vfs::remove($argv,true);
$argv = array(); $argv = array();
} }
else else
@ -339,7 +342,7 @@ switch($cmd)
$mode = $url; // first param is mode $mode = $url; // first param is mode
$url = array_shift($argv); $url = array_shift($argv);
} }
if (egw_vfs::parse_url($url,PHP_URL_SCHEME)) load_wrapper($url); // cant use stat or egw_vfs::mode2int otherwise! if (Vfs::parse_url($url,PHP_URL_SCHEME)) load_wrapper($url); // cant use stat or Vfs::mode2int otherwise!
if (strpos($mode,'+') !== false || strpos($mode,'-') !== false) if (strpos($mode,'+') !== false || strpos($mode,'-') !== false)
{ {
@ -354,7 +357,7 @@ switch($cmd)
{ {
die("chmod only implemented for eGW streams!"); // dont want to repeat the code here die("chmod only implemented for eGW streams!"); // dont want to repeat the code here
} }
$set = egw_vfs::mode2int($mode,$set); $set = Vfs::mode2int($mode,$set);
$params = array($url,$set); $params = array($url,$set);
break; break;
case 'chown': case 'chown':
@ -364,7 +367,7 @@ switch($cmd)
{ {
$owner = $url; // first param is owner/group $owner = $url; // first param is owner/group
$url = array_shift($argv); $url = array_shift($argv);
if (egw_vfs::parse_url($url,PHP_URL_SCHEME)) load_wrapper($url); // we need the header loaded if (Vfs::parse_url($url,PHP_URL_SCHEME)) load_wrapper($url); // we need the header loaded
if ($owner == 'root') if ($owner == 'root')
{ {
$owner = 0; $owner = 0;
@ -390,7 +393,7 @@ switch($cmd)
$params = array($url,$owner); $params = array($url,$owner);
break; break;
} }
if (($scheme = egw_vfs::parse_url($url,PHP_URL_SCHEME))) if (($scheme = Vfs::parse_url($url,PHP_URL_SCHEME)))
{ {
load_wrapper($url); load_wrapper($url);
} }
@ -413,14 +416,14 @@ switch($cmd)
{ {
load_wrapper($url); load_wrapper($url);
array_unshift($argv,$url); array_unshift($argv,$url);
egw_vfs::find($argv,array('url'=>true,),'do_stat',array($long,$numeric,true,$inode)); Vfs::find($argv,array('url'=>true,),'do_stat',array($long,$numeric,true,$inode));
$argv = array(); $argv = array();
} }
elseif (is_dir($url) && ($dir = opendir($url))) elseif (is_dir($url) && ($dir = opendir($url)))
{ {
if ($argc) if ($argc)
{ {
if (!($name = basename(egw_vfs::parse_url($url,PHP_URL_PATH)))) $name = '/'; if (!($name = basename(Vfs::parse_url($url,PHP_URL_PATH)))) $name = '/';
echo "\n$name:\n"; echo "\n$name:\n";
} }
// separate evtl. query part, to re-add it after the file-name // separate evtl. query part, to re-add it after the file-name
@ -448,7 +451,7 @@ switch($cmd)
{ {
if ($argc) if ($argc)
{ {
echo "\n".basename(egw_vfs::parse_url($url,PHP_URL_PATH)).":\n"; echo "\n".basename(Vfs::parse_url($url,PHP_URL_PATH)).":\n";
} }
fpassthru($f); fpassthru($f);
fclose($f); fclose($f);
@ -491,7 +494,7 @@ function load_wrapper($url)
// get eGW's __autoload() function // get eGW's __autoload() function
include_once(EGW_API_INC.'/common_functions.inc.php'); include_once(EGW_API_INC.'/common_functions.inc.php');
if (!egw_vfs::load_wrapper($scheme)) if (!Vfs::load_wrapper($scheme))
{ {
die("Unknown scheme '$scheme' in $url !!!\n\n"); die("Unknown scheme '$scheme' in $url !!!\n\n");
} }
@ -548,7 +551,7 @@ function load_egw($user,$passwd,$domain='default')
$GLOBALS['egw_domain'][$domain]['config_passwd'])) $GLOBALS['egw_domain'][$domain]['config_passwd']))
{ {
echo "\nRoot access granted!\n"; echo "\nRoot access granted!\n";
egw_vfs::$is_root = true; Vfs::$is_root = true;
} }
else else
{ {
@ -588,11 +591,11 @@ function do_eacl(array $argv)
} }
if ($argc == 1) if ($argc == 1)
{ {
foreach(egw_vfs::get_eacl($url) as $acl) foreach(Vfs::get_eacl($url) as $acl)
{ {
$mode = ($acl['rights'] & egw_vfs::READABLE ? 'r' : '-'). $mode = ($acl['rights'] & Vfs::READABLE ? 'r' : '-').
($acl['rights'] & egw_vfs::WRITABLE ? 'w' : '-'). ($acl['rights'] & Vfs::WRITABLE ? 'w' : '-').
($acl['rights'] & egw_vfs::EXECUTABLE ? 'x' : '-'); ($acl['rights'] & Vfs::EXECUTABLE ? 'x' : '-');
echo $acl['path']."\t$mode\t".$GLOBALS['egw']->accounts->id2name($acl['owner'])."\n"; echo $acl['path']."\t$mode\t".$GLOBALS['egw']->accounts->id2name($acl['owner'])."\n";
} }
return; return;
@ -605,15 +608,15 @@ function do_eacl(array $argv)
{ {
switch($mode[$i]) switch($mode[$i])
{ {
case 'x': $argv[1] |= egw_vfs::EXECUTABLE; break; case 'x': $argv[1] |= Vfs::EXECUTABLE; break;
case 'w': $argv[1] |= egw_vfs::WRITABLE; break; case 'w': $argv[1] |= Vfs::WRITABLE; break;
case 'r': $argv[1] |= egw_vfs::READABLE; break; case 'r': $argv[1] |= Vfs::READABLE; break;
} }
} }
} }
if (!egw_vfs::eacl($url,$argv[1],$argc > 2 && !is_numeric($argv[2]) ? $GLOBALS['egw']->accounts->name2id($argv[2]) : $argv[2])) if (!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"; echo "Error setting extended Acl for $argv[0]!\n";
} }
} }
@ -629,7 +632,7 @@ function do_eacl(array $argv)
function do_stat($url,$long=false,$numeric=false,$full_path=false,$inode=false) function do_stat($url,$long=false,$numeric=false,$full_path=false,$inode=false)
{ {
//echo "do_stat($url,$long,$numeric,$full_path)\n"; //echo "do_stat($url,$long,$numeric,$full_path)\n";
$bname = egw_vfs::parse_url($url,PHP_URL_PATH); $bname = Vfs::parse_url($url,PHP_URL_PATH);
if (!$full_path) if (!$full_path)
{ {
@ -645,7 +648,7 @@ function do_stat($url,$long=false,$numeric=false,$full_path=false,$inode=false)
if (class_exists('egw_vfs')) if (class_exists('egw_vfs'))
{ {
$perms = egw_vfs::int2mode($stat['mode']); $perms = Vfs::int2mode($stat['mode']);
} }
else else
{ {
@ -680,7 +683,7 @@ function do_stat($url,$long=false,$numeric=false,$full_path=false,$inode=false)
$nlink = $stat['nlink']; $nlink = $stat['nlink'];
if (($stat['mode'] & 0xA000) == 0xA000) if (($stat['mode'] & 0xA000) == 0xA000)
{ {
$symlink = " -> ".(class_exists('egw_vfs') ? egw_vfs::readlink($url) : readlink($url)); $symlink = " -> ".(class_exists('egw_vfs') ? Vfs::readlink($url) : readlink($url));
} }
if ($inode) if ($inode)
{ {
@ -718,7 +721,7 @@ function do_cp($argv,$recursive=false,$perms=false)
{ {
if (is_dir($from) && (!file_exists($to) || is_dir($to)) && $recursive && class_exists('egw_vfs')) if (is_dir($from) && (!file_exists($to) || is_dir($to)) && $recursive && class_exists('egw_vfs'))
{ {
foreach(egw_vfs::find($from,array('url' => true)) as $f) foreach(Vfs::find($from,array('url' => true)) as $f)
{ {
$t = $to.substr($f,strlen($from)); $t = $to.substr($f,strlen($from));
if (is_dir($f)) if (is_dir($f))
@ -749,7 +752,7 @@ function _cp($from,$to,$verbose=false)
if (is_dir($to)) if (is_dir($to))
{ {
$path = egw_vfs::parse_url($from,PHP_URL_PATH); $path = Vfs::parse_url($from,PHP_URL_PATH);
if (is_dir($to)) if (is_dir($to))
{ {
list($to,$query) = explode('?',$to,2); list($to,$query) = explode('?',$to,2);
@ -805,7 +808,7 @@ function do_find($bases,$options)
} }
$options['url'] = true; // we use url's not vfs pathes in filemanager/cli.php $options['url'] = true; // we use url's not vfs pathes in filemanager/cli.php
foreach(egw_vfs::find($bases,$options) as $path) foreach(Vfs::find($bases,$options) as $path)
{ {
echo "$path\n"; echo "$path\n";
} }
@ -829,7 +832,7 @@ function do_lntree($from,$to)
{ {
usage("Directory '$to' is not writable!"); usage("Directory '$to' is not writable!");
} }
egw_vfs::find($from, array( Vfs::find($from, array(
'url' => true, 'url' => true,
), '_ln', array($to)); ), '_ln', array($to));
} }
@ -837,15 +840,15 @@ function do_lntree($from,$to)
function _ln($src, $base, $stat) function _ln($src, $base, $stat)
{ {
//echo "_ln('$src', '$base', ".array2string($stat).")\n"; //echo "_ln('$src', '$base', ".array2string($stat).")\n";
$dst = $base.egw_vfs::parse_url($src, PHP_URL_PATH); $dst = $base.Vfs::parse_url($src, PHP_URL_PATH);
if (is_link($src)) if (is_link($src))
{ {
if (($target = sqlfs_stream_wrapper::readlink($src))) if (($target = Vfs\Sqlfs\StreamWrapper::readlink($src)))
{ {
if ($target[0] != '/') if ($target[0] != '/')
{ {
$target = egw_vfs::dirname($src).'/'.$target; $target = Vfs::dirname($src).'/'.$target;
} }
echo "_ln('$src', '$base')\tsymlink('$base$target', '$dst')\n"; echo "_ln('$src', '$base')\tsymlink('$base$target', '$dst')\n";
symlink($base.$target, $dst); symlink($base.$target, $dst);
@ -862,7 +865,7 @@ function _ln($src, $base, $stat)
} }
else else
{ {
$target = sqlfs_stream_wrapper::_fs_path($stat['ino']); $target = Vfs\Sqlfs\StreamWrapper::_fs_path($stat['ino']);
echo "_ln('$src', '$base')\tlink('$target', '$dst')\n"; echo "_ln('$src', '$base')\tlink('$target', '$dst')\n";
link($target, $dst); link($target, $dst);
} }

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Filemanager: mounting GUI * EGroupware Filemanager: mounting GUI
* *
* @link http://www.egroupware.org/ * @link http://www.egroupware.org/
* @package filemanager * @package filemanager
@ -10,6 +10,9 @@
* @version $Id$ * @version $Id$
*/ */
use EGroupware\Api;
use EGroupware\Api\Framework;
use EGroupware\Api\Etemplate;
use EGroupware\Stylite\Vfs\Versioning; use EGroupware\Stylite\Vfs\Versioning;
use EGroupware\Api\Vfs; use EGroupware\Api\Vfs;
@ -57,11 +60,11 @@ class filemanager_admin extends filemanager_ui
// make sure user has admin rights // make sure user has admin rights
if (!isset($GLOBALS['egw_info']['user']['apps']['admin'])) if (!isset($GLOBALS['egw_info']['user']['apps']['admin']))
{ {
throw new egw_exception_no_permission_admin(); throw new Api\Exception\NoPermission\Admin();
} }
// sudo handling // sudo handling
parent::__construct(); parent::__construct();
self::$is_setup = egw_session::appsession('is_setup','filemanager'); self::$is_setup = Api\Cache::getSession('filemanager', 'is_setup');
if (class_exists('EGroupware\Stylite\Vfs\Versioning\StreamWrapper')) if (class_exists('EGroupware\Stylite\Vfs\Versioning\StreamWrapper'))
{ {
@ -120,7 +123,7 @@ class filemanager_admin extends filemanager_ui
} }
else // re-mount / with sqlFS, to disable versioning else // re-mount / with sqlFS, to disable versioning
{ {
$msg = Vfs::mount($url=sqlfs_stream_wrapper::SCHEME.'://default'.$path,$path) ? $msg = Vfs::mount($url=Vfs\Sqlfs\StreamWrapper::SCHEME.'://default'.$path,$path) ?
lang('Successful mounted %1 on %2.',$url,$path) : lang('Error mounting %1 on %2!',$url,$path); lang('Successful mounted %1 on %2.',$url,$path) : lang('Error mounting %1 on %2!',$url,$path);
} }
} }
@ -154,7 +157,7 @@ class filemanager_admin extends filemanager_ui
} }
if ($content['allow_delete_versions'] != $GLOBALS['egw_info']['server']['allow_delete_versions']) if ($content['allow_delete_versions'] != $GLOBALS['egw_info']['server']['allow_delete_versions'])
{ {
config::save_value('allow_delete_versions', $content['allow_delete_versions'], 'phpgwapi'); Api\Config::save_value('allow_delete_versions', $content['allow_delete_versions'], 'phpgwapi');
$GLOBALS['egw_info']['server']['allow_delete_versions'] = $content['allow_delete_versions']; $GLOBALS['egw_info']['server']['allow_delete_versions'] = $content['allow_delete_versions'];
$msg = lang('Configuration changed.'); $msg = lang('Configuration changed.');
} }
@ -247,7 +250,7 @@ class filemanager_admin extends filemanager_ui
$content['is_setup'] = self::$is_setup; $content['is_setup'] = self::$is_setup;
$content['versioning'] = $this->versioning; $content['versioning'] = $this->versioning;
$content['allow_delete_versions'] = $GLOBALS['egw_info']['server']['allow_delete_versions']; $content['allow_delete_versions'] = $GLOBALS['egw_info']['server']['allow_delete_versions'];
egw_framework::message($msg, $msg_type); Framework::message($msg, $msg_type);
$n = 2; $n = 2;
$content['mounts'] = array(); $content['mounts'] = array();
@ -275,7 +278,7 @@ class filemanager_admin extends filemanager_ui
!isset($GLOBALS['egw_info']['user']['apps']['admin']); !isset($GLOBALS['egw_info']['user']['apps']['admin']);
//_debug_array($content); //_debug_array($content);
$tpl = new etemplate_new('filemanager.admin'); $tpl = new Etemplate('filemanager.admin');
$GLOBALS['egw_info']['flags']['app_header'] = lang('VFS mounts and versioning'); $GLOBALS['egw_info']['flags']['app_header'] = lang('VFS mounts and versioning');
$tpl->exec('filemanager.filemanager_admin.index',$content,$sel_options,$readonlys); $tpl->exec('filemanager.filemanager_admin.index',$content,$sel_options,$readonlys);
} }
@ -287,18 +290,18 @@ class filemanager_admin extends filemanager_ui
{ {
if ($_POST['cancel']) if ($_POST['cancel'])
{ {
egw_framework::redirect_link('/admin/index.php', null, 'admin'); Framework::redirect_link('/admin/index.php', null, 'admin');
} }
$check_only = !isset($_POST['fix']); $check_only = !isset($_POST['fix']);
if (!($msgs = sqlfs_utils::fsck($check_only))) if (!($msgs = Vfs\Sqlfs\Utils::fsck($check_only)))
{ {
$msgs = lang('Filesystem check reported no problems.'); $msgs = lang('Filesystem check reported no problems.');
} }
$content = '<p>'.implode("</p>\n<p>", (array)$msgs)."</p>\n"; $content = '<p>'.implode("</p>\n<p>", (array)$msgs)."</p>\n";
$content .= html::form('<p>'.($check_only&&is_array($msgs)?html::submit_button('fix', lang('Fix reported problems')):''). $content .= Api\Html::form('<p>'.($check_only&&is_array($msgs)?html::submit_button('fix', lang('Fix reported problems')):'').
html::submit_button('cancel', lang('Cancel')).'</p>', Api\Html::submit_button('cancel', lang('Cancel')).'</p>',
'','/index.php',array('menuaction'=>'filemanager.filemanager_admin.fsck')); '','/index.php',array('menuaction'=>'filemanager.filemanager_admin.fsck'));
$GLOBALS['egw']->framework->render($content, lang('Admin').' - '.lang('Check virtual filesystem'), true); $GLOBALS['egw']->framework->render($content, lang('Admin').' - '.lang('Check virtual filesystem'), true);

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* eGroupWare - Hooks for admin, preferences and sidebox-menus * EGroupware - Hooks for admin, preferences and sidebox-menus
* *
* @link http://www.egroupware.org * @link http://www.egroupware.org
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de> * @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
@ -9,6 +9,11 @@
* @version $Id$ * @version $Id$
*/ */
use EGroupware\Api;
use EGroupware\Api\Framework;
use EGroupware\Api\Egw;
use EGroupware\Api\Vfs;
/** /**
* Class containing admin, preferences and sidebox-menus (used as hooks) * Class containing admin, preferences and sidebox-menus (used as hooks)
*/ */
@ -24,7 +29,7 @@ class filemanager_hooks
static function sidebox_menu($args) static function sidebox_menu($args)
{ {
// Magic etemplate2 favorites menu (from nextmatch widget) // Magic etemplate2 favorites menu (from nextmatch widget)
display_sidebox(self::$appname, lang('Favorites'), egw_framework::favorite_list(self::$appname)); display_sidebox(self::$appname, lang('Favorites'), Framework\Favorites::list_favorites(self::$appname));
$location = is_array($args) ? $args['location'] : $args; $location = is_array($args) ? $args['location'] : $args;
$rootpath = '/'; $rootpath = '/';
@ -41,7 +46,7 @@ class filemanager_hooks
// add "file a file" (upload) dialog // add "file a file" (upload) dialog
$file[] = array( $file[] = array(
'text' => 'File a file', 'text' => 'File a file',
'link' => "javascript:egw_openWindowCentered2('".egw::link('/index.php',array( 'link' => "javascript:egw_openWindowCentered2('".Egw::link('/index.php',array(
'menuaction'=>'stylite.stylite_filemanager.upload', 'menuaction'=>'stylite.stylite_filemanager.upload',
),false)."','_blank',550,350)", ),false)."','_blank',550,350)",
'app' => 'phpgwapi', 'app' => 'phpgwapi',
@ -51,9 +56,9 @@ class filemanager_hooks
// add selection for available views, if we have more then one // add selection for available views, if we have more then one
if (count(filemanager_ui::init_views()) > 1) if (count(filemanager_ui::init_views()) > 1)
{ {
$index_url = egw::link('/index.php',array('menuaction' => 'filemanager.filemanager_ui.index'),false); $index_url = Egw::link('/index.php',array('menuaction' => 'filemanager.filemanager_ui.index'),false);
$file[] = array( $file[] = array(
'text' => html::select('filemanager_view',filemanager_ui::get_view(),filemanager_ui::$views,false, 'text' => Api\Html::select('filemanager_view',filemanager_ui::get_view(),filemanager_ui::$views,false,
' onchange="'."egw_appWindow('filemanager').location='$index_url&view='+this.value;". ' onchange="'."egw_appWindow('filemanager').location='$index_url&view='+this.value;".
'" style="width: 100%;"'), '" style="width: 100%;"'),
'no_lang' => True, 'no_lang' => True,
@ -62,22 +67,22 @@ class filemanager_hooks
} }
if ($file_prefs['showhome'] != 'no') if ($file_prefs['showhome'] != 'no')
{ {
$file['Your home directory'] = egw::link('/index.php',array('menuaction'=>self::$appname.'.filemanager_ui.index','path'=>$homepath,'ajax'=>'true')); $file['Your home directory'] = Egw::link('/index.php',array('menuaction'=>self::$appname.'.filemanager_ui.index','path'=>$homepath,'ajax'=>'true'));
} }
if ($file_prefs['showusers'] != 'no') if ($file_prefs['showusers'] != 'no')
{ {
$file['Users and groups'] = egw::link('/index.php',array('menuaction'=>self::$appname.'.filemanager_ui.index','path'=>$basepath,'ajax'=>'true')); $file['Users and groups'] = Egw::link('/index.php',array('menuaction'=>self::$appname.'.filemanager_ui.index','path'=>$basepath,'ajax'=>'true'));
} }
if (!empty($file_prefs['showbase']) && $file_prefs['showbase']=='yes') if (!empty($file_prefs['showbase']) && $file_prefs['showbase']=='yes')
{ {
$file['Basedirectory'] = egw::link('/index.php',array('menuaction'=>self::$appname.'.filemanager_ui.index','path'=>$rootpath,'ajax'=>'true')); $file['Basedirectory'] = Egw::link('/index.php',array('menuaction'=>self::$appname.'.filemanager_ui.index','path'=>$rootpath,'ajax'=>'true'));
} }
if (!empty($file_prefs['startfolder'])) if (!empty($file_prefs['startfolder']))
{ {
$file['Startfolder']= egw::link('/index.php',array('menuaction'=>self::$appname.'.filemanager_ui.index','path'=>$file_prefs['startfolder'],'ajax'=>'true')); $file['Startfolder']= Egw::link('/index.php',array('menuaction'=>self::$appname.'.filemanager_ui.index','path'=>$file_prefs['startfolder'],'ajax'=>'true'));
} }
$file['Placeholders'] = egw::link('/index.php','menuaction=filemanager.filemanager_merge.show_replacements'); $file['Placeholders'] = Egw::link('/index.php','menuaction=filemanager.filemanager_merge.show_replacements');
$file['Shared files'] = egw::link('/index.php','menuaction=filemanager.filemanager_shares.index&ajax=true'); $file['Shared files'] = Egw::link('/index.php','menuaction=filemanager.filemanager_shares.index&ajax=true');
display_sidebox(self::$appname,$title,$file); display_sidebox(self::$appname,$title,$file);
} }
if ($GLOBALS['egw_info']['user']['apps']['admin']) self::admin(self::$appname); if ($GLOBALS['egw_info']['user']['apps']['admin']) self::admin(self::$appname);
@ -93,10 +98,10 @@ class filemanager_hooks
if (is_array($location)) $location = $location['location']; if (is_array($location)) $location = $location['location'];
$file = Array( $file = Array(
//'Site Configuration' => egw::link('/index.php','menuaction=admin.admin_config.index&appname='.self::$appname.'&ajax=true'), //'Site Configuration' => Egw::link('/index.php','menuaction=admin.admin_config.index&appname='.self::$appname.'&ajax=true'),
'Custom fields' => egw::link('/index.php','menuaction=admin.customfields.index&appname='.self::$appname.'&ajax=true'), 'Custom fields' => Egw::link('/index.php','menuaction=admin.customfields.index&appname='.self::$appname.'&ajax=true'),
'Check virtual filesystem' => egw::link('/index.php','menuaction=filemanager.filemanager_admin.fsck'), 'Check virtual filesystem' => Egw::link('/index.php','menuaction=filemanager.filemanager_admin.fsck'),
'VFS mounts and versioning' => egw::link('/index.php', 'menuaction=filemanager.filemanager_admin.index'), 'VFS mounts and versioning' => Egw::link('/index.php', 'menuaction=filemanager.filemanager_admin.index'),
); );
if ($location == 'admin') if ($location == 'admin')
{ {
@ -115,7 +120,7 @@ class filemanager_hooks
*/ */
static function settings() static function settings()
{ {
$config = config::read(self::$appname); $config = Api\Config::read(self::$appname);
if (!empty($config['max_folderlinks'])) self::$foldercount = (int)$config['max_folderlinks']; if (!empty($config['max_folderlinks'])) self::$foldercount = (int)$config['max_folderlinks'];
$yes_no = array( $yes_no = array(
@ -173,7 +178,7 @@ class filemanager_hooks
'name' => 'default_document', 'name' => 'default_document',
'help' => lang('If you specify a document (full vfs path) here, %1 displays an extra document icon for each entry. That icon allows to download the specified document with the data inserted.',lang('filemanager')).' '. 'help' => lang('If you specify a document (full vfs path) here, %1 displays an extra document icon for each entry. That icon allows to download the specified document with the data inserted.',lang('filemanager')).' '.
lang('The document can contain placeholder like {{%1}}, to be replaced with the data.', 'name').' '. lang('The document can contain placeholder like {{%1}}, to be replaced with the data.', 'name').' '.
lang('The following document-types are supported:'). implode(',',bo_merge::get_file_extensions()), lang('The following document-types are supported:'). implode(',',Api\Storage\Merge::get_file_extensions()),
'run_lang' => false, 'run_lang' => false,
'xmlrpc' => True, 'xmlrpc' => True,
'admin' => False, 'admin' => False,
@ -185,7 +190,7 @@ class filemanager_hooks
'name' => 'document_dir', 'name' => 'document_dir',
'help' => lang('If you specify a directory (full vfs path) here, %1 displays an action for each document. That action allows to download the specified document with the %1 data inserted.', lang('filemanager')).' '. 'help' => lang('If you specify a directory (full vfs path) here, %1 displays an action for each document. That action allows to download the specified document with the %1 data inserted.', lang('filemanager')).' '.
lang('The document can contain placeholder like {{%1}}, to be replaced with the data.','name').' '. lang('The document can contain placeholder like {{%1}}, to be replaced with the data.','name').' '.
lang('The following document-types are supported:'). implode(',',bo_merge::get_file_extensions()), lang('The following document-types are supported:'). implode(',',Api\Storage\Merge::get_file_extensions()),
'run_lang' => false, 'run_lang' => false,
'xmlrpc' => True, 'xmlrpc' => True,
'admin' => False, 'admin' => False,
@ -233,7 +238,7 @@ class filemanager_hooks
/** /**
* Register filemanager as handler for directories * Register filemanager as handler for directories
* *
* @return array see egw_link class * @return array see Api\Link class
*/ */
static function search_link() static function search_link()
{ {
@ -244,7 +249,7 @@ class filemanager_hooks
'edit_id' => 'path', 'edit_id' => 'path',
'edit_popup' => '495x425', 'edit_popup' => '495x425',
'mime' => array( 'mime' => array(
egw_vfs::DIR_MIME_TYPE => array( Vfs::DIR_MIME_TYPE => array(
'menuaction' => 'filemanager.filemanager_ui.index', 'menuaction' => 'filemanager.filemanager_ui.index',
'ajax' => 'true', 'ajax' => 'true',
'mime_id' => 'path', 'mime_id' => 'path',

View File

@ -10,11 +10,15 @@
* @version $Id$ * @version $Id$
*/ */
use EGroupware\Api;
use EGroupware\Api\Link;
use EGroupware\Api\Vfs;
/** /**
* Filemanager - document merge object * Filemanager - document merge object
* Only merges information about the files, not the files themselves * Only merges information about the files, not the files themselves
*/ */
class filemanager_merge extends bo_merge class filemanager_merge extends Api\Storage\Merge
{ {
/** /**
* Functions that can be called via menuaction * Functions that can be called via menuaction
@ -61,8 +65,8 @@ class filemanager_merge extends bo_merge
$this->dir = $_dir; $this->dir = $_dir;
} }
// switch of handling of html formated content, if html is not used // switch off handling of html formated content, if html is not used
$this->parse_html_styles = egw_customfields::use_html('filemanager'); $this->parse_html_styles = Api\Storage\Customfields::use_html('filemanager');
} }
/** /**
@ -91,31 +95,31 @@ class filemanager_merge extends bo_merge
public function filemanager_replacements($id,$prefix='', &$content = null) public function filemanager_replacements($id,$prefix='', &$content = null)
{ {
$info = array(); $info = array();
$file = egw_vfs::lstat($id,true); $file = Vfs::lstat($id,true);
$file['mtime'] = egw_time::to($file['mtime']); $file['mtime'] = Api\DateTime::to($file['mtime']);
$file['ctime'] = egw_time::to($file['ctime']); $file['ctime'] = Api\DateTime::to($file['ctime']);
$file['name'] = egw_vfs::basename($id); $file['name'] = Vfs::basename($id);
$file['dir'] = egw_vfs::decodePath(egw_vfs::dirname($id)); $file['dir'] = Vfs::decodePath(Vfs::dirname($id));
$dirlist = explode('/',$file['dir']); $dirlist = explode('/',$file['dir']);
$file['folder'] = array_pop($dirlist); $file['folder'] = array_pop($dirlist);
$file['folder_file'] = $file['folder'] . '/'.$file['name']; $file['folder_file'] = $file['folder'] . '/'.$file['name'];
$file['path'] = $id; $file['path'] = $id;
$file['rel_path'] = str_replace($this->dir.'/', '', $id); $file['rel_path'] = str_replace($this->dir.'/', '', $id);
$file['hsize'] = egw_vfs::hsize($file['size']); $file['hsize'] = Vfs::hsize($file['size']);
$file['mime'] = egw_vfs::mime_content_type($id); $file['mime'] = Vfs::mime_content_type($id);
$file['gid'] *= -1; // our widgets use negative gid's $file['gid'] *= -1; // our widgets use negative gid's
if (($props = egw_vfs::propfind($id))) if (($props = Vfs::propfind($id)))
{ {
foreach($props as $prop) foreach($props as $prop)
{ {
$file[$prop['name']] = $prop['val']; $file[$prop['name']] = $prop['val'];
} }
} }
if (($file['is_link'] = egw_vfs::is_link($id))) if (($file['is_link'] = Vfs::is_link($id)))
{ {
$file['symlink'] = egw_vfs::readlink($id); $file['symlink'] = Vfs::readlink($id);
} }
// Custom fields // Custom fields
if($content && strpos($content, '#') !== 0) if($content && strpos($content, '#') !== 0)
@ -123,7 +127,7 @@ class filemanager_merge extends bo_merge
// Expand link-to custom fields // Expand link-to custom fields
$this->cf_link_to_expand($file, $content, $info); $this->cf_link_to_expand($file, $content, $info);
foreach(config::get_customfields('filemanager') as $name => $field) foreach(Api\Storage\Customfields::get('filemanager') as $name => $field)
{ {
// Set any missing custom fields, or the marker will stay // Set any missing custom fields, or the marker will stay
if(!$file['#'.$name]) if(!$file['#'.$name])
@ -132,11 +136,11 @@ class filemanager_merge extends bo_merge
continue; continue;
} }
// Format date cfs per user preferences // Format date cfs per user Api\Preferences
if($field['type'] == 'date' || $field['type'] == 'date-time') if($field['type'] == 'date' || $field['type'] == 'date-time')
{ {
$this->date_fields[] = '#'.$name; $this->date_fields[] = '#'.$name;
$file['#'.$name] = egw_time::to($file['#'.$name], $field['type'] == 'date' ? true : ''); $file['#'.$name] = Api\DateTime::to($file['#'.$name], $field['type'] == 'date' ? true : '');
} }
} }
} }
@ -149,12 +153,12 @@ class filemanager_merge extends bo_merge
// Symlink? // Symlink?
if(!$app || !(int)$app_id || !array_key_exists($app, $GLOBALS['egw_info']['user']['apps'])) { if(!$app || !(int)$app_id || !array_key_exists($app, $GLOBALS['egw_info']['user']['apps'])) {
// Try resolving just app + ID - /apps/App Name/Record Title/file // Try resolving just app + ID - /apps/App Name/Record Title/file
$resolved = egw_vfs::resolve_url_symlinks(implode('/',array_slice(explode('/',$file['dir']),0,4))); $resolved = Vfs::resolve_url_symlinks(implode('/',array_slice(explode('/',$file['dir']),0,4)));
list($app, $app_id) = explode('/', substr($resolved, strpos($resolved, 'apps/')+5)); list($app, $app_id) = explode('/', substr($resolved, strpos($resolved, 'apps/')+5));
if(!$app || !(int)$app_id || !array_key_exists($app, $GLOBALS['egw_info']['user']['apps'])) { if(!$app || !(int)$app_id || !array_key_exists($app, $GLOBALS['egw_info']['user']['apps'])) {
// Get rid of any virtual folders (eg: All$) and symlinks // Get rid of any virtual folders (eg: All$) and symlinks
$resolved = egw_vfs::resolve_url_symlinks($file['path']); $resolved = Vfs::resolve_url_symlinks($file['path']);
list($app, $app_id) = explode('/', substr($resolved, strpos($resolved, 'apps/')+5)); list($app, $app_id) = explode('/', substr($resolved, strpos($resolved, 'apps/')+5));
} }
} }
@ -182,17 +186,17 @@ class filemanager_merge extends bo_merge
} }
} }
} }
$link = egw_link::mime_open($file['url'], $file['mime']); $link = Link::mime_open($file['url'], $file['mime']);
if(is_array($link)) if(is_array($link))
{ {
// Directories have their internal protocol in path here // Directories have their internal protocol in path here
if($link['path'] && strpos($link['path'], '://') !== false) $link['path'] = $file['path']; if($link['path'] && strpos($link['path'], '://') !== false) $link['path'] = $file['path'];
$link = egw_session::link('/index.php', $link); $link = Api\Session::link('/index.php', $link);
} }
else else
{ {
// Regular files // Regular files
$link = egw_session::link($link); $link = Api\Session::link($link);
} }
// Prepend site, if missing // Prepend site, if missing
@ -201,7 +205,7 @@ class filemanager_merge extends bo_merge
$link = ($_SERVER['HTTPS'] || $GLOBALS['egw_info']['server']['enforce_ssl'] ? 'https://' : 'http://'). $link = ($_SERVER['HTTPS'] || $GLOBALS['egw_info']['server']['enforce_ssl'] ? 'https://' : 'http://').
($GLOBALS['egw_info']['server']['hostname'] ? $GLOBALS['egw_info']['server']['hostname'] : $_SERVER['HTTP_HOST']).$link; ($GLOBALS['egw_info']['server']['hostname'] ? $GLOBALS['egw_info']['server']['hostname'] : $_SERVER['HTTP_HOST']).$link;
} }
$file['link'] = html::a_href(html::htmlspecialchars($file['name']), $link); $file['link'] = Api\Html::a_href(Api\Html::htmlspecialchars($file['name']), $link);
$file['url'] = $link; $file['url'] = $link;
// Add markers // Add markers
@ -218,14 +222,14 @@ class filemanager_merge extends bo_merge
} }
/** /**
* Generate table with replacements for the preferences * Generate table with replacements for the Api\Preferences
* *
*/ */
public function show_replacements() public function show_replacements()
{ {
$GLOBALS['egw_info']['flags']['app_header'] = lang('filemanager').' - '.lang('Replacements for inserting entries into documents'); $GLOBALS['egw_info']['flags']['app_header'] = lang('filemanager').' - '.lang('Replacements for inserting entries into documents');
$GLOBALS['egw_info']['flags']['nonavbar'] = false; $GLOBALS['egw_info']['flags']['nonavbar'] = false;
common::egw_header(); $GLOBALS['egw']->framework->header();
echo "<table width='90%' align='center'>\n"; echo "<table width='90%' align='center'>\n";
echo '<tr><td colspan="4"><h3>'.lang('Filemanager fields:')."</h3></td></tr>"; echo '<tr><td colspan="4"><h3>'.lang('Filemanager fields:')."</h3></td></tr>";
@ -255,7 +259,7 @@ class filemanager_merge extends bo_merge
} }
echo '<tr><td colspan="4"><h3>'.lang('Custom fields').":</h3></td></tr>"; echo '<tr><td colspan="4"><h3>'.lang('Custom fields').":</h3></td></tr>";
foreach(config::get_customfields('filemanager') as $name => $field) foreach(Api\Storage\Customfields::get('filemanager') as $name => $field)
{ {
echo '<tr><td>{{#'.$name.'}}</td><td colspan="3">'.$field['label']."</td></tr>\n"; echo '<tr><td>{{#'.$name.'}}</td><td colspan="3">'.$field['label']."</td></tr>\n";
} }
@ -283,6 +287,6 @@ class filemanager_merge extends bo_merge
echo "</table>\n"; echo "</table>\n";
common::egw_footer(); $GLOBALS['egw']->framework->footer();
} }
} }

View File

@ -1,15 +1,22 @@
<?php <?php
/** /**
* eGroupWare - Filemanager - select file to open or save dialog * EGroupware - Filemanager - select file to open or save dialog
* *
* @link http://www.egroupware.org * @link http://www.egroupware.org
* @package filemanager * @package filemanager
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de> * @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @copyright (c) 2009-2012 by Ralf Becker <RalfBecker-AT-outdoor-training.de> * @copyright (c) 2009-2016 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$ * @version $Id$
*/ */
use EGroupware\Api;
use EGroupware\Api\Link;
use EGroupware\Api\Framework;
use EGroupware\Api\Egw;
use EGroupware\Api\Vfs;
use EGroupware\Api\Etemplate;
/** /**
* Select file to open or save dialog * Select file to open or save dialog
* *
@ -49,7 +56,7 @@ class filemanager_select
// strip slashes from _GET parameters, if someone still has magic_quotes_gpc on // strip slashes from _GET parameters, if someone still has magic_quotes_gpc on
if (get_magic_quotes_gpc() && $_GET) if (get_magic_quotes_gpc() && $_GET)
{ {
$_GET = etemplate::array_stripslashes($_GET); $_GET = array_stripslashes($_GET);
} }
} }
@ -69,17 +76,17 @@ class filemanager_select
$content['msg'] = $_GET['msg']; $content['msg'] = $_GET['msg'];
$_GET['mode'] = 'open'; $_GET['mode'] = 'open';
$_GET['method'] = 'ckeditor_return'; $_GET['method'] = 'ckeditor_return';
$_GET['CKEditorFuncNum'] = egw_cache::getSession('filemanager','ckeditorfuncnum'); $_GET['CKEditorFuncNum'] = Api\Cache::getSession('filemanager','ckeditorfuncnum');
} }
$content['mode'] = $_GET['mode']; $content['mode'] = $_GET['mode'];
if (!in_array($content['mode'],array('open','open-multiple','saveas','select-dir'))) if (!in_array($content['mode'],array('open','open-multiple','saveas','select-dir')))
{ {
throw new egw_exception_wrong_parameter("Wrong or unset required mode parameter!"); throw new Api\Exception\WrongParameter("Wrong or unset required mode parameter!");
} }
$content['path'] = $_GET['path']; $content['path'] = $_GET['path'];
if (empty($content['path'])) if (empty($content['path']))
{ {
$content['path'] = egw_session::appsession('select_path','filemanger'); $content['path'] = Api\Cache::getSession('filemanger', 'select_path');
} }
$content['name'] = (string)$_GET['name']; $content['name'] = (string)$_GET['name'];
$content['method'] = $_GET['method']; $content['method'] = $_GET['method'];
@ -87,12 +94,12 @@ class filemanager_select
{ {
if (isset($_GET['CKEditorFuncNum']) && is_numeric($_GET['CKEditorFuncNum'])) if (isset($_GET['CKEditorFuncNum']) && is_numeric($_GET['CKEditorFuncNum']))
{ {
egw_cache::setSession('filemanager','ckeditorfuncnum', Api\Cache::setSession('filemanager','ckeditorfuncnum',
$content['ckeditorfuncnum'] = $_GET['CKEditorFuncNum']); $content['ckeditorfuncnum'] = $_GET['CKEditorFuncNum']);
} }
else else
{ {
throw new egw_exception_wrong_parameter("chkeditor_return has been specified as a method but some parameters are missing or invalid."); throw new Api\Exception\WrongParameter("chkeditor_return has been specified as a method but some parameters are missing or invalid.");
} }
} }
$content['id'] = $_GET['id']; $content['id'] = $_GET['id'];
@ -104,7 +111,7 @@ class filemanager_select
{ {
if (is_numeric($key)) if (is_numeric($key))
{ {
$sel_options['mime'][$value] = lang('%1 files',strtoupper(mime_magic::mime2ext($value))).' ('.$value.')'; $sel_options['mime'][$value] = lang('%1 files',strtoupper(Api\MimeMagic::mime2ext($value))).' ('.$value.')';
} }
else else
{ {
@ -131,11 +138,11 @@ class filemanager_select
{ {
//Set the "content" name filed accordingly to the uploaded file //Set the "content" name filed accordingly to the uploaded file
// encode chars which special meaning in url/vfs (some like / get removed!) // encode chars which special meaning in url/vfs (some like / get removed!)
$content['name'] = egw_vfs::encodePathComponent($content['file_upload']['name']); $content['name'] = Vfs::encodePathComponent($content['file_upload']['name']);
$to_path = egw_vfs::concat($content['path'],$content['name']); $to_path = Vfs::concat($content['path'],$content['name']);
$copy_result = (egw_vfs::is_writable($content['path']) || egw_vfs::is_writable($to_path)) && $copy_result = (Vfs::is_writable($content['path']) || Vfs::is_writable($to_path)) &&
copy($content['file_upload']['tmp_name'],egw_vfs::PREFIX.$to_path); copy($content['file_upload']['tmp_name'],Vfs::PREFIX.$to_path);
} }
//Break on an error condition //Break on an error condition
@ -159,7 +166,7 @@ class filemanager_select
case 'open-multiple': case 'open-multiple':
foreach((array)$content['dir']['selected'] as $name) foreach((array)$content['dir']['selected'] as $name)
{ {
$files[] = egw_vfs::concat($content['path'],$name); $files[] = Vfs::concat($content['path'],$name);
} }
//Add an uploaded file to the files result array2string //Add an uploaded file to the files result array2string
if ($copy_result === true) $files[] = $to_path; if ($copy_result === true) $files[] = $to_path;
@ -171,11 +178,11 @@ class filemanager_select
case 'saveas': case 'saveas':
// Don't trust the name the user gives, encode it // Don't trust the name the user gives, encode it
$content['name'] = egw_vfs::encodePathComponent($content['name']); $content['name'] = Vfs::encodePathComponent($content['name']);
// Fall through // Fall through
default: default:
$files = egw_vfs::concat($content['path'],$content['name']); $files = Vfs::concat($content['path'],$content['name']);
break; break;
} }
@ -185,16 +192,16 @@ class filemanager_select
} }
else if ($content['method'] == 'ckeditor_return') else if ($content['method'] == 'ckeditor_return')
{ {
$download_url = egw_vfs::download_url(egw_vfs::concat($content['path'],$content['name'])); $download_url = Vfs::download_url(Vfs::concat($content['path'],$content['name']));
if ($download_url[0] == '/') $download_url = egw::link($download_url); if ($download_url[0] == '/') $download_url = Egw::link($download_url);
$js = "window.opener.CKEDITOR.tools.callFunction(". $js = "window.opener.CKEDITOR.tools.callFunction(".
$content['ckeditorfuncnum'].",'". $content['ckeditorfuncnum'].",'".
htmlspecialchars($download_url)."',". htmlspecialchars($download_url)."',".
"'');\negw(window).close();"; "'');\negw(window).close();";
} }
if(egw_json_response::isJSONResponse() && !($content['method'] == 'ckeditor_return')) if(Api\Json\Response::isJSONResponse() && !($content['method'] == 'ckeditor_return'))
{ {
$response = egw_json_response::get(); $response = Api\Json\Response::get();
if($js) if($js)
{ {
$response->script($js); $response->script($js);
@ -205,10 +212,10 @@ class filemanager_select
} }
else else
{ {
header('Content-type: text/html; charset='.translation::charset()); header('Content-type: text/html; charset='.Api\Translation::charset());
echo "<html>\n<head>\n<script type='text/javascript'>\n$js\n</script>\n</head>\n</html>\n"; echo "<html>\n<head>\n<script type='text/javascript'>\n$js\n</script>\n</head>\n</html>\n";
} }
common::egw_exit(); exit();
} }
$sel_options['mime'] = $content['options-mime']; $sel_options['mime'] = $content['options-mime'];
@ -221,7 +228,7 @@ class filemanager_select
//Deactivate the opload field if the current directory is not writeable or //Deactivate the opload field if the current directory is not writeable or
//we're currently not in the single file open mode. //we're currently not in the single file open mode.
$content['no_upload'] = !egw_vfs::is_writable($content['path']) || $content['no_upload'] = !Vfs::is_writable($content['path']) ||
!in_array($content['mode'],array('open')); !in_array($content['mode'],array('open'));
$content['apps'] = array_keys(self::get_apps()); $content['apps'] = array_keys(self::get_apps());
@ -234,17 +241,17 @@ class filemanager_select
// Set a flag for easy detection as we go // Set a flag for easy detection as we go
$favorites_flag = substr($content['path'],0,strlen('/apps/favorites')) == '/apps/favorites'; $favorites_flag = substr($content['path'],0,strlen('/apps/favorites')) == '/apps/favorites';
if (!$favorites_flag && (!$content['path'] || !egw_vfs::is_dir($content['path']))) if (!$favorites_flag && (!$content['path'] || !Vfs::is_dir($content['path'])))
{ {
$content['path'] = filemanager_ui::get_home_dir(); $content['path'] = filemanager_ui::get_home_dir();
} }
$tpl = new etemplate_new('filemanager.select'); $tpl = new Etemplate('filemanager.select');
if ($favorites_flag) if ($favorites_flag)
{ {
// Display favorites as if they were folders // Display favorites as if they were folders
$files = array(); $files = array();
$favorites = egw_favorites::get_favorites('filemanager'); $favorites = Framework\Favorites::get_favorites('filemanager');
$n = 0; $n = 0;
foreach($favorites as $favorite) foreach($favorites as $favorite)
{ {
@ -253,7 +260,7 @@ class filemanager_select
if(!$path) continue; if(!$path) continue;
if ($path == $content['path']) continue; // remove directory itself if ($path == $content['path']) continue; // remove directory itself
$mime = egw_vfs::mime_content_type($path); $mime = Vfs::mime_content_type($path);
$content['dir'][$n] = array( $content['dir'][$n] = array(
'name' => $favorite['name'], 'name' => $favorite['name'],
'path' => $path, 'path' => $path,
@ -267,7 +274,7 @@ class filemanager_select
++$n; ++$n;
} }
} }
else if (!($files = egw_vfs::find($content['path'],array( else if (!($files = Vfs::find($content['path'],array(
'dirsontop' => true, 'dirsontop' => true,
'order' => 'name', 'order' => 'name',
'sort' => 'ASC', 'sort' => 'ASC',
@ -284,9 +291,9 @@ class filemanager_select
{ {
if ($path == $content['path']) continue; // remove directory itself if ($path == $content['path']) continue; // remove directory itself
$name = egw_vfs::basename($path); $name = Vfs::basename($path);
$is_dir = egw_vfs::is_dir($path); $is_dir = Vfs::is_dir($path);
$mime = egw_vfs::mime_content_type($path); $mime = Vfs::mime_content_type($path);
if ($content['mime'] && !$is_dir && $mime != $content['mime']) if ($content['mime'] && !$is_dir && $mime != $content['mime'])
{ {
continue; // does not match mime-filter --> ignore continue; // does not match mime-filter --> ignore
@ -305,10 +312,10 @@ class filemanager_select
} }
if (!$n) $readonlys['selected[]'] = true; // remove checkbox from empty line if (!$n) $readonlys['selected[]'] = true; // remove checkbox from empty line
} }
$readonlys['button[createdir]'] = !egw_vfs::is_writable($content['path']); $readonlys['button[createdir]'] = !Vfs::is_writable($content['path']);
//_debug_array($readonlys); //_debug_array($readonlys);
egw_session::appsession('select_path','filemanger',$content['path']); Api\Cache::setSession('filemanger', 'select_path', $content['path']);
$preserve = array( $preserve = array(
'mode' => $content['mode'], 'mode' => $content['mode'],
'method' => $content['method'], 'method' => $content['method'],
@ -328,7 +335,7 @@ class filemanager_select
// tell framework we need inline javascript for ckeditor_return // tell framework we need inline javascript for ckeditor_return
if ($content['method'] == 'ckeditor_return') if ($content['method'] == 'ckeditor_return')
{ {
egw_framework::csp_script_src_attrs('unsafe-inline'); Api\Header\ContentSecurityPolicy::add('script-src', 'unsafe-inline');
} }
$tpl->exec('filemanager.filemanager_select.select',$content,$sel_options,$readonlys,$preserve,2); $tpl->exec('filemanager.filemanager_select.select',$content,$sel_options,$readonlys,$preserve,2);
} }
@ -342,7 +349,7 @@ class filemanager_select
{ {
$apps = array(false); // index starting from 1 $apps = array(false); // index starting from 1
if (isset($GLOBALS['egw_info']['apps']['stylite'])) $apps = array('favorites' => lang('Favorites')); if (isset($GLOBALS['egw_info']['apps']['stylite'])) $apps = array('favorites' => lang('Favorites'));
$apps += egw_link::app_list('query'); $apps += Link::app_list('query');
unset($apps['mydms']); // they do NOT support adding files to VFS unset($apps['mydms']); // they do NOT support adding files to VFS
unset($apps['wiki']); unset($apps['wiki']);

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* Filemanager: shares * EGroupware Filemanager: shares
* *
* @link http://www.egroupware.org/ * @link http://www.egroupware.org/
* @package filemanager * @package filemanager
@ -11,6 +11,8 @@
*/ */
use EGroupware\Api; use EGroupware\Api;
use EGroupware\Api\Framework;
use EGroupware\Api\Etemplate;
use EGroupware\Api\Vfs\Sharing; use EGroupware\Api\Vfs\Sharing;
/** /**
@ -162,7 +164,7 @@ class filemanager_shares extends filemanager_ui
{ {
$where['share_id'] = $content['nm']['selected']; $where['share_id'] = $content['nm']['selected'];
} }
egw_framework::message(lang('%1 shares deleted.', Sharing::delete($where)), 'success'); Framework::message(lang('%1 shares deleted.', Sharing::delete($where)), 'success');
break; break;
default: default:
throw new Api\Exception\WrongParameter("Unknown action '{$content['nm']['action']}'!"); throw new Api\Exception\WrongParameter("Unknown action '{$content['nm']['action']}'!");
@ -180,7 +182,7 @@ class filemanager_shares extends filemanager_ui
); );
unset($sel_options['type'][Sharing::ATTACH]); unset($sel_options['type'][Sharing::ATTACH]);
$tpl = new Api\Etemplate('filemanager.shares'); $tpl = new Etemplate('filemanager.shares');
$tpl->exec('filemanager.filemanager_shares.index', $content, $sel_options, null, $content); $tpl->exec('filemanager.filemanager_shares.index', $content, $sel_options, null, $content);
} }
} }

View File

@ -1,6 +1,6 @@
<?php <?php
/** /**
* eGroupWare - Filemanager - user interface * EGroupware - Filemanager - user interface
* *
* @link http://www.egroupware.org * @link http://www.egroupware.org
* @package filemanager * @package filemanager
@ -11,6 +11,11 @@
*/ */
use EGroupware\Api; use EGroupware\Api;
use EGroupware\Api\Link;
use EGroupware\Api\Framework;
use EGroupware\Api\Egw;
use EGroupware\Api\Etemplate;
use EGroupware\Api\Vfs; use EGroupware\Api\Vfs;
/** /**
@ -53,7 +58,7 @@ class filemanager_ui
// strip slashes from _GET parameters, if someone still has magic_quotes_gpc on // strip slashes from _GET parameters, if someone still has magic_quotes_gpc on
if (get_magic_quotes_gpc() && $_GET) if (get_magic_quotes_gpc() && $_GET)
{ {
$_GET = etemplate::array_stripslashes($_GET); $_GET = array_stripslashes($_GET);
} }
// do we have root rights // do we have root rights
if (Api\Cache::getSession('filemanager', 'is_root')) if (Api\Cache::getSession('filemanager', 'is_root'))
@ -80,7 +85,7 @@ class filemanager_ui
$label = lang($label); $label = lang($label);
} }
// search for plugins with additional filemanager views // search for plugins with additional filemanager views
foreach($GLOBALS['egw']->hooks->process('filemanager_views') as $views) foreach(Api\Hooks::process('filemanager_views') as $views)
{ {
if (is_array($views)) static::$views += $views; if (is_array($views)) static::$views += $views;
} }
@ -385,16 +390,16 @@ class filemanager_ui
*/ */
function listview(array $content=null,$msg=null) function listview(array $content=null,$msg=null)
{ {
$tpl = new Api\Etemplate('filemanager.index'); $tpl = new Etemplate('filemanager.index');
if($msg) egw_framework::message($msg); if($msg) Framework::message($msg);
if (($content['nm']['action'] || $content['nm']['rows']) && (empty($content['button']) || !isset($content['button']))) if (($content['nm']['action'] || $content['nm']['rows']) && (empty($content['button']) || !isset($content['button'])))
{ {
if ($content['nm']['action']) if ($content['nm']['action'])
{ {
$msg = static::action($content['nm']['action'],$content['nm']['selected'],$content['nm']['path']); $msg = static::action($content['nm']['action'],$content['nm']['selected'],$content['nm']['path']);
if($msg) egw_framework::message($msg); if($msg) Framework::message($msg);
// clean up after action // clean up after action
unset($content['nm']['selected']); unset($content['nm']['selected']);
@ -408,7 +413,7 @@ class filemanager_ui
elseif($content['nm']['rows']['delete']) elseif($content['nm']['rows']['delete'])
{ {
$msg = static::action('delete',array_keys($content['nm']['rows']['delete']),$content['nm']['path']); $msg = static::action('delete',array_keys($content['nm']['rows']['delete']),$content['nm']['path']);
if($msg) egw_framework::message($msg); if($msg) Framework::message($msg);
// clean up after action // clean up after action
unset($content['nm']['rows']['delete']); unset($content['nm']['rows']['delete']);
@ -440,7 +445,7 @@ class filemanager_ui
case 'upload': case 'upload':
if (!$content['upload']) if (!$content['upload'])
{ {
egw_framework::message(lang('You need to select some files first!'),'error'); Framework::message(lang('You need to select some files first!'),'error');
break; break;
} }
$upload_success = $upload_failure = array(); $upload_success = $upload_failure = array();
@ -462,12 +467,12 @@ class filemanager_ui
$content['nm']['msg'] = ''; $content['nm']['msg'] = '';
if ($upload_success) if ($upload_success)
{ {
egw_framework::message( count($upload_success) == 1 && !$upload_failure ? lang('File successful uploaded.') : Framework::message( count($upload_success) == 1 && !$upload_failure ? lang('File successful uploaded.') :
lang('%1 successful uploaded.',implode(', ',$upload_success))); lang('%1 successful uploaded.',implode(', ',$upload_success)));
} }
if ($upload_failure) if ($upload_failure)
{ {
egw_framework::message(lang('Error uploading file!')."\n".etemplate::max_upload_size_message(),'error'); Framework::message(lang('Error uploading file!')."\n".etemplate::max_upload_size_message(),'error');
} }
break; break;
} }
@ -807,7 +812,7 @@ class filemanager_ui
{ {
// we will leave here, since we are not allowed, or the location does not exist. Index must handle that, and give // we will leave here, since we are not allowed, or the location does not exist. Index must handle that, and give
// an appropriate message // an appropriate message
egw::redirect_link('/index.php',array('menuaction'=>'filemanager.filemanager_ui.index', Egw::redirect_link('/index.php',array('menuaction'=>'filemanager.filemanager_ui.index',
'path' => $path, 'path' => $path,
'msg' => lang('The requested path %1 is not available.',Vfs::decodePath($query['path'])), 'msg' => lang('The requested path %1 is not available.',Vfs::decodePath($query['path'])),
'ajax' => 'true' 'ajax' => 'true'
@ -926,7 +931,7 @@ class filemanager_ui
*/ */
function file(array $content=null,$msg='') function file(array $content=null,$msg='')
{ {
$tpl = new Api\Etemplate('filemanager.file'); $tpl = new Etemplate('filemanager.file');
if (!is_array($content)) if (!is_array($content))
{ {
@ -1031,7 +1036,7 @@ class filemanager_ui
$msg .= lang('Renamed %1 to %2.',Vfs::decodePath(basename($path)),Vfs::decodePath(basename($to))).' '; $msg .= lang('Renamed %1 to %2.',Vfs::decodePath(basename($path)),Vfs::decodePath(basename($to))).' ';
$content['old']['name'] = $content[$name]; $content['old']['name'] = $content[$name];
$path = $to; $path = $to;
$content['mime'] = mime_magic::filename2mime($path); // recheck mime type $content['mime'] = Api\MimeMagic::filename2mime($path); // recheck mime type
$refresh_path = Vfs::dirname($path); // for renames, we have to refresh the parent $refresh_path = Vfs::dirname($path); // for renames, we have to refresh the parent
} }
else else
@ -1154,14 +1159,14 @@ class filemanager_ui
} }
} }
} }
egw_framework::refresh_opener($msg, 'filemanager', $refresh_path ? $refresh_path : $path, 'edit', null, '&path=[^&]*'); Framework::refresh_opener($msg, 'filemanager', $refresh_path ? $refresh_path : $path, 'edit', null, '&path=[^&]*');
if ($button == 'save') egw_framework::window_close(); if ($button == 'save') Framework::window_close();
} }
if ($content['is_link'] && !Vfs::stat($path)) if ($content['is_link'] && !Vfs::stat($path))
{ {
$msg .= ($msg ? "\n" : '').lang('Link target %1 not found!',$content['symlink']); $msg .= ($msg ? "\n" : '').lang('Link target %1 not found!',$content['symlink']);
} }
$content['link'] = egw::link(Vfs::download_url($path)); $content['link'] = Egw::link(Vfs::download_url($path));
$content['icon'] = Vfs::mime_icon($content['mime']); $content['icon'] = Vfs::mime_icon($content['mime']);
$content['msg'] = $msg; $content['msg'] = $msg;
@ -1242,7 +1247,7 @@ class filemanager_ui
$content['mergeapp_effective'] = null; $content['mergeapp_effective'] = null;
} }
// mergeapp select options // mergeapp select options
$mergeapp_list = Api\Link::app_list('merge'); $mergeapp_list = Link::app_list('merge');
unset($mergeapp_list[$GLOBALS['egw_info']['flags']['currentapp']]); // exclude filemanager from list unset($mergeapp_list[$GLOBALS['egw_info']['flags']['currentapp']]); // exclude filemanager from list
$mergeapp_empty = !empty($content['mergeapp_parent']) $mergeapp_empty = !empty($content['mergeapp_parent'])
? $mergeapp_list[$content['mergeapp_parent']] . ' (parent setting)' : ''; ? $mergeapp_list[$content['mergeapp_parent']] . ' (parent setting)' : '';
@ -1309,7 +1314,7 @@ class filemanager_ui
} }
} }
} }
egw_framework::window_focus(); Framework::window_focus();
$GLOBALS['egw_info']['flags']['app_header'] = lang('Preferences').' '.Vfs::decodePath($path); $GLOBALS['egw_info']['flags']['app_header'] = lang('Preferences').' '.Vfs::decodePath($path);
$tpl->exec('filemanager.filemanager_ui.file',$content,$sel_options,$readonlys,$preserve,2); $tpl->exec('filemanager.filemanager_ui.file',$content,$sel_options,$readonlys,$preserve,2);
@ -1407,7 +1412,7 @@ class filemanager_ui
case 'link': case 'link':
// First upload // First upload
$arr = static::ajax_action('upload', $selected, $dir, $props); $arr = static::ajax_action('upload', $selected, $dir, $props);
$app_dir = Api\Link::vfs_path($props['entry']['app'],$props['entry']['id'],'',true); $app_dir = Link::vfs_path($props['entry']['app'],$props['entry']['id'],'',true);
foreach($arr['uploaded'] as $file) foreach($arr['uploaded'] as $file)
{ {

View File

@ -1,50 +0,0 @@
<?php
/**
* EGroupware - eTemplates for Application filemanager
* http://www.egroupware.org
* generated by soetemplate::dump4setup() 2013-04-20 21:19
*
* @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.7.001','data' => 'a:1:{i:0;a:4:{s:4:"type";s:4:"grid";s:4:"data";a:5:{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:54:"General|Permissions|Extended ACL|Preview|Custom fields";s:4:"name";s:38:"tabs=general|perms|eacl|preview|custom";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: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();";}}i:2;a:6:{s:4:"type";s:10:"buttononly";s:5:"label";s:9:"Superuser";s:5:"align";s:5:"right";s:4:"help";s:48:"Enter setup user and password to get root rights";s:7:"onclick";s:121:"set_style_by_class(\'fieldset\',\'superuser\',\'display\',\'inline\'); document.getElementById(form::name(\'sudo[user]\')).focus();";s:4:"name";s:4:"sudo";}}}i:4;a:1:{s:1:"A";a:5:{s:4:"type";s:8:"groupbox";s:4:"size";s:1:"1";s:5:"label";s:29:"Enter setup user and password";i:1;a:5:{s:4:"type";s:4:"grid";s:4:"data";a:4:{i:0;a:0:{}i:1;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:5:"label";s:4:"User";s:4:"size";s:13:",,,sudo[user]";}s:1:"B";a:2:{s:4:"type";s:4:"text";s:4:"name";s:10:"sudo[user]";}}i:2;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:5:"label";s:8:"Password";s:4:"size";s:15:",,,sudo[passwd]";}s:1:"B";a:2:{s:4:"type";s:6:"passwd";s:4:"name";s:12:"sudo[passwd]";}}i:3;a:2:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:3:{s:4:"type";s:6:"button";s:5:"label";s:6:"Submit";s:4:"name";s:13:"button[setup]";}}}s:7:"options";a:0:{}s:4:"rows";i:3;s:4:"cols";i:2;}s:4:"span";s:10:",superuser";}}}s:4:"rows";i:4;s:4:"cols";i:1;}}','size' => '','style' => '.eaclAccount select,.eaclRights select { width: 160px; }
.superuser {
position: absolute;
top: 130px;
left: 120px;
width: 200px;
background-color: white;
z-index: 1;
display: none;
}','modified' => '1223224423',);
$templ_data[] = array('name' => 'filemanager.file.custom','template' => '','lang' => '','group' => '0','version' => '1.5.001','data' => 'a:1:{i:0;a:5:{s:4:"type";s:4:"grid";s:4:"data";a:2:{i:0;a:1:{s:2:"c1";s:4:",top";}i:1;a:1:{s:1:"A";a:1:{s:4:"type";s:12:"customfields";}}}s:4:"rows";i:1;s:4:"cols";i:1;s:4:"size";s:18:"450,300,,,10,,auto";}}','size' => '450,300,,,10,,auto','style' => '','modified' => '1223224487',);
$templ_data[] = array('name' => 'filemanager.file.eacl','template' => '','lang' => '','group' => '0','version' => '1.9.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:4:{s:2:"c1";s:4:",top";s:2:"c2";s:7:",bottom";s:2:"h2";s:11:",!@is_owner";s:2:"h1";s:3:"200";}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:14:"100%,,,,,,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:2:{i:0;s:4:"100%";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:5:{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:4:"help";s:67:"You can only grant additional rights, you can NOT take rights away!";}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.7.002','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:10:{i:0;a:4:{s:1:"A";s:2:"80";s:2:"h1";s:2:"60";s:2:"h3";s:10:",!@is_link";s:2:"h6";s:9:",@is_link";}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:8:"vfs-name";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:3:{s:4:"type";s:5:"label";s:5:"label";s:4:"Link";s:4:"size";s:10:",,,symlink";}s:1:"B";a:4:{s:4:"type";s:4:"text";s:4:"span";s:9:",fileName";s:4:"name";s:7:"symlink";s:8:"readonly";s:1:"1";}}i:4;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:5;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:6;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:8:"vfs-size";s:4:"name";s:4:"size";s:4:"size";s:1:"1";}}i:7;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:8;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:9;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:10:",,,comment";s:5:"label";s:7:"Comment";}s:1:"B";a:3:{s:4:"type";s:8:"textarea";s:4:"name";s:7:"comment";s:4:"span";s:8:",comment";}}}s:4:"rows";i:9;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:2:",1";s:2:"h4";s:8:",@is_dir";}i:1;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:5:"Owner";}s:1:"B";a:2:{s:4:"type";s:6:"select";s:4:"name";s:12:"perms[owner]";}}i:2;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:5:"Group";}s:1:"B";a:2:{s:4:"type";s:6:"select";s:4:"name";s:12:"perms[group]";}}i:3;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:5:"Other";}s:1:"B";a:2:{s:4:"type";s:6:"select";s:4:"name";s:12:"perms[other]";}}i:4;a:2:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:3:{s:4:"type";s:8:"checkbox";s:5:"label";s:10:"Executable";s:4:"name";s:17:"perms[executable]";}}i:5;a:2:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:3:{s:4:"type";s:8:"checkbox";s:5:"label";s:43:"Only owner can rename or delete the content";s:4:"name";s:13:"perms[sticky]";}}}s:4:"rows";i:5;s:4:"cols";i:2;s:7:"options";a:0:{}}}}i:2;a:1:{s:1:"A";a:4:{s:4:"type";s:8:"groupbox";s:4:"size";s:1:"1";s:5:"label";s:5:"Owner";i:1;a:5:{s:4:"type";s:4:"grid";s:7:"options";a:0:{}s:4:"data";a:3:{i:0;a:1:{s:1:"A";s:2:"80";}i:1;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:4:"User";}s:1:"B";a:4:{s:4:"type";s:14:"select-account";s:4:"size";s:13:"root,accounts";s:4:"name";s:3:"uid";s:5:"label";s:12:"@ro_uid_root";}}i:2;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:5:"Group";}s:1:"B";a:4:{s:4:"type";s:14:"select-account";s:4:"size";s:11:"root,groups";s:4:"name";s:3:"gid";s:5:"label";s:12:"@ro_gid_root";}}}s:4:"rows";i:2;s:4:"cols";i:2;}}}i:3;a:1:{s:1:"A";a:3:{s:4:"type";s:8:"checkbox";s:5:"label";s:43:"Modify all Subdirectories and their content";s:4:"name";s:11:"modify_subs";}}}s:4:"rows";i:3;s:4:"cols";i:1;s:4:"size";s:12:"450,300,,,10";s:7:"options";a:3:{i:0;s:3:"450";i:1;s:3:"300";i:4;s:2:"10";}}}','size' => '450,300,,,10','style' => '','modified' => '1204567746',);
$templ_data[] = array('name' => 'filemanager.file.preview','template' => '','lang' => '','group' => '0','version' => '1.5.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:4:{i:0;a:5:{s:2:"c1";s:4:",top";s:2:"h1";s:16:",!@mime=/^image/";s:2:"h3";s:22:",@mime=/^(image|text)/";s:2:"h2";s:18:"280,!@text_content";s:2:"c2";s:4:",top";}i:1;a:1:{s:1:"A";a:3:{s:4:"type";s:5:"image";s:4:"name";s:4:"link";s:4:"span";s:13:",previewImage";}}i:2;a:1:{s:1:"A";a:4:{s:4:"type";s:8:"textarea";s:4:"name";s:12:"text_content";s:4:"span";s:12:",previewText";s:8:"readonly";s:1:"1";}}i:3;a:1:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:20:"No preview available";}}}s:4:"rows";i:3;s:4:"cols";i:1;s:4:"size";s:18:"450,300,,,10,,auto";s:7:"options";a:4:{i:0;s:3:"450";i:1;s:3:"300";i:6;s:4:"auto";i:4;s:2:"10";}}}','size' => '450,300,,,10,,auto','style' => '','modified' => '1204567479',);
$templ_data[] = array('name' => 'filemanager.index','template' => '','lang' => '','group' => '0','version' => '1.9.003','data' => 'a:2:{i:0;a:3:{s:4:"name";s:3:"msg";s:4:"type";s:5:"label";s:4:"span";s:10:",redItalic";}i:1;a:3:{s:4:"name";s:2:"nm";s:4:"type";s:9:"nextmatch";s:4:"size";s:53:"filemanager.index.rows,,filemanager.index.header_left";}}','size' => '','style' => 'input[type=\'file\'] {
width: 50ex
}','modified' => '1365608331',);
$templ_data[] = array('name' => 'filemanager.index.header_left','template' => '','lang' => '','group' => '0','version' => '1.9.002','data' => 'a:1:{i:0;a:16:{s:4:"span";s:3:"all";s:4:"type";s:4:"hbox";s:4:"size";s:2:"13";i:1;a:4:{s:5:"label";s:2:"Up";s:7:"onclick";s:33:"app.filemanager.change_dir(\'..\');";s:4:"type";s:5:"image";s:4:"name";s:4:"goup";}i:2;a:4:{s:5:"label";s:25:"Go to your home directory";s:7:"onclick";s:32:"app.filemanager.change_dir(\'~\');";s:4:"type";s:5:"image";s:4:"name";s:6:"gohome";}i:3;a:6:{s:5:"label";s:4:"Path";s:8:"onchange";s:12:"return true;";s:4:"name";s:4:"path";s:4:"size";s:2:"80";s:4:"type";s:8:"vfs-name";s:4:"span";s:8:",address";}i:4;a:4:{s:5:"label";s:5:"Go to";s:4:"name";s:10:"button[go]";s:4:"type";s:6:"button";s:4:"size";s:9:"key_enter";}i:5;a:2:{s:4:"type";s:5:"image";s:4:"name";s:15:"buttonseparator";}i:6;a:6:{s:5:"label";s:13:"Edit settings";s:7:"onclick";s:28:"app.filemanager.editprefs();";s:4:"name";s:12:"button[edit]";s:4:"type";s:10:"buttononly";s:4:"size";s:4:"edit";s:4:"help";s:39:"Rename, change permissions or ownership";}i:7;a:5:{s:5:"label";s:16:"Create directory";s:7:"onclick";s:28:"app.filemanager.createdir();";s:4:"name";s:17:"button[createdir]";s:4:"type";s:10:"buttononly";s:4:"size";s:35:"button_createdir,createdir_disabled";}i:8;a:5:{s:5:"label";s:13:"Create a link";s:7:"onclick";s:26:"app.filemanager.symlink();";s:4:"name";s:15:"button[symlink]";s:4:"type";s:10:"buttononly";s:4:"size";s:18:"link,link_disabled";}i:9;a:4:{s:7:"onclick";s:31:"app.filemanager.paste(\'paste\');";s:4:"name";s:13:"button[paste]";s:4:"size";s:28:"editpaste,editpaste_disabled";s:4:"type";s:10:"buttononly";}i:10;a:4:{s:7:"onclick";s:35:"app.filemanager.paste(\'linkpaste\');";s:4:"name";s:17:"button[linkpaste]";s:4:"size";s:28:"linkpaste,linkpaste_disabled";s:4:"type";s:10:"buttononly";}i:11;a:4:{s:7:"onclick";s:35:"app.filemanager.paste(\'mailpaste\');";s:4:"name";s:17:"button[mailpaste]";s:4:"size";s:28:"mailpaste,mailpaste_disabled";s:4:"type";s:10:"buttononly";}i:12;a:4:{s:5:"label";s:11:"File a file";s:7:"onclick";s:171:"window.open(egw::link(\'/index.php\',\'menuaction=stylite.stylite_filemanager.upload\'),\'_blank\',\'dependent=yes,width=550,height=350,scrollbars=yes,status=yes\'); return false;";s:4:"type";s:6:"button";s:4:"size";s:6:"upload";}i:13;a:3:{s:4:"name";s:6:"upload";s:4:"type";s:4:"file";s:4:"help";s:42:"Select file to upload in current directory";}}}','size' => '','style' => '','modified' => '1365608384',);
$templ_data[] = array('name' => 'filemanager.index.rows','template' => '','lang' => '','group' => '0','version' => '1.7.002','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:6:{s:2:"c1";s:2:"th";s:2:"c2";s:20:"row $row_cont[class]";s:1:"B";s:3:"30%";s:1:"D";s:3:"120";s:1:"E";s:3:"120";s:1:"K";s:2:"70";}i:1;a:11:{s:1:"A";a:4:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:4:"Type";s:4:"name";s:4:"mime";s:5:"align";s:6:"center";}s:1:"B";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:4:"Name";s:4:"name";s:4:"name";}s:1:"C";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:4:"Size";s:4:"name";s:4:"size";}s:1:"D";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:8:"Modified";s:4:"name";s:5:"mtime";}s:1:"E";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:7:"Created";s:4:"name";s:5:"ctime";}s:1:"F";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:11:"Permissions";s:4:"name";s:4:"mode";}s:1:"G";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:4:"name";s:3:"uid";s:5:"label";s:5:"Owner";}s:1:"H";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:4:"name";s:3:"gid";s:5:"label";s:5:"Group";}s:1:"I";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:7:"Comment";s:4:"name";s:7:"comment";}s:1:"J";a:3:{s:4:"type";s:22:"nextmatch-customfields";s:8:"readonly";s:1:"1";s:4:"name";s:12:"customfields";}s:1:"K";a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:6:"2,,0,0";i:1;a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:7:"Actions";s:4:"name";s:14:"legacy_actions";}i:2;a:8:{s:4:"type";s:6:"button";s:4:"size";s:5:"check";s:5:"label";s:9:"Check all";s:4:"name";s:9:"check_all";s:4:"help";s:9:"Check all";s:7:"onclick";s:98:"egw_globalObjectManager.getObjectById(\'filemanager.index.rows\').toggleAllSelected(); return false;";s:6:"needed";s:1:"1";s:5:"align";s:5:"right";}}}i:2;a:11:{s:1:"A";a:3:{s:4:"type";s:8:"vfs-mime";s:4:"name";s:4:"$row";s:5:"align";s:6:"center";}s:1:"B";a:4:{s:4:"type";s:8:"vfs-name";s:4:"name";s:12:"${row}[name]";s:7:"no_lang";s:1:"1";s:8:"readonly";s:1:"1";}s:1:"C";a:3:{s:4:"type";s:8:"vfs-size";s:4:"name";s:12:"${row}[size]";s:5:"align";s:5:"right";}s:1:"D";a:3:{s:4:"type";s:9:"date-time";s:4:"name";s:13:"${row}[mtime]";s:8:"readonly";s:1:"1";}s:1:"E";a:3:{s:4:"type";s:9:"date-time";s:4:"name";s:13:"${row}[ctime]";s:8:"readonly";s:1:"1";}s:1:"F";a:2:{s:4:"type";s:8:"vfs-mode";s:4:"name";s:12:"${row}[mode]";}s:1:"G";a:3:{s:4:"type";s:7:"vfs-uid";s:4:"name";s:11:"${row}[uid]";s:7:"no_lang";s:1:"1";}s:1:"H";a:3:{s:4:"type";s:7:"vfs-gid";s:4:"name";s:11:"${row}[gid]";s:7:"no_lang";s:1:"1";}s:1:"I";a:2:{s:4:"type";s:5:"label";s:4:"name";s:15:"${row}[comment]";}s:1:"J";a:3:{s:4:"type";s:17:"customfields-list";s:4:"name";s:4:"$row";s:4:"span";s:13:",customfields";}s:1:"K";a:7:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"4";i:1;a:6:{s:4:"type";s:6:"button";s:4:"size";s:4:"edit";s:5:"label";s:13:"Edit settings";s:4:"name";s:21:"edit[$row_cont[path]]";s:4:"help";s:39:"Rename, change permissions or ownership";s:7:"onclick";s:192:"window.open(egw::link(\'/index.php\',\'menuaction=filemanager.filemanager_ui.file&path=$row_cont[path]\'),\'fileprefs\',\'dependent=yes,width=495,height=425,scrollbars=yes,status=yes\'); return false;";}i:2;a:5:{s:4:"type";s:10:"buttononly";s:4:"size";s:12:"mail_post_to";s:4:"name";s:21:"mail[$row_cont[path]]";s:7:"onclick";s:43:"open_mail(\'$row_cont[path]\'); return false;";s:5:"align";s:6:"center";}i:3;a:7:{s:4:"type";s:6:"button";s:4:"name";s:23:"delete[$row_cont[path]]";s:4:"size";s:6:"delete";s:5:"label";s:6:"Delete";s:4:"help";s:29:"Delete this file or directory";s:7:"onclick";s:48:"return confirm(\'Delete this file or directory\');";s:5:"align";s:6:"center";}s:5:"align";s:5:"right";i:4;a:4:{s:4:"type";s:8:"checkbox";s:4:"name";s:9:"checked[]";s:5:"align";s:5:"right";s:4:"size";s:17:""$row_cont[path]"";}}}}s:4:"rows";i:2;s:4:"cols";i:11;s:4:"size";s:4:"100%";s:7:"options";a:1:{i:0;s:4:"100%";}}}','size' => '100%','style' => '','modified' => '1259329664',);
$templ_data[] = array('name' => 'filemanager.search','template' => '','lang' => '','group' => '0','version' => '1.3.001','data' => 'a:4:{i:0;a:9:{s:4:"type";s:8:"groupbox";s:4:"name";s:10:"debuginfos";s:4:"size";s:1:"4";s:5:"label";s:10:"Debuginfos";s:8:"disabled";s:1:"1";i:1;a:3:{s:4:"type";s:8:"textarea";s:4:"name";s:7:"message";s:8:"readonly";s:1:"1";}i:2;a:1:{s:4:"type";s:5:"label";}i:3;a:1:{s:4:"type";s:5:"label";}i:4;a:1:{s:4:"type";s:5:"label";}}i:1;a:4:{s:4:"type";s:4:"grid";s:4:"data";a:7:{i:0;a:2:{s:1:"C";s:3:"120";s:1:"D";s:3:"120";}i:1;a:5:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:5:"label";s:12:"searchstring";s:4:"name";s:17:"searchstringlabel";}s:1:"B";a:3:{s:4:"type";s:4:"text";s:4:"span";s:1:"2";s:4:"name";s:12:"searchstring";}s:1:"C";a:1:{s:4:"type";s:5:"label";}s:1:"D";a:3:{s:4:"type";s:6:"button";s:5:"label";s:12:"start search";s:4:"name";s:12:"start_search";}s:1:"E";a:1:{s:4:"type";s:5:"label";}}i:2;a:5:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:9:"mime type";}s:1:"B";a:2:{s:4:"type";s:8:"checkbox";s:4:"name";s:8:"checkall";}s:1:"C";a:3:{s:4:"type";s:5:"label";s:5:"label";s:3:"All";s:4:"name";s:8:"alllabel";}s:1:"D";a:4:{s:4:"type";s:5:"label";s:4:"data";a:2:{i:0;a:0:{}i:1;a:1:{s:1:"A";a:3:{s:4:"type";s:8:"checkbox";s:5:"label";s:5:"files";s:4:"name";s:14:"checkonlyfiles";}}}s:4:"rows";i:1;s:4:"cols";i:1;}s:1:"E";a:1:{s:4:"type";s:5:"label";}}i:3;a:5:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:2:{s:4:"type";s:8:"checkbox";s:4:"name";s:14:"checkonlyfiles";}s:1:"C";a:3:{s:4:"type";s:5:"label";s:5:"label";s:5:"files";s:4:"name";s:9:"filelabel";}s:1:"D";a:4:{s:4:"type";s:6:"button";s:5:"label";s:12:"clear search";s:4:"name";s:12:"clear_search";s:7:"onclick";s:71:"menuaction=filemanager.uifilemanager.index&action=search&actioncd=clear";}s:1:"E";a:1:{s:4:"type";s:5:"label";}}i:4;a:5:{s:1:"A";a:1:{s:4:"type";s:5:"label";}s:1:"B";a:2:{s:4:"type";s:8:"checkbox";s:4:"name";s:13:"checkonlydirs";}s:1:"C";a:3:{s:4:"type";s:5:"label";s:5:"label";s:9:"directory";s:4:"name";s:8:"dirlabel";}s:1:"D";a:4:{s:4:"type";s:8:"checkbox";s:5:"label";s:5:"Debug";s:4:"name";s:5:"debug";s:8:"disabled";s:1:"1";}s:1:"E";a:1:{s:4:"type";s:5:"label";}}i:5;a:5:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:5:"label";s:15:"created between";s:4:"name";s:12:"createdlabel";}s:1:"B";a:2:{s:4:"type";s:8:"checkbox";s:4:"name";s:13:"searchcreated";}s:1:"C";a:3:{s:4:"type";s:4:"date";s:4:"name";s:15:"datecreatedfrom";s:4:"size";s:2:",8";}s:1:"D";a:3:{s:4:"type";s:4:"date";s:4:"name";s:13:"datecreatedto";s:4:"size";s:2:",8";}s:1:"E";a:4:{s:4:"type";s:8:"textarea";s:4:"name";s:17:"searchcreatedtext";s:8:"readonly";s:1:"1";s:7:"no_lang";s:1:"1";}}i:6;a:5:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:5:"label";s:16:"modified between";s:4:"name";s:13:"modifiedlabel";}s:1:"B";a:2:{s:4:"type";s:8:"checkbox";s:4:"name";s:14:"searchmodified";}s:1:"C";a:3:{s:4:"type";s:4:"date";s:4:"name";s:16:"datemodifiedfrom";s:4:"size";s:2:",8";}s:1:"D";a:3:{s:4:"type";s:4:"date";s:4:"name";s:14:"datemodifiedto";s:4:"size";s:2:",8";}s:1:"E";a:4:{s:4:"type";s:8:"textarea";s:4:"name";s:18:"searchmodifiedtext";s:8:"readonly";s:1:"1";s:7:"no_lang";s:1:"1";}}}s:4:"rows";i:6;s:4:"cols";i:5;}i:2;a:1:{s:4:"type";s:5:"hrule";}i:3;a:3:{s:4:"type";s:9:"nextmatch";s:4:"size";s:4:"rows";s:4:"name";s:2:"nm";}}','size' => '','style' => '','modified' => '1173101430',);
$templ_data[] = array('name' => 'filemanager.search.rows','template' => '','lang' => '','group' => '0','version' => '1.5.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:3:{i:0;a:3:{s:2:"c1";s:2:"th";s:2:"c2";s:3:"row";s:1:"A";s:2:"20";}i:1;a:12:{s:1:"A";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:4:"Type";s:4:"name";s:13:"vfs_mime_type";}s:1:"B";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:2:"Id";s:4:"name";s:11:"vfs_file_id";}s:1:"C";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:4:"File";s:4:"name";s:7:"fulldir";}s:1:"D";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:9:"Directory";s:4:"name";s:13:"vfs_directory";}s:1:"E";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:4:"name";s:4:"name";s:8:"vfs_name";}s:1:"F";a:3:{s:4:"type";s:16:"nextmatch-header";s:5:"label";s:9:"mime type";s:4:"name";s:9:"mime_type";}s:1:"G";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:4:"Size";s:4:"name";s:8:"vfs_size";}s:1:"H";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:7:"comment";s:4:"name";s:11:"vfs_comment";}s:1:"I";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:7:"created";s:4:"name";s:11:"vfs_created";}s:1:"J";a:3:{s:4:"type";s:23:"nextmatch-accountfilter";s:4:"size";s:10:"Created by";s:4:"name";s:16:"vfs_createdby_id";}s:1:"K";a:3:{s:4:"type";s:20:"nextmatch-sortheader";s:5:"label";s:8:"modified";s:4:"name";s:12:"vfs_modified";}s:1:"L";a:3:{s:4:"type";s:23:"nextmatch-accountfilter";s:4:"size";s:11:"Modified by";s:4:"name";s:17:"vfs_modifiedby_id";}}i:2;a:12:{s:1:"A";a:4:{s:4:"type";s:5:"image";s:5:"label";s:24:"$row_cont[vfs_mime_type]";s:4:"name";s:12:"${row}[icon]";s:5:"align";s:6:"center";}s:1:"B";a:3:{s:4:"type";s:5:"label";s:4:"name";s:19:"${row}[vfs_file_id]";s:7:"no_lang";s:1:"1";}s:1:"C";a:4:{s:4:"type";s:5:"label";s:4:"name";s:12:"${row}[file]";s:7:"no_lang";s:1:"1";s:4:"size";s:21:",$row_cont[file_link]";}s:1:"D";a:4:{s:4:"type";s:5:"label";s:4:"name";s:21:"${row}[vfs_directory]";s:7:"no_lang";s:1:"1";s:4:"size";s:20:",$row_cont[dir_link]";}s:1:"E";a:4:{s:4:"type";s:5:"label";s:4:"name";s:16:"${row}[vfs_name]";s:7:"no_lang";s:1:"1";s:4:"size";s:21:",$row_cont[file_link]";}s:1:"F";a:2:{s:4:"type";s:5:"label";s:4:"name";s:21:"${row}[vfs_mime_type]";}s:1:"G";a:3:{s:4:"type";s:5:"label";s:4:"name";s:16:"${row}[vfs_size]";s:5:"align";s:5:"right";}s:1:"H";a:3:{s:4:"type";s:5:"label";s:4:"name";s:19:"${row}[vfs_comment]";s:7:"no_lang";s:1:"1";}s:1:"I";a:4:{s:4:"type";s:9:"date-time";s:4:"name";s:19:"${row}[vfs_created]";s:4:"size";s:11:"Y-m-d H:i:s";s:8:"readonly";s:1:"1";}s:1:"J";a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:24:"${row}[vfs_createdby_id]";s:8:"readonly";s:1:"1";}s:1:"K";a:4:{s:4:"type";s:9:"date-time";s:4:"name";s:20:"${row}[vfs_modified]";s:4:"size";s:11:"Y-m-d H:i:s";s:8:"readonly";s:1:"1";}s:1:"L";a:3:{s:4:"type";s:14:"select-account";s:4:"name";s:25:"${row}[vfs_modifiedby_id]";s:8:"readonly";s:1:"1";}}}s:4:"rows";i:2;s:4:"cols";i:12;s:4:"size";s:9:"100%,auto";s:7:"options";a:2:{i:0;s:4:"100%";i:1;s:4:"auto";}}}','size' => '100%,auto','style' => '','modified' => '1173104345',);
$templ_data[] = array('name' => 'filemanager.select','template' => '','lang' => '','group' => '0','version' => '1.9.002','data' => 'a:2:{i:0;a:4:{s:4:"type";s:5:"label";s:4:"name";s:3:"msg";s:4:"span";s:6:",error";s:5:"align";s:6:"center";}i:1;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:2:{i:0;a:2:{s:2:"c1";s:4:",top";s:1:"A";s:2:"32";}i:1;a:2:{s:1:"A";a:7:{s:4:"type";s:4:"grid";s:5:"align";s:6:"center";s:4:"data";a:3:{i:0;a:2:{s:2:"h2";s:2:"40";s:2:"h1";s:4:",!@0";}i:1;a:1:{s:1:"A";a:5:{s:4:"type";s:6:"button";s:4:"size";s:9:"favorites";s:5:"label";s:9:"Favorites";s:5:"align";s:6:"center";s:4:"name";s:9:"favorites";}}i:2;a:1:{s:1:"A";a:5:{s:4:"type";s:6:"button";s:4:"size";s:16:"$row_cont/navbar";s:5:"label";s:9:"$row_cont";s:5:"align";s:6:"center";s:4:"name";s:6:"${row}";}}}s:4:"rows";i:2;s:4:"cols";i:1;s:4:"name";s:4:"apps";s:7:"options";a:0:{}}s:1:"B";a:6:{s:4:"type";s:4:"grid";s:4:"data";a:7:{i:0;a:4:{s:2:"c2";s:11:"selectFiles";s:2:"h3";s:35:",@mode=/(open-multiple|select-dir)/";s:2:"h4";s:15:",!@options-mime";s:2:"h5";s:11:",@no_upload";}i:1;a:1:{s:1:"A";a:8:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"6";i:1;a:2:{s:4:"type";s:4:"html";s:4:"name";s:2:"js";}i:2;a:4:{s:4:"type";s:6:"button";s:4:"name";s:10:"button[up]";s:4:"size";s:4:"goup";s:5:"label";s:2:"Up";}i:3;a:4:{s:4:"type";s:6:"button";s:4:"name";s:12:"button[home]";s:4:"size";s:6:"gohome";s:5:"label";s:25:"Go to your home directory";}i:4;a:4:{s:4:"type";s:3:"box";s:4:"size";s:1:"1";i:1;a:4:{s:4:"type";s:3:"vfs";s:4:"name";s:4:"path";s:7:"onclick";s:87:"path=document.getElementById(form::name(\'path\')); path.value=$path; path.form.submit();";s:4:"span";s:11:",selectPath";}s:4:"span";s:20:",selectPathContainer";}i:5;a:2:{s:4:"type";s:6:"hidden";s:4:"name";s:4:"path";}i:6;a:6:{s:4:"type";s:6:"button";s:4:"name";s:17:"button[createdir]";s:4:"size";s:35:"button_createdir,createdir_disabled";s:5:"label";s:16:"Create directory";s:7:"onclick";s:129:"var dir = prompt(egw::lang(\'New directory\')); if (!dir) return false; document.getElementById(form::name(\'path\')).value+=\'/\'+dir;";s:4:"span";s:10:",createDir";}}}i:2;a:1:{s:1:"A";a:7:{s:4:"type";s:4:"grid";s:4:"size";s:14:"100%,,,,,,auto";s:4:"name";s:3:"dir";s:4:"data";a:2:{i:0;a:3:{s:2:"c1";s:3:"row";s:1:"A";s:2:"20";s:1:"C";s:23:"1%,!@mode=open-multiple";}i:1;a:3:{s:1:"A";a:5:{s:4:"type";s:8:"vfs-mime";s:4:"name";s:4:"$row";s:4:"span";s:11:",selectIcon";s:5:"align";s:6:"center";s:4:"size";s:2:"16";}s:1:"B";a:3:{s:4:"type";s:3:"vfs";s:4:"name";s:4:"$row";s:7:"onclick";s:18:"$row_cont[onclick]";}s:1:"C";a:4:{s:4:"type";s:8:"checkbox";s:4:"size";s:17:""$row_cont[name]"";s:4:"name";s:10:"selected[]";s:5:"align";s:5:"right";}}}s:4:"rows";i:1;s:4:"cols";i:3;s:7:"options";a:2:{i:0;s:4:"100%";i:6;s:4:"auto";}}}i:3;a:1:{s:1:"A";a:3:{s:4:"type";s:4:"text";s:4:"name";s:4:"name";s:4:"span";s:11:",selectName";}}i:4;a:1:{s:1:"A";a:5:{s:4:"type";s:6:"select";s:4:"size";s:9:"All files";s:4:"name";s:4:"mime";s:4:"span";s:11:",selectMime";s:8:"onchange";i:1;}}i:5;a:1:{s:1:"A";a:6:{s:4:"type";s:8:"groupbox";s:4:"size";s:1:"2";s:5:"label";s:11:"File upload";s:4:"name";s:15:"upload_groupbox";i:1;a:2:{s:4:"type";s:5:"label";s:5:"label";s:27:"Choose a file for uploading";}i:2;a:2:{s:4:"type";s:4:"file";s:4:"name";s:11:"file_upload";}}}i:6;a:1:{s:1:"A";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";i:1;a:3:{s:4:"type";s:6:"button";s:5:"label";s:6:"@label";s:4:"name";s:10:"button[ok]";}i:2;a:4:{s:4:"type";s:10:"buttononly";s:4:"name";s:14:"button[cancel]";s:5:"label";s:6:"Cancel";s:7:"onclick";s:15:"window.close();";}s:5:"align";s:5:"right";}}}s:4:"rows";i:6;s:4:"cols";i:1;s:7:"options";a:1:{i:0;s:4:"100%";}s:4:"size";s:4:"100%";}}}s:4:"rows";i:1;s:4:"cols";i:2;s:4:"size";s:3:"600";s:7:"options";a:1:{i:0;s:3:"600";}}}','size' => '600','style' => '.error{color:red; font-style:italic;}
.createDir img {padding-right:30px;}','modified' => '1341261799',);

View File

@ -10,7 +10,7 @@
$setup_info['filemanager']['name'] = 'filemanager'; $setup_info['filemanager']['name'] = 'filemanager';
$setup_info['filemanager']['title'] = 'Filemanager'; $setup_info['filemanager']['title'] = 'Filemanager';
$setup_info['filemanager']['version'] = '14.1'; $setup_info['filemanager']['version'] = '16.1';
$setup_info['filemanager']['app_order'] = 6; $setup_info['filemanager']['app_order'] = 6;
$setup_info['filemanager']['enable'] = 1; $setup_info['filemanager']['enable'] = 1;
$setup_info['filemanager']['index'] = 'filemanager.filemanager_ui.index&ajax=true'; $setup_info['filemanager']['index'] = 'filemanager.filemanager_ui.index&ajax=true';
@ -32,10 +32,6 @@ $setup_info['filemanager']['hooks']['search_link'] = 'filemanager_hooks::search_
/* Dependencies for this app to work */ /* Dependencies for this app to work */
$setup_info['filemanager']['depends'][] = array( $setup_info['filemanager']['depends'][] = array(
'appname' => 'phpgwapi', 'appname' => 'api',
'versions' => array('14.1') 'versions' => array('16.1')
);
$setup_info['filemanager']['depends'][] = array(
'appname' => 'etemplate',
'versions' => array('14.1')
); );

View File

@ -1,75 +1,78 @@
<?php <?php
/** /**
* eGroupWare - Filemanager - test script * EGroupware - Filemanager - test script
* *
* @link http://www.egroupware.org * @link http://www.egroupware.org
* @package filemanager * @package filemanager
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de> * @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @copyright (c) 2009-13 by Ralf Becker <RalfBecker-AT-outdoor-training.de> * @copyright (c) 2009-16 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$ * @version $Id$
*/ */
use EGroupware\Api;
use EGroupware\Api\Vfs;
$GLOBALS['egw_info']['flags'] = array( $GLOBALS['egw_info']['flags'] = array(
'currentapp' => 'filemanager' 'currentapp' => 'filemanager'
); );
include('../header.inc.php'); include('../header.inc.php');
if (!($path = egw_cache::getSession('filemanger','test'))) if (!($path = Api\Cache::getSession('filemanger','test')))
{ {
$path = '/home/'.$GLOBALS['egw_info']['user']['account_lid']; $path = '/home/'.$GLOBALS['egw_info']['user']['account_lid'];
} }
if (isset($_REQUEST['path'])) $path = $_REQUEST['path']; if (isset($_REQUEST['path'])) $path = $_REQUEST['path'];
echo html::form("<p>Path: ".html::input('path',$path,'text','size="40"'). echo Api\Html::form("<p>Path: ".Api\Html::input('path',$path,'text','size="40"').
html::submit_button('',lang('Submit'))."</p>\n",array(),'','','','','GET'); Api\Html::submit_button('',lang('Submit'))."</p>\n",array(),'','','','','GET');
if (isset($path) && !empty($path)) if (isset($path) && !empty($path))
{ {
if ($path[0] != '/') if ($path[0] != '/')
{ {
throw new egw_exception_wrong_userinput('Not an absolute path!'); throw new Api\Exception\WrongUserinput('Not an absolute path!');
} }
egw_cache::setSession('filemanger','test',$path); Api\Cache::setSession('filemanger','test',$path);
echo "<h2>"; echo "<h2>";
foreach(explode('/',$path) as $n => $part) foreach(explode('/',$path) as $n => $part)
{ {
$p .= ($p != '/' ? '/' : '').$part; $p .= ($p != '/' ? '/' : '').$part;
echo ($n > 1 ? ' / ' : '').html::a_href($n ? $part : ' / ','/filemanager/test.php',array('path'=>$p)); echo ($n > 1 ? ' / ' : '').Api\Html::a_href($n ? $part : ' / ','/filemanager/test.php',array('path'=>$p));
} }
echo "</h2>\n"; echo "</h2>\n";
echo "<p><b>egw_vfs::propfind('$path')</b>=".array2string(egw_vfs::propfind($path))."</p>\n"; echo "<p><b>egw_vfs::propfind('$path')</b>=".array2string(Vfs::propfind($path))."</p>\n";
echo "<p><b>egw_vfs::resolve_url('$path')</b>=".array2string(egw_vfs::resolve_url($path))."</p>\n"; echo "<p><b>egw_vfs::resolve_url('$path')</b>=".array2string(Vfs::resolve_url($path))."</p>\n";
$is_dir = egw_vfs::is_dir($path); $is_dir = Vfs::is_dir($path);
echo "<p><b>is_dir('$path')</b>=".array2string($is_dir)."</p>\n"; echo "<p><b>is_dir('$path')</b>=".array2string($is_dir)."</p>\n";
$time = microtime(true); $time = microtime(true);
$stat = egw_vfs::stat($path); $stat = Vfs::stat($path);
$stime = number_format(1000*(microtime(true)-$time),1); $stime = number_format(1000*(microtime(true)-$time),1);
$time = microtime(true); $time2 = microtime(true);
if ($is_dir)// && ($d = egw_vfs::opendir($path))) if ($is_dir)// && ($d = Vfs::opendir($path)))
{ {
$files = array(); $files = array();
//while(($file = readdir($d))) //while(($file = readdir($d)))
foreach(egw_vfs::scandir($path) as $file) foreach(Vfs::scandir($path) as $file)
{ {
if (egw_vfs::is_readable($fpath=egw_vfs::concat($path,$file))) if (Vfs::is_readable($fpath=Vfs::concat($path,$file)))
{ {
$file = html::a_href($file,'/filemanager/test.php',array('path'=>$fpath)); $file = Api\Html::a_href($file,'/filemanager/test.php',array('path'=>$fpath));
} }
$file .= ' ('.egw_vfs::mime_content_type($fpath).')'; $file .= ' ('.Vfs::mime_content_type($fpath).')';
$files[] = $file; $files[] = $file;
} }
//closedir($d); //closedir($d);
$time = number_format(1000*(microtime(true)-$time),1); $time2f = number_format(1000*(microtime(true)-$time2),1);
echo "<p>".($files ? 'Directory' : 'Empty directory')." took $time ms</p>\n"; echo "<p>".($files ? 'Directory' : 'Empty directory')." took $time2f ms</p>\n";
if($files) echo '<ol><li>'.implode("</li>\n<li>",$files).'</ol>'."\n"; if($files) echo '<ol><li>'.implode("</li>\n<li>",$files).'</ol>'."\n";
} }
echo "<p><b>stat('$path')</b> took $stime ms (mode = ".(isset($stat['mode'])?sprintf('%o',$stat['mode']).' = '.egw_vfs::int2mode($stat['mode']):'NULL').')'; echo "<p><b>stat('$path')</b> took $stime ms (mode = ".(isset($stat['mode'])?sprintf('%o',$stat['mode']).' = '.Vfs::int2mode($stat['mode']):'NULL').')';
if (is_array($stat)) if (is_array($stat))
{ {
_debug_array($stat); _debug_array($stat);
@ -79,15 +82,15 @@ if (isset($path) && !empty($path))
echo "<p>".array2string($stat)."</p>\n"; echo "<p>".array2string($stat)."</p>\n";
} }
echo "<p><b>egw_vfs::is_readable('$path')</b>=".array2string(egw_vfs::is_readable($path))."</p>\n"; echo "<p><b>egw_vfs::is_readable('$path')</b>=".array2string(Vfs::is_readable($path))."</p>\n";
echo "<p><b>egw_vfs::is_writable('$path')</b>=".array2string(egw_vfs::is_writable($path))."</p>\n"; echo "<p><b>egw_vfs::is_writable('$path')</b>=".array2string(Vfs::is_writable($path))."</p>\n";
echo "<p><b>is_link('$path')</b>=".array2string(egw_vfs::is_link($path))."</p>\n"; echo "<p><b>is_link('$path')</b>=".array2string(Vfs::is_link($path))."</p>\n";
echo "<p><b>readlink('$path')</b>=".array2string(egw_vfs::readlink($path))."</p>\n"; echo "<p><b>readlink('$path')</b>=".array2string(Vfs::readlink($path))."</p>\n";
$time = microtime(true); $time3 = microtime(true);
$lstat = egw_vfs::lstat($path); $lstat = Vfs::lstat($path);
$time = number_format(1000*(microtime(true)-$time),1); $time3f = number_format(1000*(microtime(true)-$time3),1);
echo "<p><b>lstat('$path')</b> took $time ms (mode = ".(isset($lstat['mode'])?sprintf('%o',$lstat['mode']).' = '.egw_vfs::int2mode($lstat['mode']):'NULL').')'; echo "<p><b>lstat('$path')</b> took $time3f ms (mode = ".(isset($lstat['mode'])?sprintf('%o',$lstat['mode']).' = '.Vfs::int2mode($lstat['mode']):'NULL').')';
if (is_array($lstat)) if (is_array($lstat))
{ {
_debug_array($lstat); _debug_array($lstat);
@ -98,9 +101,9 @@ if (isset($path) && !empty($path))
} }
if (!$is_dir && $stat) if (!$is_dir && $stat)
{ {
echo "<p><b>egw_vfs::mime_content_type('$path')</b>=".array2string(egw_vfs::mime_content_type($path))."</p>\n"; echo "<p><b>egw_vfs::mime_content_type('$path')</b>=".array2string(Vfs::mime_content_type($path))."</p>\n";
echo "<p><b>filesize(egw_vfs::PREFIX.'$path')</b>=".array2string(filesize(egw_vfs::PREFIX.$path))."</p>\n"; echo "<p><b>filesize(Vfs::PREFIX.'$path')</b>=".array2string(filesize(Vfs::PREFIX.$path))."</p>\n";
echo "<p><b>bytes(file_get_contents(egw_vfs::PREFIX.'$path'))</b>=".array2string(bytes(file_get_contents(egw_vfs::PREFIX.$path)))."</p>\n"; echo "<p><b>bytes(file_get_contents(Vfs::PREFIX.'$path'))</b>=".array2string(bytes(file_get_contents(Vfs::PREFIX.$path)))."</p>\n";
} }
} }
$GLOBALS['egw']->common->egw_footer(); $GLOBALS['egw']->framework->footer();