diff options
-rw-r--r-- | app/controllers/news_controller.rb | 12 | ||||
-rw-r--r-- | app/views/news/index.rhtml | 2 | ||||
-rw-r--r-- | app/views/news/new.rhtml | 2 | ||||
-rw-r--r-- | config/routes.rb | 2 | ||||
-rw-r--r-- | lib/redmine.rb | 2 | ||||
-rw-r--r-- | test/functional/news_controller_test.rb | 8 | ||||
-rw-r--r-- | test/integration/routing_test.rb | 2 |
7 files changed, 18 insertions, 12 deletions
diff --git a/app/controllers/news_controller.rb b/app/controllers/news_controller.rb index 4d44158a4..f4e4b6559 100644 --- a/app/controllers/news_controller.rb +++ b/app/controllers/news_controller.rb @@ -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 diff --git a/app/views/news/index.rhtml b/app/views/news/index.rhtml index 41e8bb355..2b53b7f72 100644 --- a/app/views/news/index.rhtml +++ b/app/views/news/index.rhtml @@ -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) %> diff --git a/app/views/news/new.rhtml b/app/views/news/new.rhtml index a4d29a0a9..74ae64ae8 100644 --- a/app/views/news/new.rhtml +++ b/app/views/news/new.rhtml @@ -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) %> diff --git a/config/routes.rb b/config/routes.rb index 062bb586e..ceaaf6219 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -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 diff --git a/lib/redmine.rb b/lib/redmine.rb index 8acae48a8..946701a8d 100644 --- a/lib/redmine.rb +++ b/lib/redmine.rb @@ -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 diff --git a/test/functional/news_controller_test.rb b/test/functional/news_controller_test.rb index 3abb9a7fb..dd782fa3b 100644 --- a/test/functional/news_controller_test.rb +++ b/test/functional/news_controller_test.rb @@ -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 diff --git a/test/integration/routing_test.rb b/test/integration/routing_test.rb index 794a7780e..1fc3f82d4 100644 --- a/test/integration/routing_test.rb +++ b/test/integration/routing_test.rb @@ -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 |