]> source.dussan.org Git - redmine.git/commitdiff
Refactor: move #destroy_comment method to CommentsController#destroy
authorEric Davis <edavis@littlestreamsoftware.com>
Thu, 23 Sep 2010 15:20:19 +0000 (15:20 +0000)
committerEric Davis <edavis@littlestreamsoftware.com>
Thu, 23 Sep 2010 15:20:19 +0000 (15:20 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4172 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/comments_controller.rb
app/controllers/news_controller.rb
app/views/news/show.rhtml
config/routes.rb
lib/redmine.rb
test/functional/comments_controller_test.rb
test/functional/news_controller_test.rb
test/integration/routing_test.rb

index c0d524a2516fdb4efdaad56e55a2fce6c0fbb022..7432f831f363b39ae1012dc852e411612a892f23 100644 (file)
@@ -16,6 +16,12 @@ class CommentsController < ApplicationController
     redirect_to :controller => 'news', :action => 'show', :id => @news
   end
 
+  verify :method => :delete, :only => :destroy, :render => {:nothing => true, :status => :method_not_allowed }
+  def destroy
+    @news.comments.find(params[:comment_id]).destroy
+    redirect_to :controller => 'news', :action => 'show', :id => @news
+  end
+
   private
 
   # ApplicationController's find_model_object sets it based on the controller
index d15ae3291c285d6285e7adc7d2b9447e66c13b12..47f4678622cc70136e52905857b28a5ce44aa0f2 100644 (file)
@@ -73,11 +73,6 @@ class NewsController < ApplicationController
     end
   end
 
-  def destroy_comment
-    @news.comments.find(params[:comment_id]).destroy
-    redirect_to :action => 'show', :id => @news
-  end
-
   def destroy
     @news.destroy
     redirect_to :action => 'index', :project_id => @project
index 9b8f2510e67b7d0f9eb2b582517dc54885104154..7861a3d0183ad69951a248e1ca3d91250dc24762 100644 (file)
@@ -39,8 +39,8 @@
 <% @comments.each do |comment| %>
     <% next if comment.new_record? %>
     <div class="contextual">
-    <%= link_to_if_authorized image_tag('delete.png'), {:controller => 'news', :action => 'destroy_comment', :id => @news, :comment_id => comment},
-                                                       :confirm => l(:text_are_you_sure), :method => :post, :title => l(:button_delete) %>
+    <%= link_to_if_authorized image_tag('delete.png'), {:controller => 'comments', :action => 'destroy', :id => @news, :comment_id => comment},
+                                                       :confirm => l(:text_are_you_sure), :method => :delete, :title => l(:button_delete) %>
     </div>
     <h4><%= avatar(comment.author, :size => "24") %><%= authoring comment.created_on, comment.author %></h4>
     <%= textilizable(comment.comments) %>
index 6c765dab15dcaddd2ccaa3c1ed2310ff06d409aa..42e778d0af475e950f716915d036a465eafa892f 100644 (file)
@@ -154,6 +154,7 @@ ActionController::Routing::Routes.draw do |map|
     news_routes.connect 'news/:id/edit', :action => 'update', :conditions => {:method => :put}
 
     news_routes.connect 'news/:id/comments', :controller => 'comments', :action => 'create', :conditions => {:method => :post}
+    news_routes.connect 'news/:id/comments/:comment_id', :controller => 'comments', :action => 'destroy', :conditions => {:method => :delete}
   end
   
   map.connect 'projects/:id/members/new', :controller => 'members', :action => 'new'
index 198d37304bbe7551989e2df5a70adb00268353ce..eac459c2f6ea25951059306260cca77362ae765c 100644 (file)
@@ -91,7 +91,7 @@ Redmine::AccessControl.map do |map|
   end
   
   map.project_module :news do |map|
-    map.permission :manage_news, {:news => [:new, :create, :edit, :update, :destroy, :destroy_comment]}, :require => :member
+    map.permission :manage_news, {:news => [:new, :create, :edit, :update, :destroy], :comments => [:destroy]}, :require => :member
     map.permission :view_news, {:news => [:index, :show]}, :public => true
     map.permission :comment_news, {:comments => :create}
   end
index 1a9d628d820bc163bacb2dfde79478f083bc0c06..1887c4896d6e999234bd685f0ddda926009dd3c5 100644 (file)
@@ -43,4 +43,15 @@ class CommentsControllerTest < ActionController::TestCase
       assert_redirected_to 'news/1'
     end
   end
+
+  def test_destroy_comment
+    comments_count = News.find(1).comments.size
+    @request.session[:user_id] = 2
+    delete :destroy, :id => 1, :comment_id => 2
+    assert_redirected_to 'news/1'
+    assert_nil Comment.find_by_id(2)
+    assert_equal comments_count - 1, News.find(1).comments.size
+  end
+  
+
 end
index ddc8b0c2c738d1061ae16c3aaea04b3e0f9068f5..219c4d7a7ead3fd9311db0a50fa29cf418e426fe 100644 (file)
@@ -111,15 +111,6 @@ class NewsControllerTest < ActionController::TestCase
                               :content => /1 error/
   end
   
-  def test_destroy_comment
-    comments_count = News.find(1).comments.size
-    @request.session[:user_id] = 2
-    post :destroy_comment, :id => 1, :comment_id => 2
-    assert_redirected_to 'news/1'
-    assert_nil Comment.find_by_id(2)
-    assert_equal comments_count - 1, News.find(1).comments.size
-  end
-  
   def test_destroy
     @request.session[:user_id] = 2
     post :destroy, :id => 1
index 4ce8fe4a7ebc83e202427a06817e18ae0b54063f..3376f9313fb388c46f1c7a14ea1b26b30e63f331 100644 (file)
@@ -163,6 +163,8 @@ class RoutingTest < ActionController::IntegrationTest
     should_route :post, "/news/567/comments", :controller => 'comments', :action => 'create', :id => '567'
     
     should_route :put, "/news/567/edit", :controller => 'news', :action => 'update', :id => '567'
+
+    should_route :delete, "/news/567/comments/15", :controller => 'comments', :action => 'destroy', :id => '567', :comment_id => '15'
   end
 
   context "projects" do