edit a page, sidebar, and footer all in one commit
This commit is contained in:
@@ -57,12 +57,15 @@ module Precious
|
|||||||
post '/edit/*' do
|
post '/edit/*' do
|
||||||
wiki = Gollum::Wiki.new(settings.gollum_path, settings.wiki_options)
|
wiki = Gollum::Wiki.new(settings.gollum_path, settings.wiki_options)
|
||||||
page = wiki.page(params[:splat].first)
|
page = wiki.page(params[:splat].first)
|
||||||
name = params[:rename] || page.name
|
name = params[:rename]
|
||||||
msg = commit_message
|
committer = Gollum::Committer.new(wiki, commit_message)
|
||||||
update_wiki_page(wiki, page, params[:content], msg, name,
|
commit = {:committer => committer}
|
||||||
|
|
||||||
|
update_wiki_page(wiki, page, params[:content], commit, name,
|
||||||
params[:format])
|
params[:format])
|
||||||
update_wiki_page(wiki, page.footer, params[:footer], msg) if params[:footer]
|
update_wiki_page(wiki, page.footer, params[:footer], commit) if params[:footer]
|
||||||
update_wiki_page(wiki, page.sidebar, params[:sidebar], msg) if params[:sidebar]
|
update_wiki_page(wiki, page.sidebar, params[:sidebar], commit) if params[:sidebar]
|
||||||
|
committer.commit
|
||||||
|
|
||||||
redirect "/#{CGI.escape(Gollum::Page.cname(name))}"
|
redirect "/#{CGI.escape(Gollum::Page.cname(name))}"
|
||||||
end
|
end
|
||||||
@@ -187,10 +190,12 @@ module Precious
|
|||||||
end
|
end
|
||||||
|
|
||||||
def update_wiki_page(wiki, page, content, commit_message, name = nil, format = nil)
|
def update_wiki_page(wiki, page, content, commit_message, name = nil, format = nil)
|
||||||
return if !page || !content || page.raw_data == content
|
return if !page ||
|
||||||
name ||= page.name
|
((!content || page.raw_data == content) && page.format == format)
|
||||||
format = (format || page.format).to_sym
|
name ||= page.name
|
||||||
wiki.update_page(page, name, format, content, commit_message)
|
format = (format || page.format).to_sym
|
||||||
|
content ||= page.raw_data
|
||||||
|
wiki.update_page(page, name, format, content.to_s, commit_message)
|
||||||
end
|
end
|
||||||
|
|
||||||
def commit_message
|
def commit_message
|
||||||
|
|||||||
+6
-5
@@ -30,13 +30,13 @@ context "Frontend" do
|
|||||||
end
|
end
|
||||||
|
|
||||||
test "edits page footer and sidebar" do
|
test "edits page footer and sidebar" do
|
||||||
page_1 = @wiki.page('A')
|
commits = @wiki.repo.commits('master').size
|
||||||
foot_1 = page_1.footer
|
page_1 = @wiki.page('A')
|
||||||
side_1 = page_1.sidebar
|
foot_1 = page_1.footer
|
||||||
|
side_1 = page_1.sidebar
|
||||||
|
|
||||||
post "/edit/A",
|
post "/edit/A",
|
||||||
:footer => 'footer', :sidebar => 'sidebar',
|
:footer => 'footer', :sidebar => 'sidebar', :message => 'def'
|
||||||
:format => page_1.format, :message => 'def'
|
|
||||||
follow_redirect!
|
follow_redirect!
|
||||||
assert last_response.ok?
|
assert last_response.ok?
|
||||||
|
|
||||||
@@ -53,6 +53,7 @@ context "Frontend" do
|
|||||||
assert_equal 'sidebar', side_2.raw_data
|
assert_equal 'sidebar', side_2.raw_data
|
||||||
assert_equal 'def', side_2.version.message
|
assert_equal 'def', side_2.version.message
|
||||||
assert_not_equal side_1.version.sha, side_2.version.sha
|
assert_not_equal side_1.version.sha, side_2.version.sha
|
||||||
|
assert_equal commits+1, @wiki.repo.commits('master').size
|
||||||
end
|
end
|
||||||
|
|
||||||
test "renames page" do
|
test "renames page" do
|
||||||
|
|||||||
Reference in New Issue
Block a user