aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorredmatrix <git@macgirvin.com>2016-07-24 20:27:59 -0700
committerredmatrix <git@macgirvin.com>2016-07-24 20:27:59 -0700
commit271f85be3b36a4d4aac55a51cb7ff2580a95ce3e (patch)
tree183829f6d4dd31a5adf7538211db20e56fc8e5ed
parentb5f2b4af354b8864a3dfa1756c52631625430c44 (diff)
downloadvolse-hubzilla-271f85be3b36a4d4aac55a51cb7ff2580a95ce3e.tar.gz
volse-hubzilla-271f85be3b36a4d4aac55a51cb7ff2580a95ce3e.tar.bz2
volse-hubzilla-271f85be3b36a4d4aac55a51cb7ff2580a95ce3e.zip
add acl selection to files upload via /cloud (still missing from directory creation)
-rw-r--r--Zotlabs/Module/File_upload.php38
-rw-r--r--Zotlabs/Storage/Browser.php21
-rw-r--r--view/tpl/cloud_actionspanel.tpl24
3 files changed, 76 insertions, 7 deletions
diff --git a/Zotlabs/Module/File_upload.php b/Zotlabs/Module/File_upload.php
new file mode 100644
index 000000000..45f820b7c
--- /dev/null
+++ b/Zotlabs/Module/File_upload.php
@@ -0,0 +1,38 @@
+<?php
+namespace Zotlabs\Module;
+
+require_once('include/attach.php');
+require_once('include/channel.php');
+require_once('include/photos.php');
+
+
+class File_upload extends \Zotlabs\Web\Controller {
+
+ function post() {
+
+ $channel = (($_REQUEST['channick']) ? get_channel_by_nick($_REQUEST['channick']) : null);
+
+ if(! $channel) {
+ logger('channel not found');
+ killme();
+ }
+
+ $_REQUEST['source'] = 'file_upload';
+
+ if($channel['channel_id'] != local_channel()) {
+ $_REQUEST['contact_allow'] = expand_acl($channel['channel_allow_cid']);
+ $_REQUEST['group_allow'] = expand_acl($channel['channel_allow_gid']);
+ $_REQUEST['contact_deny'] = expand_acl($channel['channel_deny_cid']);
+ $_REQUEST['group_deny'] = expand_acl($channel['channel_deny_gid']);
+ }
+
+ if($_REQUEST['directory_name'])
+ $r = attach_mkdir($channel,get_observer_hash(),$_REQUEST);
+ else
+ $r = attach_store($channel,get_observer_hash(), '', $_REQUEST);
+
+ goaway(z_root() . '/' . $_REQUEST['return_url']);
+
+ }
+
+}
diff --git a/Zotlabs/Storage/Browser.php b/Zotlabs/Storage/Browser.php
index e719530b5..93c55bd4c 100644
--- a/Zotlabs/Storage/Browser.php
+++ b/Zotlabs/Storage/Browser.php
@@ -274,6 +274,22 @@ class Browser extends DAV\Browser\Plugin {
// SimpleCollection, we won't need to show the panel either.
if (get_class($node) === 'Sabre\\DAV\\SimpleCollection')
return;
+ require_once('include/acl_selectors.php');
+
+ $aclselect = null;
+ $lockstate = '';
+
+ if($this->auth-owner_id) {
+ $channel = channelx_by_n($this->auth->owner_id);
+ if($channel) {
+ $acl = new \Zotlabs\Access\AccessList($channel);
+ $channel_acl = $acl->get();
+ $lockstate = (($acl->is_private()) ? 'lock' : 'unlock');
+
+ $aclselect = ((local_channel() == $this->auth->owner_id) ? populate_acl($channel_acl,false, \Zotlabs\Lib\PermissionDescription::fromGlobalPermission('view_storage')) : '');
+
+ }
+ }
// Storage and quota for the account (all channels of the owner of this directory)!
$limit = engr_units_to_bytes(service_class_fetch($owner, 'attach_upload_limit'));
@@ -293,7 +309,6 @@ class Browser extends DAV\Browser\Plugin {
userReadableSize($limit),
round($used / $limit, 1) * 100);
}
-
// prepare quota for template
$quota = array();
$quota['used'] = $used;
@@ -307,6 +322,10 @@ class Browser extends DAV\Browser\Plugin {
'$upload_header' => t('Upload file'),
'$upload_submit' => t('Upload'),
'$quota' => $quota,
+ '$channick' => $this->auth->owner_nick,
+ '$aclselect' => $aclselect,
+ '$lockstate' => $lockstate,
+ '$return_url' => \App::$cmd,
'$dragdroptext' => t('Drop files here to immediately upload')
));
}
diff --git a/view/tpl/cloud_actionspanel.tpl b/view/tpl/cloud_actionspanel.tpl
index fba457fdc..913522c87 100644
--- a/view/tpl/cloud_actionspanel.tpl
+++ b/view/tpl/cloud_actionspanel.tpl
@@ -2,25 +2,37 @@
<label for="files-mkdir">{{$folder_header}}</label>
<form method="post" action="">
<input type="hidden" name="sabreAction" value="mkcol">
- <input id="files-mkdir" type="text" name="name" class="form-control form-group">
+ <input id="files-mkdir" type="text" name="dirname" class="form-control form-group">
<button class="btn btn-primary btn-sm pull-right" type="submit" value="{{$folder_submit}}">{{$folder_submit}}</button>
</form>
<div class="clear"></div>
</div>
<div id="files-upload-tools" class="section-content-tools-wrapper">
{{if $quota.limit || $quota.used}}<div class="{{if $quota.warning}}section-content-danger-wrapper{{else}}section-content-info-wrapper{{/if}}">{{if $quota.warning}}<strong>{{$quota.warning}} </strong>{{/if}}{{$quota.desc}}</div>{{/if}}
- <form id="ajax-upload-files" method="post" action="" enctype="multipart/form-data">
- <input type="hidden" name="sabreAction" value="put">
+ <form id="ajax-upload-files" method="post" action="file_upload" enctype="multipart/form-data">
+ <input type="hidden" name="channick" value="{{$channick}}" />
+ <input type="hidden" name="return_url" value="{{$return_url}}" />
<div>
- <div id="filedrag" style="height: 7em;"><br>{{$dragdroptext}}</div>
+ <div id="filedrag" style="height: 7em;"><br>{{$dragdroptext}}</div>
</div>
<div id="file-upload-list"></div>
<div class="clear"></div>
+ {{$aclselect}}
<label for="files-upload">{{$upload_header}}</label>
<div class="clear"></div>
- <input class="form-group pull-left" id="files-upload" type="file" name="file" style="width: 70%;">
- <button class="btn btn-primary btn-sm pull-right" type="submit" value="{{$upload_submit}}">{{$upload_submit}}</button>
+ <input class="form-group pull-left" id="files-upload" type="file" name="userfile" style="width: 70%;">
+ <div class="pull-right btn-group">
+ <div class="btn-group">
+ {{if $lockstate}}
+ <button id="dbtn-acl" class="btn btn-default btn-sm" data-toggle="modal" data-target="#aclModal" onclick="return false;">
+ <i id="jot-perms-icon" class="fa fa-{{$lockstate}}"></i>
+ </button>
+ {{/if}}
+ <button id="dbtn-submit" class="btn btn-primary btn-sm pull-right" type="submit" name="submit" value="{{$upload_submit}}">{{$upload_submit}}</button>
+ </div>
+ </div>
</form>
<div class="clear"></div>
<hr/>
</div>
+