diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2014-11-16 08:53:39 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2014-11-16 08:53:39 +0000 |
commit | 1508cd7b8bf9dbc8ef22b6febd1047455c3c72cd (patch) | |
tree | 88daaa947aab2dceb7d6c64223b445f3bc7450bb | |
parent | 67835aa74d0412d538bee97d975564a8fec5b2c4 (diff) | |
download | redmine-1508cd7b8bf9dbc8ef22b6febd1047455c3c72cd.tar.gz redmine-1508cd7b8bf9dbc8ef22b6febd1047455c3c72cd.zip |
Moved new group user to its own action GroupsController#new_users.
git-svn-id: http://svn.redmine.org/redmine/trunk@13602 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | app/controllers/groups_controller.rb | 3 | ||||
-rw-r--r-- | app/helpers/groups_helper.rb | 5 | ||||
-rw-r--r-- | app/views/groups/_new_users_form.html.erb | 9 | ||||
-rw-r--r-- | app/views/groups/_new_users_modal.html.erb | 9 | ||||
-rw-r--r-- | app/views/groups/_users.html.erb | 21 | ||||
-rw-r--r-- | app/views/groups/add_users.js.erb | 1 | ||||
-rw-r--r-- | app/views/groups/new_users.html.erb | 6 | ||||
-rw-r--r-- | app/views/groups/new_users.js.erb | 2 | ||||
-rw-r--r-- | config/routes.rb | 5 | ||||
-rw-r--r-- | test/functional/groups_controller_test.rb | 12 | ||||
-rw-r--r-- | test/integration/routing/groups_test.rb | 4 |
11 files changed, 55 insertions, 22 deletions
diff --git a/app/controllers/groups_controller.rb b/app/controllers/groups_controller.rb index d67f0382b..4a12b9b5b 100644 --- a/app/controllers/groups_controller.rb +++ b/app/controllers/groups_controller.rb @@ -95,6 +95,9 @@ class GroupsController < ApplicationController end end + def new_users + end + def add_users @users = User.where(:id => (params[:user_id] || params[:user_ids])).to_a @group.users << @users if request.post? diff --git a/app/helpers/groups_helper.rb b/app/helpers/groups_helper.rb index 315be99fc..4275f29a0 100644 --- a/app/helpers/groups_helper.rb +++ b/app/helpers/groups_helper.rb @@ -32,7 +32,10 @@ module GroupsHelper principal_pages = Redmine::Pagination::Paginator.new principal_count, 100, params['page'] principals = scope.offset(principal_pages.offset).limit(principal_pages.per_page).to_a - s = content_tag('div', principals_check_box_tags('user_ids[]', principals), :id => 'principals') + s = content_tag('div', + content_tag('div', principals_check_box_tags('user_ids[]', principals), :id => 'principals'), + :class => 'objects-selection' + ) links = pagination_links_full(principal_pages, principal_count, :per_page_links => false) {|text, parameters, options| link_to text, autocomplete_for_user_group_path(group, parameters.merge(:q => params[:q], :format => 'js')), :remote => true diff --git a/app/views/groups/_new_users_form.html.erb b/app/views/groups/_new_users_form.html.erb new file mode 100644 index 000000000..5c33a966c --- /dev/null +++ b/app/views/groups/_new_users_form.html.erb @@ -0,0 +1,9 @@ +<fieldset class="box"> + <legend><%= label_tag "user_search", l(:label_user_search) %></legend> + <p><%= text_field_tag 'user_search', nil %></p> + <%= javascript_tag "observeSearchfield('user_search', null, '#{ escape_javascript autocomplete_for_user_group_path(@group) }')" %> + + <div id="users"> + <%= render_principals_for_new_group_users(@group) %> + </div> +</fieldset> diff --git a/app/views/groups/_new_users_modal.html.erb b/app/views/groups/_new_users_modal.html.erb new file mode 100644 index 000000000..eb2e985bf --- /dev/null +++ b/app/views/groups/_new_users_modal.html.erb @@ -0,0 +1,9 @@ +<h3 class="title"><%= l(:label_user_new) %></h3> + +<%= form_for(@group, :url => group_users_path(@group), :remote => true, :method => :post) do |f| %> + <%= render :partial => 'new_users_form' %> + <p class="buttons"> + <%= submit_tag l(:button_add) %> + <%= submit_tag l(:button_cancel), :name => nil, :onclick => "hideModal(this);", :type => 'button' %> + </p> +<% end %> diff --git a/app/views/groups/_users.html.erb b/app/views/groups/_users.html.erb index 13f85c894..391edf4d8 100644 --- a/app/views/groups/_users.html.erb +++ b/app/views/groups/_users.html.erb @@ -1,4 +1,5 @@ -<div class="splitcontentleft"> +<p><%= link_to l(:label_user_new), new_group_users_path(@group), :remote => true, :class => "icon icon-add" %></p> + <% if @group.users.any? %> <table class="list users"> <thead><tr> @@ -19,21 +20,3 @@ <% else %> <p class="nodata"><%= l(:label_no_data) %></p> <% end %> -</div> - -<div class="splitcontentright"> - <%= form_for(@group, :remote => true, :url => group_users_path(@group), - :html => {:method => :post}) do |f| %> - <fieldset><legend><%=l(:label_user_new)%></legend> - - <p><%= label_tag "user_search", l(:label_user_search) %><%= text_field_tag 'user_search', nil %></p> - <%= javascript_tag "observeSearchfield('user_search', null, '#{ escape_javascript autocomplete_for_user_group_path(@group) }')" %> - - <div id="users"> - <%= render_principals_for_new_group_users(@group) %> - </div> - - <p><%= submit_tag l(:button_add) %></p> - </fieldset> - <% end %> -</div> diff --git a/app/views/groups/add_users.js.erb b/app/views/groups/add_users.js.erb index 460527b6c..e4af93a04 100644 --- a/app/views/groups/add_users.js.erb +++ b/app/views/groups/add_users.js.erb @@ -1,3 +1,4 @@ +hideModal(); $('#tab-content-users').html('<%= escape_javascript(render :partial => 'groups/users') %>'); <% @users.each do |user| %> $('#user-<%= user.id %>').effect("highlight"); diff --git a/app/views/groups/new_users.html.erb b/app/views/groups/new_users.html.erb new file mode 100644 index 000000000..8875a8338 --- /dev/null +++ b/app/views/groups/new_users.html.erb @@ -0,0 +1,6 @@ +<h2><%= l(:label_user_new) %></h2> + +<%= form_for(@group, :url => group_users_path(@group), :method => :post) do |f| %> + <%= render :partial => 'new_users_form' %> + <p><%= submit_tag l(:button_add) %></p> +<% end %> diff --git a/app/views/groups/new_users.js.erb b/app/views/groups/new_users.js.erb new file mode 100644 index 000000000..1775abe31 --- /dev/null +++ b/app/views/groups/new_users.js.erb @@ -0,0 +1,2 @@ +$('#ajax-modal').html('<%= escape_javascript(render :partial => 'groups/new_users_modal') %>'); +showModal('ajax-modal', '700px'); diff --git a/config/routes.rb b/config/routes.rb index f2ddba193..5fe1cf713 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -274,8 +274,9 @@ Rails.application.routes.draw do end end - match 'groups/:id/users', :controller => 'groups', :action => 'add_users', :id => /\d+/, :via => :post, :as => 'group_users' - match 'groups/:id/users/:user_id', :controller => 'groups', :action => 'remove_user', :id => /\d+/, :via => :delete, :as => 'group_user' + get 'groups/:id/users/new', :to => 'groups#new_users', :id => /\d+/, :as => 'new_group_users' + post 'groups/:id/users', :to => 'groups#add_users', :id => /\d+/, :as => 'group_users' + delete 'groups/:id/users/:user_id', :to => 'groups#remove_user', :id => /\d+/, :as => 'group_user' resources :trackers, :except => :show do collection do diff --git a/test/functional/groups_controller_test.rb b/test/functional/groups_controller_test.rb index 778b3f3cd..f2fa5f04b 100644 --- a/test/functional/groups_controller_test.rb +++ b/test/functional/groups_controller_test.rb @@ -113,6 +113,18 @@ class GroupsControllerTest < ActionController::TestCase assert_redirected_to '/groups' end + def test_new_users + get :new_users, :id => 10 + assert_response :success + assert_template 'new_users' + end + + def test_xhr_new_users + xhr :get, :new_users, :id => 10 + assert_response :success + assert_equal 'text/javascript', response.content_type + end + def test_add_users assert_difference 'Group.find(10).users.count', 2 do post :add_users, :id => 10, :user_ids => ['2', '3'] diff --git a/test/integration/routing/groups_test.rb b/test/integration/routing/groups_test.rb index ea6e73703..4171a0e25 100644 --- a/test/integration/routing/groups_test.rb +++ b/test/integration/routing/groups_test.rb @@ -79,6 +79,10 @@ class RoutingGroupsTest < ActionDispatch::IntegrationTest def test_groups assert_routing( + { :method => 'get', :path => "/groups/567/users/new" }, + { :controller => 'groups', :action => 'new_users', :id => '567' } + ) + assert_routing( { :method => 'post', :path => "/groups/567/users" }, { :controller => 'groups', :action => 'add_users', :id => '567' } ) |