Plugins
Un plugin agrega funcionalidad al escritorio de Histrix sin modificar el motor. Define funciones internas y las registra en uno o más hooks; el motor las ejecuta en el momento y lugar correspondientes.
Ubicación
Sección titulada «Ubicación»El cargador de plugins busca en tres lugares, en este orden:
| Ruta | Alcance |
|---|---|
database/{base}/plugins/ |
Solo esa base |
plugins/ |
Toda la instalación |
modules/{módulo}/plugins/ |
Las bases que usan ese módulo |
Cada plugin vive en su propio directorio y contiene un archivo de clase con el mismo nombre que el directorio:
Directoriohistrix/
Directorioplugins/
Directoriotest/
- test.php
Estructura de un plugin
Sección titulada «Estructura de un plugin»La clase extiende \Histrix\Plugin\Plugin y registra sus funciones en init():
<?php
class test extends \Histrix\Plugin\Plugin{ public function init() { $this->registerFunction('trayInit', 'display'); $this->registerFunction('statusBarInit', 'status'); }
public function display() { echo '<b>TEST PLUGIN</b>'; }
public function status() { echo '<div>Test Status Bar Plugin</div>'; }}Hooks de PHP
Sección titulada «Hooks de PHP»Las funciones registradas con registerFunction($hook, $función) se ejecutan desde
PHP.
| Hook | Momento de ejecución |
|---|---|
preSessionInit |
Antes de inicializar la sesión |
desktopInit |
Al iniciar el escritorio de Histrix |
statusBarInit |
Al iniciar la barra de estado inferior |
trayInit |
Al iniciar el área de notificación del panel superior |
javascriptLoad |
Al inicio; debe devolver un arreglo de archivos JavaScript a cargar |
javascriptInit |
Al inicio; debe devolver código JavaScript válido |
cssLoad |
Al inicio; debe devolver un arreglo de archivos CSS a cargar |
afterSysmon |
Al final del monitor de sistema, que corre periódicamente |
afterSysmonScripts |
Igual que el anterior; debe devolver un arreglo de sentencias JavaScript |
Hooks de JavaScript
Sección titulada «Hooks de JavaScript»Se registran desde init() con registerJavascriptFunction($hook, $función) y se
ejecutan en el navegador:
class test extends \Histrix\Plugin\Plugin{ public function init() { $this->registerJavascriptFunction('afterLoadXml', 'myFunction'); }}| Hook | Momento de ejecución |
|---|---|
beforeLoadXml |
Antes de Histrix.LoadXML |
afterLoadXml |
Después de Histrix.LoadXML |
Ambos reciben los mismos parámetros:
function miFuncion(contenido, { programTitle: title, container: xmldatos }) {}// contenido: variables GET enviadas — xml (nombre del XML) y dir (directorio)Configuración
Sección titulada «Configuración»Cada plugin puede declarar opciones en setDefaultOptions(). El motor las persiste en
la tabla HTXOPTIONS con la clave PLUGIN::{Clase}::{opción} y las expone en el panel
de configuración, agrupadas por plugin.
Todo plugin recibe automáticamente una opción enable, que arranca en false: hay que
habilitarlo explícitamente desde la configuración de la base.
class weather extends \Histrix\Plugin\Plugin{ public function setDefaultOptions() { $this->addOption('ciudad', [ 'name' => 'Ciudad', 'description' => 'Ciudad para el pronóstico', 'value' => 'Rosario', ]); }}El valor se lee con $this->getParameter('ciudad').
Plugins incluidos
Sección titulada «Plugins incluidos»La instalación trae, entre otros: autoInit (autoarranque de programas),
directLink (enlaces directos a programas), htxchat, htxconfig, htxHud y
htxHudCmd (panel de estado y comandos), htxusermenu, lastPrograms,
localNews, screenSaverLed, ShowProfile, statusMessage y userStatus.