aboutsummaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorMichael Gapczynski <mtgap@owncloud.com>2012-07-31 13:06:32 -0400
committerMichael Gapczynski <mtgap@owncloud.com>2012-07-31 13:06:32 -0400
commit8d01e1a3555e303deed72636d0d7fabce447cf1c (patch)
treebbe64b4f39efeec034e1255f5b05cd87dcc47448 /core
parent8729119d4baa6a9c7f27314b175b67dc3693ebdd (diff)
downloadnextcloud-server-8d01e1a3555e303deed72636d0d7fabce447cf1c.tar.gz
nextcloud-server-8d01e1a3555e303deed72636d0d7fabce447cf1c.zip
Don't show self or already shared with users and groups in the share with search
Diffstat (limited to 'core')
-rw-r--r--core/ajax/share.php35
-rw-r--r--core/js/share.js9
2 files changed, 36 insertions, 8 deletions
diff --git a/core/ajax/share.php b/core/ajax/share.php
index 3d3436c71fb..c613baa7f5e 100644
--- a/core/ajax/share.php
+++ b/core/ajax/share.php
@@ -66,14 +66,37 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['item']
break;
case 'getShareWith':
if (isset($_GET['search'])) {
+ // TODO Include contacts
$shareWith = array();
- $users = OC_User::getUsers($_GET['search'], 4);
- foreach ($users as $user) {
- $shareWith[] = array('label' => $user, 'value' => array('shareType' => OCP\Share::SHARE_TYPE_USER, 'shareWith' => $user));
+ $count = 0;
+ $users = array();
+ $limit = 0;
+ $offset = 0;
+ while ($count < 4 && count($users) == $limit) {
+ $limit = 4 - $count;
+ $users = OC_User::getUsers($_GET['search'], $limit, $offset);
+ $offset += $limit;
+ foreach ($users as $user) {
+ if ((!isset($_GET['itemShares'][OCP\Share::SHARE_TYPE_USER]) || !in_array($user, $_GET['itemShares'][OCP\Share::SHARE_TYPE_USER])) && $user != OC_User::getUser()) {
+ $shareWith[] = array('label' => $user, 'value' => array('shareType' => OCP\Share::SHARE_TYPE_USER, 'shareWith' => $user));
+ $count++;
+ }
+ }
}
- $groups = OC_Group::getGroups($_GET['search'], 4);
- foreach ($groups as $group) {
- $shareWith[] = array('label' => $group.' (group)', 'value' => array('shareType' => OCP\Share::SHARE_TYPE_GROUP, 'shareWith' => $group));
+ $count = 0;
+ $groups = array();
+ $limit = 0;
+ $offset = 0;
+ while ($count < 4 && count($groups) == $limit) {
+ $limit = 4 - $count;
+ $groups = OC_Group::getGroups($_GET['search'], $limit, $offset);
+ $offset += $limit;
+ foreach ($groups as $group) {
+ if (!isset($_GET['itemShares'][OCP\Share::SHARE_TYPE_GROUP]) || !in_array($group, $_GET['itemShares'][OCP\Share::SHARE_TYPE_GROUP])) {
+ $shareWith[] = array('label' => $group.' (group)', 'value' => array('shareType' => OCP\Share::SHARE_TYPE_GROUP, 'shareWith' => $group));
+ $count++;
+ }
+ }
}
OC_JSON::success(array('data' => $shareWith));
}
diff --git a/core/js/share.js b/core/js/share.js
index 811f9007087..44abc14ede4 100644
--- a/core/js/share.js
+++ b/core/js/share.js
@@ -8,7 +8,7 @@ OC.Share={
PERMISSION_UPDATE:2,
PERMISSION_DELETE:8,
PERMISSION_SHARE:16,
- item:[],
+ itemShares:[],
statuses:[],
loadIcons:function(itemType) {
// Load all share icons
@@ -91,6 +91,7 @@ OC.Share={
OC.Share.showPrivateLink(item, share.share_with);
} else {
OC.Share.addShareWith(share.share_type, share.share_with, share.permissions, possiblePermissions);
+
}
});
}
@@ -99,7 +100,7 @@ OC.Share={
// if (cache[search.term]) {
// response(cache[search.term]);
// } else {
- $.get(OC.filePath('core', 'ajax', 'share.php'), { fetch: 'getShareWith', search: search.term }, function(result) {
+ $.get(OC.filePath('core', 'ajax', 'share.php'), { fetch: 'getShareWith', search: search.term, itemShares: OC.Share.itemShares }, function(result) {
if (result.status == 'success' && result.data.length > 0) {
response(result.data);
} else {
@@ -136,6 +137,10 @@ OC.Share={
});
},
addShareWith:function(shareType, shareWith, permissions, possiblePermissions) {
+ if (!OC.Share.itemShares[shareType]) {
+ OC.Share.itemShares[shareType] = [];
+ }
+ OC.Share.itemShares[shareType].push(shareWith);
var editChecked = createChecked = updateChecked = deleteChecked = shareChecked = '';
if (permissions & OC.Share.PERMISSION_CREATE) {
createChecked = 'checked="checked"';