MishkaCmsCore.Sidebar.MenuSettings (Mishka CMS Core v0.0.1)

Copy Markdown View Source

Registers every sidebar entry's position and on/off switch with the Settings page, through the "settings:register" mishka_installer hook — the same plugin shape MishkaCmsCore.Dashboard.WidgetSettings uses for widgets.

It walks MishkaCmsCore.Sidebar.collect/0, so an extension that adds a menu gets its settings for free: there is no second list to keep in step, and no core file to edit when an extension ships a new section. Definitions land in the Sidebar tab, grouped by the section each entry belongs to, and each inherits the entry's own permissions so an admin is never shown a switch for a menu they cannot see.

Registration priority is deliberately late (60): Settings.load_definitions/0 calls every settings:register plugin, and this one is the only one whose definitions depend on OTHER plugins having registered first. Should this still run before an extension's sidebar:menus plugin is up, the settings page re-aggregates on mount (MishkaCmsCoreWeb.Live.Admin.Dashboard.Runtime.SettingsLive) and the missing entries appear — and the sidebar itself never depended on the definitions, since every read passes the declared value as its default.

Registered in MishkaCmsCore.Application.

Summary

Functions

Returns a specification to start this module under a supervisor.

Callback implementation for MishkaInstaller.Event.Hook.enable/0.

Callback implementation for MishkaInstaller.Event.Hook.get/0.

Optional. See MishkaInstaller.Event.Hook.health_check/0. Override to report health.

Callback implementation for MishkaInstaller.Event.Hook.register/0.

Callback implementation for MishkaInstaller.Event.Hook.restart/0.

Callback implementation for MishkaInstaller.Event.Hook.start/0.

Callback implementation for MishkaInstaller.Event.Hook.stop/0.

Types

error_return()

@type error_return() ::
  {:error, [%{action: atom(), field: atom(), message: String.t()}]}

okey_return()

@type okey_return() :: {:ok, struct() | map() | module() | [any()]}

Functions

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

config()

@spec config() :: keyword()

config(key)

@spec config(atom()) :: any()

enable()

@spec enable() :: okey_return() | error_return()

Callback implementation for MishkaInstaller.Event.Hook.enable/0.

get()

@spec get() :: keyword()

Callback implementation for MishkaInstaller.Event.Hook.get/0.

health_check()

@spec health_check() :: :ok | {:degraded, term()} | {:error, term()}

Optional. See MishkaInstaller.Event.Hook.health_check/0. Override to report health.

on_dependency_error(error)

@spec on_dependency_error(term()) :: term()

Optional. See MishkaInstaller.Event.Hook.on_dependency_error/1. Override to react.

register()

@spec register() :: okey_return() | error_return()

Callback implementation for MishkaInstaller.Event.Hook.register/0.

restart()

@spec restart() :: okey_return() | error_return()

Callback implementation for MishkaInstaller.Event.Hook.restart/0.

start()

@spec start() :: okey_return() | error_return()

Callback implementation for MishkaInstaller.Event.Hook.start/0.

start_link(args \\ [])

stop()

@spec stop() :: okey_return() | error_return()

Callback implementation for MishkaInstaller.Event.Hook.stop/0.

unregister()

@spec unregister() :: okey_return() | error_return()

Callback implementation for MishkaInstaller.Event.Hook.unregister/0.