summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorerdgeist <erdgeist@erdgeist.org>2026-08-09 13:26:23 +0200
committererdgeist <erdgeist@erdgeist.org>2026-08-09 13:26:23 +0200
commit616a0d2d2ba15a7e176938ee829d60366fb6a9c2 (patch)
treefe12e0ab804948f0e3ff37636859b05cef7871cc /app
parent42b996e9197680a1955cfa5639462908677e5a94 (diff)
Attach an asset to a page from the asset's own page
The picker moves from assets/edit to assets/show, where the list of attached pages already is. A member route, POST assets/:id/attach_to_node, replaces the ride on #update. Supersedes the picker wiring in the previous commit; what remains of it is @attach_node in #create, the flash composition and the corrected hint.
Diffstat (limited to 'app')
-rw-r--r--app/controllers/assets_controller.rb16
-rw-r--r--app/views/assets/edit.html.erb17
-rw-r--r--app/views/assets/show.html.erb11
3 files changed, 25 insertions, 19 deletions
diff --git a/app/controllers/assets_controller.rb b/app/controllers/assets_controller.rb
index e58f4f30..4b27d1c4 100644
--- a/app/controllers/assets_controller.rb
+++ b/app/controllers/assets_controller.rb
@@ -38,7 +38,6 @@ class AssetsController < ApplicationController
38 # GET /assets/1/edit 38 # GET /assets/1/edit
39 def edit 39 def edit
40 @asset = Asset.find(params[:id]) 40 @asset = Asset.find(params[:id])
41 @attach_node = Node.not_in_trash.find_by(:id => params[:node_id]) if params[:node_id].present?
42 end 41 end
43 42
44 # POST /assets 43 # POST /assets
@@ -69,7 +68,6 @@ class AssetsController < ApplicationController
69 # PUT /assets/1.xml 68 # PUT /assets/1.xml
70 def update 69 def update
71 @asset = Asset.find(params[:id]) 70 @asset = Asset.find(params[:id])
72 @attach_node = Node.not_in_trash.find_by(:id => params[:node_id]) if params[:node_id].present?
73 71
74 respond_to do |format| 72 respond_to do |format|
75 if @asset.update(asset_params) 73 if @asset.update(asset_params)
@@ -102,6 +100,20 @@ class AssetsController < ApplicationController
102 end 100 end
103 end 101 end
104 102
103 # POST /assets/1/attach_to_node
104 def attach_to_node
105 @asset = Asset.find(params[:id])
106 node = Node.not_in_trash.find_by(:id => params[:node_id])
107
108 if node
109 attach_to(node)
110 else
111 flash[:error] = t("flash.assets.attach_no_node")
112 end
113
114 redirect_to(asset_path(@asset))
115 end
116
105 private 117 private
106 118
107 def asset_params 119 def asset_params
diff --git a/app/views/assets/edit.html.erb b/app/views/assets/edit.html.erb
index 5214e082..610ae20a 100644
--- a/app/views/assets/edit.html.erb
+++ b/app/views/assets/edit.html.erb
@@ -36,23 +36,6 @@
36 ) %> 36 ) %>
37 </div> 37 </div>
38 38
39 <div class="layout_row_label"><%= t("assets.form.attach_to_page") %></div>
40 <div class="layout_row_content">
41 <div class="restore_picker">
42 <%= text_field_tag :asset_node_search_term, @attach_node&.title,
43 :placeholder => t("assets.form.attach_search_placeholder"), :autocomplete => "off" %>
44 <div id="asset_node_search_results" class="search_results" style="display: none"></div>
45 </div>
46 <%= hidden_field_tag :node_id, @attach_node&.id %>
47 <span class="field_hint"><%= t("assets.form.attach_hint") %></span>
48 </div>
49
50 <div class="layout_row_label"></div>
51 <div class="layout_row_content">
52 <label><%= check_box_tag :headline, "1" %> <%= t("assets.form.as_headline") %></label>
53 <span class="field_hint"><%= t("assets.form.headline_hint") %></span>
54 </div>
55
56 <div class="layout_row_label"><%= t("admin.columns.actions") %></div> 39 <div class="layout_row_label"><%= t("admin.columns.actions") %></div>
57 <div class="layout_row_content info_group"> 40 <div class="layout_row_content info_group">
58 <div class="info_group_items"> 41 <div class="info_group_items">
diff --git a/app/views/assets/show.html.erb b/app/views/assets/show.html.erb
index d76d312b..f31d34e1 100644
--- a/app/views/assets/show.html.erb
+++ b/app/views/assets/show.html.erb
@@ -47,6 +47,17 @@
47 <%= link_to new_node_path(:asset_id => @asset.id), :class => "action_button" do %> 47 <%= link_to new_node_path(:asset_id => @asset.id), :class => "action_button" do %>
48 <%= icon("file-plus", library: "tabler", "aria-hidden": true) %> <%= t(".new_page_with_attachment") %> 48 <%= icon("file-plus", library: "tabler", "aria-hidden": true) %> <%= t(".new_page_with_attachment") %>
49 <% end %> 49 <% end %>
50 <%= form_tag attach_to_node_asset_path(@asset), :class => "asset_attach_form" do %>
51 <div class="restore_picker">
52 <%= text_field_tag :asset_node_search_term, nil,
53 :placeholder => t("assets.form.attach_search_placeholder"), :autocomplete => "off" %>
54 <div id="asset_node_search_results" class="search_results" style="display: none"></div>
55 </div>
56 <%= hidden_field_tag :node_id, nil %>
57 <label><%= check_box_tag :headline, "1" %> <%= t("assets.form.as_headline") %></label>
58 <%= submit_tag t(".attach_button") %>
59 <span class="field_hint"><%= t("assets.form.attach_hint") %></span>
60 <% end %>
50 </div> 61 </div>
51 62
52 <div class="layout_row_label"><%= t(".public_path") %></div> 63 <div class="layout_row_label"><%= t(".public_path") %></div>