From ce80e9dfd21b13804b5fe24a08f1bc93a3375e5c Mon Sep 17 00:00:00 2001 From: Ryan Mathis Date: Mon, 20 Jun 2022 10:43:27 -0700 Subject: [PATCH] Implemented search and add user --- Controller/GrouperGroupsController.php | 4 +- View/Elements/Components/optAction.ctp | 2 +- View/Elements/Components/subscriberList.ctp | 68 ++++++++++++++++++--- View/Elements/base-styles.ctp | 4 ++ 4 files changed, 66 insertions(+), 12 deletions(-) diff --git a/Controller/GrouperGroupsController.php b/Controller/GrouperGroupsController.php index 6d1ea22..03b4f85 100644 --- a/Controller/GrouperGroupsController.php +++ b/Controller/GrouperGroupsController.php @@ -227,8 +227,8 @@ public function findSubscriber() $this->response->disableCache(); } - $groupName = urldecode($this->request->query['group']); - $findUserId = urldecode($this->request->query['userId']); + // $groupName = urldecode($this->request->query['group']); + $findUserId = urldecode($this->request->query['term']); $co = urldecode($this->request->query['co']); $mode = urldecode($this->request->query['mode']); diff --git a/View/Elements/Components/optAction.ctp b/View/Elements/Components/optAction.ctp index 43c7608..2c6d939 100644 --- a/View/Elements/Components/optAction.ctp +++ b/View/Elements/Components/optAction.ctp @@ -4,7 +4,7 @@ 'id' => 'join-group.' . $idx )); ?> Form->hidden('GroupName', array('default' => $group, 'id' => 'groupName.' . $idx)); ?> - diff --git a/View/Elements/Components/subscriberList.ctp b/View/Elements/Components/subscriberList.ctp index 53ce214..ca05222 100644 --- a/View/Elements/Components/subscriberList.ctp +++ b/View/Elements/Components/subscriberList.ctp @@ -28,23 +28,23 @@ Form->input("addUser", array('label' => false, 'class' => 'form-control', 'value' => isset($searchcriteria) ? $searchcriteria : '')) ?>
-
Form->end(); ?> +
+

+
- @@ -73,7 +73,7 @@ array( 'plugin' => "grouper_lite", 'controller' => 'grouper_groups', - 'action' => 'findSubscriber' + 'action' => 'addSubscriber' ) ); ?>'; $('.members-btn').click(function(ev) { @@ -88,8 +88,43 @@ load = loadModalData(group); load(); + + attachAutoComplete(); }); + function attachAutoComplete() { + $("#addUser").autocomplete({ + source: "Html->url( + array( + 'controller' => 'grouper_groups', + 'action' => 'findSubscriber', + '?' => array('co' => 1, 'mode' => PeoplePickerModeEnum::All) + ) + ); ?>", + minLength: 3, + select: function(event, ui) { + // $("#group-add-member").hide(); + // $("#group-add-member-name").text(ui.item.label).show(); + $("#addUser").val(ui.item.email); + // $("#CoGroupMemberCoPersonLabel").val(ui.item.label); + $("#addUserbutton").prop('disabled', false).focus(); + $("#group-add-member-clear-button").show(); + return false; + }, + search: function(event, ui) { + $("#group-add-member-search-container .co-loading-mini").show(); + }, + focus: function(event, ui) { + event.preventDefault(); + $("#group-add-member-search-container .co-loading-mini").hide(); + $("#group-add-member").val(ui.item.label + " (" + ui.item.value + ")"); + }, + close: function(event, ui) { + $("#group-add-member-search-container .co-loading-mini").hide(); + } + }).autocomplete("instance")._renderItem = formatCoPersonAutoselectItem; + } + function onAddUserSubmit(ev) { ev.preventDefault(); ev.stopPropagation(); @@ -182,7 +217,7 @@ } function onRemoveUser(user, group, button, data) { - + $('#subscribers .error').hide(); $.ajax({ method: 'DELETE', url: removeUrl + '?group=' + group + '&userId=' + user, @@ -199,14 +234,27 @@ }); } + function showButtonSpinner() { + $('#btn-icon').removeClass('fa-plus').addClass('fa-spinner fa-pulse'); + $('#addUserbutton').attr('disabled', true); + } + + function hideButtonSpinner() { + $('#btn-icon').removeClass('fa-spinner fa-pulse').addClass('fa-plus'); + $('#addUserbutton').attr('disabled', false); + } + function onAddUser(user, group, field, data) { + $('#subscribers .error').hide(); + showButtonSpinner(); $.ajax({ method: 'POST', - url: addUrl + '?co=1&mode=AL&group=' + group + '&userId=' + user, + url: addUrl + '?group=' + group + '&userId=' + user, dataType: 'json', data: data, success: function(data) { load(); + hideButtonSpinner(); }, error: function(ev) { var msg = ev.status === 404 ? @@ -217,6 +265,8 @@ var err = $('#subscribers .error'); err.text(msg).show(); + + hideButtonSpinner(); } }); } diff --git a/View/Elements/base-styles.ctp b/View/Elements/base-styles.ctp index 0d3330e..83b8f44 100644 --- a/View/Elements/base-styles.ctp +++ b/View/Elements/base-styles.ctp @@ -72,4 +72,8 @@ #subscribers .msg { display: none; } + + .modal-open .ui-menu { + z-index: 2000; + } \ No newline at end of file