All checks were successful
deploy / deploy (push) Successful in 4m59s
- Per-page SEO controls: meta robots directives, focus keyword, OG image - Site-wide default OG image in admin settings - FAQ block type with FAQPage JSON-LD schema - Enhanced Organization JSON-LD with business info, contact, address - Image sitemap with product images - SEO preview panel with Google/social card mockups - SEO checklist with real-time scoring - Business info section in site editor - GSC integration scaffolding (OAuth, client, cache) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
43 lines
983 B
Elixir
43 lines
983 B
Elixir
defmodule BerrypodWeb.Shop.Pages.Cart do
|
|
@moduledoc """
|
|
Cart page handler for the unified Shop.Page LiveView.
|
|
"""
|
|
|
|
import Phoenix.Component, only: [assign: 3]
|
|
|
|
alias Berrypod.Pages
|
|
|
|
def init(socket, _params, _uri) do
|
|
page = Pages.get_page("cart")
|
|
|
|
socket =
|
|
socket
|
|
|> assign(:page_title, "Cart")
|
|
|> assign(:page, page)
|
|
|> maybe_assign_meta_robots(page)
|
|
|
|
{:noreply, socket}
|
|
end
|
|
|
|
defp maybe_assign_meta_robots(socket, page) do
|
|
meta_robots = page && page[:meta_robots]
|
|
|
|
if meta_robots && meta_robots != "index, follow" do
|
|
assign(socket, :meta_robots, meta_robots)
|
|
else
|
|
socket
|
|
end
|
|
end
|
|
|
|
def handle_params(_params, _uri, socket) do
|
|
{:noreply, socket}
|
|
end
|
|
|
|
def handle_event(_event, _params, _socket), do: :cont
|
|
|
|
# Called from render to compute the subtotal
|
|
def compute_assigns(assigns) do
|
|
Map.put(assigns, :cart_page_subtotal, Berrypod.Cart.calculate_subtotal(assigns.cart_items))
|
|
end
|
|
end
|