Implemented issue #2136 - Improve admin -> user -> default shown users are sometimes different with and/or without search text -> unify search.
This commit is contained in:
parent
f2ff8ee532
commit
29c61f0586
4 changed files with 11 additions and 96 deletions
|
@ -240,6 +240,7 @@ test:integration:es_mysql:
|
||||||
- export ES_URL="http://localhost:9200"
|
- export ES_URL="http://localhost:9200"
|
||||||
- rake db:create
|
- rake db:create
|
||||||
- rake db:migrate
|
- rake db:migrate
|
||||||
|
- ruby -I test/ test/integration/elasticsearch_active_test.rb
|
||||||
- ruby -I test/ test/integration/elasticsearch_test.rb
|
- ruby -I test/ test/integration/elasticsearch_test.rb
|
||||||
- ruby -I test/ test/controllers/search_controller_test.rb
|
- ruby -I test/ test/controllers/search_controller_test.rb
|
||||||
- ruby -I test/ test/integration/report_test.rb
|
- ruby -I test/ test/integration/report_test.rb
|
||||||
|
@ -259,6 +260,7 @@ test:integration:es_postgresql:
|
||||||
- export ES_URL="http://localhost:9200"
|
- export ES_URL="http://localhost:9200"
|
||||||
- rake db:create
|
- rake db:create
|
||||||
- rake db:migrate
|
- rake db:migrate
|
||||||
|
- ruby -I test/ test/integration/elasticsearch_active_test.rb
|
||||||
- ruby -I test/ test/integration/elasticsearch_test.rb
|
- ruby -I test/ test/integration/elasticsearch_test.rb
|
||||||
- ruby -I test/ test/controllers/search_controller_test.rb
|
- ruby -I test/ test/controllers/search_controller_test.rb
|
||||||
- ruby -I test/ test/integration/report_test.rb
|
- ruby -I test/ test/integration/report_test.rb
|
||||||
|
|
|
@ -27,23 +27,20 @@ class Index extends App.ControllerSubContent
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
$(e.target).toggleClass('active')
|
$(e.target).toggleClass('active')
|
||||||
query = @searchInput.val().trim()
|
query = @searchInput.val().trim()
|
||||||
if query
|
@query = query
|
||||||
@delay(@search, 220, 'search')
|
@delay(@search, 220, 'search')
|
||||||
return
|
|
||||||
@recent()
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# start search
|
# start search
|
||||||
@searchInput.bind( 'keyup', (e) =>
|
@searchInput.bind( 'keyup', (e) =>
|
||||||
query = @searchInput.val().trim()
|
query = @searchInput.val().trim()
|
||||||
return if !query
|
|
||||||
return if query is @query
|
return if query is @query
|
||||||
@query = query
|
@query = query
|
||||||
@delay(@search, 220, 'search')
|
@delay(@search, 220, 'search')
|
||||||
)
|
)
|
||||||
|
|
||||||
# show last 20 users
|
# show last 20 users
|
||||||
@recent()
|
@search()
|
||||||
|
|
||||||
renderResult: (user_ids = []) ->
|
renderResult: (user_ids = []) ->
|
||||||
@stopLoading()
|
@stopLoading()
|
||||||
|
@ -143,43 +140,21 @@ class Index extends App.ControllerSubContent
|
||||||
App.Ajax.request(
|
App.Ajax.request(
|
||||||
id: 'search'
|
id: 'search'
|
||||||
type: 'GET'
|
type: 'GET'
|
||||||
url: "#{@apiPath}/users/search"
|
url: "#{@apiPath}/users/search?sort_by=created_at"
|
||||||
data:
|
data:
|
||||||
query: @query
|
query: @query || '*'
|
||||||
limit: 140
|
limit: 50
|
||||||
role_ids: role_ids
|
role_ids: role_ids
|
||||||
full: true
|
full: true
|
||||||
processData: true,
|
processData: true,
|
||||||
success: (data, status, xhr) =>
|
success: (data, status, xhr) =>
|
||||||
App.Collection.loadAssets(data.assets)
|
App.Collection.loadAssets(data.assets)
|
||||||
@renderResult(data.user_ids)
|
@renderResult(data.user_ids)
|
||||||
|
@stopLoading()
|
||||||
done: =>
|
done: =>
|
||||||
@stopLoading()
|
@stopLoading()
|
||||||
)
|
)
|
||||||
|
|
||||||
recent: =>
|
|
||||||
role_ids = []
|
|
||||||
@$('.tab.active').each( (i,d) ->
|
|
||||||
role_ids.push $(d).data('id')
|
|
||||||
)
|
|
||||||
@startLoading(@$('.table-overview'))
|
|
||||||
App.Ajax.request(
|
|
||||||
id: 'search'
|
|
||||||
type: 'GET'
|
|
||||||
url: "#{@apiPath}/users/recent"
|
|
||||||
data:
|
|
||||||
limit: 50
|
|
||||||
role_ids: role_ids
|
|
||||||
full: true
|
|
||||||
processData: true
|
|
||||||
success: (data, status, xhr) =>
|
|
||||||
App.Collection.loadAssets(data.assets)
|
|
||||||
@renderResult(data.user_ids)
|
|
||||||
@stopLoading()
|
|
||||||
error: =>
|
|
||||||
@stopLoading()
|
|
||||||
)
|
|
||||||
|
|
||||||
new: (e) ->
|
new: (e) ->
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
new App.ControllerGenericNew(
|
new App.ControllerGenericNew(
|
||||||
|
@ -191,7 +166,7 @@ class Index extends App.ControllerSubContent
|
||||||
navupdate: '#users'
|
navupdate: '#users'
|
||||||
genericObject: 'User'
|
genericObject: 'User'
|
||||||
container: @el.closest('.content')
|
container: @el.closest('.content')
|
||||||
callback: @recent
|
callback: @search
|
||||||
)
|
)
|
||||||
|
|
||||||
import: (e) ->
|
import: (e) ->
|
||||||
|
|
|
@ -476,67 +476,6 @@ class UsersController < ApplicationController
|
||||||
render json: list, status: :ok
|
render json: list, status: :ok
|
||||||
end
|
end
|
||||||
|
|
||||||
# @path [GET] /users/recent
|
|
||||||
#
|
|
||||||
# @tag Search
|
|
||||||
# @tag User
|
|
||||||
#
|
|
||||||
# @summary Recent creates Users.
|
|
||||||
# @notes Recent creates Users.
|
|
||||||
#
|
|
||||||
# @parameter limit [Integer] The limit of search results.
|
|
||||||
# @parameter role_ids(multi) [Array<String>] A list of Role identifiers to which the Users have to be allocated to.
|
|
||||||
# @parameter full [Boolean] Defines if the result should be
|
|
||||||
# true: { user_ids => [1,2,...], assets => {...} }
|
|
||||||
# or false: [{:id => user.id, :label => "firstname lastname <email>", :value => "firstname lastname <email>"},...].
|
|
||||||
#
|
|
||||||
# @response_message 200 [Array<User>] A list of User records matching the search term.
|
|
||||||
# @response_message 401 Invalid session.
|
|
||||||
def recent
|
|
||||||
|
|
||||||
if !current_user.permissions?('admin.user')
|
|
||||||
response_access_deny
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
# do query
|
|
||||||
user_all = if params[:role_ids].present?
|
|
||||||
User.joins(:roles).where('roles.id' => params[:role_ids]).where('users.id != 1').order('users.created_at DESC').limit(params[:limit] || 20)
|
|
||||||
else
|
|
||||||
User.where('id != 1').order('created_at DESC').limit(params[:limit] || 20)
|
|
||||||
end
|
|
||||||
|
|
||||||
# build result list
|
|
||||||
if !response_full?
|
|
||||||
users = []
|
|
||||||
user_all.each do |user|
|
|
||||||
realname = user.firstname.to_s + ' ' + user.lastname.to_s
|
|
||||||
if user.email && user.email.to_s != ''
|
|
||||||
realname = realname + ' <' + user.email.to_s + '>'
|
|
||||||
end
|
|
||||||
a = { id: user.id, label: realname, value: realname }
|
|
||||||
users.push a
|
|
||||||
end
|
|
||||||
|
|
||||||
# return result
|
|
||||||
render json: users
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
user_ids = []
|
|
||||||
assets = {}
|
|
||||||
user_all.each do |user|
|
|
||||||
assets = user.assets(assets)
|
|
||||||
user_ids.push user.id
|
|
||||||
end
|
|
||||||
|
|
||||||
# return result
|
|
||||||
render json: {
|
|
||||||
assets: assets,
|
|
||||||
user_ids: user_ids.uniq,
|
|
||||||
}
|
|
||||||
end
|
|
||||||
|
|
||||||
# @path [GET] /users/history/{id}
|
# @path [GET] /users/history/{id}
|
||||||
#
|
#
|
||||||
# @tag History
|
# @tag History
|
||||||
|
|
|
@ -3,7 +3,6 @@ Zammad::Application.routes.draw do
|
||||||
|
|
||||||
# users
|
# users
|
||||||
match api_path + '/users/search', to: 'users#search', via: %i[get post option]
|
match api_path + '/users/search', to: 'users#search', via: %i[get post option]
|
||||||
match api_path + '/users/recent', to: 'users#recent', via: %i[get post]
|
|
||||||
match api_path + '/users/password_reset', to: 'users#password_reset_send', via: :post
|
match api_path + '/users/password_reset', to: 'users#password_reset_send', via: :post
|
||||||
match api_path + '/users/password_reset_verify', to: 'users#password_reset_verify', via: :post
|
match api_path + '/users/password_reset_verify', to: 'users#password_reset_verify', via: :post
|
||||||
match api_path + '/users/password_change', to: 'users#password_change', via: :post
|
match api_path + '/users/password_change', to: 'users#password_change', via: :post
|
||||||
|
|
Loading…
Reference in a new issue