Show draft/scheduled status banners for authenticated users

This commit is contained in:
Willem van den Ende
2026-04-01 21:40:17 +00:00
parent 86f7ffbe94
commit 5395b2de80
5 changed files with 90 additions and 2 deletions
@@ -22,11 +22,14 @@ defmodule FirehoseWeb.BlogController do
def show(conn, %{"slug" => slug}) do
blog = conn.assigns.blog
post = blog.get_post!(slug)
visibility = Blogex.Post.visibility(post)
render(conn, :show,
page_title: post.title,
post: post,
base_path: blog.base_path()
base_path: blog.base_path(),
visibility: visibility,
authenticated: conn.assigns[:current_user] != nil
)
end
@@ -1,4 +1,23 @@
<div class="space-y-8">
<a href={@base_path} class="text-sm text-primary hover:underline">&larr; Back to posts</a>
<%= if @authenticated and @visibility == :draft do %>
<div
class="rounded-lg bg-amber-50 border border-amber-200 px-4 py-3 text-amber-800 text-sm font-medium"
id="post-status-banner"
>
Draft — not published
</div>
<% end %>
<%= if @authenticated and @visibility == :scheduled do %>
<div
class="rounded-lg bg-blue-50 border border-blue-200 px-4 py-3 text-blue-800 text-sm font-medium"
id="post-status-banner"
>
This post is scheduled for {Calendar.strftime(@post.date, "%B %d, %Y")}
</div>
<% end %>
<.post_show post={@post} base_path={@base_path} />
</div>