mirror of
https://github.com/philomena-dev/philomena.git
synced 2024-11-30 14:57:59 +01:00
display tag/source change counters on image pages
This commit is contained in:
parent
306c954546
commit
c3f745ddee
6 changed files with 41 additions and 14 deletions
|
@ -1,9 +1,12 @@
|
||||||
defmodule PhilomenaWeb.Image.SourceController do
|
defmodule PhilomenaWeb.Image.SourceController do
|
||||||
use PhilomenaWeb, :controller
|
use PhilomenaWeb, :controller
|
||||||
|
|
||||||
|
alias Philomena.SourceChanges.SourceChange
|
||||||
alias Philomena.UserStatistics
|
alias Philomena.UserStatistics
|
||||||
alias Philomena.Images.Image
|
alias Philomena.Images.Image
|
||||||
alias Philomena.Images
|
alias Philomena.Images
|
||||||
|
alias Philomena.Repo
|
||||||
|
import Ecto.Query
|
||||||
|
|
||||||
plug PhilomenaWeb.FilterBannedUsersPlug
|
plug PhilomenaWeb.FilterBannedUsersPlug
|
||||||
plug PhilomenaWeb.CaptchaPlug
|
plug PhilomenaWeb.CaptchaPlug
|
||||||
|
@ -20,16 +23,21 @@ defmodule PhilomenaWeb.Image.SourceController do
|
||||||
changeset =
|
changeset =
|
||||||
Images.change_image(image)
|
Images.change_image(image)
|
||||||
|
|
||||||
|
source_change_count =
|
||||||
|
SourceChange
|
||||||
|
|> where(image_id: ^image.id)
|
||||||
|
|> Repo.aggregate(:count, :id)
|
||||||
|
|
||||||
UserStatistics.inc_stat(conn.assigns.current_user, :metadata_updates)
|
UserStatistics.inc_stat(conn.assigns.current_user, :metadata_updates)
|
||||||
|
|
||||||
conn
|
conn
|
||||||
|> put_view(PhilomenaWeb.ImageView)
|
|> put_view(PhilomenaWeb.ImageView)
|
||||||
|> render("_source.html", layout: false, image: image, changeset: changeset)
|
|> render("_source.html", layout: false, source_change_count: source_change_count, image: image, changeset: changeset)
|
||||||
|
|
||||||
{:error, :image, changeset, _} ->
|
{:error, :image, changeset, _} ->
|
||||||
conn
|
conn
|
||||||
|> put_view(PhilomenaWeb.ImageView)
|
|> put_view(PhilomenaWeb.ImageView)
|
||||||
|> render("_source.html", layout: false, image: image, changeset: changeset)
|
|> render("_source.html", layout: false, source_change_count: 0, image: image, changeset: changeset)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
|
@ -1,11 +1,13 @@
|
||||||
defmodule PhilomenaWeb.Image.TagController do
|
defmodule PhilomenaWeb.Image.TagController do
|
||||||
use PhilomenaWeb, :controller
|
use PhilomenaWeb, :controller
|
||||||
|
|
||||||
|
alias Philomena.TagChanges.TagChange
|
||||||
alias Philomena.UserStatistics
|
alias Philomena.UserStatistics
|
||||||
alias Philomena.Images.Image
|
alias Philomena.Images.Image
|
||||||
alias Philomena.Images
|
alias Philomena.Images
|
||||||
alias Philomena.Tags
|
alias Philomena.Tags
|
||||||
alias Philomena.Repo
|
alias Philomena.Repo
|
||||||
|
import Ecto.Query
|
||||||
|
|
||||||
plug PhilomenaWeb.FilterBannedUsersPlug
|
plug PhilomenaWeb.FilterBannedUsersPlug
|
||||||
plug PhilomenaWeb.CaptchaPlug
|
plug PhilomenaWeb.CaptchaPlug
|
||||||
|
@ -23,6 +25,11 @@ defmodule PhilomenaWeb.Image.TagController do
|
||||||
Tags.reindex_tags(added_tags ++ removed_tags)
|
Tags.reindex_tags(added_tags ++ removed_tags)
|
||||||
UserStatistics.inc_stat(conn.assigns.current_user, :metadata_updates)
|
UserStatistics.inc_stat(conn.assigns.current_user, :metadata_updates)
|
||||||
|
|
||||||
|
tag_change_count =
|
||||||
|
TagChange
|
||||||
|
|> where(image_id: ^image.id)
|
||||||
|
|> Repo.aggregate(:count, :id)
|
||||||
|
|
||||||
image =
|
image =
|
||||||
image
|
image
|
||||||
|> Repo.preload(:tags, force: true)
|
|> Repo.preload(:tags, force: true)
|
||||||
|
@ -32,12 +39,12 @@ defmodule PhilomenaWeb.Image.TagController do
|
||||||
|
|
||||||
conn
|
conn
|
||||||
|> put_view(PhilomenaWeb.ImageView)
|
|> put_view(PhilomenaWeb.ImageView)
|
||||||
|> render("_tags.html", layout: false, image: image, changeset: changeset)
|
|> render("_tags.html", layout: false, tag_change_count: tag_change_count, image: image, changeset: changeset)
|
||||||
|
|
||||||
{:error, :image, changeset, _} ->
|
{:error, :image, changeset, _} ->
|
||||||
conn
|
conn
|
||||||
|> put_view(PhilomenaWeb.ImageView)
|
|> put_view(PhilomenaWeb.ImageView)
|
||||||
|> render("_tags.html", layout: false, image: image, changeset: changeset)
|
|> render("_tags.html", layout: false, tag_change_count: 0, image: image, changeset: changeset)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
|
@ -139,10 +139,13 @@ defmodule PhilomenaWeb.ImageController do
|
||||||
defp load_image(conn, _opts) do
|
defp load_image(conn, _opts) do
|
||||||
id = conn.params["id"]
|
id = conn.params["id"]
|
||||||
|
|
||||||
image =
|
{image, tag_changes, source_changes} =
|
||||||
Image
|
Image
|
||||||
|> where(id: ^id)
|
|> where(id: ^id)
|
||||||
|
|> join(:inner_lateral, [i], _ in fragment("SELECT COUNT(*) FROM tag_changes t WHERE t.image_id = ?", i.id))
|
||||||
|
|> join(:inner_lateral, [i, _], _ in fragment("SELECT COUNT(*) FROM source_changes s WHERE s.image_id = ?", i.id))
|
||||||
|> preload([:tags, :deleter, user: [awards: :badge]])
|
|> preload([:tags, :deleter, user: [awards: :badge]])
|
||||||
|
|> select([i, t, s], {i, t.count, s.count})
|
||||||
|> Repo.one()
|
|> Repo.one()
|
||||||
|
|
||||||
cond do
|
cond do
|
||||||
|
@ -158,7 +161,10 @@ defmodule PhilomenaWeb.ImageController do
|
||||||
render(conn, "deleted.html", image: image)
|
render(conn, "deleted.html", image: image)
|
||||||
|
|
||||||
true ->
|
true ->
|
||||||
assign(conn, :image, image)
|
conn
|
||||||
|
|> assign(:image, image)
|
||||||
|
|> assign(:tag_change_count, tag_changes)
|
||||||
|
|> assign(:source_change_count, source_changes)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -35,6 +35,9 @@
|
||||||
- else
|
- else
|
||||||
em> not provided yet
|
em> not provided yet
|
||||||
|
|
||||||
|
= if @source_change_count > 0 do
|
||||||
a.button.button--link.button--separate-left href=Routes.image_source_change_path(@conn, :index, @image) title="Source history"
|
a.button.button--link.button--separate-left href=Routes.image_source_change_path(@conn, :index, @image) title="Source history"
|
||||||
i.fa.fa-history>
|
i.fa.fa-history>
|
||||||
' History
|
| History (
|
||||||
|
= @source_change_count
|
||||||
|
| )
|
||||||
|
|
|
@ -55,8 +55,11 @@
|
||||||
i.fas.fa-edit>
|
i.fas.fa-edit>
|
||||||
' Tags:
|
' Tags:
|
||||||
|
|
||||||
|
= if @tag_change_count > 0 do
|
||||||
a.button.button--link.button--separate-left href=Routes.image_tag_change_path(@conn, :index, @image) title="Tag history"
|
a.button.button--link.button--separate-left href=Routes.image_tag_change_path(@conn, :index, @image) title="Tag history"
|
||||||
i.fa.fa-history>
|
i.fa.fa-history>
|
||||||
' History
|
| History (
|
||||||
|
= @tag_change_count
|
||||||
|
| )
|
||||||
|
|
||||||
= render PhilomenaWeb.TagView, "_tag_list.html", tags: display_order(@image.tags), conn: @conn
|
= render PhilomenaWeb.TagView, "_tag_list.html", tags: display_order(@image.tags), conn: @conn
|
||||||
|
|
|
@ -9,8 +9,8 @@
|
||||||
= render PhilomenaWeb.ImageView, "_description.html", image: @image, body: @description, conn: @conn
|
= render PhilomenaWeb.ImageView, "_description.html", image: @image, body: @description, conn: @conn
|
||||||
= render PhilomenaWeb.Image.DescriptionView, "_form.html", image: @image, changeset: @image_changeset, conn: @conn
|
= render PhilomenaWeb.Image.DescriptionView, "_form.html", image: @image, changeset: @image_changeset, conn: @conn
|
||||||
|
|
||||||
= render PhilomenaWeb.ImageView, "_tags.html", image: @image, changeset: @image_changeset, conn: @conn
|
= render PhilomenaWeb.ImageView, "_tags.html", image: @image, tag_change_count: @tag_change_count, changeset: @image_changeset, conn: @conn
|
||||||
= render PhilomenaWeb.ImageView, "_source.html", image: @image, changeset: @image_changeset, conn: @conn
|
= render PhilomenaWeb.ImageView, "_source.html", image: @image, source_change_count: @source_change_count, changeset: @image_changeset, conn: @conn
|
||||||
= render PhilomenaWeb.ImageView, "_options.html", image: @image, conn: @conn
|
= render PhilomenaWeb.ImageView, "_options.html", image: @image, conn: @conn
|
||||||
|
|
||||||
h4 Comments
|
h4 Comments
|
||||||
|
|
Loading…
Reference in a new issue