From e0b7009bff182c753f66a5d582f1297e9cafba79 Mon Sep 17 00:00:00 2001 From: bootstraponline Date: Sat, 21 Jul 2012 15:33:43 -0600 Subject: [PATCH] Add delete this Page based on .com. Match short sha commit message of .com for edit and delete. Update tests. --- lib/gollum/frontend/app.rb | 19 ++++++++++++++++--- .../public/gollum/javascript/gollum.js | 16 ++++++++++++++++ lib/gollum/frontend/templates/page.mustache | 3 +++ lib/gollum/page.rb | 7 +++++++ test/test_app.rb | 8 ++++---- test/test_unicode.rb | 12 ++++++------ 6 files changed, 52 insertions(+), 13 deletions(-) diff --git a/lib/gollum/frontend/app.rb b/lib/gollum/frontend/app.rb index 3a1a3c7e..f6c00497 100644 --- a/lib/gollum/frontend/app.rb +++ b/lib/gollum/frontend/app.rb @@ -125,7 +125,9 @@ module Precious wiki = Gollum::Wiki.new(settings.gollum_path, wiki_options) page = wiki.page(CGI.unescape(params[:page])) name = params[:rename] || page.name - committer = Gollum::Committer.new(wiki, commit_message) + msg = commit_message + msg[:message]= msg[:message] + " [#{page.version_short}]" + committer = Gollum::Committer.new(wiki, msg) commit = {:committer => committer} update_wiki_page(wiki, page, params[:content], commit, name, params[:format]) @@ -139,6 +141,17 @@ module Precious redirect "/#{page.escaped_url_path}" end + get '/delete/*' do + @path = extract_path(params[:splat].first) + @name = extract_name(params[:splat].first).to_url + wiki_options = settings.wiki_options.merge({ :page_file_dir => @path }) + wiki = Gollum::Wiki.new(settings.gollum_path, wiki_options) + @page = wiki.page(@name) + wiki.delete_page(@page, { :message => "Destroyed #{@name} (#{@page.format}) [#{@page.version_short}]" }) + + redirect '/' + end + get '/create/*' do @path = extract_path(params[:splat].first) @name = extract_name(params[:splat].first).to_url @@ -331,13 +344,13 @@ 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, name = nil, format = nil) 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) + wiki.update_page(page, name, format, content.to_s, commit) end def commit_message diff --git a/lib/gollum/frontend/public/gollum/javascript/gollum.js b/lib/gollum/frontend/public/gollum/javascript/gollum.js index c7ac1fb7..cbedb6bc 100755 --- a/lib/gollum/frontend/public/gollum/javascript/gollum.js +++ b/lib/gollum/frontend/public/gollum/javascript/gollum.js @@ -1,5 +1,21 @@ // ua $(document).ready(function() { + $('#delete-link').click( function(e) { + var ok = confirm($(this).data('confirm')); + if ( ok ) { + var href = window.location.href; + var index = href.lastIndexOf('/'); + // /home + var page = href.substr(index); + // http://localhost:4567/ + var host = href.substr(0, index+1); + var loc = host + 'delete' + page; + window.location = loc; + } + // Don't navigate on cancel. + e.preventDefault(); + } ); + var nodeSelector = { node1: null, node2: null, diff --git a/lib/gollum/frontend/templates/page.mustache b/lib/gollum/frontend/templates/page.mustache index f3b702e1..f226dad3 100644 --- a/lib/gollum/frontend/templates/page.mustache +++ b/lib/gollum/frontend/templates/page.mustache @@ -57,5 +57,8 @@ diff --git a/lib/gollum/page.rb b/lib/gollum/page.rb index 3ec3305d..66822015 100644 --- a/lib/gollum/page.rb +++ b/lib/gollum/page.rb @@ -259,6 +259,13 @@ module Gollum end end + # Public: The first 7 characters of the current version. + # + # Returns the first 7 characters of the current version. + def version_short + version.to_s[0,7] + end + # Public: The header Page. # # Returns the header Page or nil if none exists. diff --git a/test/test_app.rb b/test/test_app.rb index e4d2d875..5737da42 100644 --- a/test/test_app.rb +++ b/test/test_app.rb @@ -46,7 +46,7 @@ context "Frontend" do @wiki.clear_cache page_2 = @wiki.page(page_1.name) assert_equal 'abc', page_2.raw_data - assert_equal 'def', page_2.version.message + assert_equal 'def [ed6c9f6]', page_2.version.message assert_not_equal page_1.version.sha, page_2.version.sha end @@ -72,12 +72,12 @@ context "Frontend" do assert_equal 'header', header_2.raw_data assert_equal 'footer', foot_2.raw_data - assert_equal 'def', foot_2.version.message + assert_equal 'def [ed6c9f6]', foot_2.version.message assert_not_equal foot_1.version.sha, foot_2.version.sha assert_not_equal header_1.version.sha, header_2.version.sha assert_equal 'sidebar', side_2.raw_data - assert_equal 'def', side_2.version.message + assert_equal 'def [ed6c9f6]', 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 @@ -95,7 +95,7 @@ context "Frontend" do assert_nil @wiki.page("B") page_2 = @wiki.page('C') assert_equal 'abc', page_2.raw_data - assert_equal 'def', page_2.version.message + assert_equal 'def [ed6c9f6]', page_2.version.message assert_not_equal page_1.version.sha, page_2.version.sha end diff --git a/test/test_unicode.rb b/test/test_unicode.rb index 0ffed378..f52bc7d8 100644 --- a/test/test_unicode.rb +++ b/test/test_unicode.rb @@ -61,8 +61,8 @@ context "Frontend Unicode support" do assert last_response.ok? @wiki.update_page(@wiki.page('PG'), nil, nil, '다른 text', {}) - page = @wiki.page('PG') - assert_equal '다른 text', utf8(page.raw_data) + page2 = @wiki.page('PG') + assert_equal '다른 text', utf8(page2.raw_data) post '/edit/PG', :page => 'PG', :content => '바뀐 text', :message => 'ghi' follow_redirect! @@ -71,7 +71,7 @@ context "Frontend Unicode support" do @wiki = Gollum::Wiki.new(@path) page = @wiki.page('PG') assert_equal '바뀐 text', utf8(page.raw_data) - assert_equal 'ghi', page.version.message + assert_equal 'ghi [' + page2.version_short + ']', page.version.message end test "heavy use 2" do @@ -82,8 +82,8 @@ context "Frontend Unicode support" do @wiki.update_page(@wiki.page('k'), nil, nil, '다른 text', {}) @wiki = Gollum::Wiki.new(@path) - page = @wiki.page('k') - assert_equal '다른 text', utf8(page.raw_data) + page2 = @wiki.page('k') + assert_equal '다른 text', utf8(page2.raw_data) post '/edit/' + CGI.escape('한글'), :page => 'k', :content => '바뀐 text', :format => 'markdown', :message => 'ghi' @@ -93,7 +93,7 @@ context "Frontend Unicode support" do @wiki = Gollum::Wiki.new(@path) page = @wiki.page('k') assert_equal '바뀐 text', utf8(page.raw_data) - assert_equal 'ghi', page.version.message + assert_equal 'ghi [' + page2.version_short + ']', page.version.message end test 'transliteration' do