From 2b1510af111ed3b2b8b053ee1462a805b6652d97 Mon Sep 17 00:00:00 2001 From: rick Date: Wed, 19 Jan 2011 05:20:58 -0800 Subject: [PATCH] edit a page, sidebar, and footer all in one commit --- lib/gollum/frontend/app.rb | 23 ++++++++++++++--------- test/test_app.rb | 11 ++++++----- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/lib/gollum/frontend/app.rb b/lib/gollum/frontend/app.rb index 355cf826..6ee46f60 100644 --- a/lib/gollum/frontend/app.rb +++ b/lib/gollum/frontend/app.rb @@ -57,12 +57,15 @@ module Precious post '/edit/*' do wiki = Gollum::Wiki.new(settings.gollum_path, settings.wiki_options) page = wiki.page(params[:splat].first) - name = params[:rename] || page.name - msg = commit_message - update_wiki_page(wiki, page, params[:content], msg, name, + name = params[:rename] + committer = Gollum::Committer.new(wiki, commit_message) + commit = {:committer => committer} + + update_wiki_page(wiki, page, params[:content], commit, name, params[:format]) - update_wiki_page(wiki, page.footer, params[:footer], msg) if params[:footer] - update_wiki_page(wiki, page.sidebar, params[:sidebar], msg) if params[:sidebar] + update_wiki_page(wiki, page.footer, params[:footer], commit) if params[:footer] + update_wiki_page(wiki, page.sidebar, params[:sidebar], commit) if params[:sidebar] + committer.commit redirect "/#{CGI.escape(Gollum::Page.cname(name))}" end @@ -187,10 +190,12 @@ module Precious end def update_wiki_page(wiki, page, content, commit_message, name = nil, format = nil) - return if !page || !content || page.raw_data == content - name ||= page.name - format = (format || page.format).to_sym - wiki.update_page(page, name, format, content, commit_message) + return if !page || + ((!content || page.raw_data == content) && page.format == format) + name ||= page.name + format = (format || page.format).to_sym + content ||= page.raw_data + wiki.update_page(page, name, format, content.to_s, commit_message) end def commit_message diff --git a/test/test_app.rb b/test/test_app.rb index 96aa3f19..4380615b 100644 --- a/test/test_app.rb +++ b/test/test_app.rb @@ -30,13 +30,13 @@ context "Frontend" do end test "edits page footer and sidebar" do - page_1 = @wiki.page('A') - foot_1 = page_1.footer - side_1 = page_1.sidebar + commits = @wiki.repo.commits('master').size + page_1 = @wiki.page('A') + foot_1 = page_1.footer + side_1 = page_1.sidebar post "/edit/A", - :footer => 'footer', :sidebar => 'sidebar', - :format => page_1.format, :message => 'def' + :footer => 'footer', :sidebar => 'sidebar', :message => 'def' follow_redirect! assert last_response.ok? @@ -53,6 +53,7 @@ context "Frontend" do assert_equal 'sidebar', side_2.raw_data assert_equal 'def', side_2.version.message assert_not_equal side_1.version.sha, side_2.version.sha + assert_equal commits+1, @wiki.repo.commits('master').size end test "renames page" do