From d89e2de48a5e16ff01ec627e79c76b833e4618cf Mon Sep 17 00:00:00 2001 From: erdgeist Date: Mon, 20 Jul 2026 03:32:53 +0200 Subject: Link publish actions to revision diffs in recents --- app/models/node_action.rb | 8 ++++++++ app/views/node_actions/_change_details.html.erb | 16 ++++++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) (limited to 'app') diff --git a/app/models/node_action.rb b/app/models/node_action.rb index 13bd5ba..63a99ae 100644 --- a/app/models/node_action.rb +++ b/app/models/node_action.rb @@ -166,4 +166,12 @@ class NodeAction < ApplicationRecord def subject_name metadata["human_readable_node_name"] || node&.unique_name || "deleted node" end + + def diff_link_params + prev = NodeAction.where(node_id: node_id, action: "publish") + .where("id < ?", id) + .order(id: :desc).first + return nil unless prev&.page && page + { start_revision: prev.page.revision, end_revision: page.revision } + end end diff --git a/app/views/node_actions/_change_details.html.erb b/app/views/node_actions/_change_details.html.erb index 2583e8b..066d0f3 100644 --- a/app/views/node_actions/_change_details.html.erb +++ b/app/views/node_actions/_change_details.html.erb @@ -5,9 +5,13 @@ <%= I18n.default_locale.to_s.upcase %> - <%= safe_join(default_items, ", ") %> + <%= safe_join(default_items, tag.br) %> <% if action_entry.page && action_entry.node %> - <%= link_to t("node_actions.view_revision"), node_revision_path(action_entry.node, action_entry.page) %> + <% if (diff_params = action_entry.diff_link_params) %> + <%= link_to t("node_actions.view_diff"), diff_node_revisions_path(action_entry.node, diff_params) %> + <% else %> + <%= link_to t("node_actions.view_revision"), node_revision_path(action_entry.node, action_entry.page) %> + <% end %> <% end %> @@ -16,9 +20,13 @@ <%= locale.upcase %> - <%= safe_join(translation_changes(diff), ", ") %> + <%= safe_join(translation_changes(diff), tag.br) %> <% if action_entry.page && action_entry.node %> - <%= link_to t("node_actions.view_revision"), node_revision_path(action_entry.node, action_entry.page, :locale => locale) %> + <% if (diff_params = action_entry.diff_link_params) %> + <%= link_to t("node_actions.view_diff"), diff_node_revisions_path(action_entry.node, diff_params.merge(:locale => locale)) %> + <% else %> + <%= link_to t("node_actions.view_revision"), node_revision_path(action_entry.node, action_entry.page, :locale => locale) %> + <% end %> <% end %> -- cgit v1.3