mirror of
https://github.com/philomena-dev/philomena.git
synced 2024-11-23 20:18:00 +01:00
mod faves page
This commit is contained in:
parent
09d079e5f7
commit
a7d9386af8
8 changed files with 56 additions and 23 deletions
27
lib/philomena_web/controllers/image/favorite_controller.ex
Normal file
27
lib/philomena_web/controllers/image/favorite_controller.ex
Normal file
|
@ -0,0 +1,27 @@
|
|||
defmodule PhilomenaWeb.Image.FavoriteController do
|
||||
use PhilomenaWeb, :controller
|
||||
|
||||
alias Philomena.Images.Image
|
||||
alias Philomena.Repo
|
||||
|
||||
plug :load_and_authorize_resource, model: Image, id_name: "image_id", persisted: true, preload: [faves: :user]
|
||||
plug :load_votes_if_authorized
|
||||
|
||||
def index(conn, _params) do
|
||||
render(conn, "index.html", layout: false)
|
||||
end
|
||||
|
||||
defp load_votes_if_authorized(conn, _opts) do
|
||||
case Canada.Can.can?(conn.assigns.current_user, :hide, conn.assigns.image) do
|
||||
true ->
|
||||
image = Repo.preload(conn.assigns.image, upvotes: :user, downvotes: :user)
|
||||
|
||||
conn
|
||||
|> assign(:image, image)
|
||||
|> assign(:has_votes, true)
|
||||
|
||||
false ->
|
||||
assign(conn, :has_votes, false)
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,11 +0,0 @@
|
|||
defmodule PhilomenaWeb.Image.FavoritesController do
|
||||
use PhilomenaWeb, :controller
|
||||
|
||||
alias Philomena.Images.Image
|
||||
|
||||
plug :load_and_authorize_resource, model: Image, id_name: "image_id", persisted: true, preload: [faves: :user]
|
||||
|
||||
def index(conn, _params) do
|
||||
render(conn, "index.html", layout: false, image: conn.assigns.image)
|
||||
end
|
||||
end
|
|
@ -287,7 +287,7 @@ defmodule PhilomenaWeb.Router do
|
|||
resources "/navigate", Image.NavigateController, only: [:index]
|
||||
resources "/reports", Image.ReportController, only: [:new, :create]
|
||||
resources "/reporting", Image.ReportingController, only: [:show], singleton: true
|
||||
resources "/favorites", Image.FavoritesController, only: [:index]
|
||||
resources "/favorites", Image.FavoriteController, only: [:index]
|
||||
end
|
||||
scope "/tags", Tag, as: :tag do
|
||||
resources "/autocomplete", AutocompleteController, only: [:show], singleton: true
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
a href="#" data-click-tab="sharing"
|
||||
i.fa.fa-share>
|
||||
| Share
|
||||
a href="#" data-click-tab="favoriters" data-load-tab=Routes.image_favorites_path(@conn, :index, @image)
|
||||
a href="#" data-click-tab="favoriters" data-load-tab=Routes.image_favorite_path(@conn, :index, @image)
|
||||
i.fa.fa-star>
|
||||
| List favoriters
|
||||
= if display_mod_tools? do
|
||||
|
|
24
lib/philomena_web/templates/image/favorite/index.html.slime
Normal file
24
lib/philomena_web/templates/image/favorite/index.html.slime
Normal file
|
@ -0,0 +1,24 @@
|
|||
h5
|
||||
' Faved by
|
||||
=> @image.faves_count
|
||||
= pluralize("user", "users", @image.faves_count)
|
||||
|
||||
= for fave <- Enum.sort_by(@image.faves, & &1.user.name) do
|
||||
=> link fave.user.name, to: Routes.profile_path(@conn, :show, fave.user), class: "interaction-user-list-item"
|
||||
|
||||
= if @has_votes do
|
||||
h5
|
||||
' Upvoted by
|
||||
=> @image.upvotes_count
|
||||
= pluralize("user", "users", @image.faves_count)
|
||||
|
||||
= for upvote <- Enum.sort_by(@image.upvotes, & &1.user.name) do
|
||||
=> link upvote.user.name, to: Routes.profile_path(@conn, :show, upvote.user), class: "interaction-user-list-item"
|
||||
|
||||
h5
|
||||
' Downvoted by
|
||||
=> @image.downvotes_count
|
||||
= pluralize("user", "users", @image.downvotes_count)
|
||||
|
||||
= for downvote <- Enum.sort_by(@image.downvotes, & &1.user.name) do
|
||||
=> link downvote.user.name, to: Routes.profile_path(@conn, :show, downvote.user), class: "interaction-user-list-item"
|
|
@ -1,7 +0,0 @@
|
|||
h5
|
||||
' Faved by
|
||||
=> @image.faves_count
|
||||
= pluralize("user", "users", @image.faves_count)
|
||||
|
||||
= for fave <- Enum.sort_by(@image.faves, & &1.user.name) do
|
||||
=> link fave.user.name, to: Routes.profile_path(@conn, :show, fave.user), class: "interaction-user-list-item"
|
3
lib/philomena_web/views/image/favorite_view.ex
Normal file
3
lib/philomena_web/views/image/favorite_view.ex
Normal file
|
@ -0,0 +1,3 @@
|
|||
defmodule PhilomenaWeb.Image.FavoriteView do
|
||||
use PhilomenaWeb, :view
|
||||
end
|
|
@ -1,3 +0,0 @@
|
|||
defmodule PhilomenaWeb.Image.FavoritesView do
|
||||
use PhilomenaWeb, :view
|
||||
end
|
Loading…
Reference in a new issue