Commit bdcaf21ea7b4ffb6b386d6b0e809eff10090fc80

Authored by Dmitriy Zaporozhets
1 parent 7316055a

Allow single/multiple user select

app/assets/javascripts/users_select.js.coffee
... ... @@ -16,7 +16,7 @@ $ ->
16 16  
17 17 $('.ajax-users-select').select2
18 18 placeholder: "Search for a user"
19   - multiple: true
  19 + multiple: $('.ajax-users-select').hasClass('multiselect')
20 20 minimumInputLength: 0
21 21 ajax: # instead of writing the function to execute the request we use Select2's convenient helper
22 22 url: "/api/v3/users.json"
... ...
app/controllers/teams/members_controller.rb
... ... @@ -13,7 +13,7 @@ class Teams::MembersController < Teams::ApplicationController
13 13  
14 14 def create
15 15 unless params[:user_ids].blank?
16   - user_ids = params[:user_ids]
  16 + user_ids = params[:user_ids].split(',')
17 17 access = params[:default_project_access]
18 18 is_admin = params[:group_admin]
19 19 user_team.add_members(user_ids, access, is_admin)
... ...
app/helpers/application_helper.rb
... ... @@ -170,7 +170,9 @@ module ApplicationHelper
170 170  
171 171 alias_method :url_to_image, :image_url
172 172  
173   - def users_select_tag(id)
174   - hidden_field_tag(id, '', class: "ajax-users-select")
  173 + def users_select_tag(id, opts = {})
  174 + css_class = "ajax-users-select"
  175 + css_class << " multiselect" if opts[:multiple]
  176 + hidden_field_tag(id, '', class: css_class)
175 177 end
176 178 end
... ...
app/models/user_team.rb
... ... @@ -69,6 +69,9 @@ class UserTeam &lt; ActiveRecord::Base
69 69 end
70 70  
71 71 def add_members(users, access, group_admin)
  72 + # reject existing users
  73 + users.reject! { |id| member_ids.include?(id.to_i) }
  74 +
72 75 users.each do |user|
73 76 add_member(user, access, group_admin)
74 77 end
... ...
app/views/team_members/_form.html.haml
... ... @@ -12,8 +12,7 @@
12 12 .clearfix
13 13 = f.label :user_ids, "People"
14 14 .input
15   - = users_select_tag(:user_ids)
16   - -#= select_tag(:user_ids, options_from_collection_for_select(User.active.not_in_project(@project).alphabetically, :id, :name_with_username), {data: {placeholder: "Select users"}, class: "chosen xxlarge", multiple: true})
  15 + = users_select_tag(:user_ids, multiple: true)
17 16  
18 17 %h6 2. Set access level for them
19 18 .clearfix
... ...
app/views/teams/members/new.html.haml
... ... @@ -20,7 +20,8 @@
20 20 %td= @team.admin?(member) ? "Admin" : "Member"
21 21 %td
22 22 %tr
23   - %td= select_tag :user_ids, options_from_collection_for_select(@users , :id, :name_with_username), multiple: true, data: {placeholder: 'Select users'}, class: 'chosen span5'
  23 + %td
  24 + = users_select_tag(:user_ids, multiple: true)
24 25 %td= select_tag :default_project_access, options_for_select(Project.access_options), {class: "project-access-select chosen span3" }
25 26 %td
26 27 %span= check_box_tag :group_admin
... ...