fixes #1897
This commit is contained in:
@@ -136,15 +136,37 @@ class WikiPage < ActiveRecord::Base
|
|||||||
title.tr("_", " ")
|
title.tr("_", " ")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def merge_version
|
||||||
|
prev = versions.last
|
||||||
|
prev.update_attributes(
|
||||||
|
:title => title,
|
||||||
|
:body => body,
|
||||||
|
:is_locked => is_locked
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
def merge_version?
|
||||||
|
prev = versions.last
|
||||||
|
prev && prev.updater_id == CurrentUser.user.id && prev.updated_at > 1.hour.ago
|
||||||
|
end
|
||||||
|
|
||||||
|
def create_new_version
|
||||||
|
versions.create(
|
||||||
|
:updater_id => CurrentUser.user.id,
|
||||||
|
:updater_ip_addr => CurrentUser.ip_addr,
|
||||||
|
:title => title,
|
||||||
|
:body => body,
|
||||||
|
:is_locked => is_locked
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
def create_version
|
def create_version
|
||||||
if title_changed? || body_changed? || is_locked_changed?
|
if title_changed? || body_changed? || is_locked_changed?
|
||||||
versions.create(
|
if merge_version?
|
||||||
:updater_id => CurrentUser.user.id,
|
merge_version
|
||||||
:updater_ip_addr => CurrentUser.ip_addr,
|
else
|
||||||
:title => title,
|
create_new_version
|
||||||
:body => body,
|
end
|
||||||
:is_locked => is_locked
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -75,13 +75,17 @@ class WikiPageTest < ActiveSupport::TestCase
|
|||||||
|
|
||||||
assert_difference("WikiPageVersion.count") do
|
assert_difference("WikiPageVersion.count") do
|
||||||
@wiki_page.title = "yyy"
|
@wiki_page.title = "yyy"
|
||||||
@wiki_page.save
|
Timecop.travel(1.day.from_now) do
|
||||||
|
@wiki_page.save
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
should "revert to a prior version" do
|
should "revert to a prior version" do
|
||||||
@wiki_page.title = "yyy"
|
@wiki_page.title = "yyy"
|
||||||
@wiki_page.save
|
Timecop.travel(1.day.from_now) do
|
||||||
|
@wiki_page.save
|
||||||
|
end
|
||||||
version = WikiPageVersion.first
|
version = WikiPageVersion.first
|
||||||
@wiki_page.revert_to!(version)
|
@wiki_page.revert_to!(version)
|
||||||
@wiki_page.reload
|
@wiki_page.reload
|
||||||
|
|||||||
Reference in New Issue
Block a user