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
-
+
Customer
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