MishkaDocumentWeb.SidebarMenu (Mishka Document v0.0.1)

Copy Markdown View Source

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

Only document is a link; it lands in the core's Plugins section. The core never names this extension, so removing it removes the 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": the workspace pages are admin:dashboard:document:workspace, everything hanging off a section is admin:dashboard:document:section, and the event log opens for either and shows each area the events of its own records (MishkaDocument.EventLog.logged/1). The link carries the union, since holding either is reason enough to be shown the section. The data behind each page asks for the same area.

Three of them are parameterised routes that could never be a static link anyway (/document/sections/:workspace_version_id and friends) — declaring them here is the only place their gate can be written down.

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

on_mount {MishkaCmsCore.LiveUserAuth,
          {:require_permission, MishkaDocumentWeb.SidebarMenu.permissions("document.issues")}}

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