summaryrefslogtreecommitdiff
path: root/app/controllers
diff options
context:
space:
mode:
authorerdgeist <erdgeist@erdgeist.org>2026-07-10 00:35:24 +0200
committererdgeist <erdgeist@erdgeist.org>2026-07-10 00:35:24 +0200
commita25d90335ad3738b6831288190132c2f7498465c (patch)
tree5aa7083d9f8c8701644fe60bc7d28542775694b8 /app/controllers
parentda0b79a7c1f3116e2b450ecbe50efdf31cf23414 (diff)
Retire vendored cacycle_diff.js for a diff-lcs-based diff view
Revisions#diff now computes an inline or side-by-side word diff server-side (Page#diff_against, lib/html_word_diff.rb) instead of shipping raw/escaped content to the browser for a 2008-era vendored JS differ to mangle. View mode is picked via a `view` param, settable either on the diff page itself or directly from the revisions#index sticky bar next to "Diff revisions". Also fixes a pre-existing bug in RevisionsController#diff's single- revision branch, which set params[:start]/params[:end] instead of params[:start_revision]/params[:end_revision].
Diffstat (limited to 'app/controllers')
-rw-r--r--app/controllers/revisions_controller.rb12
1 files changed, 7 insertions, 5 deletions
diff --git a/app/controllers/revisions_controller.rb b/app/controllers/revisions_controller.rb
index 42d667e..9acb26f 100644
--- a/app/controllers/revisions_controller.rb
+++ b/app/controllers/revisions_controller.rb
@@ -13,16 +13,18 @@ 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 22 end
23 23
24 @start = @node.pages.find_by_revision( params[:start_revision] ) 24 @start = @node.pages.find_by_revision( params[:start_revision] )
25 @end = @node.pages.find_by_revision( params[:end_revision] ) 25 @end = @node.pages.find_by_revision( params[:end_revision] )
26 @diff_view = params[:view] == "side_by_side" ? :side_by_side : :inline
27 @diff = @end.diff_against( @start, view: @diff_view )
26 end 28 end
27 29
28 def show 30 def show