diff options
Diffstat (limited to 'app/controllers/related_assets_controller.rb')
| -rw-r--r-- | app/controllers/related_assets_controller.rb | 18 |
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 | ||
