diff options
-rw-r--r-- | include/attach.php | 45 | ||||
-rw-r--r-- | include/reddav.php | 38 | ||||
-rw-r--r-- | mod/filestorage.php | 53 | ||||
-rw-r--r-- | view/tpl/attach_edit.tpl | 2 |
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> </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> </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> |