ucb_rails_user 8.0.3 → 8.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/assets/javascripts/ucb_rails_user/ucb_rails_user.js +0 -56
- data/app/assets/stylesheets/ucb_rails_user/components/impersonations.css +26 -0
- data/app/assets/stylesheets/ucb_rails_user/components/users_table.css +36 -0
- data/app/controllers/concerns/ucb_rails_user/users_controller_concerns.rb +7 -4
- data/app/views/ucb_rails_user/impersonations/index.html.erb +17 -5
- data/app/views/ucb_rails_user/users/impersonate_search.html.erb +25 -0
- data/app/views/ucb_rails_user/users/index.html.erb +29 -14
- data/app/views/ucb_rails_user/users/new.html.erb +14 -19
- data/app/views/ucb_rails_user/users/search.html.erb +12 -13
- data/lib/ucb_rails_user/version.rb +1 -1
- metadata +3 -8
- data/app/assets/javascripts/ucb_rails_user/datatables.js +0 -16891
- data/app/assets/javascripts/ucb_rails_user/esm/bloodhound.js +0 -953
- data/app/assets/javascripts/ucb_rails_user/esm/datatables.js +0 -28437
- data/app/assets/javascripts/ucb_rails_user/esm/typeahead.js +0 -1538
- data/app/assets/javascripts/ucb_rails_user/typeahead.bundle.js +0 -2451
- data/app/assets/stylesheets/ucb_rails_user/pagy_tailwind.css +0 -21
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 33c1423ac635977abc651ba960a571fb70f398d436475d701f8932b06f54b361
|
|
4
|
+
data.tar.gz: 15d1eadd248c5a83ef7bc45511e7920721c344f24594eb9083856fb5343a545c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 23e75ecaf5356a46eb33bda871f6fdb6f0416b3d8b27bbaf5c3fba830ec5cb00958d23997cf6139ff3918c7d33907dfb8df64197bcbcadcc6ae9ddd9c17d95a2
|
|
7
|
+
data.tar.gz: 35eb226797cc645fdb3a7f2798bb0dc88315e9c62e5ff5e0eb8e317c59fb3581032417139c794e7c5833c3dbd724b1704c575a718297a6414cae7317dc0b8c71
|
|
@@ -35,20 +35,6 @@ var addDatatablesToUsersTable = function () {
|
|
|
35
35
|
$('.ucb-rails-users-table-wrapper #DataTables_Table_0_filter').append(addNewHtml)
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
var resetImpersonateButton = function() {
|
|
39
|
-
var targetId = $('#ucb_rails_user_impersonation_target_id').val()
|
|
40
|
-
if (targetId != null && targetId.toString().length > 0) {
|
|
41
|
-
$('input[data-impersonate-button]').removeAttr('disabled')
|
|
42
|
-
} else {
|
|
43
|
-
$('input[data-impersonate-button]').attr('disabled', 'disabled')
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
var clearImpersonateSelection = function() {
|
|
48
|
-
$('#ucb_rails_user_impersonation_target_id').val('')
|
|
49
|
-
resetImpersonateButton()
|
|
50
|
-
}
|
|
51
|
-
|
|
52
38
|
$( window ).on("load", function() {
|
|
53
39
|
// the datatable calling was failing intermittently, but adding the timeout
|
|
54
40
|
// seemed to fix it, so ¯\_(ツ)_/¯
|
|
@@ -58,46 +44,4 @@ $( window ).on("load", function() {
|
|
|
58
44
|
$('.search-results').hide()
|
|
59
45
|
$('.ucb-rails-user-loader').show()
|
|
60
46
|
})
|
|
61
|
-
|
|
62
|
-
var usersSource = new Bloodhound({
|
|
63
|
-
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
|
|
64
|
-
queryTokenizer: Bloodhound.tokenizers.whitespace,
|
|
65
|
-
remote: {
|
|
66
|
-
url: '/admin/users/impersonate_search?q=%QUERY',
|
|
67
|
-
wildcard: '%QUERY'
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
$('#ucb_rails_user_impersonation_target').typeahead(null, {
|
|
72
|
-
name: 'users',
|
|
73
|
-
source: usersSource,
|
|
74
|
-
display: 'name',
|
|
75
|
-
limit: 7, // any higher than this, and the results don't display properly
|
|
76
|
-
templates: {
|
|
77
|
-
empty: [
|
|
78
|
-
'<div class="empty-message">',
|
|
79
|
-
'No match found',
|
|
80
|
-
'</div>'
|
|
81
|
-
].join('\n'),
|
|
82
|
-
suggestion: function (data) {
|
|
83
|
-
return '<div><strong>' + data.name + '</strong> (' + data.uid + ')</div>'
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
$('#ucb_rails_user_impersonation_target').keyup(function(event) {
|
|
89
|
-
if ($(event.target).val().length == 0) {
|
|
90
|
-
clearImpersonateSelection()
|
|
91
|
-
}
|
|
92
|
-
})
|
|
93
|
-
|
|
94
|
-
$('#ucb_rails_user_impersonation_target').bind('typeahead:open', function(event, suggestion) {
|
|
95
|
-
clearImpersonateSelection()
|
|
96
|
-
})
|
|
97
|
-
|
|
98
|
-
$('#ucb_rails_user_impersonation_target').bind('typeahead:select', function(event, suggestion) {
|
|
99
|
-
$('#ucb_rails_user_impersonation_target_id').val(suggestion.id)
|
|
100
|
-
resetImpersonateButton()
|
|
101
|
-
})
|
|
102
|
-
|
|
103
47
|
})
|
|
@@ -10,3 +10,29 @@
|
|
|
10
10
|
.recent-impersonations li {
|
|
11
11
|
list-style-type: none;
|
|
12
12
|
font-size: 110%; }
|
|
13
|
+
|
|
14
|
+
.impersonate_search_results_container {
|
|
15
|
+
margin-top: 10px;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.impersonate_result_list {
|
|
19
|
+
list-style: none;
|
|
20
|
+
padding: 0;
|
|
21
|
+
margin-top: 10px;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.impersonate_result_list_item {
|
|
25
|
+
padding: 8px;
|
|
26
|
+
border-bottom: 1px solid #eee;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.impersonate_no_results_found {
|
|
30
|
+
margin-top: 10px;
|
|
31
|
+
color: #999;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.impersonate_before_search {
|
|
35
|
+
margin-top: 10px;
|
|
36
|
+
color: #666;
|
|
37
|
+
}
|
|
38
|
+
|
|
@@ -65,3 +65,39 @@ h1 {
|
|
|
65
65
|
padding-left: 10px;
|
|
66
66
|
padding-right: 10px;
|
|
67
67
|
}
|
|
68
|
+
|
|
69
|
+
.user_sort {
|
|
70
|
+
text-decoration: none;
|
|
71
|
+
color: inherit;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.user_form_container {
|
|
75
|
+
margin-top: 10px;
|
|
76
|
+
overflow: auto;
|
|
77
|
+
margin-bottom: 10px;
|
|
78
|
+
vertical-align: middle;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.user_form_base_style {
|
|
82
|
+
display: flex;
|
|
83
|
+
gap: 10px;
|
|
84
|
+
align-items:
|
|
85
|
+
center; flex-grow: 1;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.user_form_return_count {
|
|
89
|
+
float: left;
|
|
90
|
+
padding-right: 15px;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.user_form_search_box {
|
|
94
|
+
float: left;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.user_form_add_user_link {
|
|
98
|
+
float: right;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.user_turbo_frame_users {
|
|
102
|
+
margin-bottom: 10px;
|
|
103
|
+
}
|
|
@@ -37,8 +37,12 @@ module UcbRailsUser::UsersControllerConcerns
|
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
def impersonate_search
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
@query = params[:q]
|
|
41
|
+
@results = if @query.present? && @query.length >= 2
|
|
42
|
+
UcbRailsUser::UserSearch.find_users_by_name(@query)
|
|
43
|
+
else
|
|
44
|
+
[]
|
|
45
|
+
end
|
|
42
46
|
end
|
|
43
47
|
|
|
44
48
|
def edit
|
|
@@ -124,8 +128,7 @@ module UcbRailsUser::UsersControllerConcerns
|
|
|
124
128
|
private
|
|
125
129
|
|
|
126
130
|
def search_user_table(query)
|
|
127
|
-
UcbRailsUser.user_class.where('lower(first_name) like lower(:q) or lower(last_name) like lower(:q) or ldap_uid like :q or employee_id like :q',
|
|
128
|
-
q: '%' + query + '%')
|
|
131
|
+
UcbRailsUser.user_class.where('lower(first_name) like lower(:q) or lower(last_name) like lower(:q) or lower(email) like lower(:q) or lower(alternate_email) like lower(:q) or ldap_uid like :q or ldap_uid like :q or employee_id like :q', q: '%' + query + '%')
|
|
129
132
|
end
|
|
130
133
|
|
|
131
134
|
def user_params(extra_params = [])
|
|
@@ -6,10 +6,22 @@
|
|
|
6
6
|
</div>
|
|
7
7
|
<% else %>
|
|
8
8
|
<div class="impersonation-form">
|
|
9
|
-
<%=
|
|
10
|
-
<%= f.
|
|
11
|
-
<%= f.
|
|
12
|
-
|
|
9
|
+
<%= form_with url: admin_user_impersonate_search_path, method: :get, data: { turbo_frame: "search_results" } do |f| %>
|
|
10
|
+
<%= f.label :q, "Search for user:" %>
|
|
11
|
+
<%= f.search_field :q, placeholder: "Enter name...", oninput: "
|
|
12
|
+
clearTimeout(window.impersonateSearchTimer);
|
|
13
|
+
window.impersonateSearchTimer = setTimeout(() => {
|
|
14
|
+
if (this.value.length >= 2) {
|
|
15
|
+
this.form.requestSubmit();
|
|
16
|
+
}
|
|
17
|
+
}, 300);
|
|
18
|
+
" %>
|
|
19
|
+
<% end %>
|
|
20
|
+
|
|
21
|
+
<%= turbo_frame_tag "search_results" do %>
|
|
22
|
+
<div style="margin-top: 10px; color: #666;">
|
|
23
|
+
Type at least 2 characters to search for a user...
|
|
24
|
+
</div>
|
|
13
25
|
<% end %>
|
|
14
26
|
</div>
|
|
15
27
|
<% end %>
|
|
@@ -20,7 +32,7 @@
|
|
|
20
32
|
<ul>
|
|
21
33
|
<% current_user.recent_impersonations.each do |imp| %>
|
|
22
34
|
<li>
|
|
23
|
-
<%= link_to full_name_with_uid(imp.target),
|
|
35
|
+
<%= link_to full_name_with_uid(imp.target), admin_impersonations_path(ucb_rails_user_impersonation: { target_id: imp.target.id }), data: { turbo_method: :post, turbo_frame: "_top" } %>
|
|
24
36
|
</li>
|
|
25
37
|
<% end %>
|
|
26
38
|
</ul>
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
<%= turbo_frame_tag "search_results" do %>
|
|
2
|
+
<% if @results.any? %>
|
|
3
|
+
<div class="impersonate_search_results_container">
|
|
4
|
+
<strong>Search results for "<%= @query %>":</strong>
|
|
5
|
+
<ul class="impersonate_result_list">
|
|
6
|
+
<% @results.each do |user| %>
|
|
7
|
+
<li class="impersonate_result_list_item">
|
|
8
|
+
<%= link_to admin_impersonations_path(ucb_rails_user_impersonation: { target_id: user.id }), data: { turbo_method: :post, turbo_frame: "_top" }, style: "text-decoration: none; color: inherit; display: block;" do %>
|
|
9
|
+
<strong><%= user.full_name %></strong>
|
|
10
|
+
<span style="color: #666; margin-left: 10px;">(<%= user.ldap_uid %>)</span>
|
|
11
|
+
<% end %>
|
|
12
|
+
</li>
|
|
13
|
+
<% end %>
|
|
14
|
+
</ul>
|
|
15
|
+
</div>
|
|
16
|
+
<% elsif @query.present? && @query.length >= 2 %>
|
|
17
|
+
<div class="impersonate_no_results_found">
|
|
18
|
+
No users found matching "<%= @query %>"
|
|
19
|
+
</div
|
|
20
|
+
<% else %>
|
|
21
|
+
<div class="impersonate_before_search">
|
|
22
|
+
Type at least 2 characters to search for a user...
|
|
23
|
+
</div>
|
|
24
|
+
<% end %>
|
|
25
|
+
<% end %>
|
|
@@ -1,18 +1,30 @@
|
|
|
1
1
|
<div class="ucb-rails-users-table-header">
|
|
2
2
|
<h1>Users</h1>
|
|
3
|
-
<%= link_to "Add User", new_admin_user_path, class: "btn btn-primary", style: "float: right;" %>
|
|
4
3
|
</div>
|
|
5
4
|
|
|
6
5
|
<%= turbo_frame_tag "users" do %>
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
<% if flash[:notice] || flash[:error] || flash[:alert] %>
|
|
7
|
+
<div class="user_turbo_frame_users">
|
|
8
|
+
<% if flash[:notice] %>
|
|
9
|
+
<div class="alert alert-info"><%= flash[:notice] %></div>
|
|
10
|
+
<% end %>
|
|
11
|
+
<% if flash[:error] %>
|
|
12
|
+
<div class="alert alert-danger"><%= flash[:error] %></div>
|
|
13
|
+
<% end %>
|
|
14
|
+
<% if flash[:alert] %>
|
|
15
|
+
<div class="alert alert-warning"><%= flash[:alert] %></div>
|
|
16
|
+
<% end %>
|
|
17
|
+
</div>
|
|
18
|
+
<% end %>
|
|
19
|
+
<div class="user_form_container">
|
|
20
|
+
<%= form_with url: "", method: :get, data: { turbo_frame: "users" }, class: "user_form_base_style" do |form| %>
|
|
9
21
|
<%= form.hidden_field :sort, value: @sort %>
|
|
10
22
|
<%= form.hidden_field :dir, value: @sort_dir %>
|
|
11
|
-
<div
|
|
23
|
+
<div class="user_form_return_count">
|
|
12
24
|
Show <%= form.select :count, options_for_select([10, 25, 50, 100], selected: params[:count]), {}, { onchange: "this.form.requestSubmit()" } %>
|
|
13
25
|
</div>
|
|
14
|
-
<div
|
|
15
|
-
Search <%= form.search_field :query, value: params[:query], id: "user_search_field", placeholder: "Search users...", oninput: "
|
|
26
|
+
<div class="user_form_search_box">
|
|
27
|
+
Search <%= form.search_field :query, value: params[:query], id: "user_search_field", placeholder: "Search users...", data: { turbo_permanent: true }, oninput: "
|
|
16
28
|
clearTimeout(window.searchTimer);
|
|
17
29
|
window.searchTimer = setTimeout(() => {
|
|
18
30
|
this.form.requestSubmit();
|
|
@@ -20,13 +32,16 @@
|
|
|
20
32
|
" %>
|
|
21
33
|
</div>
|
|
22
34
|
<% end %>
|
|
35
|
+
<div class="user_form_add_user_link">
|
|
36
|
+
<%= link_to "Add User", new_admin_user_path, class: "btn btn-primary" %>
|
|
37
|
+
</div>
|
|
23
38
|
</div>
|
|
24
39
|
<div class="table-responsive ucb-rails-users-table-wrapper">
|
|
25
40
|
<table class="table table-striped table-bordered table-hover ucb-rails-users-table">
|
|
26
41
|
<thead>
|
|
27
42
|
<tr>
|
|
28
43
|
<th class="min">
|
|
29
|
-
<%= link_to admin_users_path(sort: "superuser_flag", dir: @sort == "superuser_flag" && @sort_dir == "asc" ? "desc" : "asc", query: params[:query], count: params[:count]), data: { turbo_frame: "users" },
|
|
44
|
+
<%= link_to admin_users_path(sort: "superuser_flag", dir: @sort == "superuser_flag" && @sort_dir == "asc" ? "desc" : "asc", query: params[:query], count: params[:count]), data: { turbo_frame: "users" }, class: "user_sort" do %>
|
|
30
45
|
Superuser?
|
|
31
46
|
<% if @sort == "superuser_flag" %>
|
|
32
47
|
<%= @sort_dir == "asc" ? "▲" : "▼" %>
|
|
@@ -34,7 +49,7 @@
|
|
|
34
49
|
<% end %>
|
|
35
50
|
</th>
|
|
36
51
|
<th class="min">
|
|
37
|
-
<%= link_to admin_users_path(sort: "inactive_flag", dir: @sort == "inactive_flag" && @sort_dir == "asc" ? "desc" : "asc", query: params[:query], count: params[:count]), data: { turbo_frame: "users" },
|
|
52
|
+
<%= link_to admin_users_path(sort: "inactive_flag", dir: @sort == "inactive_flag" && @sort_dir == "asc" ? "desc" : "asc", query: params[:query], count: params[:count]), data: { turbo_frame: "users" }, class: "user_sort" do %>
|
|
38
53
|
Inactive?
|
|
39
54
|
<% if @sort == "inactive_flag" %>
|
|
40
55
|
<%= @sort_dir == "asc" ? "▲" : "▼" %>
|
|
@@ -42,7 +57,7 @@
|
|
|
42
57
|
<% end %>
|
|
43
58
|
</th>
|
|
44
59
|
<th>
|
|
45
|
-
<%= link_to admin_users_path(sort: "first_name", dir: @sort == "first_name" && @sort_dir == "asc" ? "desc" : "asc", query: params[:query], count: params[:count]), data: { turbo_frame: "users" },
|
|
60
|
+
<%= link_to admin_users_path(sort: "first_name", dir: @sort == "first_name" && @sort_dir == "asc" ? "desc" : "asc", query: params[:query], count: params[:count]), data: { turbo_frame: "users" }, class: "user_sort" do %>
|
|
46
61
|
First Name
|
|
47
62
|
<% if @sort == "first_name" %>
|
|
48
63
|
<%= @sort_dir == "asc" ? "▲" : "▼" %>
|
|
@@ -50,7 +65,7 @@
|
|
|
50
65
|
<% end %>
|
|
51
66
|
</th>
|
|
52
67
|
<th>
|
|
53
|
-
<%= link_to admin_users_path(sort: "last_name", dir: @sort == "last_name" && @sort_dir == "asc" ? "desc" : "asc", query: params[:query], count: params[:count]), data: { turbo_frame: "users" },
|
|
68
|
+
<%= link_to admin_users_path(sort: "last_name", dir: @sort == "last_name" && @sort_dir == "asc" ? "desc" : "asc", query: params[:query], count: params[:count]), data: { turbo_frame: "users" }, class: "user_sort" do %>
|
|
54
69
|
Last Name
|
|
55
70
|
<% if @sort == "last_name" %>
|
|
56
71
|
<%= @sort_dir == "asc" ? "▲" : "▼" %>
|
|
@@ -58,7 +73,7 @@
|
|
|
58
73
|
<% end %>
|
|
59
74
|
</th>
|
|
60
75
|
<th>
|
|
61
|
-
<%= link_to admin_users_path(sort: "email", dir: @sort == "email" && @sort_dir == "asc" ? "desc" : "asc", query: params[:query], count: params[:count]), data: { turbo_frame: "users" },
|
|
76
|
+
<%= link_to admin_users_path(sort: "email", dir: @sort == "email" && @sort_dir == "asc" ? "desc" : "asc", query: params[:query], count: params[:count]), data: { turbo_frame: "users" }, class: "user_sort" do %>
|
|
62
77
|
Email
|
|
63
78
|
<% if @sort == "email" %>
|
|
64
79
|
<%= @sort_dir == "asc" ? "▲" : "▼" %>
|
|
@@ -66,7 +81,7 @@
|
|
|
66
81
|
<% end %>
|
|
67
82
|
</th>
|
|
68
83
|
<th class="dt">
|
|
69
|
-
<%= link_to admin_users_path(sort: "last_login_at", dir: @sort == "last_login_at" && @sort_dir == "asc" ? "desc" : "asc", query: params[:query], count: params[:count]), data: { turbo_frame: "users" },
|
|
84
|
+
<%= link_to admin_users_path(sort: "last_login_at", dir: @sort == "last_login_at" && @sort_dir == "asc" ? "desc" : "asc", query: params[:query], count: params[:count]), data: { turbo_frame: "users" }, class: "user_sort" do %>
|
|
70
85
|
Last Login
|
|
71
86
|
<% if @sort == "last_login_at" %>
|
|
72
87
|
<%= @sort_dir == "asc" ? "▲" : "▼" %>
|
|
@@ -74,7 +89,7 @@
|
|
|
74
89
|
<% end %>
|
|
75
90
|
</th>
|
|
76
91
|
<th>
|
|
77
|
-
<%= link_to admin_users_path(sort: "ldap_uid", dir: @sort == "ldap_uid" && @sort_dir == "asc" ? "desc" : "asc", query: params[:query], count: params[:count]), data: { turbo_frame: "users" },
|
|
92
|
+
<%= link_to admin_users_path(sort: "ldap_uid", dir: @sort == "ldap_uid" && @sort_dir == "asc" ? "desc" : "asc", query: params[:query], count: params[:count]), data: { turbo_frame: "users" }, class: "user_sort" do %>
|
|
78
93
|
UID
|
|
79
94
|
<% if @sort == "ldap_uid" %>
|
|
80
95
|
<%= @sort_dir == "asc" ? "▲" : "▼" %>
|
|
@@ -82,7 +97,7 @@
|
|
|
82
97
|
<% end %>
|
|
83
98
|
</th>
|
|
84
99
|
<th>
|
|
85
|
-
<%= link_to admin_users_path(sort: "employee_id", dir: @sort == "employee_id" && @sort_dir == "asc" ? "desc" : "asc", query: params[:query], count: params[:count]), data: { turbo_frame: "users" },
|
|
100
|
+
<%= link_to admin_users_path(sort: "employee_id", dir: @sort == "employee_id" && @sort_dir == "asc" ? "desc" : "asc", query: params[:query], count: params[:count]), data: { turbo_frame: "users" }, class: "user_sort" do %>
|
|
86
101
|
Employee ID
|
|
87
102
|
<% if @sort == "employee_id" %>
|
|
88
103
|
<%= @sort_dir == "asc" ? "▲" : "▼" %>
|
|
@@ -1,22 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
<h1>Users</h1>
|
|
1
|
+
<%= turbo_frame_tag "users" do %>
|
|
3
2
|
<h2>Add New User</h2>
|
|
4
|
-
</div>
|
|
5
3
|
|
|
6
|
-
<%= form_tag admin_user_search_path, method: :get, class: "form-inline user-search-form" do %>
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
<% end %>
|
|
13
|
-
|
|
14
|
-
<div class="ucb-rails-user-loader" style="display: none;">
|
|
15
|
-
Loading...
|
|
16
|
-
</div>
|
|
17
|
-
|
|
18
|
-
<div class="search-results">
|
|
19
|
-
<% if @results %>
|
|
20
|
-
<%= render "results" %>
|
|
4
|
+
<%= form_tag admin_user_search_path, method: :get, class: "form-inline user-search-form" do %>
|
|
5
|
+
<%= text_field_tag :first_name, "", placeholder: "First name", class: "form-control" %>
|
|
6
|
+
<%= text_field_tag :last_name, "", placeholder: "Last name", class: "form-control" %>
|
|
7
|
+
<%= text_field_tag :employee_id, "", placeholder: "Employee ID", class: "form-control" %>
|
|
8
|
+
<%= submit_tag "Search", class: "btn btn-primary", data: { turbo_submits_with: "Searching..." } %>
|
|
9
|
+
<%= link_to "Cancel", admin_users_path, class: "btn btn-default" %>
|
|
21
10
|
<% end %>
|
|
22
|
-
|
|
11
|
+
|
|
12
|
+
<div class="search-results">
|
|
13
|
+
<% if @results %>
|
|
14
|
+
<%= render "results" %>
|
|
15
|
+
<% end %>
|
|
16
|
+
</div>
|
|
17
|
+
<% end %>
|
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
<h1>Users</h1>
|
|
1
|
+
<%= turbo_frame_tag "users" do %>
|
|
3
2
|
<h2>Add New User</h2>
|
|
4
|
-
</div>
|
|
5
3
|
|
|
6
|
-
<%= form_tag admin_user_search_path, method: :get, class: "form-inline user-search-form" do %>
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
<% end %>
|
|
4
|
+
<%= form_tag admin_user_search_path, method: :get, class: "form-inline user-search-form" do %>
|
|
5
|
+
<%= text_field_tag :first_name, params[:first_name], placeholder: "First name", class: "form-control" %>
|
|
6
|
+
<%= text_field_tag :last_name, params[:last_name], placeholder: "Last name", class: "form-control" %>
|
|
7
|
+
<%= text_field_tag :employee_id, params[:employee_id], placeholder: "Employee ID", class: "form-control" %>
|
|
8
|
+
<%= submit_tag "Search", class: "btn btn-primary" %>
|
|
9
|
+
<%= link_to "Cancel", admin_users_path, class: "btn btn-default" %>
|
|
10
|
+
<% end %>
|
|
13
11
|
|
|
14
|
-
<div class="search-results">
|
|
15
|
-
|
|
16
|
-
</div>
|
|
12
|
+
<div class="search-results">
|
|
13
|
+
<%= render "search_results" %>
|
|
14
|
+
</div>
|
|
15
|
+
<% end %>
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ucb_rails_user
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 8.0.
|
|
4
|
+
version: 8.0.5
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Steve Downey
|
|
@@ -13,7 +13,7 @@ authors:
|
|
|
13
13
|
autorequire:
|
|
14
14
|
bindir: bin
|
|
15
15
|
cert_chain: []
|
|
16
|
-
date: 2025-10-
|
|
16
|
+
date: 2025-10-23 00:00:00.000000000 Z
|
|
17
17
|
dependencies:
|
|
18
18
|
- !ruby/object:Gem::Dependency
|
|
19
19
|
name: rails
|
|
@@ -336,13 +336,8 @@ files:
|
|
|
336
336
|
- README.md
|
|
337
337
|
- Rakefile
|
|
338
338
|
- app/assets/config/ucb_rails_user_manifest.js
|
|
339
|
-
- app/assets/javascripts/ucb_rails_user/datatables.js
|
|
340
|
-
- app/assets/javascripts/ucb_rails_user/esm/bloodhound.js
|
|
341
|
-
- app/assets/javascripts/ucb_rails_user/esm/datatables.js
|
|
342
|
-
- app/assets/javascripts/ucb_rails_user/esm/typeahead.js
|
|
343
339
|
- app/assets/javascripts/ucb_rails_user/esm/ucb_rails_user.js
|
|
344
340
|
- app/assets/javascripts/ucb_rails_user/scripts.js
|
|
345
|
-
- app/assets/javascripts/ucb_rails_user/typeahead.bundle.js
|
|
346
341
|
- app/assets/javascripts/ucb_rails_user/ucb_rails_user.js
|
|
347
342
|
- app/assets/stylesheets/ucb_rails_user/components/impersonations.css
|
|
348
343
|
- app/assets/stylesheets/ucb_rails_user/components/loader.css
|
|
@@ -350,7 +345,6 @@ files:
|
|
|
350
345
|
- app/assets/stylesheets/ucb_rails_user/datatables.css
|
|
351
346
|
- app/assets/stylesheets/ucb_rails_user/index.sass
|
|
352
347
|
- app/assets/stylesheets/ucb_rails_user/main.css
|
|
353
|
-
- app/assets/stylesheets/ucb_rails_user/pagy_tailwind.css
|
|
354
348
|
- app/assets/stylesheets/ucb_rails_user/styles.css
|
|
355
349
|
- app/assets/stylesheets/ucb_rails_user/typeahead_tweaks.sass
|
|
356
350
|
- app/assets/stylesheets/ucb_rails_user/user.css
|
|
@@ -394,6 +388,7 @@ files:
|
|
|
394
388
|
- app/views/ucb_rails_user/users/_search_results.html.erb
|
|
395
389
|
- app/views/ucb_rails_user/users/_user.html.erb
|
|
396
390
|
- app/views/ucb_rails_user/users/edit.html.erb
|
|
391
|
+
- app/views/ucb_rails_user/users/impersonate_search.html.erb
|
|
397
392
|
- app/views/ucb_rails_user/users/index.html.erb
|
|
398
393
|
- app/views/ucb_rails_user/users/new.html.erb
|
|
399
394
|
- app/views/ucb_rails_user/users/search.html.erb
|