mirror of
https://github.com/meineerde/redmine.git
synced 2026-02-05 00:23:24 +00:00
Do not lose submitted content when attempting to update a wiki page that has been renamed in the meantime (#31334).
Patch by Jens Krämer. git-svn-id: http://svn.redmine.org/redmine/trunk@18165 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
f1d10edf81
commit
8eb5f2c605
@ -34,7 +34,7 @@
|
||||
class WikiController < ApplicationController
|
||||
default_search_scope :wiki_pages
|
||||
before_action :find_wiki, :authorize
|
||||
before_action :find_existing_or_new_page, :only => [:show, :edit, :update]
|
||||
before_action :find_existing_or_new_page, :only => [:show, :edit]
|
||||
before_action :find_existing_page, :only => [:rename, :protect, :history, :diff, :annotate, :add_attachment, :destroy, :destroy_version]
|
||||
before_action :find_attachments, :only => [:preview]
|
||||
accept_api_auth :index, :show, :update, :destroy
|
||||
@ -152,6 +152,8 @@ class WikiController < ApplicationController
|
||||
|
||||
# Creates a new page or updates an existing one
|
||||
def update
|
||||
@page = @wiki.find_or_new_page(params[:id])
|
||||
|
||||
return render_403 unless editable?
|
||||
was_new_page = @page.new_record?
|
||||
@page.safe_attributes = params[:wiki_page]
|
||||
|
||||
56
test/integration/wiki_test.rb
Normal file
56
test/integration/wiki_test.rb
Normal file
@ -0,0 +1,56 @@
|
||||
require File.expand_path('../../test_helper', __FILE__)
|
||||
|
||||
class WikiIntegrationTest < Redmine::IntegrationTest
|
||||
fixtures :projects,
|
||||
:users, :email_addresses,
|
||||
:roles,
|
||||
:members,
|
||||
:member_roles,
|
||||
:trackers,
|
||||
:projects_trackers,
|
||||
:enabled_modules,
|
||||
:wikis,
|
||||
:wiki_pages,
|
||||
:wiki_contents
|
||||
|
||||
def test_updating_a_renamed_page
|
||||
log_user('jsmith', 'jsmith')
|
||||
|
||||
get '/projects/ecookbook/wiki'
|
||||
assert_response :success
|
||||
|
||||
get '/projects/ecookbook/wiki/Wiki/edit'
|
||||
assert_response :success
|
||||
|
||||
# this update should not end up with a loss of content
|
||||
put '/projects/ecookbook/wiki/Wiki', params: {
|
||||
content: {
|
||||
text: "# Wiki\r\n\r\ncontent", comments:""
|
||||
},
|
||||
wiki_page: { parent_id: "" }
|
||||
}
|
||||
assert_redirected_to "/projects/ecookbook/wiki/Wiki"
|
||||
follow_redirect!
|
||||
assert_select 'div', /content/
|
||||
assert content = WikiContent.last
|
||||
|
||||
# Let's assume somebody else, or the same user in another tab, renames the
|
||||
# page while it is being edited.
|
||||
post '/projects/ecookbook/wiki/Wiki/rename', params: { wiki_page: { title: "NewTitle" } }
|
||||
assert_redirected_to "/projects/ecookbook/wiki/NewTitle"
|
||||
|
||||
# this update should not end up with a loss of content
|
||||
put '/projects/ecookbook/wiki/Wiki', params: {
|
||||
content: {
|
||||
version: content.version, text: "# Wiki\r\n\r\nnew content", comments:""
|
||||
},
|
||||
wiki_page: { parent_id: "" }
|
||||
}
|
||||
|
||||
assert_redirected_to "/projects/ecookbook/wiki/NewTitle"
|
||||
follow_redirect!
|
||||
assert_select 'div', /new content/
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user