summaryrefslogtreecommitdiff
path: root/app/controllers/related_assets_controller.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/related_assets_controller.rb')
-rw-r--r--app/controllers/related_assets_controller.rb18
1 files changed, 13 insertions, 5 deletions
diff --git a/app/controllers/related_assets_controller.rb b/app/controllers/related_assets_controller.rb
index ca894f2f..3aa6d3db 100644
--- a/app/controllers/related_assets_controller.rb
+++ b/app/controllers/related_assets_controller.rb
@@ -2,6 +2,10 @@ class RelatedAssetsController < ApplicationController
2 before_action :login_required 2 before_action :login_required
3 before_action :find_node 3 before_action :find_node
4 4
5 rescue_from LockedByAnotherUser do
6 head :locked
7 end
8
5 def search 9 def search
6 term = params[:search_term].to_s.strip 10 term = params[:search_term].to_s.strip
7 attached_ids = @node.editable_page.related_assets.pluck(:asset_id) 11 attached_ids = @node.editable_page.related_assets.pluck(:asset_id)
@@ -19,8 +23,9 @@ class RelatedAssetsController < ApplicationController
19 end 23 end
20 24
21 def create 25 def create
26 page = @node.ensure_autosave!(current_user)
22 asset = Asset.find(params[:asset_id]) 27 asset = Asset.find(params[:asset_id])
23 related = @node.editable_page.related_assets.find_or_create_by!(asset: asset) 28 related = page.related_assets.find_or_create_by!(asset: asset)
24 29
25 render json: { 30 render json: {
26 id: related.id, 31 id: related.id,
@@ -35,22 +40,25 @@ class RelatedAssetsController < ApplicationController
35 end 40 end
36 41
37 def destroy 42 def destroy
38 @node.editable_page.related_assets.find(params[:id]).destroy 43 page = @node.ensure_autosave!(current_user)
44 source = RelatedAsset.find(params[:id])
45 page.related_assets.find_by!(:asset_id => source.asset_id).destroy
39 head :ok 46 head :ok
40 end 47 end
41 48
42 def update 49 def update
43 related = @node.editable_page.related_assets.find(params[:id]) 50 page = @node.ensure_autosave!(current_user)
51 source = RelatedAsset.find(params[:id])
52 related = page.related_assets.find_by!(:asset_id => source.asset_id)
44 53
45 if params.key?(:headline) 54 if params.key?(:headline)
46 RelatedAsset.transaction do 55 RelatedAsset.transaction do
47 @node.editable_page.related_assets.update_all(headline: false) 56 page.related_assets.update_all(headline: false)
48 related.update!(headline: true) if params[:headline] == "true" 57 related.update!(headline: true) if params[:headline] == "true"
49 end 58 end
50 else 59 else
51 related.insert_at(params[:position].to_i) 60 related.insert_at(params[:position].to_i)
52 end 61 end
53
54 head :ok 62 head :ok
55 end 63 end
56 64