diff --git a/lib/gollum/frontend/app.rb b/lib/gollum/frontend/app.rb index b41af931..bde1be57 100644 --- a/lib/gollum/frontend/app.rb +++ b/lib/gollum/frontend/app.rb @@ -58,8 +58,11 @@ module Precious wiki = Gollum::Wiki.new(settings.gollum_path) page = wiki.page(params[:splat].first) name = params[:rename] || page.name - update_wiki_page(wiki, page, params[:content], commit_message, - name, params[:format]) + msg = commit_message + update_wiki_page(wiki, page, params[:content], msg, 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] redirect "/#{CGI.escape(Gollum::Page.cname(name))}" end @@ -160,8 +163,7 @@ module Precious end def update_wiki_page(wiki, page, content, commit_message, name = nil, format = nil) - return if !page - return if page.raw_data == content + 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) diff --git a/lib/gollum/wiki.rb b/lib/gollum/wiki.rb index 11a20923..d5ce1e84 100644 --- a/lib/gollum/wiki.rb +++ b/lib/gollum/wiki.rb @@ -538,18 +538,19 @@ module Gollum def commit_index(options = {}) normalize_commit(options) - options[:parent] ||= [@repo.commit('master')] - options[:parent].compact! + parents = [options[:parent] || @repo.commit('master')] + parents.flatten! + parents.compact! index = self.repo.index if tree = options[:tree] index.read_tree(tree) - elsif parent = options[:parent][0] + elsif parent = parents[0] index.read_tree(parent.tree.id) end yield index if block_given? actor = Grit::Actor.new(options[:name], options[:email]) - index.commit(options[:message], options[:parent], actor) + index.commit(options[:message], parents, actor) end def full_reverse_diff_for(page, sha1, sha2 = nil) diff --git a/test/test_app.rb b/test/test_app.rb index 4f591ae4..9026a473 100644 --- a/test/test_app.rb +++ b/test/test_app.rb @@ -28,6 +28,32 @@ context "Frontend" do assert_not_equal page_1.version.sha, page_2.version.sha end + test "edits page footer and sidebar" do + page_1 = @wiki.page('Bilbo Baggins') + foot_1 = page_1.footer + side_1 = page_1.sidebar + + post "/edit/#{Gollum::Page.cname page_1.name}", + :footer => 'footer', :sidebar => 'sidebar', + :format => page_1.format, :message => 'def' + follow_redirect! + assert last_response.ok? + + @wiki.clear_cache + page_2 = @wiki.page(page_1.name) + foot_2 = page_2.footer + side_2 = page_2.sidebar + assert_equal page_1.raw_data, page_2.raw_data + + assert_equal 'footer', foot_2.raw_data + assert_equal 'def', foot_2.version.message + assert_not_equal foot_1.version.sha, foot_2.version.sha + + 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 + end + test "renames page" do page_1 = @wiki.page('Bilbo Baggins') post "/edit/#{Gollum::Page.cname page_1.name}", :content => 'abc',