Fix #4986: Add ability to filter images in /media_assets and /uploads depending on if they have become posts

This commit is contained in:
evazion
2022-02-18 00:14:47 -06:00
parent f54fac74c8
commit 093a808a36
16 changed files with 121 additions and 72 deletions

View File

@@ -1,11 +1,8 @@
<div id="c-media-assets">
<div id="a-index">
<div class="flex mb-4">
<h1 class="flex-grow-1">All Uploads</h1>
<%= render PreviewSizeMenuComponent.new(current_size: @preview_size) %>
</div>
<h1 class="mb-2">All Uploads</h1>
<% if params[:search].present? %>
<% if search_params[:metadata].present? %>
<%= search_form_for(media_assets_path) do |f| %>
<%= f.simple_fields_for :metadata do |meta| %>
<% params.dig(:search, :metadata).to_h.each do |key, value| %>
@@ -17,6 +14,14 @@
<% end %>
<% end %>
<div class="border-b mb-4 flex flex-wrap gap-4">
<%= link_to "All", current_page_path(search: search_params.to_h.without("is_posted")), class: ["inline-block p-1 pb-2", (search_params[:is_posted].nil? ? "border-current border-b-2 -mb-px" : "inactive-link")] %>
<%= link_to "Posted", current_page_path(search: { is_posted: true }), class: ["inline-block p-1 pb-2", (search_params[:is_posted].to_s.truthy? ? "border-current border-b-2 -mb-px" : "inactive-link")] %>
<%= link_to "Unposted", current_page_path(search: { is_posted: false }), class: ["inline-block p-1 pb-2", (search_params[:is_posted].to_s.falsy? ? "border-current border-b-2 -mb-px" : "inactive-link")] %>
<span class="flex-grow-1"></span>
<%= render PreviewSizeMenuComponent.new(current_size: @preview_size) %>
</div>
<% if params[:mode] == "table" %>
<%= render "media_assets/table" %>
<% else %>

View File

@@ -1,4 +1,4 @@
<%= render(MediaAssetGalleryComponent.new(classes: ["upload-media-asset-gallery"])) do |gallery| %>
<%= render(MediaAssetGalleryComponent.new(classes: ["upload-media-asset-gallery"], size: size)) 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 %>

View File

@@ -10,18 +10,12 @@
<% end %>
<% preview.footer do %>
<div class="text-center text-muted text-xs h-12">
<% if media_asset&.post.present? %>
<div class="text-center text-xs h-8">
<% if upload_media_asset.post.present? %>
<div class="leading-none">
<%= link_to "post ##{media_asset.post.id}", media_asset.post, class: "leading-none" %>
<%= link_to "post ##{upload_media_asset.post.id}", upload_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 %>

View File

@@ -1,16 +1,23 @@
<div id="c-upload-media-assets">
<div id="a-index">
<div class="flex items-center mb-2">
<h1 class="flex-1">My Uploads</h1>
<h1>Upload</h1>
<span>
<strong>Gallery</strong> |
<%= link_to "Table", user_uploads_path(CurrentUser.user.id.to_i, mode: "table") %>
</span>
<% if policy(@upload).show? && @upload.source_strategy.present? %>
<%= render_source_data(@upload.source_strategy) %>
<% end %>
<div class="border-b mb-4 flex flex-wrap gap-4">
<%= link_to "All", current_page_path(search: search_params.to_h.without("is_posted")), class: ["inline-block p-1 pb-2", (search_params[:is_posted].nil? ? "border-current border-b-2 -mb-px" : "inactive-link")] %>
<%= link_to "Posted", current_page_path(search: { is_posted: true }), class: ["inline-block p-1 pb-2", (search_params[:is_posted].to_s.truthy? ? "border-current border-b-2 -mb-px" : "inactive-link")] %>
<%= link_to "Unposted", current_page_path(search: { is_posted: false }), class: ["inline-block p-1 pb-2", (search_params[:is_posted].to_s.falsy? ? "border-current border-b-2 -mb-px" : "inactive-link")] %>
<span class="flex-1"></span>
<%= render PreviewSizeMenuComponent.new(current_size: @preview_size) %>
</div>
<%= render "upload_media_assets/gallery", upload_media_assets: @upload_media_assets %>
<%= render "upload_media_assets/gallery", upload_media_assets: @upload_media_assets, size: @preview_size %>
<%= numbered_paginator(@upload_media_assets) %>
</div>
</div>
<%= render "uploads/secondary_links" %>

View File

@@ -1,7 +0,0 @@
<%= render(MediaAssetGalleryComponent.new(size: size, classes: ["upload-media-asset-gallery"])) do |gallery| %>
<% upload.upload_media_assets.order(id: :asc).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 %>

View File

