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