diff --git a/appinfo/routes.php b/appinfo/routes.php index f7f2340..1ab9af6 100644 --- a/appinfo/routes.php +++ b/appinfo/routes.php @@ -8,7 +8,7 @@ return [ ['name' => 'page#index', 'url' => '/', 'verb' => 'GET'], ['name' => 'note_api#preflighted_cors', 'url' => '/api/0.1/{path}', 'verb' => 'OPTIONS', 'requirements' => ['path' => '.+']], - ['name' => 'note#get_user_groups_and_users', 'url' => '/api/0.1/getusergroups', 'verb' => 'GET'], + ['name' => 'note#get_user_groups_and_users_with_share', 'url' => '/api/0.1/getusergroups', 'verb' => 'POST'], ['name' => 'note#add_group_share', 'url' => '/api/0.1/groups/addshare', 'verb' => 'POST'], ['name' => 'note#remove_group_share', 'url' => '/api/0.1/groups/removeshare', 'verb' => 'POST'], ['name' => 'note#add_user_share', 'url' => '/api/0.1/users/addshare', 'verb' => 'POST'], diff --git a/controller/notecontroller.php b/controller/notecontroller.php index 29cb358..6658a76 100644 --- a/controller/notecontroller.php +++ b/controller/notecontroller.php @@ -200,7 +200,7 @@ class NoteController extends Controller { /** * @NoAdminRequired */ - public function getUserGroupsAndUsers() { + public function getUserGroupsAndUsersWithShare($noteId) { $userMgr = \OC::$server->getUserManager(); $grpMgr = \OC::$server->getGroupManager(); $users = array(); @@ -224,11 +224,30 @@ class NoteController extends Controller { $groups[] = $g->getGID(); } } + $users = array_unique($users); if(($i = array_search($this->userId, $users)) !== false) { unset($users[$i]); } - $params = array('groups' => $groups, 'users' => $users); + $pos_users = array(); + $pos_groups = array(); + $shares = $this->notesharemapper->getSharesForNote($noteId); + foreach($shares as $s) { + $shareType = $s->getSharedUser(); + if(strlen($shareType) != 0) { + if(($i = array_search($shareType, $users)) !== false) { + unset($users[$i]); + $pos_users[] = $shareType; + } + } else { + $shareType = $s->getSharedGroup(); + if(($i = array_search($shareType, $groups)) !== false) { + unset($groups[$i]); + $pos_groups[] = $shareType; + } + } + } + $params = array('groups' => $groups, 'users' => $users, 'posGroups' => $pos_groups, 'posUsers' => $pos_users); return new JSONResponse($params); } diff --git a/css/style.css b/css/style.css index 6760147..26a219c 100644 --- a/css/style.css +++ b/css/style.css @@ -158,7 +158,7 @@ div[data-placeholder]:not([data-placeholder=""]):empty::before { padding-bottom: 5px; } -.selected-share:hover, .unselected-share:hover, .unselected-share span:hover { +.selected-share:hover, .unselected-share:hover, .selected-share span:hover, .unselected-share span:hover { cursor: pointer; } diff --git a/js/script.js b/js/script.js index 7939408..06aacfa 100644 --- a/js/script.js +++ b/js/script.js @@ -221,13 +221,6 @@ View.prototype = { var modalnote = $("#modal-note-div .quicknote"); var note = $('.notes-grid [data-id=' + id + ']').parent(); - if($('.notes-grid [data-id=' + id + ']').hasClass('shareowner')) { - $('.save-button #unshare-button').show(); - $('.save-button #share-button').hide(); - } else { - $('.save-button #unshare-button').hide(); - $('.save-button #share-button').show(); - } var title = note.find("#title-editable").html(); var content = note.find("#content-editable").html(); @@ -404,10 +397,16 @@ View.prototype = { // handle share editing notes. $('#modal-note-div #share-button').click(function (event) { - $.get(OC.generateUrl('/apps/quicknotes/api/0.1/getusergroups'), function(data) { + var id = $('.note-active').data('id'); + var formData = { + noteId: id + } + $.post(OC.generateUrl('/apps/quicknotes/api/0.1/getusergroups'), formData, function(data) { var shareOptions = $('#note-share-options'); var groups = data.groups; var users = data.users; + var pos_groups = data.posGroups; + var pos_users = data.posUsers; var neg = $('#share-neg'); var pos = $('#share-pos'); var sear = $('#share-search'); @@ -428,6 +427,21 @@ View.prototype = { $(li).hide(); neg[0].appendChild(li); } + for(var i=0; i
-