Skip to content
docsv0.2.0

AdminPlugin

El panel de administración de Milpa: la superficie `/milpa/admin`. {@see Controllers\MilpaAdminController} es el Hub (ADR#12): descubre las secciones registradas vía {@see AdminSectionProvider} y redirige a la default, sin renderizar nada él mismo. Cada sección es dueña de su ruta, su gate y su render; el panel no conoce ninguna por nombre. Este plugin aporta tres: **Settings** (la configuración del sitio, con form y CSRF), **Plugins** (qué plugins tiene el host y cuáles arrancan, sobre las operaciones de `milpa/plugin`) y **Sistema** (la tabla de rutas, read-only). Cualquier otro plugin puede aportar las suyas implementando {@see AdminSectionProvider} — el panel las descubre y las pinta en la navegación sin cambiar una línea de aquí. **Lo que un host tiene que darle:** un `SessionStore` y el middleware de scopes de `milpa/auth` (el gate vive detrás de `milpa.admin`), un `PluginRegistryInterface` si quiere la sección de plugins, y un {@see RouteTableSource} si quiere la de Sistema. Lo que no registre, simplemente no aparece — el panel no truena por una sección que este host no puede servir.

AdminPlugin::__construct()

public function __construct(Milpa\Interfaces\Di\DIContainerInterface $container):

Parameters

Parameters of __construct()
NameTypeDescription
$containerMilpa\Interfaces\Di\DIContainerInterface

AdminPlugin::routes()

public function routes(): array

Las rutas del panel, declaradas y ya atadas a su handler. Explícitas y no escaneadas de atributos: escanear obliga a un host a traer un cargador de atributos, y la familia no publica ninguno — era justo lo que amarraba este panel a un host. Con seis rutas, decirlas cuesta menos que la maquinaria para adivinarlas, y se leen todas de un jalón en un archivo.

AdminPlugin::adminSections()

public function adminSections(): array

Las secciones propias del plugin (ui.admin.section — ADR#12): Settings (order 10), la primera del admin; Plugins (order 15, justo después — el 20 ya es de `architecture`) — qué plugins tiene el host y cuáles arrancan, sobre las operaciones de `milpa/plugin`, que sirve {@see Controllers\PluginsController}; y Sistema (order 30, P5.7) — la tabla read-only de rutas registradas que sirve {@see Controllers\SystemController}.

AdminPlugin::adminSectionStates()

public function adminSectionStates(): array

El estado de las secciones propias del plugin (settings + plugins + system) — el MISMO que el shell web consume, ahora disponible para el shell CLI (`coa:admin`). `architecture` es web-only (sin estado inspectable), así que no aparece aquí. El estado de `system` son las rutas registradas, leídas de la fuente de verdad ({@see RouteTableAssembler}, la autoridad única registrada como instancia en el container tras `loadPlugins()` — Ola 4d.3a).

AdminPlugin::boot()

public function boot(): void

Lo único que arranca: atar la raíz de almacenamiento que el host haya registrado. Si no registró ninguna, no se ata nada y {@see SettingsStore::path()} lanza cuando alguien intente leer o escribir settings — con el nombre del puerto que falta. Callar aquí y adivinar allá es cómo el panel terminó escribiendo dentro de `vendor/`.

AdminPlugin::install()

public function install(): void

Nada que instalar: el panel no tiene datos propios.

AdminPlugin::uninstall()

public function uninstall(): void

Nada que desinstalar: quitar el panel no toca lo que el panel administra.

AdminPlugin::enable()

public function enable(): void

Nada que prender: las secciones aparecen porque el panel las descubrió.

AdminPlugin::disable()

public function disable(): void

Nada que apagar.