summaryrefslogtreecommitdiff
path: root/app/views
diff options
context:
space:
mode:
authorerdgeist <erdgeist@erdgeist.org>2026-08-14 17:02:30 +0200
committererdgeist <erdgeist@erdgeist.org>2026-08-14 17:02:30 +0200
commitf93969e772a36b54998496092b54972825a07dd8 (patch)
tree74c9e87b59c641454216dbeb274b415450ba8a27 /app/views
parentb282797767e6980ebad340e352bef4b0552c150d (diff)
Fold revision metadata into a two-line row
Title on the first line, date, revision and editor on the second, with the two actions as an icon grid. Four columns become two, so the table needs no mobile card treatment.
Diffstat (limited to 'app/views')
-rw-r--r--app/views/revisions/index.html.erb138
1 files changed, 75 insertions, 63 deletions
diff --git a/app/views/revisions/index.html.erb b/app/views/revisions/index.html.erb
index 4f854518..08273749 100644
--- a/app/views/revisions/index.html.erb
+++ b/app/views/revisions/index.html.erb
@@ -1,68 +1,80 @@
1<h2><%= t(".title", :path => @node.unique_name) %></h2> 1<div class="admin_layout">
2 <h1><%= t(".title", :path => @node.unique_name) %></h1>
2 3
3<p class="node_action_bar"> 4 <p class="node_action_bar">
4 <%= link_to t(".back_to_node"), node_path(@node) %> 5 <%= link_to t(".back_to_node"), node_path(@node) %>
5</p>
6
7<% if Page.non_default_locales.any? %>
8 <p class="diff_locale_toggle">
9 <%= t("revisions.locale_label") %>
10 <% ([I18n.default_locale] + Page.non_default_locales).each_with_index do |locale, i| %>
11 <%= " &middot; ".html_safe if i > 0 %>
12 <% if locale == @translation_locale %>
13 <strong><%= locale.to_s.upcase %></strong>
14 <% else %>
15 <%= link_to locale.to_s.upcase, node_revisions_path(@node, :translation_locale => locale) %>
16 <% end %>
17 <% end %>
18 </p> 6 </p>
19<% end %>
20
21<% pages = (@pages || @node.pages.all).reverse %>
22 7
23<table id="revisions" class="admin_table revisions_table"> 8 <% if Page.non_default_locales.any? %>
24 <thead> 9 <p class="diff_locale_toggle">
25 <tr class="header"> 10 <%= t("revisions.locale_label") %>
26 <th><%= t("admin.columns.rev") %></th> 11 <% ([I18n.default_locale] + Page.non_default_locales).each_with_index do |locale, i| %>
27 <th><%= t("admin.columns.title") %></th> 12 <%= " &middot; ".html_safe if i > 0 %>
28 <th><%= t("admin.columns.editor") %></th> 13 <% if locale == @translation_locale %>
29 <th><%= t("admin.columns.date") %></th> 14 <strong><%= locale.to_s.upcase %></strong>
30 <th></th> 15 <% else %>
31 <th></th> 16 <%= link_to locale.to_s.upcase, node_revisions_path(@node, :translation_locale => locale) %>
32 </tr>
33 <tr class="diff_sticky_bar">
34 <td colspan="6">
35 <%= form_tag diff_node_revisions_path(@node), :method => :post,
36 :id => "diff_form", :class => "button_to computation" do %>
37 <%= hidden_field_tag :translation_locale, @translation_locale %>
38 <%= hidden_field_tag :start_revision, pages[1]&.revision %>
39 <%= hidden_field_tag :end_revision, pages[0]&.revision %>
40 <%= submit_tag t(".diff_revisions") %>
41 <span id="diff_selection_label" aria-live="polite">
42 <%= t(".diff_selection_html",
43 :from => tag.span(:id => "diff_from"),
44 :to => tag.span(:id => "diff_to")) %>
45 </span>
46 <label><%= radio_button_tag :view, 'inline', true %> <%= t("revisions.inline") %></label>
47 <label><%= radio_button_tag :view, 'side_by_side', false %> <%= t("revisions.side_by_side") %></label>
48 <% end %> 17 <% end %>
49 </td> 18 <% end %>
50 </tr> 19 </p>
51 </thead>
52 <tbody>
53 <% pages.each do |page| %>
54 <tr data-revision="<%= page.revision %>" tabindex="0" aria-pressed="false">
55 <td class="revision"><%= page.revision %></td>
56 <td class="title"><%= page.translations.find_by(:locale => @translation_locale)&.title || "—" %></td>
57 <td class="user"><%= page.editor.try(:login) %></td>
58 <td class="date"><%= admin_datetime(page.updated_at) %></td>
59 <td><%= link_to t(".show_link"), node_revision_path(@node, page, :translation_locale => @translation_locale) %></td>
60 <td>
61 <%= button_to t(".restore_link"), restore_node_revision_path(@node, page),
62 method: :put,
63 form: { data: { confirm: t(".confirm_restore") }, class: 'button_to state_changing' } %>
64 </td>
65 </tr>
66 <% end %> 20 <% end %>
67 </tbody> 21
68</table> 22 <% pages = (@pages || @node.pages.all).reverse %>
23
24 <table id="revisions" class="admin_table revisions_table">
25 <thead>
26 <tr class="diff_sticky_bar">
27 <td colspan="2">
28 <%= form_tag diff_node_revisions_path(@node), :method => :post,
29 :id => "diff_form", :class => "button_to computation" do %>
30 <%= hidden_field_tag :translation_locale, @translation_locale %>
31 <%= hidden_field_tag :start_revision, pages[1]&.revision %>
32 <%= hidden_field_tag :end_revision, pages[0]&.revision %>
33 <%= submit_tag t(".diff_revisions") %>
34 <span id="diff_selection_label" aria-live="polite">
35 <%= t(".diff_selection_html",
36 :from => tag.span(:id => "diff_from"),
37 :to => tag.span(:id => "diff_to")) %>
38 </span>
39 <label><%= radio_button_tag :view, 'inline', true %> <%= t("revisions.inline") %></label>
40 <label><%= radio_button_tag :view, 'side_by_side', false %> <%= t("revisions.side_by_side") %></label>
41 <% end %>
42 </td>
43 </tr>
44 </thead>
45 <tbody>
46 <% pages.each do |page| %>
47 <tr data-revision="<%= page.revision %>" tabindex="0" aria-pressed="false">
48 <td class="title">
49 <div class="row_primary">
50 <%= page.translations.find_by(:locale => @translation_locale)&.title || "—" %>
51 </div>
52 <div class="row_secondary">
53 <%= t(".row_meta", :date => admin_datetime(page.updated_at),
54 :rev => page.revision,
55 :editor => page.editor.try(:login) || t("admin.common.unknown")) %>
56 </div>
57 </td>
58 <td class="actions">
59 <div class="action_grid">
60 <span class="action_item">
61 <%= link_to node_revision_path(@node, page, :translation_locale => @translation_locale),
62 "aria-label" => t(".show_link"), title: t(".show_link") do %>
63 <%= icon("eye", library: "tabler", "aria-hidden": true) %>
64 <% end %>
65 </span>
66 <span class="action_item">
67 <%= button_to restore_node_revision_path(@node, page), method: :put,
68 form: { data: { confirm: t(".confirm_restore") },
69 class: 'button_to state_changing' },
70 "aria-label" => t(".restore_link"), title: t(".restore_link") do %>
71 <%= icon("arrow-back-up", library: "tabler", "aria-hidden": true) %>
72 <% end %>
73 </span>
74 </div>
75 </td>
76 </tr>
77 <% end %>
78 </tbody>
79 </table>
80</div>