Adds a very basic listing and show page for media
This commit is contained in:
parent
1a868f8c93
commit
659d153777
6 changed files with 66 additions and 3 deletions
11
lib/pinchflat_web/controllers/media/media_item_controller.ex
Normal file
11
lib/pinchflat_web/controllers/media/media_item_controller.ex
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
defmodule PinchflatWeb.Media.MediaItemController do
|
||||
use PinchflatWeb, :controller
|
||||
|
||||
alias Pinchflat.Media
|
||||
|
||||
def show(conn, %{"id" => id}) do
|
||||
media_item = Media.get_media_item!(id)
|
||||
|
||||
render(conn, :show, media_item: media_item)
|
||||
end
|
||||
end
|
||||
5
lib/pinchflat_web/controllers/media/media_item_html.ex
Normal file
5
lib/pinchflat_web/controllers/media/media_item_html.ex
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
defmodule PinchflatWeb.Media.MediaItemHTML do
|
||||
use PinchflatWeb, :html
|
||||
|
||||
embed_templates "media_item_html/*"
|
||||
end
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
<div class="mb-6 flex gap-3 flex-row items-center justify-between">
|
||||
<div class="flex gap-3 items-center">
|
||||
<.link :if={@conn.params["source_id"]} navigate={~p"/sources/#{@media_item.source_id}"}>
|
||||
<.icon name="hero-arrow-left" class="w-10 h-10 hover:dark:text-white" />
|
||||
</.link>
|
||||
<h2 class="text-title-md2 font-bold text-black dark:text-white ml-4">
|
||||
Media Item #<%= @media_item.id %>
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="rounded-sm border border-stroke bg-white px-5 pb-2.5 pt-6 shadow-default dark:border-strokedark dark:bg-boxdark sm:px-7.5 xl:pb-1">
|
||||
<div class="max-w-full overflow-x-auto">
|
||||
<div class="flex flex-col gap-10 dark:text-white">
|
||||
<h3 class="font-bold text-xl">Attributes</h3>
|
||||
<.list_items_from_map map={Map.from_struct(@media_item)} />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -41,7 +41,10 @@
|
|||
<%= String.slice(media_item.title, 0..50) %>...
|
||||
</:col>
|
||||
<:col :let={media_item} label="" class="flex place-content-evenly">
|
||||
<.link navigate={~p"/media/#{media_item.id}"} class="hover:text-secondary duration-200 ease-in-out mx-0.5">
|
||||
<.link
|
||||
navigate={~p"/sources/#{@source.id}/media/#{media_item.id}"}
|
||||
class="hover:text-secondary duration-200 ease-in-out mx-0.5"
|
||||
>
|
||||
<.icon name="hero-eye" />
|
||||
</.link>
|
||||
</:col>
|
||||
|
|
@ -57,7 +60,10 @@
|
|||
<%= String.slice(media_item.title, 0..50) %>...
|
||||
</:col>
|
||||
<:col :let={media_item} label="" class="flex place-content-evenly">
|
||||
<.link navigate={~p"/media/#{media_item.id}"} class="hover:text-secondary duration-200 ease-in-out mx-0.5">
|
||||
<.link
|
||||
navigate={~p"/sources/#{@source.id}/media/#{media_item.id}"}
|
||||
class="hover:text-secondary duration-200 ease-in-out mx-0.5"
|
||||
>
|
||||
<.icon name="hero-eye" />
|
||||
</.link>
|
||||
</:col>
|
||||
|
|
|
|||
|
|
@ -20,7 +20,11 @@ defmodule PinchflatWeb.Router do
|
|||
get "/", PageController, :home
|
||||
|
||||
resources "/media_profiles", MediaProfiles.MediaProfileController
|
||||
resources "/sources", MediaSources.SourceController
|
||||
resources "/media", Media.MediaItemController, only: [:show]
|
||||
|
||||
resources "/sources", MediaSources.SourceController do
|
||||
resources "/media", Media.MediaItemController, only: [:show]
|
||||
end
|
||||
end
|
||||
|
||||
# Other scopes may use custom stacks.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,19 @@
|
|||
defmodule PinchflatWeb.MediaItemControllerTest do
|
||||
use PinchflatWeb.ConnCase
|
||||
|
||||
import Pinchflat.MediaFixtures
|
||||
|
||||
describe "show media" do
|
||||
setup [:create_media_item]
|
||||
|
||||
test "renders the page", %{conn: conn, media_item: media_item} do
|
||||
conn = get(conn, ~p"/media/#{media_item}")
|
||||
assert html_response(conn, 200) =~ "Media Item ##{media_item.id}"
|
||||
end
|
||||
end
|
||||
|
||||
defp create_media_item(_) do
|
||||
media_item = media_item_fixture()
|
||||
%{media_item: media_item}
|
||||
end
|
||||
end
|
||||
Loading…
Reference in a new issue