- more docu for file selection dialog

- added mime type filter
- added more user friendly mime type names:
  application/pdf --> PDF file (application/pdf)
This commit is contained in:
Ralf Becker 2009-04-17 06:28:19 +00:00
parent f12a0dc307
commit 3c18478f86
6 changed files with 62 additions and 16 deletions

View File

@ -212,7 +212,14 @@ class vfs_widget
}
//error_log(__METHOD__."() type=vfs-mime: value=".array2string($value).": mime=$mime, path=$path");
$cell['type'] = 'image';
$cell['label'] = $mime;
if ($mime == egw_vfs::DIR_MIME_TYPE)
{
$cell['label'] = lang('Directory');
}
else
{
$cell['label'] = lang('%1 file',strtoupper(mime_magic::mime2ext($mime))).' ('.$mime.')';
}
list($mime_main,$mime_sub) = explode('/',$mime);
if ($mime_main == 'egw')
{

View File

@ -1,6 +1,6 @@
<?php
/**
* eGroupWare - Filemanager - select file to open / save dialog
* eGroupWare - Filemanager - select file to open or save dialog
*
* @link http://www.egroupware.org
* @package filemanager
@ -10,6 +10,25 @@
* @version $Id$
*/
/**
* Select file to open or save dialog
*
* This dialog can be called from applications to open or store files from the VFS.
*
* There are the following ($_GET) parameters:
* - menuaction=filemanager.filemanager_select.select (required)
* - mode=(open|open-multiple|saveas|select-dir) (required)
* - method=app.class.method (required callback, gets called with id and selected file(s))
* - id=... (optional parameter passed to callback)
* - path=... (optional start path in VFS)
* - mime=... (optional mime-type to limit display to given type)
* - label=... (optional label for submit button, default "Open")
*
* The application calls this method in a popup with size: 640x580 px
* After the user selected one or more files (depending on the mode parameter), the "method" callback gets
* called on server (!) side. Parameters are the id plus the selected files as 1. and 2. parameter.
* The callback returns javascript to eg. update it's UI AND (!) to close the current popup ("window.close();").
*/
class filemanager_select
{
/**
@ -35,17 +54,10 @@ class filemanager_select
}
/**
* Callback to fetch the rows for the nextmatch widget
* File selector
*
* @param array $query
* @param array &$rows
* @param array &$readonlys
* @param array $content
*/
function get_rows($query,&$rows,&$readonlys)
{
}
function select(array $content=null)
{
if (!is_array($content))
@ -65,7 +77,22 @@ class filemanager_select
$content['method'] = $_GET['method'];
$content['id'] = $_GET['id'];
$content['label'] = isset($_GET['label']) ? $_GET['label'] : lang('Open');
$content['mime'] = $_GET['mime'];
if (($content['options-mime'] = isset($_GET['mime'])))
{
$content['options-mime'] = array();
foreach((array)$_GET['mime'] as $key => $value)
{
if (is_numeric($key))
{
$content['options-mime'][$value] = lang('%1 files',strtoupper(mime_magic::mime2ext($value))).' ('.$value.')';
}
else
{
$content['options-mime'][$key] = lang('%1 files',strtoupper($value)).' ('.$key.')';
}
}
list($content['mime']) = each($content['options-mime']);
}
}
else
{
@ -112,6 +139,10 @@ class filemanager_select
{
$path = egw_vfs::concat($content['path'],$name);
$is_dir = egw_vfs::is_dir($path);
if ($content['mime'] && !$is_dir && egw_vfs::mime_content_type($path) != $content['mime'])
{
continue; // does not match mime-filter --> ignore
}
$content['dir'][$n] = array(
'name' => $name,
'path' => $path,
@ -159,6 +190,8 @@ function select_toggle(file)
'method' => $content['method'],
'id' => $content['id'],
'label' => $content['label'],
'mime' => $content['mime'],
'options-mime' => $content['options-mime'],
),2);
}
}

View File

@ -7,6 +7,7 @@
%1 errors linking (%2)! filemanager de %1 Fehler beim Verküpfen (%2)!
%1 errors moving (%2 files moved)! filemanager de %1 Fehler beim Verschieben (%2 Dateien verschoben)!
%1 failed, %2 succeded filemanager de %1 fehlgeschlagen, %2 erfolgreich
%1 files common de %1 Dateien
%1 files copied. filemanager de %1 Dateien kopiert.
%1 files deleted. filemanager de %1 Dateien gelöscht.
%1 files moved. filemanager de %1 Dateien verschoben.
@ -18,8 +19,10 @@ accessrights filemanager de Zugangsberechtigungen
acl added. filemanager de Zugrifsrecht hinzugefügt.
acl deleted. filemanager de Zugrifsrecht gelöscht.
actions filemanager de Befehle
all files common de Alle Dateien
allow a maximum of the above configured folderlinks to be configured in settings admin de erlaube das oben eingestellte Maximum an Einstellunge für Verzeichnisverweise
and all it's childeren filemanager de und alle seine Kinder
applications common de Anwendungen
basedirectory filemanager de Basisverzeichnis
cancel editing %1 without saving filemanager de Beende das Bearbeiten von %1 ohne zu Speichern
cannot create directory because it begins or ends in a space filemanager de Die Erstellung des Verzeichnisses schlug fehl, da es mit einem Leerzeichen beginnt oder endet

View File

@ -7,6 +7,7 @@
%1 errors linking (%2)! filemanager en %1 errors linking (%2)!
%1 errors moving (%2 files moved)! filemanager en %1 errors moving (%2 files moved)!
%1 failed, %2 succeded filemanager en %1 failed, %2 succeded
%1 files common en %1 files
%1 files copied. filemanager en %1 files copied.
%1 files deleted. filemanager en %1 files deleted.
%1 files moved. filemanager en %1 files moved.
@ -18,8 +19,10 @@ accessrights filemanager en Accessrights
acl added. filemanager en ACL added.
acl deleted. filemanager en ACL deleted.
actions filemanager en Actions
all files common en All files
allow a maximum of the above configured folderlinks to be configured in settings admin en allow a maximum of the above configured folderlinks to be configured in settings
and all it's childeren filemanager en and all it's childeren
applications common en Applications
basedirectory filemanager en Basedirectory
cancel editing %1 without saving filemanager en Cancel editing %1 without saving
cannot create directory because it begins or ends in a space filemanager en Cannot create directory because it begins or ends in a space

View File

@ -2,7 +2,7 @@
/**
* eGroupWare - eTemplates for Application filemanager
* http://www.egroupware.org
* generated by soetemplate::dump4setup() 2009-04-15 23:14
* generated by soetemplate::dump4setup() 2009-04-17 08:26
*
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @package filemanager
@ -56,5 +56,5 @@ $templ_data[] = array('name' => 'filemanager.index.rows','template' => '','lang'
$templ_data[] = array('name' => 'filemanager.index.rows','template' => '','lang' => '','group' => '0','version' => '1.5.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:3:"row";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:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"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:60:"toggle_all(this.form,form::name(\'checked[]\')); 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:12:"${row}[path]";s:5:"align";s:6:"center";}s:1:"B";a:3:{s:4:"type";s:3:"vfs";s:4:"name";s:4:"$row";s:7:"no_lang";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:8:"readonly";s:1:"1";s:4:"name";s:4:"$row";}s:1:"K";a:6:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"3";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: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";}i:3;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:5:"align";s:5:"right";}}}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' => '1204370567',);
$templ_data[] = array('name' => 'filemanager.select','template' => '','lang' => '','group' => '0','version' => '1.7.001','data' => 'a:1:{i:0;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:4:{s:4:"type";s:6:"button";s:4:"size";s:4:"home";s:4:"name";s:12:"button[home]";s:5:"align";s:6:"center";}s:1:"B";a:6:{s:4:"type";s:4:"grid";s:4:"data";a:6:{i:0;a:2:{s:2:"c2";s:11:"selectFiles";s:2:"h3";s:20:",@mode=open-multiple";}i:1;a:1:{s:1:"A";a:6:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"4";i:1;a:2:{s:4:"type";s:4:"html";s:4:"name";s:2:"js";}i:2;a:3:{s:4:"type";s:6:"button";s:4:"name";s:10:"button[up]";s:4:"size";s:4:"goup";}i:3;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";}i:4;a:3:{s:4:"type";s:4:"text";s:4:"name";s:4:"path";s:4:"span";s:12:",displayNone";}}}i:2;a:1:{s:1:"A";a:7:{s:4:"type";s:4:"grid";s:4:"size";s:17:"100%,400,,,,,auto";s:4:"name";s:3:"dir";s:4:"data";a:2:{i:0;a:3:{s:2:"c1";s:3:"row";s:1:"A";s:2:"20";s:1:"C";s:23:"1%,!@mode=open-multiple";}i:1;a:3:{s:1:"A";a:4:{s:4:"type";s:8:"vfs-mime";s:4:"name";s:12:"${row}[path]";s:4:"span";s:11:",selectIcon";s:5:"align";s:6:"center";}s:1:"B";a:3:{s:4:"type";s:3:"vfs";s:4:"name";s:4:"$row";s:7:"onclick";s:18:"$row_cont[onclick]";}s:1:"C";a:4:{s:4:"type";s:8:"checkbox";s:4:"size";s:17:""$row_cont[name]"";s:4:"name";s:10:"selected[]";s:5:"align";s:5:"right";}}}s:4:"rows";i:1;s:4:"cols";i:3;s:7:"options";a:3:{i:0;s:4:"100%";i:1;s:3:"400";i:6;s:4:"auto";}}}i:3;a:1:{s:1:"A";a:4:{s:4:"type";s:4:"text";s:4:"name";s:4:"name";s:4:"span";s:11:",selectName";s:6:"needed";s:1:"1";}}i:4;a:1:{s:1:"A";a:4:{s:4:"type";s:6:"select";s:4:"size";s:3:"All";s:4:"name";s:4:"mime";s:4:"span";s:11:",selectMime";}}i:5;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:5;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' => '','modified' => '1239794780',);
$templ_data[] = array('name' => 'filemanager.select','template' => '','lang' => '','group' => '0','version' => '1.7.001','data' => 'a:1:{i:0;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:4:{s:4:"type";s:6:"button";s:4:"size";s:4:"home";s:4:"name";s:12:"button[home]";s:5:"align";s:6:"center";}s:1:"B";a:6:{s:4:"type";s:4:"grid";s:4:"data";a:6:{i:0;a:3:{s:2:"c2";s:11:"selectFiles";s:2:"h3";s:20:",@mode=open-multiple";s:2:"h4";s:15:",!@options-mime";}i:1;a:1:{s:1:"A";a:6:{s:4:"type";s:4:"hbox";s:4:"size";s:1:"4";i:1;a:2:{s:4:"type";s:4:"html";s:4:"name";s:2:"js";}i:2;a:3:{s:4:"type";s:6:"button";s:4:"name";s:10:"button[up]";s:4:"size";s:4:"goup";}i:3;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";}i:4;a:3:{s:4:"type";s:4:"text";s:4:"name";s:4:"path";s:4:"span";s:12:",displayNone";}}}i:2;a:1:{s:1:"A";a:7:{s:4:"type";s:4:"grid";s:4:"size";s:17:"100%,400,,,,,auto";s:4:"name";s:3:"dir";s:4:"data";a:2:{i:0;a:3:{s:2:"c1";s:3:"row";s:1:"A";s:2:"20";s:1:"C";s:23:"1%,!@mode=open-multiple";}i:1;a:3:{s:1:"A";a:4:{s:4:"type";s:8:"vfs-mime";s:4:"name";s:12:"${row}[path]";s:4:"span";s:11:",selectIcon";s:5:"align";s:6:"center";}s:1:"B";a:3:{s:4:"type";s:3:"vfs";s:4:"name";s:4:"$row";s:7:"onclick";s:18:"$row_cont[onclick]";}s:1:"C";a:4:{s:4:"type";s:8:"checkbox";s:4:"size";s:17:""$row_cont[name]"";s:4:"name";s:10:"selected[]";s:5:"align";s:5:"right";}}}s:4:"rows";i:1;s:4:"cols";i:3;s:7:"options";a:3:{i:0;s:4:"100%";i:1;s:3:"400";i:6;s:4:"auto";}}}i:3;a:1:{s:1:"A";a:4:{s:4:"type";s:4:"text";s:4:"name";s:4:"name";s:4:"span";s:11:",selectName";s:6:"needed";s:1:"1";}}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: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:5;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' => '','modified' => '1239794780',);

View File

@ -42,9 +42,9 @@
<row disabled="@mode=open-multiple">
<textbox id="name" class="selectName" needed="1"/>
</row>
<row>
<row disabled="!@options-mime">
<menulist class="selectMime">
<menupopup options="All" id="mime"/>
<menupopup options="All files" id="mime" onchange="1"/>
</menulist>
</row>
<row>