summaryrefslogtreecommitdiff
path: root/app/views
diff options
context:
space:
mode:
authorerdgeist <erdgeist@erdgeist.org>2026-08-09 15:45:56 +0200
committererdgeist <erdgeist@erdgeist.org>2026-08-09 15:45:56 +0200
commit9d32458491d79f8e06a706375030c78282f4427b (patch)
tree5eee208b844df39dfd66d9f0d1618fb5fa437fdb /app/views
parented3905b5409190c1e11c2c49c2163ac967c6d8b9 (diff)
Report every editorial attribute in the revision diff
diff_against gained external_url, published_at and user. The view renders each metadata section only when that attribute changed, and says so once when none did. Metadata now precedes the locale pointer, which speaks only of translations: above the metadata it read as "nothing changed" on a revision that had moved the page.
Diffstat (limited to 'app/views')
-rw-r--r--app/views/revisions/diff.html.erb133
1 files changed, 81 insertions, 52 deletions
diff --git a/app/views/revisions/diff.html.erb b/app/views/revisions/diff.html.erb
index 0fd9ccb9..25f5ad04 100644
--- a/app/views/revisions/diff.html.erb
+++ b/app/views/revisions/diff.html.erb
@@ -48,7 +48,6 @@
48 </p> 48 </p>
49<% end %> 49<% end %>
50 50
51
52<% if @available_layer_pairs.present? %> 51<% if @available_layer_pairs.present? %>
53 <div class="node_action_bar standalone_action_bar"> 52 <div class="node_action_bar standalone_action_bar">
54 <% @available_layer_pairs.each do |pair| %> 53 <% @available_layer_pairs.each do |pair| %>
@@ -71,21 +70,88 @@
71<% end %> 70<% end %>
72 71
73<div id="diffview"> 72<div id="diffview">
74 <% current_summary = @locale_summary.find { |s| s[:locale] == @translation_locale } %> 73 <% meta_changed = @diff[:address][:changed] || @diff[:external_url][:changed] ||
75 <% if current_summary && !current_summary[:changed] %> 74 @diff[:template_name][:changed] ||
76 <% elsewhere = @locale_summary.select { |s| s[:changed] }.map { |s| 75 @diff[:published_at][:changed] || @diff[:user][:changed] ||
77 link_to s[:locale].to_s.upcase, diff_node_revisions_path(@node, 76 @diff[:tags][:added].any? || @diff[:tags][:removed].any? ||
78 start_revision: params[:start_revision], end_revision: params[:end_revision], 77 @diff[:assets][:added].any? || @diff[:assets][:removed].any? %>
79 view: @diff_view, translation_locale: s[:locale]) } %> 78
80 <p class="diff_unchanged diff_locale_pointer"> 79 <div class="diff_preamble">
81 <% if elsewhere.any? %> 80 <div class="diff_meta">
82 <%= t(".unchanged_here_html", :lang => @translation_locale.to_s.upcase, 81 <% unless meta_changed %>
83 :others => safe_join(elsewhere, ", ")) %> 82 <p class="diff_unchanged"><%= t(".no_metadata_change") %></p>
84 <% else %> 83 <% end %>
85 <%= t(".unchanged_anywhere") %> 84
85 <% if @diff[:address][:changed] %>
86 <h3><%= t(".address") %></h3>
87 <p>
88 <del><%= @diff[:address][:from] || t(".none_marker") %></del>
89 <ins><%= @diff[:address][:to] || t(".none_marker") %></ins>
90 </p>
91 <% end %>
92
93 <% if @diff[:external_url][:changed] %>
94 <h3><%= Page.human_attribute_name(:external_url) %></h3>
95 <p>
96 <del><%= @diff[:external_url][:from].presence || t(".none_marker") %></del>
97 <ins><%= @diff[:external_url][:to].presence || t(".none_marker") %></ins>
98 </p>
99 <% end %>
100
101 <% if @diff[:published_at][:changed] %>
102 <h3><%= Page.human_attribute_name(:published_at) %></h3>
103 <p>
104 <del><%= @diff[:published_at][:from] ? admin_datetime(@diff[:published_at][:from]) : t(".none_marker") %></del>
105 <ins><%= @diff[:published_at][:to] ? admin_datetime(@diff[:published_at][:to]) : t(".none_marker") %></ins>
106 </p>
86 <% end %> 107 <% end %>
87 </p> 108
88 <% end %> 109 <% if @diff[:user][:changed] %>
110 <h3><%= Page.human_attribute_name(:user) %></h3>
111 <p>
112 <del><%= @diff[:user][:from]&.login || t(".none_marker") %></del>
113 <ins><%= @diff[:user][:to]&.login || t(".none_marker") %></ins>
114 </p>
115 <% end %>
116
117 <% if @diff[:tags][:added].any? || @diff[:tags][:removed].any? %>
118 <h3><%= Page.human_attribute_name(:tag_list) %></h3>
119 <ul class="diff_set_list">
120 <% @diff[:tags][:added].each do |tag| %><li><ins><%= tag %></ins></li><% end %>
121 <% @diff[:tags][:removed].each do |tag| %><li><del><%= tag %></del></li><% end %>
122 </ul>
123 <% end %>
124
125 <% if @diff[:template_name][:changed] %>
126 <h3><%= Page.human_attribute_name(:template_name) %></h3>
127 <p><del><%= @diff[:template_name][:from] || t(".none_marker") %></del> <ins><%= @diff[:template_name][:to] || t(".none_marker") %></ins></p>
128 <% end %>
129
130 <% if @diff[:assets][:added].any? || @diff[:assets][:removed].any? %>
131 <h3><%= Page.human_attribute_name(:assets) %></h3>
132 <ul class="diff_set_list">
133 <% @diff[:assets][:added].each do |asset| %><li><ins><%= asset.upload_file_name %></ins></li><% end %>
134 <% @diff[:assets][:removed].each do |asset| %><li><del><%= asset.upload_file_name %></del></li><% end %>
135 </ul>
136 <% end %>
137 </div>
138
139 <% current_summary = @locale_summary.find { |s| s[:locale] == @translation_locale } %>
140 <% if current_summary && !current_summary[:changed] %>
141 <% elsewhere = @locale_summary.select { |s| s[:changed] }.map { |s|
142 link_to s[:locale].to_s.upcase, diff_node_revisions_path(@node,
143 start_revision: params[:start_revision], end_revision: params[:end_revision],
144 view: @diff_view, translation_locale: s[:locale]) } %>
145 <p class="diff_unchanged diff_locale_pointer">
146 <% if elsewhere.any? %>
147 <%= t(".unchanged_here_html", :lang => @translation_locale.to_s.upcase,
148 :others => safe_join(elsewhere, ", ")) %>
149 <% else %>
150 <%= t(".unchanged_anywhere") %>
151 <% end %>
152 </p>
153 <% end %>
154 </div>
89 155
90 <% if @diff_view == :side_by_side %> 156 <% if @diff_view == :side_by_side %>
91 <div class="diff_side_by_side"> 157 <div class="diff_side_by_side">
@@ -114,41 +180,4 @@
114 <h3><%= Page.human_attribute_name(:body) %></h3> 180 <h3><%= Page.human_attribute_name(:body) %></h3>
115 <%= raw @diff[:body] %> 181 <%= raw @diff[:body] %>
116 <% end %> 182 <% end %>
117
118 <h3><%= t(".address") %></h3>
119 <% if @diff[:address][:changed] %>
120 <p>
121 <del><%= @diff[:address][:from] || t(".none_marker") %></del>
122 <ins><%= @diff[:address][:to] || t(".none_marker") %></ins>
123 </p>
124 <% else %>
125 <p class="diff_unchanged"><%= t(".no_change") %></p>
126 <% end %>
127
128 <h3><%= Page.human_attribute_name(:tag_list) %></h3>
129 <% if @diff[:tags][:added].empty? && @diff[:tags][:removed].empty? %>
130 <p class="diff_unchanged"><%= t(".no_change") %></p>
131 <% else %>
132 <ul class="diff_set_list">
133 <% @diff[:tags][:added].each do |tag| %><li><ins><%= tag %></ins></li><% end %>
134 <% @diff[:tags][:removed].each do |tag| %><li><del><%= tag %></del></li><% end %>
135 </ul>
136 <% end %>
137
138 <h3><%= Page.human_attribute_name(:template_name) %></h3>
139 <% if @diff[:template_name][:changed] %>
140 <p><del><%= @diff[:template_name][:from] || t(".none_marker") %></del> <ins><%= @diff[:template_name][:to] || t(".none_marker") %></ins></p>
141 <% else %>
142 <p class="diff_unchanged"><%= t(".no_change") %></p>
143 <% end %>
144
145 <h3><%= Page.human_attribute_name(:assets) %></h3>
146 <% if @diff[:assets][:added].empty? && @diff[:assets][:removed].empty? %>
147 <p class="diff_unchanged"><%= t(".no_change") %></p>
148 <% else %>
149 <ul class="diff_set_list">
150 <% @diff[:assets][:added].each do |asset| %><li><ins><%= asset.upload_file_name %></ins></li><% end %>
151 <% @diff[:assets][:removed].each do |asset| %><li><del><%= asset.upload_file_name %></del></li><% end %>
152 </ul>
153 <% end %>
154</div> 183</div>