feat: public note list
This commit is contained in:
parent
5a00fdf843
commit
107af78925
16 changed files with 147 additions and 114 deletions
|
@ -17,8 +17,8 @@ defmodule ComfycampWeb.NavBar do
|
||||||
~H"""
|
~H"""
|
||||||
<nav class="limiter navbar">
|
<nav class="limiter navbar">
|
||||||
<.link href={~p"/"}>Главная</.link>
|
<.link href={~p"/"}>Главная</.link>
|
||||||
<.link href={~p"/blog/"}>Блог</.link>
|
<.link href={~p"/notes"}>Заметки</.link>
|
||||||
<.link href={~p"/cinema/"}>Кинотеатр</.link>
|
<.link href={~p"/cinema"}>Кинотеатр</.link>
|
||||||
|
|
||||||
<div class="space" />
|
<div class="space" />
|
||||||
|
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
defmodule ComfycampWeb.BlogController do
|
|
||||||
use ComfycampWeb, :controller
|
|
||||||
|
|
||||||
def index(conn, _params) do
|
|
||||||
render(conn, :index, page_title: "Блог")
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,8 +0,0 @@
|
||||||
defmodule ComfycampWeb.BlogHTML do
|
|
||||||
@moduledoc """
|
|
||||||
This module contains pages rendered by BlogController.
|
|
||||||
"""
|
|
||||||
use ComfycampWeb, :html
|
|
||||||
|
|
||||||
embed_templates "blog_html/*"
|
|
||||||
end
|
|
|
@ -1 +0,0 @@
|
||||||
<p>Блог</p>
|
|
|
@ -2,88 +2,16 @@ defmodule ComfycampWeb.NotesController do
|
||||||
use ComfycampWeb, :controller
|
use ComfycampWeb, :controller
|
||||||
|
|
||||||
alias Comfycamp.Notes
|
alias Comfycamp.Notes
|
||||||
alias Comfycamp.Notes.Note
|
|
||||||
|
|
||||||
def index(conn, _params) do
|
def index(conn, _params) do
|
||||||
notes = Notes.list_notes()
|
notes = Notes.list_notes()
|
||||||
|
|
||||||
conn
|
render(conn, :index, page_title: "Заметки", notes: notes)
|
||||||
|> put_layout(html: :admin)
|
|
||||||
|> render(:index, page_title: "Заметки", notes: notes)
|
|
||||||
end
|
|
||||||
|
|
||||||
def new(conn, _params) do
|
|
||||||
changeset = Notes.change_note(%Note{})
|
|
||||||
|
|
||||||
conn
|
|
||||||
|> put_layout(html: :admin)
|
|
||||||
|> render(:new, page_title: "Новая заметка", changeset: changeset)
|
|
||||||
end
|
|
||||||
|
|
||||||
def edit(conn, %{"id" => id}) do
|
|
||||||
note = Notes.get_note!(id)
|
|
||||||
|
|
||||||
changeset = Notes.change_note(note)
|
|
||||||
|
|
||||||
conn
|
|
||||||
|> put_layout(html: :admin)
|
|
||||||
|> render(:edit, page_title: "Редактировать заметку", changeset: changeset)
|
|
||||||
end
|
|
||||||
|
|
||||||
def create(conn, %{"note" => note_params}) do
|
|
||||||
case Notes.create_note(note_params) do
|
|
||||||
{:ok, note} ->
|
|
||||||
conn
|
|
||||||
|> put_flash(:info, "Заметка сохранена.")
|
|
||||||
|> redirect(to: ~p"/admin/notes/#{note}")
|
|
||||||
|
|
||||||
{:error, changeset} ->
|
|
||||||
conn
|
|
||||||
|> put_flash(:error, "Ошибка при обновлении заметки.")
|
|
||||||
|> put_layout(html: :admin)
|
|
||||||
|> render(:new, page_title: "Создать заметку", changeset: changeset)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def update(conn, %{"id" => id, "note" => note_params}) do
|
|
||||||
note = Notes.get_note!(id)
|
|
||||||
|
|
||||||
case Notes.update_note(note, note_params) do
|
|
||||||
{:ok, note} ->
|
|
||||||
conn
|
|
||||||
|> put_flash(:info, "Заметка обновлена.")
|
|
||||||
|> redirect(to: ~p"/admin/notes/#{note}")
|
|
||||||
|
|
||||||
{:error, changeset} ->
|
|
||||||
conn
|
|
||||||
|> put_flash(:error, "Ошибка при обновлении заметки.")
|
|
||||||
|> put_layout(html: :admin)
|
|
||||||
|> render(:edit, page_title: "Редактировать заметку", changeset: changeset)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def show(conn, %{"id" => id}) do
|
def show(conn, %{"id" => id}) do
|
||||||
note = Notes.get_note!(id)
|
note = Notes.get_note!(id)
|
||||||
|
|
||||||
conn
|
render(conn, :show, page_title: note.title, note: note)
|
||||||
|> put_layout(html: :admin)
|
|
||||||
|> render(:show, page_title: "Заметка", note: note)
|
|
||||||
end
|
|
||||||
|
|
||||||
def delete(conn, %{"id" => id}) do
|
|
||||||
note = Notes.get_note!(id)
|
|
||||||
|
|
||||||
case Notes.delete_note(note) do
|
|
||||||
{:ok, _note} ->
|
|
||||||
conn
|
|
||||||
|> put_flash(:info, "Заметка удалена.")
|
|
||||||
|> redirect(to: ~p"/admin/notes")
|
|
||||||
|
|
||||||
{:error, changeset} ->
|
|
||||||
conn
|
|
||||||
|> put_flash(:error, "Ошибка при удалении заметки.")
|
|
||||||
|> put_layout(html: :admin)
|
|
||||||
|> render(:edit, page_title: "Редактировать заметку", changeset: changeset)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
89
lib/comfycamp_web/controllers/notes_editor_controller.ex
Normal file
89
lib/comfycamp_web/controllers/notes_editor_controller.ex
Normal file
|
@ -0,0 +1,89 @@
|
||||||
|
defmodule ComfycampWeb.NotesEditorController do
|
||||||
|
use ComfycampWeb, :controller
|
||||||
|
|
||||||
|
alias Comfycamp.Notes
|
||||||
|
alias Comfycamp.Notes.Note
|
||||||
|
|
||||||
|
def index(conn, _params) do
|
||||||
|
notes = Notes.list_notes()
|
||||||
|
|
||||||
|
conn
|
||||||
|
|> put_layout(html: :admin)
|
||||||
|
|> render(:index, page_title: "Заметки", notes: notes)
|
||||||
|
end
|
||||||
|
|
||||||
|
def new(conn, _params) do
|
||||||
|
changeset = Notes.change_note(%Note{})
|
||||||
|
|
||||||
|
conn
|
||||||
|
|> put_layout(html: :admin)
|
||||||
|
|> render(:new, page_title: "Новая заметка", changeset: changeset)
|
||||||
|
end
|
||||||
|
|
||||||
|
def edit(conn, %{"id" => id}) do
|
||||||
|
note = Notes.get_note!(id)
|
||||||
|
|
||||||
|
changeset = Notes.change_note(note)
|
||||||
|
|
||||||
|
conn
|
||||||
|
|> put_layout(html: :admin)
|
||||||
|
|> render(:edit, page_title: "Редактировать заметку", changeset: changeset)
|
||||||
|
end
|
||||||
|
|
||||||
|
def create(conn, %{"note" => note_params}) do
|
||||||
|
case Notes.create_note(note_params) do
|
||||||
|
{:ok, note} ->
|
||||||
|
conn
|
||||||
|
|> put_flash(:info, "Заметка сохранена.")
|
||||||
|
|> redirect(to: ~p"/admin/notes/#{note}")
|
||||||
|
|
||||||
|
{:error, changeset} ->
|
||||||
|
conn
|
||||||
|
|> put_flash(:error, "Ошибка при обновлении заметки.")
|
||||||
|
|> put_layout(html: :admin)
|
||||||
|
|> render(:new, page_title: "Создать заметку", changeset: changeset)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def update(conn, %{"id" => id, "note" => note_params}) do
|
||||||
|
note = Notes.get_note!(id)
|
||||||
|
|
||||||
|
case Notes.update_note(note, note_params) do
|
||||||
|
{:ok, note} ->
|
||||||
|
conn
|
||||||
|
|> put_flash(:info, "Заметка обновлена.")
|
||||||
|
|> redirect(to: ~p"/admin/notes/#{note}")
|
||||||
|
|
||||||
|
{:error, changeset} ->
|
||||||
|
conn
|
||||||
|
|> put_flash(:error, "Ошибка при обновлении заметки.")
|
||||||
|
|> put_layout(html: :admin)
|
||||||
|
|> render(:edit, page_title: "Редактировать заметку", changeset: changeset)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def show(conn, %{"id" => id}) do
|
||||||
|
note = Notes.get_note!(id)
|
||||||
|
|
||||||
|
conn
|
||||||
|
|> put_layout(html: :admin)
|
||||||
|
|> render(:show, page_title: "Заметка", note: note)
|
||||||
|
end
|
||||||
|
|
||||||
|
def delete(conn, %{"id" => id}) do
|
||||||
|
note = Notes.get_note!(id)
|
||||||
|
|
||||||
|
case Notes.delete_note(note) do
|
||||||
|
{:ok, _note} ->
|
||||||
|
conn
|
||||||
|
|> put_flash(:info, "Заметка удалена.")
|
||||||
|
|> redirect(to: ~p"/admin/notes")
|
||||||
|
|
||||||
|
{:error, changeset} ->
|
||||||
|
conn
|
||||||
|
|> put_flash(:error, "Ошибка при удалении заметки.")
|
||||||
|
|> put_layout(html: :admin)
|
||||||
|
|> render(:edit, page_title: "Редактировать заметку", changeset: changeset)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
5
lib/comfycamp_web/controllers/notes_editor_html.ex
Normal file
5
lib/comfycamp_web/controllers/notes_editor_html.ex
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
defmodule ComfycampWeb.NotesEditorHTML do
|
||||||
|
use ComfycampWeb, :html
|
||||||
|
|
||||||
|
embed_templates "notes_editor_html/*"
|
||||||
|
end
|
|
@ -0,0 +1,17 @@
|
||||||
|
<div>
|
||||||
|
<.link href={~p"/admin/notes/new"}>
|
||||||
|
Создать заметку
|
||||||
|
</.link>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<%= for note <- @notes do %>
|
||||||
|
<li>
|
||||||
|
<.link href={~p"/admin/notes/#{note}"}>
|
||||||
|
<%= note.title %>
|
||||||
|
</.link>
|
||||||
|
|
||||||
|
<%= note.updated_at %>
|
||||||
|
</li>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
</div>
|
|
@ -0,0 +1,13 @@
|
||||||
|
<div>
|
||||||
|
<.back navigate={~p"/admin/notes"}>Назад</.back>
|
||||||
|
<h3><%= @note.title %></h3>
|
||||||
|
|
||||||
|
<.link href={~p"/admin/notes/#{@note}/edit"}>
|
||||||
|
Редактировать
|
||||||
|
</.link>
|
||||||
|
|
||||||
|
<p>Создана: <%= @note.inserted_at %></p>
|
||||||
|
<p>Обновлена: <%= @note.updated_at %></p>
|
||||||
|
|
||||||
|
<pre><%= @note.markdown %></pre>
|
||||||
|
</div>
|
|
@ -1,4 +1,7 @@
|
||||||
defmodule ComfycampWeb.NotesHTML do
|
defmodule ComfycampWeb.NotesHTML do
|
||||||
|
@moduledoc """
|
||||||
|
This module contains pages rendered by BlogController.
|
||||||
|
"""
|
||||||
use ComfycampWeb, :html
|
use ComfycampWeb, :html
|
||||||
|
|
||||||
embed_templates "notes_html/*"
|
embed_templates "notes_html/*"
|
||||||
|
|
|
@ -1,17 +1,12 @@
|
||||||
<div>
|
<div>
|
||||||
<.link href={~p"/admin/notes/new"}>
|
<h1>Заметки</h1>
|
||||||
Создать заметку
|
|
||||||
</.link>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
<%= for note <- @notes do %>
|
<%= for note <- @notes do %>
|
||||||
<li>
|
<div>
|
||||||
<.link href={~p"/admin/notes/#{note}"}>
|
<.link href={~p"/notes/#{note}"}>
|
||||||
<%= note.title %>
|
<h2><%= note.title %></h2>
|
||||||
</.link>
|
</.link>
|
||||||
|
<%= note.inserted_at %>
|
||||||
<%= note.updated_at %>
|
</div>
|
||||||
</li>
|
<% end %>
|
||||||
<% end %>
|
|
||||||
</ul>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,13 +1,12 @@
|
||||||
<div>
|
<div>
|
||||||
<.back navigate={~p"/admin/notes"}>Назад</.back>
|
<h1><%= @note.title %></h1>
|
||||||
<h3><%= @note.title %></h3>
|
|
||||||
|
|
||||||
<.link href={~p"/admin/notes/#{@note}/edit"}>
|
<.back navigate={~p"/notes"}>К списку заметок</.back>
|
||||||
Редактировать
|
|
||||||
</.link>
|
|
||||||
|
|
||||||
<p>Создана: <%= @note.inserted_at %></p>
|
<p>Создана: <%= @note.inserted_at %></p>
|
||||||
<p>Обновлена: <%= @note.updated_at %></p>
|
<p>Обновлена: <%= @note.updated_at %></p>
|
||||||
|
|
||||||
<pre><%= @note.markdown %></pre>
|
<pre>
|
||||||
|
<%= @note.markdown %>
|
||||||
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -21,7 +21,7 @@ defmodule ComfycampWeb.Router do
|
||||||
pipe_through :browser
|
pipe_through :browser
|
||||||
|
|
||||||
get "/", MainController, :index
|
get "/", MainController, :index
|
||||||
get "/blog", BlogController, :index
|
resources "/notes", NotesController, only: [:index, :show]
|
||||||
get "/cinema", CinemaController, :index
|
get "/cinema", CinemaController, :index
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -91,6 +91,6 @@ defmodule ComfycampWeb.Router do
|
||||||
get "/", AdminPageController, :home
|
get "/", AdminPageController, :home
|
||||||
get "/users", AdminPageController, :users
|
get "/users", AdminPageController, :users
|
||||||
get "/services", AdminPageController, :services
|
get "/services", AdminPageController, :services
|
||||||
resources "/notes", NotesController
|
resources "/notes", NotesEditorController
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue