Commits

Anonymous committed a89ef9b

Adds routes for group users.

Comments (0)

Files changed (5)

app/controllers/groups_controller.rb

 
   def remove_user
     @group = Group.find(params[:id])
-    @group.users.delete(User.find(params[:user_id])) if request.post?
+    @group.users.delete(User.find(params[:user_id])) if request.delete?
     respond_to do |format|
       format.html { redirect_to :controller => 'groups', :action => 'edit', :id => @group, :tab => 'users' }
       format.js { render(:update) {|page| page.replace_html "tab-content-users", :partial => 'groups/users'} }

app/views/groups/_users.html.erb

       <tr id="user-<%= user.id %>" class="<%= cycle 'odd', 'even' %>">
         <td class="user"><%= link_to_user user %></td>
         <td class="buttons">
-            <%= link_to_remote l(:button_delete), { :url => { :controller => 'groups', :action => 'remove_user', :id => @group, :user_id => user },
-                                                    :method => :post },
-                                                  :class => 'icon icon-del' %>
+            <%= link_to_remote l(:button_delete), { :url => group_user_path(@group, :user_id => user), :method => :delete }, :class => 'icon icon-del' %>
         </td>
       </tr>
     <% end %>
 <div class="splitcontentright">
 <% users = User.active.not_in_group(@group).all(:limit => 100) %>
 <% if users.any? %>
-  <% remote_form_for(:group, @group, :url => {:controller => 'groups', :action => 'add_users', :id => @group}, :method => :post) do |f| %>
+  <% remote_form_for(@group, :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>
     <%= observe_field(:user_search,
                  :frequency => 0.5,
                  :update => :users,
-                 :url => { :controller => 'groups', :action => 'autocomplete_for_user', :id => @group },
+                 :url => autocomplete_for_user_group_path(@group),
+                 :method => :get,
                  :with => 'q')
                   %>
 
   map.connect 'attachments/:id/:filename', :controller => 'attachments', :action => 'show', :id => /\d+/, :filename => /.*/
   map.connect 'attachments/download/:id/:filename', :controller => 'attachments', :action => 'download', :id => /\d+/, :filename => /.*/
 
-  map.resources :groups
+  map.resources :groups, :member => {:autocomplete_for_user => :get}
+  map.group_users 'groups/:id/users', :controller => 'groups', :action => 'add_users', :id => /\d+/, :conditions => {:method => :post}
+  map.group_user  'groups/:id/users/:user_id', :controller => 'groups', :action => 'remove_user', :id => /\d+/, :conditions => {:method => :delete}
+
   map.resources :trackers, :except => :show
   map.resources :issue_statuses, :except => :show, :collection => {:update_issue_done_ratio => :post}
 

test/functional/groups_controller_test.rb

 
   def test_remove_user
     assert_difference 'Group.find(10).users.count', -1 do
-      post :remove_user, :id => 10, :user_id => '8'
+      delete :remove_user, :id => 10, :user_id => '8'
     end
   end
 

test/integration/routing_test.rb

     should_route :post, "/documents/567/edit", :controller => 'documents', :action => 'edit', :id => '567'
     should_route :post, "/documents/567/destroy", :controller => 'documents', :action => 'destroy', :id => '567'
   end
+  
+  context "groups" do
+    should_route :post,   "/groups/567/users", :controller => 'groups', :action => 'add_users', :id => '567'
+    should_route :delete, "/groups/567/users/12", :controller => 'groups', :action => 'remove_user', :id => '567', :user_id => '12'
+  end
 
   context "issues" do
     # REST actions