diff --git a/include/attach.php b/include/attach.php
index a3ee3f0ef..bf58566fe 100644
--- a/include/attach.php
+++ b/include/attach.php
@@ -834,6 +834,45 @@ function get_cloudpath($arr) {
return $path;
}
+function get_parent_cloudpath($channel_id, $channel_name, $attachHash) {
+ //Build directory tree and redirect
+ $parentHash = $attachHash;
+ do {
+ $parentHash = findFolderHashByAttachHash($channel_id, $parentHash);
+ if ($parentHash) {
+ $parentName = findFilenameByHash($channel_id, $parentHash);
+ $parentFullPath = $parentName."/".$parentFullPath;
+ }
+ } while ($parentHash);
+ $parentFullPath = z_root() . "/cloud/" . $channel_name . "/" . $parentFullPath;
+ goaway($parentFullPath);
+}
+function findFolderHashByAttachHash($channel_id, $attachHash) {
+ $r = q("select * from attach where uid = %d and hash = '%s' limit 1",
+ intval($channel_id), dbesc($attachHash)
+ );
+ $hash = "";
+ if($r) {
+ foreach($r as $rr) {
+ $hash = $rr['folder'];
+ }
+ }
+ return $hash;
+}
+function findFilenameByHash($channel_id, $attachHash) {
+ $r = q("select * from attach where uid = %d and hash = '%s' limit 1",
+ intval($channel_id), dbesc($attachHash)
+ );
+ $filename = "";
+ if($r) {
+ foreach($r as $rr) {
+ $filename = $rr['filename'];
+ }
+ }
+ return $filename;
+}
+
+
/**
*
* @param $in
diff --git a/include/reddav.php b/include/reddav.php
index 852a18869..fe05af606 100644
--- a/include/reddav.php
+++ b/include/reddav.php
@@ -1028,16 +1028,16 @@ class RedBrowser extends DAV\Browser\Plugin {
}
}
$attachId = $this->findAttachIdByHash($attachHash);
- $fileStorageUrl = str_replace("cloud/","filestorage/",$path);
+ $fileStorageUrl = substr($fullPath, 0, strpos($fullPath,"cloud/")) . "filestorage/".$this->auth->channel_name;
$attachIcon = ""; // "";
$html.= "
$icon |
- {$displayName} | ";
+ {$displayName} | ";
if($is_owner) {
$html .= "" . (($size) ? $attachIcon : '') . " |
|
- | ";
+ | ";
}
else {
$html .= " | | | ";
@@ -1090,20 +1090,24 @@ class RedBrowser extends DAV\Browser\Plugin {
if (get_class($node)==='Sabre\\DAV\\SimpleCollection')
return;
- $output.= '
-
- |
';
+ $output.= '
+
+ Create new folder |
+ |
+
+ Upload file |
+ |
+
+
';
}
diff --git a/mod/filestorage.php b/mod/filestorage.php
index bcf798e7b..7db5a0961 100644
--- a/mod/filestorage.php
+++ b/mod/filestorage.php
@@ -26,12 +26,13 @@ function filestorage_post(&$a) {
attach_change_permissions($channel_id,$resource,$str_contact_allow,$str_group_allow,$str_contact_deny,$str_group_deny,$recurse = false);
+ //Build directory tree and redirect
+ $channel = $a->get_channel();
+ $cloudPath = get_parent_cloudpath($channel_id, $channel['channel_address'], $resource) ;
+ echo $cloudPath;die;
+ goaway($cloudPath);
}
-
-
-
-
function filestorage_content(&$a) {
if(argc() > 1)
@@ -83,12 +84,12 @@ function filestorage_content(&$a) {
);
if(! $r) {
notice( t('File not found.') . EOL);
- goaway(z_root() . '/filestorage/' . $which);
+ goaway(z_root() . '/cloud/' . $which);
}
attach_delete($owner,$r[0]['hash']);
- goaway(z_root() . '/filestorage/' . $which);
+ goaway(z_root() . '/cloud/' . $which);
}
@@ -139,45 +140,6 @@ function filestorage_content(&$a) {
return $o;
}
- $r = q("select * from attach where uid = %d order by edited desc",
- intval($owner)
- );
-
- $files = null;
-
- if($r) {
- $files = array();
- foreach($r as $rr) {
- $files[$rr['id']][] = array(
- 'id' => $rr['id'],
- 'download' => $rr['hash'],
- 'title' => $rr['filename'],
- 'size' => $rr['filesize'],
- 'rev' => $rr['revision'],
- 'dir' => (($rr['flags'] & ATTACH_FLAG_DIR) ? true : false)
- );
- }
- }
-
- $limit = service_class_fetch ($owner,'attach_upload_limit');
- $r = q("select sum(filesize) as total from attach where aid = %d ",
- intval($channel['channel_account_id'])
- );
- $used = $r[0]['total'];
-
- $url = z_root() . "/filestorage/" . $which;
- return $o . replace_macros(get_markup_template("filestorage.tpl"), array(
- '$baseurl' => $url,
- '$download' => t('Download'),
- '$files' => $files,
- '$channel' => $which,
- '$edit' => t('Edit'),
- '$delete' => t('Delete'),
- '$used' => $used,
- '$usedlabel' => t('Used: '),
- '$directory' => t('[directory]'),
- '$limit' => $limit,
- '$limitlabel' => t('Limit: '),
- ));
+ goaway(z_root() . '/cloud/' . $which);
}
diff --git a/view/tpl/attach_edit.tpl b/view/tpl/attach_edit.tpl
index 68b44c65c..0d3d2c571 100644
--- a/view/tpl/attach_edit.tpl
+++ b/view/tpl/attach_edit.tpl
@@ -1,4 +1,4 @@
-
+
{{$header}}