uploads: add /upload_media_assets index page.
This page shows each individual file you've uploaded. This is different from the regular uploads page because files in multi-file uploads are not grouped together.
This commit is contained in:
22
app/controllers/upload_media_assets_controller.rb
Normal file
22
app/controllers/upload_media_assets_controller.rb
Normal file
@@ -0,0 +1,22 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class UploadMediaAssetsController < ApplicationController
|
||||
respond_to :html, :xml, :json, :js
|
||||
|
||||
def index
|
||||
@upload_media_assets = authorize UploadMediaAsset.visible(CurrentUser.user).includes(media_asset: :post, upload: :uploader).where(upload: { uploader: CurrentUser.user }).paginated_search(params, count_pages: true)
|
||||
respond_with(@upload_media_assets)
|
||||
end
|
||||
|
||||
def show
|
||||
@upload_media_asset = authorize UploadMediaAsset.find(params[:id])
|
||||
@media_asset = @upload_media_asset.media_asset
|
||||
|
||||
if request.format.html? && @media_asset&.post&.present?
|
||||
flash[:notice] = "Duplicate of post ##{@media_asset.post.id}"
|
||||
redirect_to @media_asset.post
|
||||
else
|
||||
respond_with(@upload_media_asset)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -11,6 +11,14 @@ class UploadMediaAsset < ApplicationRecord
|
||||
failed: 300,
|
||||
}
|
||||
|
||||
def self.visible(user)
|
||||
if user.is_admin?
|
||||
all
|
||||
else
|
||||
where(upload: { uploader: user })
|
||||
end
|
||||
end
|
||||
|
||||
def self.search(params)
|
||||
q = search_attributes(params, :id, :created_at, :updated_at, :status, :source_url, :page_url, :error, :upload, :media_asset)
|
||||
q.apply_default_order(params)
|
||||
|
||||
7
app/policies/upload_media_asset_policy.rb
Normal file
7
app/policies/upload_media_asset_policy.rb
Normal file
@@ -0,0 +1,7 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class UploadMediaAssetPolicy < ApplicationPolicy
|
||||
def show?
|
||||
user.is_admin? || record.upload.uploader_id == user.id
|
||||
end
|
||||
end
|
||||
7
app/views/upload_media_assets/_gallery.html.erb
Normal file
7
app/views/upload_media_assets/_gallery.html.erb
Normal file
@@ -0,0 +1,7 @@
|
||||
<%= render(MediaAssetGalleryComponent.new) do |gallery| %>
|
||||
<% upload_media_assets.each do |upload_media_asset| %>
|
||||
<% gallery.media_asset do %>
|
||||
<%= render "upload_media_assets/preview", upload_media_asset: upload_media_asset, size: gallery.size %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
27
app/views/upload_media_assets/_preview.html.erb
Normal file
27
app/views/upload_media_assets/_preview.html.erb
Normal file
@@ -0,0 +1,27 @@
|
||||
<% media_asset = upload_media_asset.media_asset %>
|
||||
|
||||
<%= render MediaAssetPreviewComponent.new(media_asset: media_asset, size: size, link_target: [upload_media_asset.upload, upload_media_asset]) do |preview| %>
|
||||
<% preview.missing_image do %>
|
||||
<% if upload_media_asset.failed? %>
|
||||
Failed
|
||||
<% else %>
|
||||
Loading
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
||||
<% preview.footer do %>
|
||||
<div class="text-center text-muted text-xs h-12">
|
||||
<% if media_asset&.post.present? %>
|
||||
<div class="leading-none">
|
||||
<%= link_to "post ##{media_asset.post.id}", media_asset.post, class: "leading-none" %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<% if upload_media_asset.source_url.present? %>
|
||||
<%= external_link_to upload_media_asset.source_url, Addressable::URI.parse(upload_media_asset.source_url).domain %>
|
||||
<% else %>
|
||||
<em>No source</em>
|
||||
<% end %>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
16
app/views/upload_media_assets/index.html.erb
Normal file
16
app/views/upload_media_assets/index.html.erb
Normal file
@@ -0,0 +1,16 @@
|
||||
<div id="c-upload-media-assets">
|
||||
<div id="a-index">
|
||||
<div class="flex items-center mb-2">
|
||||
<h1 class="flex-1">My Uploads</h1>
|
||||
|
||||
<span>
|
||||
<strong>Gallery</strong> |
|
||||
<%= link_to "Table", uploads_path(mode: "table") %>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<%= render "upload_media_assets/gallery", upload_media_assets: @upload_media_assets %>
|
||||
|
||||
<%= numbered_paginator(@upload_media_assets) %>
|
||||
</div>
|
||||
</div>
|
||||
@@ -252,7 +252,9 @@ Rails.application.routes.draw do
|
||||
get :batch
|
||||
get :image_proxy
|
||||
end
|
||||
resources :upload_media_assets, only: [:show, :index], path: "assets"
|
||||
end
|
||||
resources :upload_media_assets, only: [:show, :index]
|
||||
resources :users do
|
||||
resources :favorites, only: [:index, :create, :destroy]
|
||||
resources :favorite_groups, controller: "favorite_groups", only: [:index], as: "favorite_groups"
|
||||
|
||||
Reference in New Issue
Block a user