From ac78b771806e46eaefa974317940a18128387e45 Mon Sep 17 00:00:00 2001 From: Ralf Becker Date: Fri, 1 Jul 2011 07:49:58 +0000 Subject: [PATCH] support for html5 multiple upload in file-exists check --- filemanager/inc/class.filemanager_ui.inc.php | 80 ++++++++++++-------- filemanager/setup/etemplates.inc.php | 4 +- filemanager/templates/default/index.xet | 2 +- 3 files changed, 52 insertions(+), 34 deletions(-) diff --git a/filemanager/inc/class.filemanager_ui.inc.php b/filemanager/inc/class.filemanager_ui.inc.php index 7f358f9dab..3c8d333883 100644 --- a/filemanager/inc/class.filemanager_ui.inc.php +++ b/filemanager/inc/class.filemanager_ui.inc.php @@ -106,7 +106,7 @@ class filemanager_ui */ private static function get_actions() { - return array( + $actions = array( 'open' => array( 'caption' => lang('Open'), 'icon' => 'filemanager/folder', @@ -142,6 +142,11 @@ class filemanager_ui 'confirm' => 'Delete these files or directories?', ), ); + if (!isset($GLOBALS['egw_info']['user']['apps']['felamimail'])) + { + unset($actions['mail']); + } + return $actions; } @@ -401,11 +406,6 @@ class filemanager_ui $readonlys['button[symlink]'] = !$dir_is_writable; $readonlys['button[upload]'] = $readonlys['upload'] = !$dir_is_writable; - if ($dir_is_writable || !$content['nm']['filter']) $sel_options['action']['delete'] = lang('Delete'); - $sel_options['action']['copy'] = lang('Copy to clipboard'); - if ($dir_is_writable || !$content['nm']['filter']) $sel_options['action']['cut'] = lang('Cut to clipboard'); - if ($clipboard_files) $sel_options['action']['add'] = lang('Add to current clipboard'); - $sel_options['filter'] = array( '1' => 'Current directory', '2' => 'Directories sorted in', @@ -414,7 +414,6 @@ class filemanager_ui ); if ($GLOBALS['egw_info']['user']['apps']['felamimail']) { - $sel_options['action']['mail'] = lang('Mail files'); list($width,$height) = explode('x',egw_link::get_registry('felamimail','add_popup')); $GLOBALS['egw_info']['flags']['java_script'] .= "\n"; } - else + $GLOBALS['egw_info']['flags']['java_script'] .= ''."\n"; $tpl->exec('filemanager.filemanager_ui.index',$content,$sel_options,$readonlys,array('nm' => $content['nm'])); } @@ -450,43 +465,46 @@ class filemanager_ui * Check if a file upload would overwrite an existing file and get a user confirmation in that case * * @param string $id id of the input - * @param string $name name (incl. client-path) of the file to upload + * @param string|array $names name(s) (incl. client-path) of the file(s) to upload * @param string $dir current vfs directory * @return string xajax output */ - static function ajax_check_upload_target($id,$name,$dir) + static function ajax_check_upload_target($id,$names,$dir) { $response = new xajaxResponse(); - //$response->addAlert(__METHOD__."('$id','$name','$dir')"); + //$response->addAlert(__METHOD__."('$id',".array2string($name).",'$dir')"); - $name = explode('/',str_replace('\\','/',$name)); // in case of win clients - $name = array_pop($name); - - // encode chars which special meaning in url/vfs (some like / get removed!) - $path = egw_vfs::concat($dir,egw_vfs::encodePathComponent($name)); - - if(egw_vfs::deny_script($path)) + foreach((array)$names as $name) { - $response->addAlert(lang('You are NOT allowed to upload a script!')); - $response->addScript("document.getElementById('$id').value='';"); - } - elseif (egw_vfs::stat($path)) - { - if (egw_vfs::is_dir($path)) + $name = explode('/',str_replace('\\','/',$name)); // in case of win clients + $name = array_pop($name); + + // encode chars which special meaning in url/vfs (some like / get removed!) + $path = egw_vfs::concat($dir,egw_vfs::encodePathComponent($name)); + + if(egw_vfs::deny_script($path)) { - $response->addAlert(lang("There's already a directory with that name!")); + $response->addAlert(lang('You are NOT allowed to upload a script!')); $response->addScript("document.getElementById('$id').value='';"); } + elseif (egw_vfs::stat($path)) + { + if (egw_vfs::is_dir($path)) + { + $response->addAlert(lang("There's already a directory with that name!")); + $response->addScript("document.getElementById('$id').value='';"); + } + else + { + $response->addScript("if (!confirm('".addslashes(lang('Do you want to overwrite the existing file %1?',egw_vfs::decodePath($path)))."')) document.getElementById('$id').value='';"); + } + } else { - $response->addScript("if (!confirm('".addslashes(lang('Do you want to overwrite the existing file %1?',egw_vfs::decodePath($path)))."')) document.getElementById('$id').value='';"); + // do nothing new file } } - else - { - // do nothing new file - } return $response->getXML(); } diff --git a/filemanager/setup/etemplates.inc.php b/filemanager/setup/etemplates.inc.php index f431e48114..1c1b5a91c5 100644 --- a/filemanager/setup/etemplates.inc.php +++ b/filemanager/setup/etemplates.inc.php @@ -2,7 +2,7 @@ /** * EGroupware - eTemplates for Application filemanager * http://www.egroupware.org - * generated by soetemplate::dump4setup() 2011-06-30 15:06 + * generated by soetemplate::dump4setup() 2011-07-01 09:40 * * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License * @package filemanager @@ -33,7 +33,7 @@ $templ_data[] = array('name' => 'filemanager.file.perms','template' => '','lang' $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.001','data' => 'a:1:{i:0;a:6:{s:4:"type";s:4:"grid";s:4:"data";a:6:{i:0;a:4:{s:1:"A";s:3:"250";s:2:"h1";s:10:",!@nm[msg]";s:2:"c4";s:7:",bottom";s:2:"h4";s:34:",!@nm[selectcols]=/legacy_actions/";}i:1;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"span";s:13:"all,redItalic";s:4:"name";s:7:"nm[msg]";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:2;a:2:{s:1:"A";a:15:{s:4:"type";s:4:"hbox";s:4:"size";s:2:"12";i:1;a:4:{s:4:"type";s:5:"image";s:5:"label";s:2:"Up";s:4:"name";s:4:"goup";s:4:"size";s:40:"filemanager.filemanager_ui.index&path=..";}i:2;a:4:{s:4:"type";s:5:"image";s:4:"name";s:6:"gohome";s:4:"size";s:39:"filemanager.filemanager_ui.index&path=~";s:5:"label";s:25:"Go to your home directory";}s:4:"span";s:3:"all";i:3;a:6:{s:4:"type";s:8:"vfs-name";s:4:"name";s:8:"nm[path]";s:4:"size";s:5:"80,,1";s:5:"label";s:4:"Path";s:8:"onchange";i:1;s:4:"span";s:8:",address";}i:4;a:4:{s:4:"type";s:6:"button";s:4:"name";s:10:"button[go]";s:4:"size";s:9:"key_enter";s:5:"label";s:5:"Go to";}i:5;a:2:{s:4:"type";s:5:"image";s:4:"name";s:15:"buttonseparator";}i:6;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:23:"edit[{$cont[nm][path]}]";s:4:"help";s:39:"Rename, change permissions or ownership";s:7:"onclick";s:194:"window.open(egw::link(\'/index.php\',\'menuaction=filemanager.filemanager_ui.file&path={$cont[nm][path]}\'),\'fileprefs\',\'dependent=yes,width=495,height=425,scrollbars=yes,status=yes\'); return false;";}i:7;a:5:{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:128:"var dir = prompt(egw::lang(\'New directory\')); if (!dir) return false; document.getElementById(form::name(\'nm[path]\')).value=dir;";}i:8;a:5:{s:4:"type";s:6:"button";s:4:"size";s:18:"link,link_disabled";s:5:"label";s:13:"Create a link";s:4:"name";s:15:"button[symlink]";s:7:"onclick";s:129:"var link = prompt(egw::lang(\'Link target\')); if (!link) return false; document.getElementById(form::name(\'nm[path]\')).value=link;";}i:9;a:4:{s:4:"type";s:6:"button";s:4:"name";s:13:"button[paste]";s:4:"size";s:28:"editpaste,editpaste_disabled";s:4:"help";s:20:"$cont[paste_tooltip]";}i:10;a:4:{s:4:"type";s:6:"button";s:4:"name";s:17:"button[linkpaste]";s:4:"size";s:28:"linkpaste,linkpaste_disabled";s:4:"help";s:24:"$cont[linkpaste_tooltip]";}i:11;a:5:{s:4:"type";s:6:"button";s:4:"name";s:17:"button[mailpaste]";s:4:"size";s:28:"mailpaste,mailpaste_disabled";s:4:"help";s:24:"$cont[mailpaste_tooltip]";s:7:"onclick";s:50:"open_mail(\'$cont[mailpaste_files]\'); return false;";}i:12;a:4:{s:4:"type";s:6:"button";s:4:"size";s:6:"upload";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:1:"B";a:1:{s:4:"type";s:5:"label";}}i:3;a:2:{s:1:"A";a:4:{s:4:"type";s:9:"nextmatch";s:4:"size";s:22:"filemanager.index.rows";s:4:"span";s:3:"all";s:4:"name";s:2:"nm";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:4;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:1:"1";i:1;a:1:{s:4:"type";s:5:"label";}}s:1:"B";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";s:5:"align";s:5:"right";i:1;a:5:{s:5:"label";s:13:"Select action";s:7:"onclick";s:187:"if (!egw_globalObjectManager.getObjectById(\'filemanager.index.rows\').executeActionImplementation(this, \'popup\')) alert(egw::lang(\'You need to select some entries first!\')); return false;;";s:4:"name";s:14:"legacy_actions";s:4:"type";s:10:"buttononly";s:4:"help";s:13:"Select action";}i:2;a:8:{s:4:"type";s:6:"button";s:4:"size";s:9:"arrow_ltr";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:70:"toggle_all(this.form,form::name(\'nm[rows][checked][]\')); return false;";s:6:"needed";s:1:"1";s:4:"span";s:14:",checkAllArrow";}}}i:5;a:2:{s:1:"A";a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";i:1;a:4:{s:4:"type";s:4:"file";s:4:"name";s:8:"upload[]";s:4:"help";s:42:"Select file to upload in current directory";s:8:"onchange";s:99:"xajax_doXMLHTTP(\'filemanager_ui::ajax_check_upload_target\',this.id,this.value,\'{$cont[nm][path]}\');";}i:2;a:3:{s:4:"type";s:6:"button";s:5:"label";s:6:"Upload";s:4:"name";s:14:"button[upload]";}}s:1:"B";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:5;s:4:"cols";i:2;s:4:"size";s:4:"100%";s:7:"options";a:1:{i:0;s:4:"100%";}}}','size' => '100%','style' => 'input[type=\'file\'] { +$templ_data[] = array('name' => 'filemanager.index','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:6:{i:0;a:4:{s:1:"A";s:3:"250";s:2:"h1";s:10:",!@nm[msg]";s:2:"c4";s:7:",bottom";s:2:"h4";s:34:",!@nm[selectcols]=/legacy_actions/";}i:1;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"span";s:13:"all,redItalic";s:4:"name";s:7:"nm[msg]";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:2;a:2:{s:1:"A";a:15:{s:4:"type";s:4:"hbox";s:4:"size";s:2:"12";i:1;a:4:{s:4:"type";s:5:"image";s:5:"label";s:2:"Up";s:4:"name";s:4:"goup";s:4:"size";s:40:"filemanager.filemanager_ui.index&path=..";}i:2;a:4:{s:4:"type";s:5:"image";s:4:"name";s:6:"gohome";s:4:"size";s:39:"filemanager.filemanager_ui.index&path=~";s:5:"label";s:25:"Go to your home directory";}s:4:"span";s:3:"all";i:3;a:6:{s:4:"type";s:8:"vfs-name";s:4:"name";s:8:"nm[path]";s:4:"size";s:5:"80,,1";s:5:"label";s:4:"Path";s:8:"onchange";i:1;s:4:"span";s:8:",address";}i:4;a:4:{s:4:"type";s:6:"button";s:4:"name";s:10:"button[go]";s:4:"size";s:9:"key_enter";s:5:"label";s:5:"Go to";}i:5;a:2:{s:4:"type";s:5:"image";s:4:"name";s:15:"buttonseparator";}i:6;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:23:"edit[{$cont[nm][path]}]";s:4:"help";s:39:"Rename, change permissions or ownership";s:7:"onclick";s:194:"window.open(egw::link(\'/index.php\',\'menuaction=filemanager.filemanager_ui.file&path={$cont[nm][path]}\'),\'fileprefs\',\'dependent=yes,width=495,height=425,scrollbars=yes,status=yes\'); return false;";}i:7;a:5:{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:128:"var dir = prompt(egw::lang(\'New directory\')); if (!dir) return false; document.getElementById(form::name(\'nm[path]\')).value=dir;";}i:8;a:5:{s:4:"type";s:6:"button";s:4:"size";s:18:"link,link_disabled";s:5:"label";s:13:"Create a link";s:4:"name";s:15:"button[symlink]";s:7:"onclick";s:129:"var link = prompt(egw::lang(\'Link target\')); if (!link) return false; document.getElementById(form::name(\'nm[path]\')).value=link;";}i:9;a:4:{s:4:"type";s:6:"button";s:4:"name";s:13:"button[paste]";s:4:"size";s:28:"editpaste,editpaste_disabled";s:4:"help";s:20:"$cont[paste_tooltip]";}i:10;a:4:{s:4:"type";s:6:"button";s:4:"name";s:17:"button[linkpaste]";s:4:"size";s:28:"linkpaste,linkpaste_disabled";s:4:"help";s:24:"$cont[linkpaste_tooltip]";}i:11;a:5:{s:4:"type";s:6:"button";s:4:"name";s:17:"button[mailpaste]";s:4:"size";s:28:"mailpaste,mailpaste_disabled";s:4:"help";s:24:"$cont[mailpaste_tooltip]";s:7:"onclick";s:50:"open_mail(\'$cont[mailpaste_files]\'); return false;";}i:12;a:4:{s:4:"type";s:6:"button";s:4:"size";s:6:"upload";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:1:"B";a:1:{s:4:"type";s:5:"label";}}i:3;a:2:{s:1:"A";a:4:{s:4:"type";s:9:"nextmatch";s:4:"size";s:22:"filemanager.index.rows";s:4:"span";s:3:"all";s:4:"name";s:2:"nm";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:4;a:2:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:4:"size";s:1:"1";i:1;a:1:{s:4:"type";s:5:"label";}}s:1:"B";a:5:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";s:5:"align";s:5:"right";i:1;a:5:{s:5:"label";s:13:"Select action";s:7:"onclick";s:187:"if (!egw_globalObjectManager.getObjectById(\'filemanager.index.rows\').executeActionImplementation(this, \'popup\')) alert(egw::lang(\'You need to select some entries first!\')); return false;;";s:4:"name";s:14:"legacy_actions";s:4:"type";s:10:"buttononly";s:4:"help";s:13:"Select action";}i:2;a:8:{s:4:"type";s:6:"button";s:4:"size";s:9:"arrow_ltr";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:70:"toggle_all(this.form,form::name(\'nm[rows][checked][]\')); return false;";s:6:"needed";s:1:"1";s:4:"span";s:14:",checkAllArrow";}}}i:5;a:2:{s:1:"A";a:4:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"2";i:1;a:4:{s:4:"type";s:4:"file";s:4:"name";s:8:"upload[]";s:4:"help";s:42:"Select file to upload in current directory";s:8:"onchange";s:18:"check_files(this);";}i:2;a:3:{s:4:"type";s:6:"button";s:5:"label";s:6:"Upload";s:4:"name";s:14:"button[upload]";}}s:1:"B";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:5;s:4:"cols";i:2;s:4:"size";s:4:"100%";s:7:"options";a:1:{i:0;s:4:"100%";}}}','size' => '100%','style' => 'input[type=\'file\'] { width: 50ex }','modified' => '1237464702',); diff --git a/filemanager/templates/default/index.xet b/filemanager/templates/default/index.xet index df5634d7b4..c9c5c74d9e 100644 --- a/filemanager/templates/default/index.xet +++ b/filemanager/templates/default/index.xet @@ -93,7 +93,7 @@ - +