summaryrefslogtreecommitdiff
path: root/app/controllers/revisions_controller.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/revisions_controller.rb')
-rw-r--r--app/controllers/revisions_controller.rb25
1 files changed, 20 insertions, 5 deletions
diff --git a/app/controllers/revisions_controller.rb b/app/controllers/revisions_controller.rb
index 42d667e..0aed243 100644
--- a/app/controllers/revisions_controller.rb
+++ b/app/controllers/revisions_controller.rb
@@ -13,16 +13,31 @@ class RevisionsController < ApplicationController
13 13
14 def diff 14 def diff
15 @node = Node.find(params[:node_id]) 15 @node = Node.find(params[:node_id])
16 16
17 if @node.pages.length > 1 17 if @node.pages.length > 1
18 params[:start_revision] ||= @node.pages.all[-2].revision 18 params[:start_revision] ||= @node.pages.all[-2].revision
19 params[:end_revision] ||= @node.pages.all[-1].revision 19 params[:end_revision] ||= @node.pages.all[-1].revision
20 else 20 else
21 params[:start], params[:end] = 1, 1 21 params[:start_revision], params[:end_revision] = 1, 1
22 end
23
24 @start = @node.resolve_page_reference(params[:start_revision])
25 @end = @node.resolve_page_reference(params[:end_revision])
26
27 if @start.nil? || @end.nil?
28 flash[:error] = "That comparison is no longer available."
29 redirect_to(node_path(@node)) and return
22 end 30 end
23 31
24 @start = @node.pages.find_by_revision( params[:start_revision] ) 32 @locale_summary = @end.locale_diff_summary(@start)
25 @end = @node.pages.find_by_revision( params[:end_revision] ) 33 requested_locale = params[:locale].presence&.to_sym
34 default_locale = @locale_summary.find { |s| s[:changed] }&.dig(:locale) || I18n.default_locale
35 @locale = @locale_summary.any? { |s| s[:locale] == requested_locale } ? requested_locale : default_locale
36
37 @diff_view = params[:view] == "side_by_side" ? :side_by_side : :inline
38 @diff = @end.diff_against(@start, view: @diff_view, locale: @locale)
39 @available_layer_pairs = @node.available_layer_pairs
40 @locked_by_other = @node.locked? && @node.lock_owner != current_user
26 end 41 end
27 42
28 def show 43 def show