add duplicate and deleted handling

This commit is contained in:
byte[] 2019-12-07 11:48:39 -05:00
parent 5cdc647208
commit 13ad9e964d
3 changed files with 53 additions and 1 deletions

View file

@ -12,7 +12,7 @@ defmodule PhilomenaWeb.ImageController do
alias Philomena.Repo
import Ecto.Query
plug :load_and_authorize_resource, model: Image, only: :show, preload: [:tags, user: [awards: :badge]]
plug :load_image
plug PhilomenaWeb.FilterBannedUsersPlug when action in [:new, :create]
plug PhilomenaWeb.UserAttributionPlug when action in [:create]
@ -135,4 +135,30 @@ defmodule PhilomenaWeb.ImageController do
{user_galleries, image_galleries}
end
defp load_image(conn, _opts) do
id = conn.params["id"]
image =
Image
|> where(id: ^id)
|> preload([:tags, :deleter, user: [awards: :badge]])
|> Repo.one()
cond do
is_nil(image) ->
PhilomenaWeb.NotFoundPlug.call(conn)
not is_nil(image.duplicate_id) and not Canada.Can.can?(conn, :show, image) ->
conn
|> put_flash(:info, "The image you were looking for has been marked a duplicate of the image below")
|> redirect(to: Routes.image_path(conn, :show, image.duplicate_id))
image.hidden_from_users ->
render(conn, "deleted.html", image: image)
true ->
assign(conn, :image, image)
end
end
end

View file

@ -0,0 +1,23 @@
.walloftext
.block.block--fixed.block--warning
h1 This image has been deleted
p
' Reason:
strong
= @image.deletion_reason || "Unknown (likely deleted in error). Please contact a moderator."
= if can?(@conn, :undelete, @image) do
p
strong> Spoilers!
' Done by:
strong = deleter(@image)
p
' If you originally uploaded the file previously located here, please don't re-upload it -
=> link "contact us", to: "/pages/contact"
' if you feel this was in error and we'll talk! We're only human, and mistakes happen.
p
' Here's the
=> link "tagging guidelines", to: "/pages/tags"
' and
= link "rules of the site", to: "/pages/rules"
' . Other useful links can be found at the bottom of the page.

View file

@ -144,6 +144,9 @@ defmodule PhilomenaWeb.ImageView do
render PhilomenaWeb.TagView, "_tags_row.html", conn: conn, tags: tags
end
def deleter(%{deleter: %{name: name}}), do: name
def deleter(_image), do: "System"
defp thumb_format("svg", _name), do: "png"
defp thumb_format(_, :rendered), do: "png"
defp thumb_format(format, _name), do: format