diff options
-rw-r--r-- | app/controllers/news_controller.rb | 11 | ||||
-rw-r--r-- | app/views/news/edit.rhtml | 4 | ||||
-rw-r--r-- | app/views/news/show.rhtml | 4 | ||||
-rw-r--r-- | config/routes.rb | 2 | ||||
-rw-r--r-- | lib/redmine.rb | 2 | ||||
-rw-r--r-- | test/functional/news_controller_test.rb | 4 | ||||
-rw-r--r-- | test/integration/routing_test.rb | 4 |
7 files changed, 19 insertions, 12 deletions
diff --git a/app/controllers/news_controller.rb b/app/controllers/news_controller.rb index f4e4b6559..5a1d36e0f 100644 --- a/app/controllers/news_controller.rb +++ b/app/controllers/news_controller.rb @@ -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 diff --git a/app/views/news/edit.rhtml b/app/views/news/edit.rhtml index 04d64df1f..da256031d 100644 --- a/app/views/news/edit.rhtml +++ b/app/views/news/edit.rhtml @@ -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), diff --git a/app/views/news/show.rhtml b/app/views/news/show.rhtml index c32c6843e..851ef3f75 100644 --- a/app/views/news/show.rhtml +++ b/app/views/news/show.rhtml @@ -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), diff --git a/config/routes.rb b/config/routes.rb index ceaaf6219..2950cba21 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -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' diff --git a/lib/redmine.rb b/lib/redmine.rb index 946701a8d..a7417df88 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, :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 diff --git a/test/functional/news_controller_test.rb b/test/functional/news_controller_test.rb index dd782fa3b..5f00fd914 100644 --- a/test/functional/news_controller_test.rb +++ b/test/functional/news_controller_test.rb @@ -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 diff --git a/test/integration/routing_test.rb b/test/integration/routing_test.rb index 1fc3f82d4..0daaad6dc 100644 --- a/test/integration/routing_test.rb +++ b/test/integration/routing_test.rb @@ -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 |