mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-11-07 16:44:20 +01:00
extract data-preparation from Etemplate\Widget\Vfs::beforeSendToClient() to use it to send the data to client-side in an AJAX call
This commit is contained in:
parent
1c053ade4c
commit
10d61dd4c7
@ -39,10 +39,10 @@ class Vfs extends File
|
|||||||
{
|
{
|
||||||
if ($this->type === 'vfs-upload' || !empty($this->attrs['type']) && $this->attrs['type'] === 'vfs-upload')
|
if ($this->type === 'vfs-upload' || !empty($this->attrs['type']) && $this->attrs['type'] === 'vfs-upload')
|
||||||
{
|
{
|
||||||
$form_name = self::form_name($cname, $this->id, $expand ? $expand : array('cont'=>self::$request->content));
|
$form_name = self::form_name($cname, $this->id, $expand ? $expand : array('cont' => self::$request->content));
|
||||||
if (!empty($this->attrs['path']))
|
if (!empty($this->attrs['path']))
|
||||||
{
|
{
|
||||||
$path = self::expand_name($this->attrs['path'], $expand['c']??null, $expand['row'], $expand['c_']??null, $expand['row_']??null, $expand['cont']);
|
$path = self::expand_name($this->attrs['path'], $expand['c'] ?? null, $expand['row'], $expand['c_'] ?? null, $expand['row_'] ?? null, $expand['cont']);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -51,13 +51,13 @@ class Vfs extends File
|
|||||||
|
|
||||||
self::setElementAttribute($form_name, 'path', $path);
|
self::setElementAttribute($form_name, 'path', $path);
|
||||||
// ID maps to path - check there for any existing files
|
// ID maps to path - check there for any existing files
|
||||||
list($app,$id,$relpath) = explode(':',$path,3);
|
list($app, $id, $relpath) = explode(':', $path, 3);
|
||||||
if($app && $id)
|
if ($app && $id)
|
||||||
{
|
{
|
||||||
if(!is_numeric($id))
|
if (!is_numeric($id))
|
||||||
{
|
{
|
||||||
$_id = self::expand_name($id,0,0,0,0,self::$request->content);
|
$_id = self::expand_name($id, 0, 0, 0, 0, self::$request->content);
|
||||||
if($_id != $id && $_id)
|
if ($_id != $id && $_id)
|
||||||
{
|
{
|
||||||
$id = $_id;
|
$id = $_id;
|
||||||
$form_name = "$app:$id:$relpath";
|
$form_name = "$app:$id:$relpath";
|
||||||
@ -68,56 +68,68 @@ class Vfs extends File
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
$value =& self::get_array(self::$request->content, $form_name, true);
|
$value =& self::get_array(self::$request->content, $form_name, true);
|
||||||
$path = Api\Link::vfs_path($app,$id,'',true);
|
$path = Api\Link::vfs_path($app, $id, '', true);
|
||||||
if (!empty($relpath)) $path .= '/'.$relpath;
|
if (!empty($relpath)) $path .= '/' . $relpath;
|
||||||
|
|
||||||
if (true) $value = array();
|
$value = self::findAttachments($path);
|
||||||
|
|
||||||
// Single file, already existing
|
|
||||||
if (substr($path,-1) != '/' && Api\Vfs::file_exists($path) && !Api\Vfs::is_dir($path))
|
|
||||||
{
|
|
||||||
$file = Api\Vfs::stat($path);
|
|
||||||
$file['path'] = $path;
|
|
||||||
$file['name'] = Api\Vfs::basename($file['path']);
|
|
||||||
$file['mime'] = Api\Vfs::mime_content_type($file['path']);
|
|
||||||
$file['download_url'] = Api\Vfs::download_url($file['path']);
|
|
||||||
$value = array($file);
|
|
||||||
}
|
|
||||||
// Single file, missing extension in path
|
|
||||||
else if (substr($path, -1) != '/' && !Api\Vfs::file_exists($path) && $relpath && substr($relpath,-4,1) !== '.')
|
|
||||||
{
|
|
||||||
$find = Api\Vfs::find(Api\Vfs::dirname($path), array(
|
|
||||||
'type' => 'f',
|
|
||||||
'maxdepth' => 1,
|
|
||||||
'name' => Api\Vfs::basename($path).'.*',
|
|
||||||
));
|
|
||||||
foreach($find as $file)
|
|
||||||
{
|
|
||||||
$file_info = Api\Vfs::stat($file);
|
|
||||||
$file_info['path'] = $file;
|
|
||||||
$file_info['name'] = Api\Vfs::basename($file_info['path']);
|
|
||||||
$file_info['mime'] = Api\Vfs::mime_content_type($file_info['path']);
|
|
||||||
$file_info['download_url'] = Api\Vfs::download_url($file_info['path']);
|
|
||||||
$value[] = $file_info;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (substr($path, -1) == '/' && Api\Vfs::is_dir($path))
|
|
||||||
{
|
|
||||||
$scan = Api\Vfs::scandir($path);
|
|
||||||
foreach($scan as $file)
|
|
||||||
{
|
|
||||||
$file_info = Api\Vfs::stat("$path$file");
|
|
||||||
$file_info['path'] = "$path$file";
|
|
||||||
$file_info['name'] = Api\Vfs::basename($file_info['path']);
|
|
||||||
$file_info['mime'] = Api\Vfs::mime_content_type($file_info['path']);
|
|
||||||
$file_info['download_url'] = Api\Vfs::download_url($file_info['path']);
|
|
||||||
$value[] = $file_info;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find all attachments, can be used to prepare the data for the widget on client-side
|
||||||
|
*
|
||||||
|
* @param string $path eg. "/apps/$app/$id/$rel_path"
|
||||||
|
* @return array
|
||||||
|
* @throws Api\Exception\AssertionFailed
|
||||||
|
*/
|
||||||
|
public static function findAttachments($path)
|
||||||
|
{
|
||||||
|
$value = [];
|
||||||
|
// Single file, already existing
|
||||||
|
if (substr($path,-1) != '/' && Api\Vfs::file_exists($path) && !Api\Vfs::is_dir($path))
|
||||||
|
{
|
||||||
|
$file = Api\Vfs::stat($path);
|
||||||
|
$file['path'] = $path;
|
||||||
|
$file['name'] = Api\Vfs::basename($file['path']);
|
||||||
|
$file['mime'] = Api\Vfs::mime_content_type($file['path']);
|
||||||
|
$file['download_url'] = Api\Vfs::download_url($file['path']);
|
||||||
|
$value = array($file);
|
||||||
|
}
|
||||||
|
// Single file, missing extension in path
|
||||||
|
else if (substr($path, -1) != '/' && !Api\Vfs::file_exists($path) && $relpath && substr($relpath,-4,1) !== '.')
|
||||||
|
{
|
||||||
|
$find = Api\Vfs::find(Api\Vfs::dirname($path), array(
|
||||||
|
'type' => 'f',
|
||||||
|
'maxdepth' => 1,
|
||||||
|
'name' => Api\Vfs::basename($path).'.*',
|
||||||
|
));
|
||||||
|
foreach($find as $file)
|
||||||
|
{
|
||||||
|
$file_info = Api\Vfs::stat($file);
|
||||||
|
$file_info['path'] = $file;
|
||||||
|
$file_info['name'] = Api\Vfs::basename($file_info['path']);
|
||||||
|
$file_info['mime'] = Api\Vfs::mime_content_type($file_info['path']);
|
||||||
|
$file_info['download_url'] = Api\Vfs::download_url($file_info['path']);
|
||||||
|
$value[] = $file_info;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (substr($path, -1) == '/' && Api\Vfs::is_dir($path))
|
||||||
|
{
|
||||||
|
$scan = Api\Vfs::scandir($path);
|
||||||
|
foreach($scan as $file)
|
||||||
|
{
|
||||||
|
$file_info = Api\Vfs::stat("$path$file");
|
||||||
|
$file_info['path'] = "$path$file";
|
||||||
|
$file_info['name'] = Api\Vfs::basename($file_info['path']);
|
||||||
|
$file_info['mime'] = Api\Vfs::mime_content_type($file_info['path']);
|
||||||
|
$file_info['download_url'] = Api\Vfs::download_url($file_info['path']);
|
||||||
|
$value[] = $file_info;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $value;
|
||||||
|
}
|
||||||
|
|
||||||
public static function ajax_upload()
|
public static function ajax_upload()
|
||||||
{
|
{
|
||||||
parent::ajax_upload();
|
parent::ajax_upload();
|
||||||
|
Loading…
Reference in New Issue
Block a user