From 6649dd48123367e8264df15c399accaa17ddfd0b Mon Sep 17 00:00:00 2001 From: rick Date: Thu, 12 Aug 2010 09:09:33 -0700 Subject: [PATCH] bookmarkable compare urls --- lib/gollum/frontend/app.rb | 24 ++++++++++++++----- .../frontend/public/javascript/gollum.js | 8 +++++-- lib/gollum/frontend/views/compare.rb | 4 ++-- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/lib/gollum/frontend/app.rb b/lib/gollum/frontend/app.rb index 6b5bf188..8c32904c 100644 --- a/lib/gollum/frontend/app.rb +++ b/lib/gollum/frontend/app.rb @@ -87,12 +87,24 @@ module Precious end post '/compare/:name' do - @name = params[:name] - @versions = params[:versions] - wiki = Gollum::Wiki.new($path) - @page = wiki.page(@name) - diffs = wiki.repo.diff(@versions[1], @versions[0], @page.path) - @diff = diffs.first + @versions = params[:versions] || [] + if @versions.size < 2 + redirect "/history/#{params[:name]}" + else + redirect "/compare/%s/%s...%s" % [ + params[:name], + @versions.last, + @versions.first] + end + end + + get '/compare/:name/:version_list' do + @name = params[:name] + @versions = params[:version_list].split(/\.{2,3}/) + wiki = Gollum::Wiki.new($path) + @page = wiki.page(@name) + diffs = wiki.repo.diff(@versions.first, @versions.last, @page.path) + @diff = diffs.first mustache :compare end diff --git a/lib/gollum/frontend/public/javascript/gollum.js b/lib/gollum/frontend/public/javascript/gollum.js index bcf270f6..f6e9df57 100644 --- a/lib/gollum/frontend/public/javascript/gollum.js +++ b/lib/gollum/frontend/public/javascript/gollum.js @@ -205,7 +205,8 @@ $(function(){ $('ul.inline-tabs').tabs() - var selectedRevisions = [] + var selectedRevisions = []; + var baseCompareUrl = null $('form#history input[type=checkbox]').change(function() { var id = $(this).val() @@ -225,7 +226,10 @@ $(function(){ $('form#history input[type=submit]').attr('disabled', true) if (selectedRevisions.length == 2) { - $('form#history input[type=submit]').attr('disabled', false) + if(!baseCompareUrl) baseCompareUrl = $('form#history').attr('action') + var compareUrl = baseCompareUrl + "/" + selectedRevisions[1] + '...' + selectedRevisions[0] + //$('form#history').attr('action', compareUrl) + $('form#history input[type=submit]').attr('disabled', false).attr('method', 'get') var on = false $('form#history tr.commit').each(function() { if (on) { $(this).addClass("selected") } diff --git a/lib/gollum/frontend/views/compare.rb b/lib/gollum/frontend/views/compare.rb index 427bc329..4fa0634a 100644 --- a/lib/gollum/frontend/views/compare.rb +++ b/lib/gollum/frontend/views/compare.rb @@ -12,11 +12,11 @@ module Precious end def before - @versions[1][0..6] + @versions[0][0..6] end def after - @versions[0][0..6] + @versions[1][0..6] end def lines