diff --git a/app/assets/javascripts/app/controllers/users.js.coffee b/app/assets/javascripts/app/controllers/users.js.coffee
index 8f4a56004..d94f8998b 100644
--- a/app/assets/javascripts/app/controllers/users.js.coffee
+++ b/app/assets/javascripts/app/controllers/users.js.coffee
@@ -30,8 +30,10 @@ class Index extends App.Controller
e.preventDefault()
$(e.target).toggleClass('active')
term = @searchInput.val().trim()
- return if !term
- @delay( @search, 220, 'search' )
+ if term
+ @delay( @search, 220, 'search' )
+ return
+ @recent()
)
# start search
@@ -43,6 +45,9 @@ class Index extends App.Controller
@delay( @search, 220, 'search' )
)
+ # show last 20 users
+ @recent()
+
renderResult: (user_ids = []) ->
callbackHeader = (header) ->
@@ -137,6 +142,28 @@ class Index extends App.Controller
@renderResult(data.user_ids)
)
+ recent: =>
+ role_ids = []
+ @$('.tab.active').each( (i,d) ->
+ role_ids.push $(d).data('id')
+ )
+ App.Ajax.request(
+ id: 'search'
+ type: 'GET'
+ url: @apiPath + '/users/recent'
+ data:
+ limit: 40
+ role_ids: role_ids
+ full: 1
+ processData: true,
+ success: (data, status, xhr) =>
+
+ # load assets
+ App.Collection.loadAssets( data.assets )
+
+ @renderResult(data.user_ids)
+ )
+
new: (e) ->
e.preventDefault()
new App.ControllerGenericNew(
diff --git a/app/assets/javascripts/app/views/layout_ref/user_list.jst.eco b/app/assets/javascripts/app/views/layout_ref/user_list.jst.eco
index 0e58e7978..0d0a91027 100644
--- a/app/assets/javascripts/app/views/layout_ref/user_list.jst.eco
+++ b/app/assets/javascripts/app/views/layout_ref/user_list.jst.eco
@@ -126,15 +126,15 @@
-
+
Admin
-
+
Agent
-
diff --git a/app/assets/javascripts/app/views/user.jst.eco b/app/assets/javascripts/app/views/user.jst.eco
index 596045514..c095188b1 100644
--- a/app/assets/javascripts/app/views/user.jst.eco
+++ b/app/assets/javascripts/app/views/user.jst.eco
@@ -20,7 +20,7 @@
<%- @T('Roles') %>:
<% for role in @roles: %>
-
<%- @T(role.displayName() ) %>
+
<%- @T(role.displayName() ) %>
<% end %>
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index 76754df6c..a3c68b268 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -308,6 +308,68 @@ class UsersController < ApplicationController
}
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
] 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 ", :value => "firstname lastname "},...].
+ #
+ # @response_message 200 [Array] A list of User records matching the search term.
+ # @response_message 401 Invalid session.
+ def recent
+
+ if role?(Z_ROLENAME_CUSTOMER) && !role?(Z_ROLENAME_ADMIN)
+ response_access_deny
+ return
+ end
+
+ # do query
+ if params[:role_ids] && !params[:role_ids].empty?
+ user_all = User.joins(:roles).where( 'roles.id' => params[:role_ids] ).where('users.id != 1').order('users.created_at DESC').limit( params[:limit] || 20 )
+ else
+ user_all = User.where('id != 1').order('created_at DESC').limit( params[:limit] || 20 )
+ end
+
+
+ # build result list
+ if !params[:full]
+ users = []
+ user_all.each { |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
+ }
+
+ # return result
+ render json: users
+ return
+ end
+
+ user_ids = []
+ assets = {}
+ user_all.each { |user|
+ assets = user.assets(assets)
+ user_ids.push user.id
+ }
+
+ # return result
+ render json: {
+ assets: assets,
+ user_ids: user_ids.uniq,
+ }
+ end
+
# @path [GET] /users/history/{id}
#
# @tag History
diff --git a/config/routes/user.rb b/config/routes/user.rb
index 929042e73..fe4eacb89 100644
--- a/config/routes/user.rb
+++ b/config/routes/user.rb
@@ -3,6 +3,7 @@ Zammad::Application.routes.draw do
# users
match api_path + '/users/search', to: 'users#search', via: [:get, :post]
+ match api_path + '/users/recent', to: 'users#recent', via: [: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