From 9e1a315b99052a5e3ef1254a983fba95fda4c7b0 Mon Sep 17 00:00:00 2001 From: Inhji Date: Fri, 7 Apr 2023 22:01:43 +0200 Subject: [PATCH] add layout to channels --- lib/chiya/channels/channel.ex | 5 +++-- .../controllers/channel_html/channel_form.html.heex | 7 +++++++ .../migrations/20230407194659_add_layout_to_channel.exs | 9 +++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 priv/repo/migrations/20230407194659_add_layout_to_channel.exs diff --git a/lib/chiya/channels/channel.ex b/lib/chiya/channels/channel.ex index 5447108..b02bca5 100644 --- a/lib/chiya/channels/channel.ex +++ b/lib/chiya/channels/channel.ex @@ -9,6 +9,7 @@ defmodule Chiya.Channels.Channel do field :name, :string field :slug, ChannelSlug.Type field :visibility, Ecto.Enum, values: [:public, :private, :unlisted] + field :layout, Ecto.Enum, values: [:default, :gallery] many_to_many :notes, Chiya.Notes.Note, join_through: "channels_notes", @@ -20,10 +21,10 @@ defmodule Chiya.Channels.Channel do @doc false def changeset(channel, attrs) do channel - |> cast(attrs, [:name, :content, :visibility, :slug]) + |> cast(attrs, [:name, :content, :visibility, :slug, :layout]) |> ChannelSlug.maybe_generate_slug() |> ChannelSlug.unique_constraint() - |> validate_required([:name, :content, :visibility, :slug]) + |> validate_required([:name, :content, :visibility, :slug, :layout]) |> validate_exclusion(:slug, ~w(admin user dev)) end end diff --git a/lib/chiya_web/controllers/channel_html/channel_form.html.heex b/lib/chiya_web/controllers/channel_html/channel_form.html.heex index 9b3f577..c79604f 100644 --- a/lib/chiya_web/controllers/channel_html/channel_form.html.heex +++ b/lib/chiya_web/controllers/channel_html/channel_form.html.heex @@ -11,6 +11,13 @@ prompt="Choose a value" options={Ecto.Enum.values(Chiya.Channels.Channel, :visibility)} /> + <.input + field={f[:layout]} + type="select" + label="Layout" + prompt="Choose a value" + options={Ecto.Enum.values(Chiya.Channels.Channel, :layout)} + /> <.input field={f[:slug]} type="text" label="Slug" /> <:actions> <.button>Save Channel diff --git a/priv/repo/migrations/20230407194659_add_layout_to_channel.exs b/priv/repo/migrations/20230407194659_add_layout_to_channel.exs new file mode 100644 index 0000000..a529cb4 --- /dev/null +++ b/priv/repo/migrations/20230407194659_add_layout_to_channel.exs @@ -0,0 +1,9 @@ +defmodule Chiya.Repo.Migrations.AddLayoutToChannel do + use Ecto.Migration + + def change do + alter table(:channels) do + add :layout, :string, default: "default" + end + end +end