From 7125932e3c6f6ff905298237a273f57fdd18571b Mon Sep 17 00:00:00 2001 From: Maxence Lange Date: Thu, 24 Aug 2017 14:52:46 +0200 Subject: [PATCH] rework on the members management + UI + * to include Contacts Signed-off-by: Maxence Lange --- appinfo/routes.php | 18 ++-- contact.json | 0 css/navigation.css | 14 ++- js/circles.app.actions.js | 9 +- js/circles.app.js | 1 + js/circles.app.navigation.js | 21 ++-- js/circles.app.results.members.js | 121 +++++++++++++++++---- js/circles.v1.js | 77 +++++++------ lib/AppInfo/Application.php | 22 ++-- lib/Controller/BaseController.php | 7 ++ lib/Controller/FederatedController.php | 1 + lib/Controller/MembersController.php | 144 ++++++++++++++++++------- lib/ISearch.php | 41 +++++++ lib/Model/BaseMember.php | 5 +- lib/Model/SearchResult.php | 134 +++++++++++++++++++++++ lib/Search/Contacts.php | 86 +++++++++++++++ lib/Search/LocalGroups.php | 51 +++++++++ lib/Search/LocalUsers.php | 55 ++++++++++ lib/Service/MembersService.php | 136 +++++++++++++++-------- lib/Service/SearchService.php | 101 +++++++++++++++++ 20 files changed, 877 insertions(+), 167 deletions(-) create mode 100644 contact.json create mode 100644 lib/ISearch.php create mode 100644 lib/Model/SearchResult.php create mode 100644 lib/Search/Contacts.php create mode 100644 lib/Search/LocalGroups.php create mode 100644 lib/Search/LocalUsers.php create mode 100644 lib/Service/SearchService.php diff --git a/appinfo/routes.php b/appinfo/routes.php index df6e76b7..f19f0e8b 100644 --- a/appinfo/routes.php +++ b/appinfo/routes.php @@ -73,17 +73,17 @@ return [ 'name' => 'Federated#receiveFederatedDelivery', 'url' => '/v1/payload', 'verb' => 'PUT' ], - ['name' => 'Members#search', 'url' => '/v1/circles/{uniqueId}/members', 'verb' => 'GET'], + ['name' => 'Members#searchGlobal', 'url' => '/v1/globalsearch', 'verb' => 'GET'], +// [ +// 'name' => 'Members#importFromGroup', 'url' => '/v1/circles/{uniqueId}/groupmembers', +// 'verb' => 'PUT' +// ], [ - 'name' => 'Members#importFromGroup', 'url' => '/v1/circles/{uniqueId}/groupmembers', - 'verb' => 'PUT' - ], - [ - 'name' => 'Members#addLocalMember', 'url' => '/v1/circles/{uniqueId}/member', 'verb' => 'PUT' - ], - [ - 'name' => 'Members#addEmailAddress', 'url' => '/v1/circles/{uniqueId}/email', 'verb' => 'PUT' + 'name' => 'Members#addMember', 'url' => '/v1/circles/{uniqueId}/member', 'verb' => 'PUT' ], +// [ +// 'name' => 'Members#addEmailAddress', 'url' => '/v1/circles/{uniqueId}/email', 'verb' => 'PUT' +// ], [ 'name' => 'Members#removeMember', 'url' => '/v1/circles/{uniqueId}/member', 'verb' => 'DELETE', diff --git a/contact.json b/contact.json new file mode 100644 index 00000000..e69de29b diff --git a/css/navigation.css b/css/navigation.css index 4cb2d870..595f8cc4 100644 --- a/css/navigation.css +++ b/css/navigation.css @@ -241,7 +241,7 @@ div.circle .owner, div.circle .type, div.circle .resume { } #linkcircle, #addmember, #linkgroup, #joincircle, #leavecircle { - width: 250px; + width: 350px; } #members_search_result > #addmember, #groups_search_result > #linkgroup { @@ -261,7 +261,7 @@ div.circle .owner, div.circle .type, div.circle .resume { overflow-y: auto; position: absolute; top: 45px; - width: 260px; + width: 360px; } .icon-add-user { @@ -337,3 +337,13 @@ div.circle .owner, div.circle .type, div.circle .resume { margin: 15px; } +DIV.result_top { + font-size: 15px; +} + +DIV.result_bot { + font-size: 12px; + padding: 5px; + height: 10px; + font-style: italic; +} \ No newline at end of file diff --git a/js/circles.app.actions.js b/js/circles.app.actions.js index 962e8006..cf92b272 100644 --- a/js/circles.app.actions.js +++ b/js/circles.app.actions.js @@ -145,14 +145,7 @@ var actions = { } curr.searchUser = search; - - $.get(OC.linkToOCS('apps/files_sharing/api/v1', 1) + 'sharees', - { - format: 'json', - search: search, - perPage: 200, - itemType: 'principals' - }, resultMembers.searchMembersResult); + api.searchUsers(search, resultMembers.searchMembersResult); }, diff --git a/js/circles.app.js b/js/circles.app.js index b213efea..61ee8dcc 100644 --- a/js/circles.app.js +++ b/js/circles.app.js @@ -80,6 +80,7 @@ var define = { typeUser: 1, typeGroup: 2, typeMail: 3, + typeContact: 4, levelMember: 1, levelModerator: 4, levelAdmin: 8, diff --git a/js/circles.app.navigation.js b/js/circles.app.navigation.js index c621b5c6..9f667e59 100644 --- a/js/circles.app.navigation.js +++ b/js/circles.app.navigation.js @@ -86,16 +86,16 @@ var nav = { t('circles', 'Please confirm'), function (e) { if (e === true) { - api.addGroupMembers(curr.circle, elements.addMember.val(), - resultMembers.addGroupMembersResult); + api.addMember(curr.circle, elements.addMember.val(), define.typeGroup, + resultMembers.addMemberResult); } }); } else { if (actions.validateEmail(elements.addMember.val())) { - api.addEmail(curr.circle, elements.addMember.val(), - resultMembers.addEmailResult); + api.addMember(curr.circle, elements.addMember.val(), define.typeMail, + resultMembers.addMemberResult); } else { - api.addMember(curr.circle, elements.addMember.val(), + api.addMember(curr.circle, elements.addMember.val(), define.typeUser, resultMembers.addMemberResult); } } @@ -385,7 +385,7 @@ var nav = { var userId = $(this).attr('member-id'); var userType = Number($(this).attr('member-type')); - + if (userId === curr.userId && userType === define.typeUser) { $(this).find('td.username').css('font-weight', 'bold').css('font-style', 'italic'); $(this).css('background', '#e0e0e0'); @@ -430,7 +430,14 @@ var nav = { if (userType === define.typeMail) { statusSelect.append($('