<%= t(".title", :path => @node.unique_name) %>

<%= link_to t(".back_to_node"), node_path(@node) %>

<% if Page.non_default_locales.any? %>

<%= t("revisions.locale_label") %> <% ([I18n.default_locale] + Page.non_default_locales).each_with_index do |locale, i| %> <%= " · ".html_safe if i > 0 %> <% if locale == @translation_locale %> <%= locale.to_s.upcase %> <% else %> <%= link_to locale.to_s.upcase, node_revisions_path(@node, :translation_locale => locale) %> <% end %> <% end %>

<% end %> <% pages = (@pages || @node.pages.all).reverse %> <% pages.each_with_index do |page, index| %> <% end %>
<%= t(".first") %> <%= t(".last") %> <%= t("admin.columns.rev") %> <%= t("admin.columns.title") %> <%= t("admin.columns.editor") %> <%= t("admin.columns.date") %>
<%= button_to t(".diff_revisions"), diff_node_revisions_path(@node), method: :post, params: { translation_locale: @translation_locale }, form: { id: 'diff_form', class: 'button_to computation' }, disabled: true %> " data-selected="<%= t(".selected_word") %>">
<%= radio_button_tag :start_revision, page.revision, index == 1 %> <%= radio_button_tag :end_revision, page.revision, index == 0 %> <%= page.revision %> <%= page.translations.find_by(:locale => @translation_locale)&.title || "—" %> <%= page.editor.try(:login) %> <%= admin_datetime(page.updated_at) %> <%= link_to t(".show_link"), node_revision_path(@node, page, :translation_locale => @translation_locale) %> <%= button_to t(".restore_link"), restore_node_revision_path(@node, page), method: :put, form: { data: { confirm: t(".confirm_restore") }, class: 'button_to state_changing' } %>
<%= javascript_tag nonce: true do %> function update_diff_button_state() { var start = document.querySelector('input[name="start_revision"]:checked'); var end = document.querySelector('input[name="end_revision"]:checked'); var valid = start && end && start.value !== end.value; document.querySelector('#diff_form button[type="submit"]').disabled = !valid; var label = document.getElementById('diff_selection_label'); if (start && end) { label.textContent = start.value + ' ' + label.dataset.against + ' ' + end.value; } else if (start || end) { label.textContent = (start || end).value + ' ' + label.dataset.selected; } else { label.textContent = ''; } } document.querySelectorAll('input[name="start_revision"], input[name="end_revision"]') .forEach(function(radio) { radio.addEventListener('change', update_diff_button_state); }); update_diff_button_state(); document.getElementById('diff_form').addEventListener('submit', function(e) { var start = document.querySelector('input[name="start_revision"]:checked'); var end = document.querySelector('input[name="end_revision"]:checked'); var view = document.querySelector('input[name="view"]:checked'); if (start) { var s = document.createElement('input'); s.type = 'hidden'; s.name = 'start_revision'; s.value = start.value; this.appendChild(s); } if (end) { var en = document.createElement('input'); en.type = 'hidden'; en.name = 'end_revision'; en.value = end.value; this.appendChild(en); } if (view) { var v = document.createElement('input'); v.type = 'hidden'; v.name = 'view'; v.value = view.value; this.appendChild(v); } }); <% end %>