mirror of
https://github.com/philomena-dev/philomena.git
synced 2025-01-20 06:37:59 +01:00
commission section on profile page
This commit is contained in:
parent
19174a31ba
commit
463d86af5c
4 changed files with 51 additions and 1 deletions
|
@ -12,7 +12,9 @@ defmodule PhilomenaWeb.ProfileController do
|
||||||
alias Philomena.Repo
|
alias Philomena.Repo
|
||||||
import Ecto.Query
|
import Ecto.Query
|
||||||
|
|
||||||
plug :load_and_authorize_resource, model: User, only: :show, id_field: "slug", preload: [awards: :badge, public_links: :tag]
|
plug :load_and_authorize_resource, model: User, only: :show, id_field: "slug", preload: [
|
||||||
|
awards: :badge, public_links: :tag, commission: [sheet_image: :tags, items: [example_image: :tags]]
|
||||||
|
]
|
||||||
|
|
||||||
def show(conn, _params) do
|
def show(conn, _params) do
|
||||||
current_user = conn.assigns.current_user
|
current_user = conn.assigns.current_user
|
||||||
|
@ -79,6 +81,9 @@ defmodule PhilomenaWeb.ProfileController do
|
||||||
about_me =
|
about_me =
|
||||||
Renderer.render_one(%{body: user.description || ""}, conn)
|
Renderer.render_one(%{body: user.description || ""}, conn)
|
||||||
|
|
||||||
|
commission_information =
|
||||||
|
commission_info(user.commission, conn)
|
||||||
|
|
||||||
recent_galleries =
|
recent_galleries =
|
||||||
Gallery
|
Gallery
|
||||||
|> where(creator_id: ^user.id)
|
|> where(creator_id: ^user.id)
|
||||||
|
@ -96,6 +101,7 @@ defmodule PhilomenaWeb.ProfileController do
|
||||||
"show.html",
|
"show.html",
|
||||||
user: user,
|
user: user,
|
||||||
interactions: interactions,
|
interactions: interactions,
|
||||||
|
commission_information: commission_information,
|
||||||
recent_uploads: recent_uploads,
|
recent_uploads: recent_uploads,
|
||||||
recent_faves: recent_faves,
|
recent_faves: recent_faves,
|
||||||
recent_comments: recent_comments,
|
recent_comments: recent_comments,
|
||||||
|
@ -136,4 +142,8 @@ defmodule PhilomenaWeb.ProfileController do
|
||||||
|
|
||||||
defp map_fetch(nil, _field_name), do: nil
|
defp map_fetch(nil, _field_name), do: nil
|
||||||
defp map_fetch(map, field_name), do: Map.get(map, field_name)
|
defp map_fetch(map, field_name), do: Map.get(map, field_name)
|
||||||
|
|
||||||
|
defp commission_info(%{information: info}, conn) when info not in [nil, ""],
|
||||||
|
do: Renderer.render_one(%{body: info}, conn)
|
||||||
|
defp commission_info(_commission, _conn), do: ""
|
||||||
end
|
end
|
||||||
|
|
32
lib/philomena_web/templates/profile/_commission.html.slime
Normal file
32
lib/philomena_web/templates/profile/_commission.html.slime
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
.block__content.profile
|
||||||
|
= cond do
|
||||||
|
- @user.commission ->
|
||||||
|
strong> Status:
|
||||||
|
= commission_status(@user.commission)
|
||||||
|
br
|
||||||
|
|
||||||
|
= if Enum.any?(@user.commission.items) do
|
||||||
|
strong> Price Range:
|
||||||
|
- {min, max} = Enum.min_max_by(@user.commission.items, & &1.base_price)
|
||||||
|
| $
|
||||||
|
=> Decimal.round(min.base_price, 2) |> Decimal.to_string()
|
||||||
|
| - $
|
||||||
|
=> Decimal.round(max.base_price, 2) |> Decimal.to_string()
|
||||||
|
' USD
|
||||||
|
br
|
||||||
|
|
||||||
|
/ Lotta space here
|
||||||
|
br
|
||||||
|
== @commission_information
|
||||||
|
br
|
||||||
|
br
|
||||||
|
|
||||||
|
= link "More information", to: Routes.profile_commission_path(@conn, :show, @user)
|
||||||
|
|
||||||
|
- current?(@user, @conn.assigns.current_user) ->
|
||||||
|
em
|
||||||
|
' You don't have any commission information listed yet.
|
||||||
|
=> link "Click here", to: Routes.profile_commission_path(@conn, :new, @user)
|
||||||
|
' to set it up.
|
||||||
|
|
||||||
|
- true ->
|
|
@ -31,6 +31,11 @@
|
||||||
|
|
||||||
.column-layout
|
.column-layout
|
||||||
.column-layout__left
|
.column-layout__left
|
||||||
|
.block
|
||||||
|
.block__header
|
||||||
|
span.block__header__title Commissions
|
||||||
|
= render PhilomenaWeb.ProfileView, "_commission.html", user: @user, commission_information: @commission_information, conn: @conn
|
||||||
|
|
||||||
.block
|
.block
|
||||||
.block__header
|
.block__header
|
||||||
span.block__header__title User Links
|
span.block__header__title User Links
|
||||||
|
|
|
@ -20,6 +20,9 @@ defmodule PhilomenaWeb.ProfileView do
|
||||||
def award_title(award),
|
def award_title(award),
|
||||||
do: award.badge_name
|
do: award.badge_name
|
||||||
|
|
||||||
|
def commission_status(%{open: true}), do: "Open"
|
||||||
|
def commission_status(_commission), do: "Closed"
|
||||||
|
|
||||||
def sparkline_data(data) do
|
def sparkline_data(data) do
|
||||||
# Normalize range
|
# Normalize range
|
||||||
{min, max} = Enum.min_max(data)
|
{min, max} = Enum.min_max(data)
|
||||||
|
|
Loading…
Reference in a new issue