diff options
| author | erdgeist <erdgeist@erdgeist.org> | 2026-07-12 23:43:02 +0200 |
|---|---|---|
| committer | erdgeist <erdgeist@erdgeist.org> | 2026-07-12 23:43:02 +0200 |
| commit | 848ce18303f927bfadaf0965a769cae2c62492a0 (patch) | |
| tree | 3cb14888a0df92178cd20037e7fe94f407d5ad2e /app/views/nodes | |
| parent | b271648f89cba7cafafa1b73b1658b1c1bc0e4b0 (diff) | |
Normalize action-button wording and add icons app-wide
"New X" becomes "Create X" throughout (users, events, assets, menu
items, nodes), matching the verb-first pattern the dashboard's own
signposts already established, with a shared plus icon rather than a
document-flavored one that only made sense next to "post". The
"Destroy"/"destroy"/"Delete" family is normalized to "Destroy"
everywhere, with a shared trash icon; occurrences#index and
pages#index also pick up the destructive button class they'd been
silently missing. Filter and Search convert from submit_tag to
button_tag, the only way either can hold an icon alongside its label.
Edit and the node editor's three dynamic labels (Continue Editing /
Edit Draft / Lock + Edit) share one icon without touching their
wording -- unlike Destroy's family, the state nuance in the text is
real information, not just inconsistent phrasing.
Diffstat (limited to 'app/views/nodes')
| -rw-r--r-- | app/views/nodes/_node_list.html.erb | 4 | ||||
| -rw-r--r-- | app/views/nodes/chapters.html.erb | 6 | ||||
| -rw-r--r-- | app/views/nodes/edit.html.erb | 8 | ||||
| -rw-r--r-- | app/views/nodes/index.html.erb | 4 | ||||
| -rw-r--r-- | app/views/nodes/show.html.erb | 15 |
5 files changed, 25 insertions, 12 deletions
diff --git a/app/views/nodes/_node_list.html.erb b/app/views/nodes/_node_list.html.erb index 03f38b4..f7210f1 100644 --- a/app/views/nodes/_node_list.html.erb +++ b/app/views/nodes/_node_list.html.erb | |||
| @@ -4,7 +4,9 @@ | |||
| 4 | <% end %> | 4 | <% end %> |
| 5 | <%= hidden_field_tag :tags, params[:tags] if params[:tags].present? %> | 5 | <%= hidden_field_tag :tags, params[:tags] if params[:tags].present? %> |
| 6 | <%= text_field_tag :q, params[:q], placeholder: "Search title, abstract, body…" %> | 6 | <%= text_field_tag :q, params[:q], placeholder: "Search title, abstract, body…" %> |
| 7 | <%= submit_tag "Search", class: "action_button" %> | 7 | <%= button_tag type: "submit", class: "action_button" do %> |
| 8 | <%= icon("search", library: "tabler", "aria-hidden": true) %> Search | ||
| 9 | <% end %> | ||
| 8 | <% if params[:q].present? || params[:kinds].present? || params[:tags].present? %> | 10 | <% if params[:q].present? || params[:kinds].present? || params[:tags].present? %> |
| 9 | <%= link_to "Reset", url_for(controller: params[:controller], action: params[:action]) %> | 11 | <%= link_to "Reset", url_for(controller: params[:controller], action: params[:action]) %> |
| 10 | <% end %> | 12 | <% end %> |
diff --git a/app/views/nodes/chapters.html.erb b/app/views/nodes/chapters.html.erb index 939f19c..543bc53 100644 --- a/app/views/nodes/chapters.html.erb +++ b/app/views/nodes/chapters.html.erb | |||
| @@ -1,9 +1,11 @@ | |||
| 1 | <h1>Chapters</h1> | 1 | <h1>Chapters</h1> |
| 2 | 2 | ||
| 3 | <%= form_tag chapters_nodes_path, method: :get do %> | 3 | <%= form_tag chapters_nodes_path, method: :get, class: "node_search_form" do %> |
| 4 | <label><%= check_box_tag 'kinds[]', 'erfa', @kind_keys.include?('erfa') %> Erfa</label> | 4 | <label><%= check_box_tag 'kinds[]', 'erfa', @kind_keys.include?('erfa') %> Erfa</label> |
| 5 | <label><%= check_box_tag 'kinds[]', 'chaostreff', @kind_keys.include?('chaostreff') %> Chaostreff</label> | 5 | <label><%= check_box_tag 'kinds[]', 'chaostreff', @kind_keys.include?('chaostreff') %> Chaostreff</label> |
| 6 | <%= submit_tag "Filter", class: "action_button" %> | 6 | <%= button_tag type: "submit", class: "action_button" do %> |
| 7 | <%= icon("filter", library: "tabler", "aria-hidden": true) %> Filter | ||
| 8 | <% end %> | ||
| 7 | <% end %> | 9 | <% end %> |
| 8 | 10 | ||
| 9 | <%= render 'node_list' %> | 11 | <%= render 'node_list' %> |
diff --git a/app/views/nodes/edit.html.erb b/app/views/nodes/edit.html.erb index 13b78fc..1ac05e0 100644 --- a/app/views/nodes/edit.html.erb +++ b/app/views/nodes/edit.html.erb | |||
| @@ -6,9 +6,11 @@ | |||
| 6 | disabled: @node.autosave.present? %> | 6 | disabled: @node.autosave.present? %> |
| 7 | 7 | ||
| 8 | <% if @node.autosave || (@node.draft && @node.head) %> | 8 | <% if @node.autosave || (@node.draft && @node.head) %> |
| 9 | <%= button_to (@node.draft && !@node.autosave ? 'Destroy Draft' : 'Discard Autosave'), | 9 | <%= button_to revert_node_path(@node), method: :put, |
| 10 | revert_node_path(@node), method: :put, | 10 | form: { data: { confirm: "This cannot be undone. Continue?" }, class: 'button_to destructive' } do %> |
| 11 | form: { data: { confirm: "This cannot be undone. Continue?" }, class: 'button_to destructive' } %> | 11 | <%= icon("trash", library: "tabler", "aria-hidden": true) %> |
| 12 | <%= @node.draft && !@node.autosave ? "Destroy Draft" : "Discard Autosave" %> | ||
| 13 | <% end %> | ||
| 12 | <% if pair = @node.available_layer_pairs.find { |p| p.include?(:autosave) } %> | 14 | <% if pair = @node.available_layer_pairs.find { |p| p.include?(:autosave) } %> |
| 13 | <%= button_to 'What changed?', | 15 | <%= button_to 'What changed?', |
| 14 | diff_node_revisions_path(@node), | 16 | diff_node_revisions_path(@node), |
diff --git a/app/views/nodes/index.html.erb b/app/views/nodes/index.html.erb index 2688ea1..3bb251c 100644 --- a/app/views/nodes/index.html.erb +++ b/app/views/nodes/index.html.erb | |||
| @@ -1,7 +1,9 @@ | |||
| 1 | <h1>Nodes</h1> | 1 | <h1>Nodes</h1> |
| 2 | 2 | ||
| 3 | <div> | 3 | <div> |
| 4 | <%= link_to 'New node', new_node_path, class: 'action_button' %> | 4 | <%= link_to new_node_path, class: 'action_button' do %> |
| 5 | <%= icon("plus", library: "tabler", "aria-hidden": true) %> Create node | ||
| 6 | <% end %> | ||
| 5 | <span class="field_hint">Creates a node with no parent or kind set — for a specific page, use the wizard's create flow or "add child" from an existing node instead.</span> | 7 | <span class="field_hint">Creates a node with no parent or kind set — for a specific page, use the wizard's create flow or "add child" from an existing node instead.</span> |
| 6 | </div> | 8 | </div> |
| 7 | 9 | ||
diff --git a/app/views/nodes/show.html.erb b/app/views/nodes/show.html.erb index 07cb5d1..6e20258 100644 --- a/app/views/nodes/show.html.erb +++ b/app/views/nodes/show.html.erb | |||
| @@ -25,7 +25,10 @@ | |||
| 25 | <% if locked_by_other %> | 25 | <% if locked_by_other %> |
| 26 | <span class="disabled_action"><%= edit_label %></span> | 26 | <span class="disabled_action"><%= edit_label %></span> |
| 27 | <% else %> | 27 | <% else %> |
| 28 | <%= link_to (@node.autosave ? "Continue Editing" : (@node.draft ? "Edit Draft" : "Lock + Edit")), edit_node_path(@node), class: "action_button" %> | 28 | <%= link_to edit_node_path(@node), class: "action_button" do %> |
| 29 | <%= icon("edit", library: "tabler", "aria-hidden": true) %> | ||
| 30 | <%= @node.autosave ? "Continue Editing" : (@node.draft ? "Edit Draft" : "Lock + Edit") %> | ||
| 31 | <% end %> | ||
| 29 | <% if !@node.draft && !@node.autosave %> | 32 | <% if !@node.draft && !@node.autosave %> |
| 30 | <span class="field_hint">Nothing pending — this will start a fresh draft.</span> | 33 | <span class="field_hint">Nothing pending — this will start a fresh draft.</span> |
| 31 | <% end %> | 34 | <% end %> |
| @@ -51,10 +54,12 @@ | |||
| 51 | <% end %> | 54 | <% end %> |
| 52 | <% if @node.autosave || (@node.draft && @node.head) %> | 55 | <% if @node.autosave || (@node.draft && @node.head) %> |
| 53 | <div class="node_info_item"> | 56 | <div class="node_info_item"> |
| 54 | <%= button_to (@node.draft && !@node.autosave ? 'Destroy Draft' : 'Discard Autosave'), | 57 | <%= button_to revert_node_path(@node), method: :put, |
| 55 | revert_node_path(@node), method: :put, | 58 | params: { return_to: request.path }, |
| 56 | params: { return_to: request.path }, | 59 | form: { data: { confirm: "This cannot be undone. Continue?" }, class: 'button_to destructive' } do %> |
| 57 | form: { data: { confirm: "This cannot be undone. Continue?" }, class: 'button_to destructive' } %> | 60 | <%= icon("trash", library: "tabler", "aria-hidden": true) %> |
| 61 | <%= @node.draft && !@node.autosave ? "Destroy Draft" : "Discard Autosave" %> | ||
| 62 | <% end %> | ||
| 58 | </div> | 63 | </div> |
| 59 | <% end %> | 64 | <% end %> |
| 60 | <% end %> | 65 | <% end %> |
