summaryrefslogtreecommitdiff
path: root/app/views/nodes/edit.html.erb
diff options
context:
space:
mode:
Diffstat (limited to 'app/views/nodes/edit.html.erb')
-rw-r--r--app/views/nodes/edit.html.erb175
1 files changed, 116 insertions, 59 deletions
diff --git a/app/views/nodes/edit.html.erb b/app/views/nodes/edit.html.erb
index 498fa1f..25f15c2 100644
--- a/app/views/nodes/edit.html.erb
+++ b/app/views/nodes/edit.html.erb
@@ -1,79 +1,116 @@
1<% content_for :subnavigation do %> 1<h1><%= title_for_node(@node) %></h1>
2 <%= link_to 'metadata', '#', :id => 'button', :class => "unselected" %> 2
3 <%= link_to 'Show', @node %> 3<div class="node_action_bar">
4 <%= link_to 'Preview', preview_page_path(@draft) %> 4 <%= button_to 'Unlock + Back', unlock_node_path(@node), method: :put,
5 <%= button_to 'Publish', publish_node_path(@node), method: :put, form: { data: { confirm: "Publish this draft?" } } %> 5 form: { class: 'button_to state_changing' },
6 <%= link_to 'Revisions', node_revisions_path(@node) %> 6 disabled: @node.autosave.present? %>
7<% end %> 7
8 <% if @node.autosave || (@node.draft && @node.head) %>
9 <%= button_to revert_node_path(@node), method: :put,
10 form: { data: { confirm: "This cannot be undone. Continue?" }, class: 'button_to destructive' } do %>
11 <%= icon("trash", library: "tabler", "aria-hidden": true) %>
12 <%= @node.draft && !@node.autosave ? "Destroy Draft" : "Discard Autosave" %>
13 <% end %>
14 <% if pair = @node.available_layer_pairs.find { |p| p.include?(:autosave) } %>
15 <%= button_to 'What changed?',
16 diff_node_revisions_path(@node),
17 method: :get,
18 params: { start_revision: pair.first, end_revision: pair.last },
19 form: { class: 'button_to computation' } %>
20 <% end %>
21 <% end %>
22
23 <%= submit_tag "Save Draft", form: dom_id(@node, :edit) %>
24 <%= submit_tag "Save + Unlock + Exit", form: dom_id(@node, :edit) %>
25 <%= link_to "Preview ↗", preview_page_path(@page), target: "_blank", rel: "noopener", class: "preview_link" %>
26</div>
8 27
9<div id="page_editor"> 28<div id="page_editor">
10<%= form_for(@node) do |f| %> 29 <%= form_for(@node, html: { data: { autosave_url: autosave_node_path(@node), show_url: node_path(@node) } }) do |f| %>
11 <% if @node.errors.any? %> 30 <% if @node.errors.any? %>
12 <div class="error_messages"> 31 <div class="error_messages">
13 <ul><% @node.errors.full_messages.each do |msg| %><li><%= msg %></li><% end %></ul> 32 <ul><% @node.errors.full_messages.each do |msg| %><li><%= msg %></li><% end %></ul>
14 </div> 33 </div>
15 <% end %> 34 <% end %>
16
17 <div id="metadata">
18 <div class="node_description">Event</div>
19 <div class="node_content"><%= event_information %></div>
20
21 <div class="node_description">Slug</div>
22 <div class="node_content">
23 <%= f.text_field(
24 :staged_slug, :value => @node.staged_slug || @node.slug
25 )
26 %>
27 </div>
28 35
29 <div class="node_description">parent</div> 36 <details id="metadata_details">
30 <div class="node_content"> 37 <summary>Metadata (slug, parent, tags, template, author, images)</summary>
31 <%= text_field_tag :move_to_search_term, @node.parent.title rescue "" %> 38 <div id="metadata">
32 <div id="search_results"> 39 <div class="node_description">Slug</div>
40 <div class="node_content">
41 <%= f.text_field(
42 :staged_slug, :value => @node.staged_slug || @node.slug
43 )
44 %>
45 </div>
33 46
34 </div> 47 <div class="node_description">parent</div>
48 <div class="node_content">
49 <%= text_field_tag :move_to_search_term, @node.parent.title rescue "" %>
50 <div id="move_to_search_results" class="search_results"></div>
35 <%= f.hidden_field( 51 <%= f.hidden_field(
36 :staged_parent_id, 52 :staged_parent_id,
37 :value => @node.staged_parent_id || @node.parent_id 53 :value => @node.staged_parent_id || @node.parent_id
38 ) 54 )
39 %> 55 %>
40 </div> 56 </div>
41
42 <%= fields_for @draft do |d| %>
43 <div class="node_description">Tags - comma seperated</div>
44 <div class="node_content"><%= text_field_tag :tag_list, @draft.tag_list.join(', ') %></div>
45 57
46 <div class="node_description">Publish at</div> 58 <%= fields_for @page do |d| %>
47 <div class="node_content"><%= d.datetime_select :published_at, :value => @draft.published_at %></div> 59 <div class="node_description">Tags - comma seperated</div>
60 <div class="node_content"><%= text_field_tag :tag_list, @page.tag_list.join(', ') %></div>
48 61
49 <div class="node_description">Template</div> 62 <div class="node_description">Publish at</div>
50 <div class="node_content"><%= d.select :template_name, custom_page_templates, {:prompt => 'Select Template'} %></div> 63 <div class="node_content"><%= d.datetime_select :published_at, :value => @page.published_at %></div>
51 64
52 <div class="node_description">Author</div> 65 <div class="node_description">Template</div>
53 <div class="node_content"><%= d.select :user_id, user_list %></div> 66 <div class="node_content">
67 <%= d.select :template_name, custom_page_templates, {:prompt => 'Select Template'} %>
68 <span class="field_hint">Set automatically based on how this node was created - change it if needed.</span>
69 </div>
54 70
55 <div class="node_description">Images</div> 71 <div class="node_description">Author</div>
56 <div class="node_content"> 72 <div class="node_content">
57 <ul id="image_box" rel="<%= @draft.id %>"> 73 <%= d.select :user_id, user_list,
58 <% @draft.assets.images.each do |image| %> 74 :selected => @page.user_id || @node.draft&.user_id || @node.head&.user_id %>
59 <li rel="images_<%= image.id %>">
60 <%= image_tag(image.upload.url(:thumb)) %>
61 </li>
62 <% end %>
63 </ul>
64 <div class="clear_left right">
65 <a id="image_browser_toggle" class="unselected" href="#">image browser</a>
66 </div> 75 </div>
67 <div id="image_browser"> 76
68 <ul> 77 <div class="node_description">Images</div>
69 <% Asset.images.each do |image| %> 78 <div class="node_content">
70 <li rel="images_<%= image.id %>"><%= image_tag(image.upload.url(:thumb)) %></li> 79 <div id="related_assets"
71 <% end %> 80 data-search-url="<%= search_node_related_assets_path(@node) %>"
72 </ul> 81 data-create-url="<%= node_related_assets_path(@node) %>">
82 <ul id="related_asset_list" class="thumbnail_list">
83 <% @page.related_assets.includes(:asset).each do |related| %>
84 <li data-url="<%= node_related_asset_path(@node, related) %>"
85 data-large-url="<%= related.asset.upload.url(:large) %>"
86 data-original-url="<%= related.asset.upload.url %>"
87 data-name="<%= related.asset.name %>">
88 <span class="related_asset_handle"><%= icon("grip-vertical", library: "tabler", "aria-hidden": true) %></span>
89 <%= image_tag related.asset.upload.url(:thumb) %>
90 <button type="button" class="related_asset_remove" aria-label="Remove image">
91 <%= icon("x", library: "tabler", "aria-hidden": true) %>
92 </button>
93 </li>
94 <% end %>
95 </ul>
96 <%= text_field_tag nil, nil, id: "related_asset_search_term", placeholder: "Search images to attach…", autocomplete: "off" %>
97 <div id="related_asset_search_results" class="search_results"></div>
98 </div>
73 </div> 99 </div>
100
101 <template id="related_asset_template">
102 <li>
103 <span class="related_asset_handle"><%= icon("grip-vertical", library: "tabler", "aria-hidden": true) %></span>
104 <img src="">
105 <button type="button" class="related_asset_remove" aria-label="Remove image">
106 <%= icon("x", library: "tabler", "aria-hidden": true) %>
107 </button>
108 </li>
109 </template>
110
74 </div> 111 </div>
75 </div> 112 </details>
76 113
77 <div id="content"> 114 <div id="content">
78 <div class="node_description">Title</div> 115 <div class="node_description">Title</div>
79 <div class="node_content"><%= d.text_field :title %></div> 116 <div class="node_content"><%= d.text_field :title %></div>
@@ -82,9 +119,29 @@
82 <div class="node_content"><%= d.text_area :abstract %></div> 119 <div class="node_content"><%= d.text_area :abstract %></div>
83 120
84 <div class="node_description">Body</div> 121 <div class="node_description">Body</div>
85 <div class="node_content"><%= d.text_area :body, :class => 'with_editor' %></div> 122 <div class="body_toolbar_row">
123 <button type="button" id="preview_toggle" class="view_toggle" aria-pressed="false" aria-label="Toggle live preview" title="Toggle live preview">
124 <%= icon("layout-sidebar-right", library: "tabler", "aria-hidden": true) %> <span>Live preview</span>
125 </button>
126 <button type="button" id="preview_force_render" class="view_toggle" style="display:none" aria-label="Force preview render" title="Force preview render">
127 <%= icon("refresh", library: "tabler", "aria-hidden": true) %> <span>Force refresh</span>
128 </button>
129 </div>
86 130
87 <div><%= d.submit 'save' %></div> 131 <div id="editor_and_preview">
132 <div class="preview_content">
133 <div class="node_content"><%= d.text_area :body, :class => 'with_editor' %></div>
134 </div>
135 <div id="preview_panel" style="display:none">
136 <iframe id="live_preview_iframe" title="Live preview" data-src="<%= preview_page_path(@page, :locale => I18n.default_locale) %>"></iframe>
137 </div>
138 </div>
139 </div>
140 <% end %>
141
142 <div class="node_action_bar">
143 <%= f.submit 'Save Draft' %>
144 <%= f.submit 'Save + Unlock + Exit' %>
145 </div>
88 <% end %> 146 <% end %>
89<% end %>
90</div> 147</div>