]> source.dussan.org Git - redmine.git/commitdiff
Refactor: split NewsController#new into #new and #create methods.
authorEric Davis <edavis@littlestreamsoftware.com>
Mon, 20 Sep 2010 15:13:48 +0000 (15:13 +0000)
committerEric Davis <edavis@littlestreamsoftware.com>
Mon, 20 Sep 2010 15:13:48 +0000 (15:13 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4163 e93f8b46-1217-0410-a6f0-8f06a7374b81

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

index 4d44158a4a0932397e9fc01309274cf808099ebb..f4e4b6559f36999e686107604879c644dea71d45 100644 (file)
@@ -18,9 +18,9 @@
 class NewsController < ApplicationController
   default_search_scope :news
   model_object News
-  before_filter :find_model_object, :except => [:new, :index, :preview]
-  before_filter :find_project_from_association, :except => [:new, :index, :preview]
-  before_filter :find_project, :only => [:new, :preview]
+  before_filter :find_model_object, :except => [:new, :create, :index, :preview]
+  before_filter :find_project_from_association, :except => [:new, :create, :index, :preview]
+  before_filter :find_project, :only => [:new, :create, :preview]
   before_filter :authorize, :except => [:index, :preview]
   before_filter :find_optional_project, :only => :index
   accept_key_auth :index
@@ -46,11 +46,17 @@ class NewsController < ApplicationController
 
   def new
     @news = News.new(:project => @project, :author => User.current)
+  end
+
+  def create
+    @news = News.new(:project => @project, :author => User.current)
     if request.post?
       @news.attributes = params[:news]
       if @news.save
         flash[:notice] = l(:notice_successful_create)
         redirect_to :controller => 'news', :action => 'index', :project_id => @project
+      else
+        render :action => 'new'
       end
     end
   end
index 41e8bb355bf07f2150a430258690ff960c4a681a..2b53b7f72a3571446a70d1682422e7d845c79d15 100644 (file)
@@ -7,7 +7,7 @@
 
 <div id="add-news" style="display:none;">
 <h2><%=l(:label_news_new)%></h2>
-<% labelled_tabular_form_for :news, @news, :url => { :controller => 'news', :action => 'new', :project_id => @project },
+<% labelled_tabular_form_for :news, @news, :url => { :controller => 'news', :action => 'create', :project_id => @project },
                                            :html => { :id => 'news-form' } do |f| %>
 <%= render :partial => 'news/form', :locals => { :f => f } %>
 <%= submit_tag l(:button_create) %>
index a4d29a0a9f6dd2bf80505f098764f658c5921059..74ae64ae87b1a8972a4b4f141083a7ad4f0cdace 100644 (file)
@@ -1,6 +1,6 @@
 <h2><%=l(:label_news_new)%></h2>
 
-<% labelled_tabular_form_for :news, @news, :url => { :controller => 'news', :action => 'new', :project_id => @project },
+<% labelled_tabular_form_for :news, @news, :url => { :controller => 'news', :action => 'create', :project_id => @project },
                                            :html => { :id => 'news-form' } do |f| %>
 <%= render :partial => 'news/form', :locals => { :f => f } %>
 <%= submit_tag l(:button_create) %>
index 062bb586e610e0fbbf35f6725feaccbd83973c9b..ceaaf6219ee477dd8ff044127e3eac3514a2d460 100644 (file)
@@ -148,7 +148,7 @@ ActionController::Routing::Routes.draw do |map|
       news_views.connect 'news/:id/edit', :action => 'edit'
     end
     news_routes.with_options do |news_actions|
-      news_actions.connect 'projects/:project_id/news', :action => 'new'
+      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
index 8acae48a8e4de0f3b78b0ffd7d39aaa72da045ba..946701a8dda16e710daa7770706825c866d8f8c9 100644 (file)
@@ -91,7 +91,7 @@ Redmine::AccessControl.map do |map|
   end
   
   map.project_module :news do |map|
-    map.permission :manage_news, {:news => [:new, :edit, :destroy, :destroy_comment]}, :require => :member
+    map.permission :manage_news, {:news => [:new, :create, :edit, :destroy, :destroy_comment]}, :require => :member
     map.permission :view_news, {:news => [:index, :show]}, :public => true
     map.permission :comment_news, {:news => :add_comment}
   end
index 3abb9a7fb43baf5046f03e1bf61d1456c64969c3..dd782fa3b9b2cc0221ba68545d8231993c9e60c2 100644 (file)
@@ -65,12 +65,12 @@ class NewsControllerTest < ActionController::TestCase
     assert_template 'new'
   end
   
-  def test_post_new
+  def test_post_create
     ActionMailer::Base.deliveries.clear
     Setting.notified_events << 'news_added'
 
     @request.session[:user_id] = 2
-    post :new, :project_id => 1, :news => { :title => 'NewsControllerTest',
+    post :create, :project_id => 1, :news => { :title => 'NewsControllerTest',
                                             :description => 'This is the description',
                                             :summary => '' }
     assert_redirected_to 'projects/ecookbook/news'
@@ -98,9 +98,9 @@ class NewsControllerTest < ActionController::TestCase
     assert_equal 'Description changed by test_post_edit', news.description
   end
 
-  def test_post_new_with_validation_failure
+  def test_post_create_with_validation_failure
     @request.session[:user_id] = 2
-    post :new, :project_id => 1, :news => { :title => '',
+    post :create, :project_id => 1, :news => { :title => '',
                                             :description => 'This is the description',
                                             :summary => '' }
     assert_response :success
index 794a7780ef82187e92f7a0ebffee131d2bf80bb4..1fc3f82d467a09dab20dcb28511cce93032ced31 100644 (file)
@@ -157,7 +157,7 @@ class RoutingTest < ActionController::IntegrationTest
     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 :post, "/projects/567/news/new", :controller => 'news', :action => 'new', :project_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'
   end