Browse Source

Implemented issue #2136 - Improve admin -> user -> default shown users are sometimes different with and/or without search text -> unify search.

Martin Edenhofer 6 years ago
parent
commit
29c61f0586

+ 2 - 0
.gitlab-ci.yml

@@ -240,6 +240,7 @@ test:integration:es_mysql:
     - export ES_URL="http://localhost:9200"
     - rake db:create
     - rake db:migrate
+    - ruby -I test/ test/integration/elasticsearch_active_test.rb
     - ruby -I test/ test/integration/elasticsearch_test.rb
     - ruby -I test/ test/controllers/search_controller_test.rb
     - ruby -I test/ test/integration/report_test.rb
@@ -259,6 +260,7 @@ test:integration:es_postgresql:
     - export ES_URL="http://localhost:9200"
     - rake db:create
     - rake db:migrate
+    - ruby -I test/ test/integration/elasticsearch_active_test.rb
     - ruby -I test/ test/integration/elasticsearch_test.rb
     - ruby -I test/ test/controllers/search_controller_test.rb
     - ruby -I test/ test/integration/report_test.rb

+ 9 - 34
app/assets/javascripts/app/controllers/users.coffee

@@ -27,23 +27,20 @@ class Index extends App.ControllerSubContent
         e.preventDefault()
         $(e.target).toggleClass('active')
         query = @searchInput.val().trim()
-        if query
-          @delay( @search, 220, 'search' )
-          return
-        @recent()
+        @query = query
+        @delay(@search, 220, 'search')
     )
 
     # start search
     @searchInput.bind( 'keyup', (e) =>
       query = @searchInput.val().trim()
-      return if !query
       return if query is @query
       @query = query
-      @delay( @search, 220, 'search' )
+      @delay(@search, 220, 'search')
     )
 
     # show last 20 users
-    @recent()
+    @search()
 
   renderResult: (user_ids = []) ->
     @stopLoading()
@@ -143,40 +140,18 @@ class Index extends App.ControllerSubContent
     App.Ajax.request(
       id: 'search'
       type: 'GET'
-      url: "#{@apiPath}/users/search"
+      url: "#{@apiPath}/users/search?sort_by=created_at"
       data:
-        query: @query
-        limit: 140
+        query: @query || '*'
+        limit: 50
         role_ids: role_ids
         full:  true
       processData: true,
-      success: (data, status, xhr) =>
-        App.Collection.loadAssets(data.assets)
-        @renderResult(data.user_ids)
-      done: =>
-        @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: =>
+      done: =>
         @stopLoading()
     )
 
@@ -191,7 +166,7 @@ class Index extends App.ControllerSubContent
         navupdate: '#users'
       genericObject: 'User'
       container: @el.closest('.content')
-      callback: @recent
+      callback: @search
     )
 
   import: (e) ->

+ 0 - 61
app/controllers/users_controller.rb

@@ -476,67 +476,6 @@ class UsersController < ApplicationController
     render json: list, status: :ok
   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}
   #
   # @tag History

+ 0 - 1
config/routes/user.rb

@@ -3,7 +3,6 @@ Zammad::Application.routes.draw do
 
   # users
   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_verify', to: 'users#password_reset_verify', via: :post
   match api_path + '/users/password_change',       to: 'users#password_change',       via: :post