]> source.dussan.org Git - redmine.git/commitdiff
Refactor: split NewsController#edit into #edit and #update
authorEric Davis <edavis@littlestreamsoftware.com>
Tue, 21 Sep 2010 15:20:37 +0000 (15:20 +0000)
committerEric Davis <edavis@littlestreamsoftware.com>
Tue, 21 Sep 2010 15:20:37 +0000 (15:20 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4168 e93f8b46-1217-0410-a6f0-8f06a7374b81

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

index f4e4b6559f36999e686107604879c644dea71d45..5a1d36e0f9fe20debcba8522b179a4f3b621c008 100644 (file)
@@ -60,14 +60,19 @@ class NewsController < ApplicationController
       end
     end
   end
-  
+
   def edit
-    if request.post? and @news.update_attributes(params[:news])
+  end
+  
+  def update
+    if request.put? and @news.update_attributes(params[:news])
       flash[:notice] = l(:notice_successful_update)
       redirect_to :action => 'show', :id => @news
+    else
+      render :action => 'edit'
     end
   end
-  
+
   def add_comment
     @comment = Comment.new(params[:comment])
     @comment.author = User.current
index 04d64df1fc05bcc126c9a228b5e43142322bc1e7..da256031d72c69d6fea22b8b72e699b49cdd997e 100644 (file)
@@ -1,7 +1,7 @@
 <h2><%=l(:label_news)%></h2>
 
-<% labelled_tabular_form_for :news, @news, :url => { :action => "edit" },
-                                           :html => { :id => 'news-form' } do |f| %>
+<% labelled_tabular_form_for :news, @news, :url => { :action => "update" },
+                                           :html => { :id => 'news-form', :method => :put } do |f| %>
 <%= render :partial => 'form', :locals => { :f => f } %>
 <%= submit_tag l(:button_save) %>
 <%= link_to_remote l(:label_preview), 
index c32c6843ed03a37c80734293a74b91d252598178..851ef3f758625f9cae28cceb4775dda992c83dab 100644 (file)
@@ -11,8 +11,8 @@
 
 <% if authorize_for('news', 'edit') %>
 <div id="edit-news" style="display:none;">
-<% labelled_tabular_form_for :news, @news, :url => { :action => "edit", :id => @news },
-                                           :html => { :id => 'news-form' } do |f| %>
+<% labelled_tabular_form_for :news, @news, :url => { :action => "update", :id => @news },
+                                           :html => { :id => 'news-form', :method => :put } do |f| %>
 <%= render :partial => 'form', :locals => { :f => f } %>
 <%= submit_tag l(:button_save) %>
 <%= link_to_remote l(:label_preview), 
index ceaaf6219ee477dd8ff044127e3eac3514a2d460..2950cba2180ab4f0a84538a0df27f045f087c248 100644 (file)
@@ -149,9 +149,9 @@ ActionController::Routing::Routes.draw do |map|
     end
     news_routes.with_options do |news_actions|
       news_actions.connect 'projects/:project_id/news', :action => 'create', :conditions => {:method => :post}
-      news_actions.connect 'news/:id/edit', :action => 'edit'
       news_actions.connect 'news/:id/destroy', :action => 'destroy'
     end
+    news_routes.connect 'news/:id/edit', :action => 'update', :conditions => {:method => :put}
   end
   
   map.connect 'projects/:id/members/new', :controller => 'members', :action => 'new'
index 946701a8dda16e710daa7770706825c866d8f8c9..a7417df880cd42035982a5c4f604bc5123ec7921 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, :destroy, :destroy_comment]}, :require => :member
+    map.permission :manage_news, {:news => [:new, :create, :edit, :update, :destroy, :destroy_comment]}, :require => :member
     map.permission :view_news, {:news => [:index, :show]}, :public => true
     map.permission :comment_news, {:news => :add_comment}
   end
index dd782fa3b9b2cc0221ba68545d8231993c9e60c2..5f00fd914d6edf28d6bc227c9350d72ae7930a3e 100644 (file)
@@ -90,9 +90,9 @@ class NewsControllerTest < ActionController::TestCase
     assert_template 'edit'
   end
   
-  def test_post_edit
+  def test_put_update
     @request.session[:user_id] = 2
-    post :edit, :id => 1, :news => { :description => 'Description changed by test_post_edit' }
+    put :update, :id => 1, :news => { :description => 'Description changed by test_post_edit' }
     assert_redirected_to 'news/1'
     news = News.find(1)
     assert_equal 'Description changed by test_post_edit', news.description
index 1fc3f82d467a09dab20dcb28511cce93032ced31..0daaad6dc10847d7dd18fdcf549d91561b6f28fb 100644 (file)
@@ -156,10 +156,12 @@ class RoutingTest < ActionController::IntegrationTest
     should_route :get, "/news/2", :controller => 'news', :action => 'show', :id => '2'
     should_route :get, "/projects/567/news/new", :controller => 'news', :action => 'new', :project_id => '567'
     should_route :get, "/news/234", :controller => 'news', :action => 'show', :id => '234'
+    should_route :get, "/news/567/edit", :controller => 'news', :action => 'edit', :id => '567'
 
     should_route :post, "/projects/567/news", :controller => 'news', :action => 'create', :project_id => '567'
-    should_route :post, "/news/567/edit", :controller => 'news', :action => 'edit', :id => '567'
     should_route :post, "/news/567/destroy", :controller => 'news', :action => 'destroy', :id => '567'
+
+    should_route :put, "/news/567/edit", :controller => 'news', :action => 'update', :id => '567'
   end
 
   context "projects" do