@@ -1,7 +1,8 @@
<% upload_media_asset = upload.upload_media_assets.sort_by(&:id).first %>
<% media_asset = upload_media_asset&.media_asset %>
<% link_target = upload.media_asset_count > 1 ? [upload, UploadMediaAsset] : upload %>
<%= render(MediaAssetPreviewComponent.new(media_asset: media_asset, size: size, link_target: upload, save_data: CurrentUser.save_data)) do |preview| %>
<%= render(MediaAssetPreviewComponent.new(media_asset: media_asset, size: size, link_target: link_target, save_data: CurrentUser.save_data)) do |preview| %>
<% preview.missing_image do %>
<% if upload.is_errored? || upload_media_asset&.failed? %>
Upload failed
@@ -20,20 +21,14 @@
<% end %>
<% preview.footer do %>
<div class="text-center text-muted text-xs">
<div class="text-center text-muted text-xs h-4">
<div class="leading-none">
<% if upload.media_asset_count == 1 && media_asset&.post.present? %>
<%= link_to "post ##{media_asset.post.id}", media_asset.post, class: "leading-none" %>
<% else %>
<%= link_to "upload ##{upload.id}", upload, class: "leading-none" %>
<% if upload.media_asset_count == 1 && upload.posts.first&.present? %>
<%= link_to "post ##{upload.posts.first.id}", upload.posts.first, class: "leading-none" %>
<% elsif upload.media_asset_count > 1 && upload.posts.length > 0 %>
<%= link_to "#{upload.posts.length}/#{upload.media_asset_count} posted", posts_path(tags: "id:#{upload.posts.map(&:id).join(",")}"), class: "leading-none" %>
<% end %>
</div>
<% if upload.source.present? %>
<%= external_link_to upload.source, Addressable::URI.parse(upload.source).domain %>
<% else %>
<em>No source</em>
<% end %>
</div>
<% end %>
<% end %>

View File

@@ -1,17 +1,20 @@
<div id="c-uploads">
<div id="a-index">
<div class="flex items-center mb-4">
<h1 class="flex-1">My Uploads</h1>
<h1 class="mb-2">My Uploads</h1>
<span>
<%= render PreviewSizeMenuComponent.new(current_size: @preview_size) %>
<div class="border-b mb-4 flex flex-wrap gap-4">
<%= link_to "All", current_page_path(search: search_params.to_h.without("is_posted")), class: ["inline-block p-1 pb-2", (search_params[:is_posted].nil? ? "border-current border-b-2 -mb-px" : "inactive-link")] %>
<%= link_to "Posted", current_page_path(search: { is_posted: true }), class: ["inline-block p-1 pb-2", (search_params[:is_posted].to_s.truthy? ? "border-current border-b-2 -mb-px" : "inactive-link")] %>
<%= link_to "Unposted", current_page_path(search: { is_posted: false }), class: ["inline-block p-1 pb-2", (search_params[:is_posted].to_s.falsy? ? "border-current border-b-2 -mb-px" : "inactive-link")] %>
<% if @mode == "table" %>
<%= link_to grid_icon, current_page_path(mode: nil), title: "Gallery", class: "inactive-link" %>
<% else %>
<%= link_to list_icon, current_page_path(mode: "table"), title: "Table", class: "inactive-link" %>
<% end %>
</span>
<span class="flex-1"></span>
<%= render PreviewSizeMenuComponent.new(current_size: @preview_size) %>
<% if @mode == "table" %>
<%= link_to grid_icon, current_page_path(mode: nil), title: "Gallery", class: "inline-block p-1 pb-2 rounded inactive-link" %>
<% else %>
<%= link_to list_icon, current_page_path(mode: "table"), title: "Table", class: "inline-block p-1 pb-2 rounded inactive-link" %>
<% end %>
</div>
<% if @mode == "gallery" %>

View File

@@ -1,12 +1,6 @@
<div id="c-uploads">
<div id="a-show">
<div class="flex mb-4">
<h1 class="flex-grow-1">Upload</h1>
<% if @upload.media_asset_count > 1 %>
<%= render PreviewSizeMenuComponent.new(current_size: @preview_size) %>
<% end %>
</div>
<h1 class="mb-4">Upload</h1>
<% if @upload.is_errored? %>
<p>Error: <%= @upload.error %>.</p>
@@ -16,10 +10,6 @@
<% content_for(:html_header) do %>
<meta http-equiv="refresh" content="1">
<% end %>
<% elsif @upload.media_asset_count > 1 %>
<div id="p-multiple-asset-upload">
<%= render "multiple_asset_upload", upload: @upload, size: @preview_size %>
</div>
<% elsif @upload.media_asset_count == 1 %>
<div id="p-single-asset-upload">
<%= render "single_asset_upload", upload_media_asset: @upload.upload_media_assets.first %>