You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

82 lines
1.7 KiB

class Admin::AssetsController < Admin::AdminController
before_action :set_asset, only: %i[ edit update destroy ]
helper_method :sorting_technique
# GET /assets
def index
@assets = Asset.public_send(sorting_technique, params[:reverse].present?)
.simple_search(params[:q])
.page(params[:page] || 1)
render (params[:node_id] || params[:newsletter_id]) ? 'explore' : 'index'
end
# GET /assets/1/edit
def edit
end
# PATCH/PUT /assets/1 or /assets/1.json
def update
respond_to do |format|
if @asset.update(asset_params)
format.html { redirect_to edit_admin_asset_url(@asset), notice: t(:'assets.updated') }
else
format.html { render :edit, status: :unprocessable_entity }
end
end
end
def upload
blob = ActiveStorage::Blob.find_signed(params[:signed_id])
@asset = Asset.create(file: blob, title: blob.filename.base.gsub("_", " "))
respond_to do |format|
format.turbo_stream
end
end
# DELETE /assets/1 or /assets/1.json
def destroy
@asset.destroy!
respond_to do |format|
format.html { redirect_to url_for(action: :index, format: :html), notice: t('assets.destroyed') }
unless params[:redirect_to]
format.turbo_stream { flash.now[:notice] = t('assets.destroyed') }
end
end
end
private
def sorting_technique
params[:sort].presence_in(%w(by_filename by_last_modified)) || :by_filename
end
# Use callbacks to share common setup or constraints between actions.
def set_asset
@asset = Asset.find(params[:id])
end
# Only allow a list of trusted parameters through.
def asset_params
params.require(:asset).permit(
:title
)
end
end