diff --git a/app/controllers/uploads_controller.rb b/app/controllers/uploads_controller.rb index 6c70e247b..dac508746 100644 --- a/app/controllers/uploads_controller.rb +++ b/app/controllers/uploads_controller.rb @@ -29,10 +29,19 @@ class UploadsController < ApplicationController end def index - @uploads = authorize Upload.visible(CurrentUser.user).paginated_search(params, count_pages: true) - @uploads = @uploads.includes(:uploader, :media_assets) if request.format.html? + @mode = params.fetch(:mode, "table") - respond_with(@uploads) + case @mode + when "table" + @uploads = authorize Upload.visible(CurrentUser.user).paginated_search(params, count_pages: true) + @uploads = @uploads.includes(:uploader, media_assets: [:post]) if request.format.html? + respond_with(@uploads) + when "gallery" + @media_assets = authorize MediaAsset.distinct.visible(CurrentUser.user).joins(:uploads).where(uploads: { uploader: CurrentUser.user }).paginated_search(params, count_pages: true) + respond_with(@media_assets) + else + raise "Invalid mode '#{mode}'" + end end def show diff --git a/app/views/uploads/_gallery.html.erb b/app/views/uploads/_gallery.html.erb new file mode 100644 index 000000000..afdc86c04 --- /dev/null +++ b/app/views/uploads/_gallery.html.erb @@ -0,0 +1,33 @@ +