From d6fb14bb385dca916f712a2d75e0cbd4ebb32254 Mon Sep 17 00:00:00 2001 From: Inhji Date: Sun, 21 May 2023 09:53:17 +0200 Subject: [PATCH] add publish unpublish actions --- lib/chiya_web/controllers/note_controller.ex | 40 ++++++++++++++++++++ lib/chiya_web/live/note_show_live.ex | 9 +++++ lib/chiya_web/router.ex | 2 + 3 files changed, 51 insertions(+) diff --git a/lib/chiya_web/controllers/note_controller.ex b/lib/chiya_web/controllers/note_controller.ex index ec54f9a..804030b 100644 --- a/lib/chiya_web/controllers/note_controller.ex +++ b/lib/chiya_web/controllers/note_controller.ex @@ -104,6 +104,46 @@ defmodule ChiyaWeb.NoteController do |> text(raw_note) end + def publish(conn, %{"id" => id}) do + note_params = %{published_at: NaiveDateTime.local_now()} + note = Notes.get_note_preloaded!(id) + + case Notes.update_note(note, note_params) do + {:ok, note} -> + conn + |> put_flash(:info, "Note published successfully.") + |> redirect(to: ~p"/admin/notes/#{note}") + + {:error, %Ecto.Changeset{} = changeset} -> + render(conn, :edit, + note: note, + changeset: changeset, + channels: to_channel_options(), + tags: note.tags + ) + end + end + + def unpublish(conn, %{"id" => id}) do + note_params = %{published_at: nil} + note = Notes.get_note_preloaded!(id) + + case Notes.update_note(note, note_params) do + {:ok, note} -> + conn + |> put_flash(:info, "Note un-published successfully.") + |> redirect(to: ~p"/admin/notes/#{note}") + + {:error, %Ecto.Changeset{} = changeset} -> + render(conn, :edit, + note: note, + changeset: changeset, + channels: to_channel_options(), + tags: note.tags + ) + end + end + def edit_image(conn, %{"image_id" => id}) do image = Notes.get_note_image!(id) changeset = Notes.change_note_image(image) diff --git a/lib/chiya_web/live/note_show_live.ex b/lib/chiya_web/live/note_show_live.ex index 7c5f535..3101315 100644 --- a/lib/chiya_web/live/note_show_live.ex +++ b/lib/chiya_web/live/note_show_live.ex @@ -25,6 +25,15 @@ defmodule ChiyaWeb.NoteShowLive do <.link href={~p"/admin/notes/#{@note}/raw"}> <.button>Raw + <%= if is_nil(@note.published_at) do %> + <.link href={~p"/admin/notes/#{@note}/publish"}> + <.button>Publish + + <% else %> + <.link href={~p"/admin/notes/#{@note}/unpublish"}> + <.button>Un-Publish + + <% end %> diff --git a/lib/chiya_web/router.ex b/lib/chiya_web/router.ex index db4038c..08af3d8 100644 --- a/lib/chiya_web/router.ex +++ b/lib/chiya_web/router.ex @@ -67,6 +67,8 @@ defmodule ChiyaWeb.Router do live "/notes/:id", NoteShowLive, :show get "/notes/:id/raw", NoteController, :raw + get "/notes/:id/publish", NoteController, :publish + get "/notes/:id/unpublish", NoteController, :unpublish get "/notes/:id/image/:image_id", NoteController, :edit_image put "/notes/:id/image/:image_id", NoteController, :update_image