diff --git a/app/controllers/admin/features_controller.rb b/app/controllers/admin/features_controller.rb
index 25e1297..684a621 100644
--- a/app/controllers/admin/features_controller.rb
+++ b/app/controllers/admin/features_controller.rb
@@ -51,4 +51,10 @@ class FeaturesController < AdminController
redirect_to :action => 'manage_fields'
end
+ def search_members
+ arg = params[:q].downcase
+ result = environment.people.find(:all, :conditions => ['LOWER(name) LIKE ?', "%#{arg}%"])
+ render :text => prepare_to_token_input(result).to_json
+ end
+
end
diff --git a/app/helpers/token_helper.rb b/app/helpers/token_helper.rb
index bb601b8..a1e3490 100644
--- a/app/helpers/token_helper.rb
+++ b/app/helpers/token_helper.rb
@@ -18,6 +18,7 @@ module TokenHelper
options[:on_add] ||= 'null'
options[:on_delete] ||= 'null'
options[:on_ready] ||= 'null'
+ options[:query_param] ||= 'q'
result = text_field_tag(name, nil, text_field_options.merge(html_options.merge({:id => element_id})))
result += javascript_tag("jQuery('##{element_id}')
@@ -30,7 +31,7 @@ module TokenHelper
searchDelay: #{options[:search_delay].to_json},
preventDuplicates: #{options[:prevent_duplicates].to_json},
backspaceDeleteItem: #{options[:backspace_delete_item].to_json},
- queryParam: #{name.to_json},
+ queryParam: #{options[:query_param].to_json},
tokenLimit: #{options[:token_limit].to_json},
onResult: #{options[:on_result]},
onAdd: #{options[:on_add]},
@@ -48,4 +49,4 @@ module TokenHelper
result
end
-end
\ No newline at end of file
+end
diff --git a/app/models/environment.rb b/app/models/environment.rb
index df98113..bf26a35 100644
--- a/app/models/environment.rb
+++ b/app/models/environment.rb
@@ -298,11 +298,11 @@ class Environment < ActiveRecord::Base
settings_items :members_whitelist, :type => Array, :default => []
def in_whitelist?(person)
- members_whitelist.include?(person.identifier)
+ members_whitelist.include?(person.id)
end
def members_whitelist=(members)
- settings[:members_whitelist] = members.split(',').map(&:strip).reject(&:blank?)
+ settings[:members_whitelist] = members.split(',').map(&:to_i)
end
def news_amount_by_folder=(amount)
diff --git a/app/views/features/index.rhtml b/app/views/features/index.rhtml
index e9c72ff..331c081 100644
--- a/app/views/features/index.rhtml
+++ b/app/views/features/index.rhtml
@@ -38,8 +38,9 @@ Check all the features you want to enable for your environment, uncheck all the
<%= _('Members Whitelist') %>
- <%= _('Allow these people to access this environment (separate with commas):') %>
- <%= text_field :environment, :members_whitelist, :value => environment.members_whitelist.join(',') %>
+ <%= _('Allow these people to access this environment:') %>
+ <% tokenized_members = prepare_to_token_input(environment.people.find(:all, :conditions => {:id => environment.members_whitelist})) %>
+ <%= token_input_field_tag('environment[members_whitelist]', 'search-members', {:action => 'search_members'}, {:focus => false, :hint_text => _('Type in a search term for a user'), :pre_populate => tokenized_members}) %>
diff --git a/test/functional/application_controller_test.rb b/test/functional/application_controller_test.rb
index 718ad2d..0e79b03 100644
--- a/test/functional/application_controller_test.rb
+++ b/test/functional/application_controller_test.rb
@@ -584,7 +584,7 @@ class ApplicationControllerTest < ActionController::TestCase
should 'do allow member in whitelist to access an environment' do
user = create_user
e = Environment.default
- e.members_whitelist = 'admin'
+ e.members_whitelist = '1'
e.save!
login_as(user.login)
get :index
@@ -594,7 +594,7 @@ class ApplicationControllerTest < ActionController::TestCase
should 'allow member in whitelist to access an environment' do
user = create_user
e = Environment.default
- e.members_whitelist = user.person.identifier
+ e.members_whitelist = "#{user.person.id}"
e.save!
login_as(user.login)
get :index
@@ -613,7 +613,7 @@ class ApplicationControllerTest < ActionController::TestCase
should 'allow admin to access an environment' do
e = Environment.default
- e.members_whitelist = 'ze'
+ e.members_whitelist = '1'
e.save!
login_as(create_admin_user(e))
get :index
diff --git a/test/functional/features_controller_test.rb b/test/functional/features_controller_test.rb
index 6c56915..7e86f74 100644
--- a/test/functional/features_controller_test.rb
+++ b/test/functional/features_controller_test.rb
@@ -154,4 +154,12 @@ class FeaturesControllerTest < ActionController::TestCase
assert_equal true, e.custom_community_fields['contact_person']['required']
end
+ should 'search members' do
+ uses_host 'anhetegua.net'
+ person = fast_create(Person, :environment_id => Environment.find(2).id)
+ xhr :get, :search_members, :q => person.name[0..2]
+ json_response = ActiveSupport::JSON.decode(@response.body)
+ assert_includes json_response, {"id"=>person.id, "name"=>person.name}
+ end
+
end
--
libgit2 0.21.2