From 558ea7764757cfe324bdba72fc5279fa78efd1ea Mon Sep 17 00:00:00 2001 From: erdgeist Date: Wed, 22 Jul 2026 20:03:50 +0200 Subject: Implement controller and view side of the attach logic --- app/controllers/assets_controller.rb | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'app/controllers') diff --git a/app/controllers/assets_controller.rb b/app/controllers/assets_controller.rb index becfe133..fbede0a7 100644 --- a/app/controllers/assets_controller.rb +++ b/app/controllers/assets_controller.rb @@ -28,6 +28,7 @@ class AssetsController < ApplicationController # GET /assets/new.xml def new @asset = Asset.new + @attach_node = Node.not_in_trash.find_by(:id => params[:node_id]) if params[:node_id].present? respond_to do |format| format.html # new.html.erb @@ -44,10 +45,12 @@ class AssetsController < ApplicationController # POST /assets.xml def create @asset = Asset.new(asset_params) + attach_node = Node.not_in_trash.find_by(:id => params[:node_id]) if params[:node_id].present? respond_to do |format| if @asset.save flash[:notice] = 'Asset was successfully created.' + attach_to(attach_node) if attach_node format.html { redirect_to(@asset) } format.xml { render :xml => @asset, :status => :created, :location => @asset } else @@ -91,4 +94,23 @@ class AssetsController < ApplicationController def asset_params params.require(:asset).permit(:name, :upload, :creator, :source_url, :license_key) end + + def attach_to node + result = node.attach_asset!(@asset, :user => current_user, + :headline => params[:headline].present?) + flash[:notice] = + if result[:attached].zero? + "Asset saved — it was already attached to “#{node.title}”." + else + "Asset was successfully created and attached to “#{node.title}”." + end + case result[:headline] + when :set then flash[:notice] += " It is now the page's headline." + when :kept_existing then flash[:headline_kept_path] = node_path(node) + when :not_eligible then flash[:error] = "This asset type cannot be a headline." + end + rescue LockedByAnotherUser + flash[:locked_by] = node.lock_owner&.login + flash[:locked_node_path] = node_path(node) + end end -- cgit v1.3