diff options
| author | erdgeist <erdgeist@erdgeist.org> | 2026-07-30 23:22:47 +0200 |
|---|---|---|
| committer | erdgeist <erdgeist@erdgeist.org> | 2026-07-30 23:22:47 +0200 |
| commit | fd1ef782f7fc85db740fcb2ac1f859725e7280c5 (patch) | |
| tree | 06f1fae092876616de569f87f6d0f461e4b47833 /app | |
| parent | bc116a2acfe2450d85229379d54c3344e485db6a (diff) | |
Provide the full i18n matrix for public/admin-preview/shared-preview urls
Diffstat (limited to 'app')
| -rw-r--r-- | app/views/nodes/show.html.erb | 100 |
1 files changed, 86 insertions, 14 deletions
diff --git a/app/views/nodes/show.html.erb b/app/views/nodes/show.html.erb index a337b555..8b12e2eb 100644 --- a/app/views/nodes/show.html.erb +++ b/app/views/nodes/show.html.erb | |||
| @@ -194,25 +194,97 @@ | |||
| 194 | 194 | ||
| 195 | <div class="layout_row_label"><%= t(".links") %></div> | 195 | <div class="layout_row_label"><%= t(".links") %></div> |
| 196 | <div class="layout_row_content info_group"> | 196 | <div class="layout_row_content info_group"> |
| 197 | <div class="info_group_items"> | 197 | <% |
| 198 | <div class="info_item"> | 198 | # Public addresses come from the head, previews from the draft, and |
| 199 | <span class="info_label"><%= t(".public") %></span> | 199 | # those sets differ routinely -- a German head with a freshly |
| 200 | <%= link_to @page.public_link, content_url(@node.unique_path) %> | 200 | # translated English draft has one public address and two preview |
| 201 | # ones. Columns are the union; a kind with no address in a locale | ||
| 202 | # leaves that cell empty. | ||
| 203 | available = I18n.available_locales - [:root] | ||
| 204 | head_locales = (@node.head&.translated_locales || []).map(&:to_sym) & available | ||
| 205 | draft_locales = (@node.draft&.translated_locales || []).map(&:to_sym) & available | ||
| 206 | link_locales = (head_locales | draft_locales) | ||
| 207 | link_locales = [I18n.default_locale] if link_locales.empty? | ||
| 208 | link_locales = [I18n.default_locale] + (link_locales - [I18n.default_locale]).sort | ||
| 209 | locale_param = ->(locale) { locale unless locale == I18n.default_locale } | ||
| 210 | %> | ||
| 211 | |||
| 212 | <div class="link_matrix link_matrix_<%= link_locales.size %>"> | ||
| 213 | <div class="link_matrix_head"> | ||
| 214 | <span></span> | ||
| 215 | <% link_locales.each do |locale| %> | ||
| 216 | <span class="link_matrix_locale"><%= locale.to_s.upcase %></span> | ||
| 217 | <% end %> | ||
| 201 | </div> | 218 | </div> |
| 219 | |||
| 220 | <% if @node.head %> | ||
| 221 | <div class="link_matrix_row"> | ||
| 222 | <span class="link_matrix_label"> | ||
| 223 | <span class="info_label"><%= t(".public") %></span> | ||
| 224 | <%= link_to "/#{@node.unique_name}", content_url(@node.unique_path) %> | ||
| 225 | </span> | ||
| 226 | <span class="link_matrix_cells"> | ||
| 227 | <% link_locales.each do |locale| %> | ||
| 228 | <span class="link_matrix_cell"> | ||
| 229 | <% if head_locales.include?(locale) %> | ||
| 230 | <span class="link_locale_tag"><%= locale.to_s.upcase %></span> | ||
| 231 | <%= render "nodes/link_cell", | ||
| 232 | :url => content_url(@node.unique_path, :locale => locale_param.(locale)) %> | ||
| 233 | <% end %> | ||
| 234 | </span> | ||
| 235 | <% end %> | ||
| 236 | </span> | ||
| 237 | </div> | ||
| 238 | <% end %> | ||
| 239 | |||
| 202 | <% if @node.draft %> | 240 | <% if @node.draft %> |
| 203 | <div class="info_item"> | 241 | <div class="link_matrix_row"> |
| 204 | <span class="info_label"><%= t(".admin_preview") %></span> | 242 | <span class="link_matrix_label"> |
| 205 | <%= link_to preview_page_path(@node.draft), preview_page_path(@node.draft) %> | 243 | <span class="info_label"><%= t(".admin_preview") %></span> |
| 244 | <%= link_to preview_page_path(@node.draft), preview_page_url(@node.draft) %> | ||
| 245 | </span> | ||
| 246 | <span class="link_matrix_cells"> | ||
| 247 | <% link_locales.each do |locale| %> | ||
| 248 | <span class="link_matrix_cell"> | ||
| 249 | <% if draft_locales.include?(locale) %> | ||
| 250 | <span class="link_locale_tag"><%= locale.to_s.upcase %></span> | ||
| 251 | <%= render "nodes/link_cell", | ||
| 252 | :url => preview_page_url(@node.draft, :locale => locale_param.(locale)) %> | ||
| 253 | <% end %> | ||
| 254 | </span> | ||
| 255 | <% end %> | ||
| 256 | </span> | ||
| 206 | </div> | 257 | </div> |
| 207 | <div class="info_item"> | 258 | |
| 208 | <span class="info_label"><%= t(".public_preview") %></span> | 259 | <div class="link_matrix_row"> |
| 260 | <span class="link_matrix_label"> | ||
| 261 | <span class="info_label"><%= t(".public_preview") %></span> | ||
| 262 | <% if @node.draft.preview_token.present? %> | ||
| 263 | <%= link_to shared_preview_path(:token => @node.draft.preview_token), | ||
| 264 | shared_preview_url(:token => @node.draft.preview_token), | ||
| 265 | target: "_blank", rel: "noopener" %> | ||
| 266 | <% end %> | ||
| 267 | </span> | ||
| 209 | <% if @node.draft.preview_token.present? %> | 268 | <% if @node.draft.preview_token.present? %> |
| 210 | <div class="aligned_action_row"> | 269 | <span class="link_matrix_cells"> |
| 211 | <%= link_to shared_preview_path(token: @node.draft.preview_token), shared_preview_url(token: @node.draft.preview_token), target: "_blank", rel: "noopener" %> | 270 | <% link_locales.each do |locale| %> |
| 212 | <%= button_to t(".revoke"), revoke_shared_preview_node_path(@node), method: :put, form: { data: { confirm: t(".confirm_revoke") }, class: 'button_to state_changing' } %> | 271 | <span class="link_matrix_cell"> |
| 213 | </div> | 272 | <% if draft_locales.include?(locale) %> |
| 273 | <span class="link_locale_tag"><%= locale.to_s.upcase %></span> | ||
| 274 | <%= render "nodes/link_cell", | ||
| 275 | :url => shared_preview_url(:token => @node.draft.preview_token, | ||
| 276 | :locale => locale_param.(locale)) %> | ||
| 277 | <% end %> | ||
| 278 | </span> | ||
| 279 | <% end %> | ||
| 280 | </span> | ||
| 281 | <%= button_to t(".revoke"), revoke_shared_preview_node_path(@node), method: :put, | ||
| 282 | form: { data: { confirm: t(".confirm_revoke") }, | ||
| 283 | class: 'button_to state_changing link_matrix_actions' } %> | ||
| 214 | <% else %> | 284 | <% else %> |
| 215 | <%= button_to t(".create_preview_link"), generate_shared_preview_node_path(@node), method: :put, form: { class: 'button_to state_changing' } %> | 285 | <span class="link_matrix_cells"></span> |
| 286 | <%= button_to t(".create_preview_link"), generate_shared_preview_node_path(@node), method: :put, | ||
| 287 | form: { class: 'button_to state_changing link_matrix_actions' } %> | ||
| 216 | <% end %> | 288 | <% end %> |
| 217 | </div> | 289 | </div> |
| 218 | <% end %> | 290 | <% end %> |
