list and show comments in admin
This commit is contained in:
parent
13a6eddf1b
commit
18b8a49695
6 changed files with 73 additions and 2 deletions
|
@ -278,6 +278,17 @@ defmodule Chiya.Notes do
|
||||||
Repo.delete(note_tag)
|
Repo.delete(note_tag)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def list_note_comments() do
|
||||||
|
NoteComment
|
||||||
|
|> order_by(:inserted_at)
|
||||||
|
|> Repo.all()
|
||||||
|
|> Repo.preload(:note)
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_note_comment!(id) do
|
||||||
|
Repo.get!(NoteComment, id) |> Repo.preload(:note)
|
||||||
|
end
|
||||||
|
|
||||||
def create_note_comment(attrs \\ %{}) do
|
def create_note_comment(attrs \\ %{}) do
|
||||||
%NoteComment{}
|
%NoteComment{}
|
||||||
|> NoteComment.changeset(attrs)
|
|> NoteComment.changeset(attrs)
|
||||||
|
|
|
@ -1,6 +1,12 @@
|
||||||
<header class="px-4 sm:px-6 lg:px-8">
|
<header class="px-4 sm:px-6 lg:px-8">
|
||||||
<div class="flex items-center justify-end border-b border-gray-300 dark:border-gray-800 py-3">
|
<div class="flex items-center justify-end border-b border-gray-300 dark:border-gray-800 py-3">
|
||||||
<div class="flex items-center gap-4">
|
<div class="flex items-center gap-4">
|
||||||
|
<.link
|
||||||
|
href={~p"/admin/comments"}
|
||||||
|
class="text-xs font-semibold leading-6 text-gray-900 hover:text-gray-700 dark:text-gray-200"
|
||||||
|
>
|
||||||
|
<.icon name="hero-document-text" class="w-4 h-4" /> Comments
|
||||||
|
</.link>
|
||||||
<.link
|
<.link
|
||||||
href={~p"/admin/notes"}
|
href={~p"/admin/notes"}
|
||||||
class="text-xs font-semibold leading-6 text-gray-900 hover:text-gray-700 dark:text-gray-200"
|
class="text-xs font-semibold leading-6 text-gray-900 hover:text-gray-700 dark:text-gray-200"
|
||||||
|
|
|
@ -1,11 +1,19 @@
|
||||||
defmodule ChiyaWeb.CommentController do
|
defmodule ChiyaWeb.CommentController do
|
||||||
use ChiyaWeb, :controller
|
use ChiyaWeb, :controller
|
||||||
|
|
||||||
|
def index(conn, _params) do
|
||||||
|
comments = Chiya.Notes.list_note_comments()
|
||||||
|
render(conn, comments: comments)
|
||||||
|
end
|
||||||
|
|
||||||
|
def show(conn, %{"id" => comment_id}) do
|
||||||
|
comment = Chiya.Notes.get_note_comment!(comment_id)
|
||||||
|
render(conn, comment: comment)
|
||||||
|
end
|
||||||
|
|
||||||
def create(conn, %{"slug" => note_slug, "note_comment" => comment_params}) do
|
def create(conn, %{"slug" => note_slug, "note_comment" => comment_params}) do
|
||||||
note = Chiya.Notes.get_note_by_slug_preloaded!(note_slug)
|
note = Chiya.Notes.get_note_by_slug_preloaded!(note_slug)
|
||||||
|
|
||||||
IO.inspect(comment_params)
|
|
||||||
|
|
||||||
case Chiya.Notes.create_note_comment(comment_params) do
|
case Chiya.Notes.create_note_comment(comment_params) do
|
||||||
{:ok, _comment} ->
|
{:ok, _comment} ->
|
||||||
redirect(conn, to: ~p"/#{note_slug}?error=0")
|
redirect(conn, to: ~p"/#{note_slug}?error=0")
|
||||||
|
|
25
lib/chiya_web/controllers/comment_html/index.html.heex
Normal file
25
lib/chiya_web/controllers/comment_html/index.html.heex
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
<.header>
|
||||||
|
<.icon name="hero-document-text" /> Comments
|
||||||
|
<:subtitle>Comments are attached to notes</:subtitle>
|
||||||
|
</.header>
|
||||||
|
|
||||||
|
<.table id="comments" rows={@comments} row_click={&JS.navigate(~p"/admin/comments/#{&1}")}>
|
||||||
|
<:col :let={comment} label="Author"><%= comment.author_name %></:col>
|
||||||
|
<:col :let={comment} label="Inserted at"><%= from_now(comment.inserted_at) %></:col>
|
||||||
|
<:col :let={comment} label="Approved at"><%= from_now(comment.approved_at) %></:col>
|
||||||
|
<:action :let={comment}>
|
||||||
|
<div class="sr-only">
|
||||||
|
<.link navigate={~p"/admin/comments/#{comment}"}>Show</.link>
|
||||||
|
</div>
|
||||||
|
</:action>
|
||||||
|
<:action :let={comment}>
|
||||||
|
<.link href={~p"/admin/comments/#{comment}"} method="delete" data-confirm="Are you sure?">
|
||||||
|
Delete
|
||||||
|
</.link>
|
||||||
|
</:action>
|
||||||
|
<:action :let={comment}>
|
||||||
|
<div class="sr-only">
|
||||||
|
<.link navigate={~p"/admin/comments/#{comment}/approve"}>Approve</.link>
|
||||||
|
</div>
|
||||||
|
</:action>
|
||||||
|
</.table>
|
20
lib/chiya_web/controllers/comment_html/show.html.heex
Normal file
20
lib/chiya_web/controllers/comment_html/show.html.heex
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
<.header>
|
||||||
|
Comment <%= @comment.id %>
|
||||||
|
<:subtitle>This is a comment record from your database.</:subtitle>
|
||||||
|
<:actions>
|
||||||
|
<.link href={~p"/admin/notes/#{@comment}/approve"}>
|
||||||
|
<.button>Approve note</.button>
|
||||||
|
</.link>
|
||||||
|
</:actions>
|
||||||
|
</.header>
|
||||||
|
|
||||||
|
<.list>
|
||||||
|
<:item title="Name"><%= @comment.author_name %></:item>
|
||||||
|
<:item title="Content"><%= @comment.content %></:item>
|
||||||
|
<:item title="Inserted at"><%= @comment.inserted_at %></:item>
|
||||||
|
<:item title="Approved at"><%= @comment.approved_at %></:item>
|
||||||
|
<:item title="Kind"><%= @comment.kind %></:item>
|
||||||
|
<:item title="Note"><a href={"/admin/notes/#{@comment.note.id}"}><%= @comment.note.name %></a></:item>
|
||||||
|
</.list>
|
||||||
|
|
||||||
|
<.back navigate={~p"/admin/comments"}>Back to comments</.back>
|
|
@ -60,6 +60,7 @@ defmodule ChiyaWeb.Router do
|
||||||
resources "/notes", NoteController, except: [:show]
|
resources "/notes", NoteController, except: [:show]
|
||||||
resources "/settings", SettingController, singleton: true
|
resources "/settings", SettingController, singleton: true
|
||||||
resources "/identities", IdentityController
|
resources "/identities", IdentityController
|
||||||
|
resources "/comments", CommentController, only: [:index, :show]
|
||||||
|
|
||||||
get "/notes/import", NoteController, :import_prepare
|
get "/notes/import", NoteController, :import_prepare
|
||||||
post "/notes/import", NoteController, :import_run
|
post "/notes/import", NoteController, :import_run
|
||||||
|
|
Loading…
Reference in a new issue