summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/controllers/news_controller.rb11
-rw-r--r--app/views/news/edit.rhtml4
-rw-r--r--app/views/news/show.rhtml4
-rw-r--r--config/routes.rb2
-rw-r--r--lib/redmine.rb2
-rw-r--r--test/functional/news_controller_test.rb4
-rw-r--r--test/integration/routing_test.rb4
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