Current section
Files
Jump to
Current section
Files
web/controllers/admin_controller.ex
defmodule ExAdmin.AdminController do
@moduledoc false
use ExAdmin.Web, :controller
require Logger
plug :set_theme
plug :set_layout
def page(conn, params) do
page = Map.get(params, "page", "dashboard")
defn = get_registered_by_controller_route!(conn, page)
conn = assign(conn, :defn, defn)
contents = defn.__struct__.page_view(conn)
render(conn, "admin.html", html: contents, resource: nil, scope_counts: [],
filters: (if false in defn.index_filters, do: false, else: defn.index_filters))
end
def dashboard(conn, params) do
page(conn, Map.put(params, "page", "dashboard"))
end
def select_theme(conn, %{"id" => id} = params) do
{id, _} = Integer.parse(id)
{_, theme} = Application.get_env(:ex_admin, :theme_selector, []) |> Enum.at(id)
loc = Map.get(params, "loc", admin_path) |> URI.parse |> Map.get(:path)
Application.put_env :ex_admin, :theme, theme
redirect conn, to: loc
end
end