diff --git a/lib/philomena/tags/tag.ex b/lib/philomena/tags/tag.ex index 6e764a56..90e40c67 100644 --- a/lib/philomena/tags/tag.ex +++ b/lib/philomena/tags/tag.ex @@ -35,4 +35,20 @@ defmodule Philomena.Tags.Tag do |> cast(attrs, []) |> validate_required([]) end + + def display_order do + Philomena.Tags.Tag + |> order_by( + [t], + asc: t.category == "spoiler", + asc: t.category == "content-official", + asc: t.category == "content-fanmade", + asc: t.category == "species", + asc: t.category == "oc", + asc: t.category == "character", + asc: t.category == "origin", + asc: t.category == "rating", + asc: t.name + ) + end end diff --git a/lib/philomena_web/controllers/image_controller.ex b/lib/philomena_web/controllers/image_controller.ex index 32e7feeb..02302363 100644 --- a/lib/philomena_web/controllers/image_controller.ex +++ b/lib/philomena_web/controllers/image_controller.ex @@ -1,11 +1,11 @@ defmodule PhilomenaWeb.ImageController do use PhilomenaWeb, :controller - alias Philomena.{Images.Image, Comments.Comment, Textile.Renderer} + alias Philomena.{Images.Image, Comments.Comment, Tags.Tag, Textile.Renderer} alias Philomena.Repo import Ecto.Query - plug :load_and_authorize_resource, model: Image, only: :show, preload: [:tags, :user] + plug :load_and_authorize_resource, model: Image, only: :show, preload: [:user, tags: Tag.display_order()] def index(conn, _params) do query = conn.assigns.compiled_filter