Class: RivetCms::MediaAssetsController
- Inherits:
-
ApplicationController
- Object
- ApplicationController
- RivetCms::MediaAssetsController
- Includes:
- InertiaProps
- Defined in:
- app/controllers/rivet_cms/media_assets_controller.rb
Instance Method Summary collapse
Instance Method Details
#create ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'app/controllers/rivet_cms/media_assets_controller.rb', line 30 def create unless params[:file].respond_to?(:tempfile) return render json: { errors: [ "file is required" ] }, status: :unprocessable_entity end asset = MediaAsset.new(file: params[:file]) if asset.save audit "media.uploaded", asset render json: media_asset_json(asset), status: :created else render json: { errors: asset.errors. }, status: :unprocessable_entity end end |
#destroy ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'app/controllers/rivet_cms/media_assets_controller.rb', line 56 def destroy asset = media_assets.find(params[:id]) :delete, :media, record: asset if asset. return redirect_to media_assets_path, alert: "Media is embedded in content and cannot be deleted" end asset.destroy audit "media.deleted", asset redirect_to media_assets_path, notice: "Media deleted" rescue ActiveRecord::InvalidForeignKey redirect_to media_assets_path, alert: "Media is in use by content and cannot be deleted" end |
#index ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'app/controllers/rivet_cms/media_assets_controller.rb', line 9 def index scope = media_assets.recent scope = scope.search(params[:q]) if params[:q].present? scope = scope.where(kind: params[:kind]) if MediaAsset.kinds.key?(params[:kind]) page = scope.page(params[:page]).per(48) assets = permitted(page, :read, :media).map { |asset| media_asset_json(asset) } respond_to do |format| format.json { render json: assets } format.html do render inertia: "Media/Index", props: { assets: assets, q: params[:q].presence, kind: params[:kind].presence, kinds: media_assets.distinct.order(:kind).pluck(:kind), pagination: { page: page.current_page, total_pages: page.total_pages } } end end end |
#update ⇒ Object
45 46 47 48 49 50 51 52 53 54 |
# File 'app/controllers/rivet_cms/media_assets_controller.rb', line 45 def update asset = media_assets.find(params[:id]) :write, :media, record: asset if asset.update(params.permit(:title, :alt, :description)) audit "media.updated", asset render json: media_asset_json(asset) else render json: { errors: asset.errors. }, status: :unprocessable_entity end end |