diff --git a/core/ajax/share.php b/core/ajax/share.php index 4c5ef310b7..41c9e80fd7 100644 --- a/core/ajax/share.php +++ b/core/ajax/share.php @@ -49,21 +49,34 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['item'] } break; } -} else if (isset($_GET['fetch']) && isset($_GET['itemType'])) { +} else if (isset($_GET['fetch'])) { switch ($_GET['fetch']) { case 'getItemsSharedStatuses': - $return = OCP\Share::getItemsShared($_GET['itemType'], OCP\Share::FORMAT_STATUSES); - ($return) ? OC_JSON::success(array('data' => $return)) : OC_JSON::error(); + if (isset($_GET['itemType'])) { + $return = OCP\Share::getItemsShared($_GET['itemType'], OCP\Share::FORMAT_STATUSES); + ($return) ? OC_JSON::success(array('data' => $return)) : OC_JSON::error(); + } break; case 'getItem': // TODO Check if the item was shared to the current user - if (isset($_GET['item'])) { + if (isset($_GET['itemType']) && isset($_GET['item'])) { $return = OCP\Share::getItemShared($_GET['itemType'], $_GET['item']); ($return) ? OC_JSON::success(array('data' => $return)) : OC_JSON::error(); } break; case 'getShareWith': - // TODO Autocomplete for all users, groups, etc. + if (isset($_GET['search'])) { + $shareWith = array(); + $users = OC_User::getUsers(); + foreach ($users as $user) { + $shareWith[] = array('label' => $user, 'value' => array('shareType' => OCP\Share::SHARE_TYPE_USER, 'shareWith' => $user)); + } + $groups = OC_Group::getGroups(); + foreach ($groups as $group) { + $shareWith[] = array('label' => $group.' (group)', 'value' => array('shareType' => OCP\Share::SHARE_TYPE_GROUP, 'shareWith' => $group)); + } + OC_JSON::success(array('data' => $shareWith)); + } break; } } diff --git a/core/js/share.js b/core/js/share.js index 8ab92c2a85..64fcb77c0b 100644 --- a/core/js/share.js +++ b/core/js/share.js @@ -94,6 +94,32 @@ OC.Share={ }); } $('#dropdown').show('blind'); + $('#shareWith').autocomplete({minLength: 2, source: function(search, response) { +// if (cache[search.term]) { +// response(cache[search.term]); +// } else { + $.get(OC.filePath('core', 'ajax', 'share.php'), { fetch: 'getShareWith', search: search.term }, function(result) { + if (result.status == 'success') { + response(result.data); + } else { + // Suggest sharing via email + response(); + } + }); +// } + }, select: function(event, selected) { + var shareType = selected.item.value.shareType; + var shareWith = selected.item.value.shareWith; + $(this).val(shareWith); + // Default permissions are Read and Share + var permissions = OC.Share.PERMISSION_READ | OC.Share.PERMISSION_SHARE; + OC.Share.share($('#dropdown').data('item-type'), $('#dropdown').data('item'), shareType, shareWith, permissions, function() { + OC.Share.addShareWith(shareType, shareWith, permissions, possiblePermissions); + $('#shareWith').val(''); + }); + return false; + } + }); }, hideDropDown:function(callback) { $('#dropdown').hide('blind', function() { @@ -273,17 +299,6 @@ $(document).ready(function() { $('a.unshare', this).hide(); } }); - - $('#shareWith').live('change', function() { - var shareType = $(li).data('share-type'); - var shareWith = $(this).val(); - // Default permissions are Read and Share - var permissions = OC.Share.PERMISSION_READ | OC.Share.PERMISSION_SHARE; - OC.Share.share($('#dropdown').data('item-type'), $('#dropdown').data('item'), shareType, shareWith, permissions, function() { - OC.Share.addShareWith(shareType, shareWith, permissions); - $('#shareWith').val(''); - }); - }); $('.showCruds').live('click', function() { $(this).parent().find('.cruds').toggle();