aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/attach.php45
-rw-r--r--include/reddav.php38
-rw-r--r--mod/filestorage.php53
-rw-r--r--view/tpl/attach_edit.tpl2
4 files changed, 74 insertions, 64 deletions
diff --git a/include/attach.php b/include/attach.php
index a3ee3f0ef..f5eaaa448 100644
--- a/include/attach.php
+++ b/include/attach.php
@@ -835,6 +835,51 @@ function get_cloudpath($arr) {
}
/**
+ * @brief Returns path to parent folder in cloud/.
+ *
+ * @param $arr
+ * @return string with the folder path
+ */
+function get_parent_cloudpath($channel_id, $channel_name, $attachHash) {
+ //Build directory tree and redirect
+ $parentHash = $attachHash;
+ do {
+ $parentHash = find_folder_hash_by_attach_hash($channel_id, $parentHash);
+ if ($parentHash) {
+ $parentName = find_filename_by_hash($channel_id, $parentHash);
+ $parentFullPath = $parentName."/".$parentFullPath;
+ }
+ } while ($parentHash);
+ $parentFullPath = z_root() . "/cloud/" . $channel_name . "/" . $parentFullPath;
+ return $parentFullPath;
+}
+function find_folder_hash_by_attach_hash($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 find_filename_by_hash($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
* @param $out
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 = ""; // "<a href=\"attach/".$attachHash."\" title=\"".$displayName."\"><i class=\"icon-download\"></i></a>";
$html.= "<tr>
<td>$icon</td>
- <td><a href=\"{$fullPath}\">{$displayName}</a></td>";
+ <td style=\"min-width: 15em\"><a href=\"{$fullPath}\">{$displayName}</a></td>";
if($is_owner) {
$html .= "<td>" . (($size) ? $attachIcon : '') . "</td>
<td><a href=\"".$fileStorageUrl."/".$attachId."/edit\" title=\"".t('Edit')."\"><i class=\"icon-pencil btn btn-default\"></i></a></td>
- <td><a href=\"".$fileStorageUrl."/".$attachId."/delete\" title=\"".t('Delete')."\"><i class=\"icon-remove btn btn-default drop-icons\"></i></a></td>";
+ <td><a href=\"".$fileStorageUrl."/".$attachId."/delete\" title=\"".t('Delete')."\" onclick=\"return confirm('Are you sure you want to delete this item?');\"><i class=\"icon-remove btn btn-default drop-icons\"></i></a></td>";
}
else {
$html .= "<td></td><td></td><td></td>";
@@ -1090,20 +1090,24 @@ class RedBrowser extends DAV\Browser\Plugin {
if (get_class($node)==='Sabre\\DAV\\SimpleCollection')
return;
- $output.= '<tr><td colspan="2"><form method="post" action="">
- <h3>Create new folder</h3>
- <input type="hidden" name="sabreAction" value="mkcol" />
- Name: <input type="text" name="name" />
- <input type="submit" value="create" />
- </form>
- <form method="post" action="" enctype="multipart/form-data">
- <h3>Upload file</h3>
- <input type="hidden" name="sabreAction" value="put" />
- Name (optional): <input type="text" name="name" /><br />
- File: <input type="file" name="file" /><br />
- <input type="submit" value="upload" />
- </form>
- </td></tr>';
+ $output.= '<table>
+ <tr>
+ <td><strong>Create new folder</strong>&nbsp;&nbsp;&nbsp;</td>
+ <td><form method="post" action="">
+ <input type="text" name="name" />
+ <input type="submit" value="create" />
+ <input type="hidden" name="sabreAction" value="mkcol" />
+ </form></td>
+ </tr><tr>
+ <td><strong>Upload file</strong>&nbsp;&nbsp;&nbsp;</td>
+ <td><form method="post" action="" enctype="multipart/form-data">
+ <input type="file" name="file" style="display: inline;"/>
+ <input type="submit" value="upload" />
+ <input type="hidden" name="sabreAction" value="put" />
+ <!-- Name (optional): <input type="text" name="name" /> we should rather provide a rename action in edit form-->
+ </form></td>
+ </tr>
+ </table>';
}
diff --git a/mod/filestorage.php b/mod/filestorage.php
index bcf798e7b..6a7eac706 100644
--- a/mod/filestorage.php
+++ b/mod/filestorage.php
@@ -26,12 +26,12 @@ 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) ;
+ goaway($cloudPath);
}
-
-
-
-
function filestorage_content(&$a) {
if(argc() > 1)
@@ -83,12 +83,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 +139,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 @@
-<div id="attach-edit-backlink">< <a href="filestorage/{{$channelnick}}">{{$backlink}}</a></div>
+<div id="attach-edit-backlink">< <a href="cloud/{{$channelnick}}">{{$backlink}}</a></div>
<h1>{{$header}}</h1>