MishkaBlogWeb.SidebarMenu (Mishka Blog v0.0.1)

Copy Markdown View Source

The blog's admin pages and the one sidebar entry that links to them — a "sidebar:menus" plugin (MishkaCmsCore.Sidebar).

Only blog is a link; it lands in the core's Plugins section. The core never names the blog, so removing this extension removes its entry and nothing in MishkaCmsCore.Sidebar changes.

The other eight are nav: false — pages, not links. They are declared because they do NOT share one answer to "who may open this": Comments needs admin:dashboard:blog:comment, and Posts, Collections, Tags, Bloggers, Teams, Auto Posting and Analytics need admin:dashboard:blog:post. A moderator who holds only the former must not reach the latter. The link and the blog's Home carry both, since holding either is reason enough to be shown the section. Each page's data asks for the same area.

Each page reads its own gate from here, so the permission is written down once:

on_mount {MishkaCmsCore.LiveUserAuth,
          {:require_permission, MishkaBlogWeb.SidebarMenu.permissions("blog.comments")}}

Registered in MishkaBlog.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.

This extension's sidebar entry plus every admin page it owns.

The permissions declared for one of this extension's pages. See MishkaCmsCore.Sidebar.permissions/2.

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.

items()

@spec items() :: [MishkaCmsCore.Sidebar.Item.t()]

This extension's sidebar entry plus every admin page it owns.

on_dependency_error(error)

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

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

permissions(key)

The permissions declared for one of this extension's pages. See MishkaCmsCore.Sidebar.permissions/2.

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.