Kanboard-Prod/doc/es_ES/plugin-hooks.markdown

12 KiB

Plugin Hooks

Hooks de aplicación

Los hooks pueden extender , reemplazar, filtar datos o cambiar los comportamientos por default, cad hook es identificado con unico nombre, ejemplo : controller:calendar:user:events

Escuchar en eventos hook

En tu metodo initialize() tu necesitas llamar al metodo on() de la clase Kanboard\Core\Plugin\Hook:

$this->hook->on('hook_name', $callable);

El primer argumento es el nombre del hook y el segundo es un callable PHP

Hooks ejecutado sólo una vez

Algunos hooks solo tienen un listener:

model:subtask-time-tracking:calculate:time-spent

  • Anular el cálculo del tiempo anterior cuando se detiene el temporizador de la subtarea
  • Argumentos :
    • $user_id (integer)
    • $start (DateTime)
    • $end (DateTime)

Fusionar hooks

"Fusionar hooks" actuar de la misma manera que la función de array_merge. el hook callback solo regresa un array. Este array se fusionará con la que viene por defecto.

Ejemplo para agregar eventos en el calendario del usuario:

class Plugin extends Base
{
    public function initialize()
    {
        $container = $this->container;

        $this->hook->on('controller:calendar:user:events', function($user_id, $start, $end) use ($container) {
            $model = new SubtaskForecast($container);
            return $model->getCalendarEvents($user_id, $end); // Return new events
        });
    }
}

Ejemplo para sobrescribir los valores por default de las tareas:

class Plugin extends Base
{
    public function initialize()
    {
        $this->hook->on('controller:task:form:default', function (array $default_values) {
            return empty($default_values['score']) ? array('score' => 4) : array();
        });
    }
}

Lista de fusión de hooks:

controller:task:form:default

  • sobrescribir los valores por default de las tareas
  • Argumentos:
    • $default_values: actual default values (array)

controller📆project:events

  • Agregar mas eventos a el calendario del projecto
  • Argumentos:
    • $project_id (integer)
    • $start Calendar start date (string, ISO-8601 format)
    • $end Calendar` end date (string, ISO-8601 format)

controller📆user:events

  • Agregar mas eventos a el calendario de usuario
  • Argumentos:
    • $user_id (integer)
    • $start Calendar start date (string, ISO-8601 format)
    • $end Calendar end date (string, ISO-8601 format)

Asset Hooks

Asset hooks pueden ser usados para agregar nuevas stylesheet facilmente o un nuevo archivo JavaScript en el layout. tu puedes usar estas caracteristicas para crear un tema y sobreescribir todo los estilos por dafault del kanboard.

Ejemplo para agregar un stylesheet hoja de estilo

<?php

namespace Kanboard\Plugin\Css;

use Kanboard\Core\Plugin\Base;

class Plugin extends Base
{
    public function initialize()
    {
        $this->hook->on('template:layout:css', array('template' => 'plugins/Css/skin.css'));
    }
}

Lista de asset Hooks:

  • template:layout:css
  • template:layout:js

Referencia de hooks

La reference hooks son pasados a una variable por referencia.

Ejemplo:

$this->hook->on('formatter:board:query', function (\PicoDb\Table &query) {
    $query->eq('color_id', 'red');
});

El código anterior mostrará sólo las tareas en rojo en el tablero.

Lista de referencias de hooks:

Hook Description
formatter:board:query Alterar consulta a la base antes de tablero de renderizado
pagination:dashboard:task:query Alterar consulta de base de datos para las tareas de la paginación en el dashboard
pagination:dashboard:subtask:query Alterar consulta a la base de la paginación en el subtareas del dashboard
model:task:creation:prepare Alterar los valores del formulario antes de guardar una tarea
model:task:modification:prepare Alterar los valores del formulario antes de editar una tarea

Template Hooks

Template hooks permitirá añadir nuevos contenidos en las plantillas existentes.

Ejemplo para agregar nuevos contenidos en el sidebar del dashboard:

$this->template->hook->attach('template:dashboard:sidebar', 'myplugin:dashboard/sidebar');

Ejemplo para adjuntar un template con variables locales:

$this->template->hook->attach('template:dashboard:sidebar', 'myplugin:dashboard/sidebar', array(
    'variable' => 'foobar',
));

Ejemplo para adjuntar un template con un callable:

$this->template->hook->attach('template:dashboard:sidebar', 'myplugin:dashboard/sidebar', function($hook_param1, $hook_param2) {
    return array('new_template_variable' => 'foobar'); // Inyectar una nueva variable en la plantilla Plugin
});

Este llamada es usualmente definida en el metodo initialize() El primer argumento es el nombre del hook y el segundo argumento es el nombre del template.

Los nombres de plantillas con el prefijo del nombre del plugin y los dos puntos indican la ubicación de la plantilla.

Ejemplo con myplugin:dashboard/sidebar:

  • myplugin Es el nombre de tu plugin (minusculas)
  • dashboard/sidebar es el nombre del template
  • En el filesystem, El plugin esta localizado aqui: plugins\Myplugin\Template\dashboard\sidebar.php
  • Templates estan escritos en puro PHP (no se olvide de escapar los datos)

Los nombres de plantillas sin prefijo son plantillas básicas.

Lista de templates hooks:

Hook Descripción
template:analytic:sidebar Sidebar en paginas analiticas
template:app:filters-helper:before Filtro helper dropdown (top)
template:app:filters-helper:after Filtro helper dropdown (bottom)
template:auth:login-form:before Pagina de login (top)
template:auth:login-form:after Pagina de login (bottom)
template:board:private:task:before-title Tarea en un tablero privado : despues del titulo
template:board:private:task:after-title Tarea en un tablero privado : antes del titulo
template:board:public:task:before-title Tarea en un tablero publico : despues del titulo
template:board:public:task:after-title Tarea en un tablero publico : antes del titulo
template:board:task:footer Tarea en el tablero : footer
template:board:task:icons Tarea en el tablero: tooltip icon
template:board:column:dropdown Menu Dropdown en las columnas del tablero
template:config:sidebar Sidebar pagina de configuración
template:config:application Aplicación de configuración del formulario
template:config:email Email settings page
template:config:integrations Integration page in global settings
template:dashboard:sidebar Sidebar en la pagina del dashboard
template:dashboard:show Pagina principal del dashboard
template:export:sidebar Sidebar para exportar paginas
template:import:sidebar Sidebar para importar paginas
template:header:dropdown Dropdown menu Pagina header (icono avatar de usuario)
template:header:creation-dropdown Dropdown menu Pagina header (plus icon)
template:layout:head Layout de la pagina <head/> tag
template:layout:top Layout de la pagina top header
template:layout:bottom Layout de la pagina footer
template:project:dropdown "Actions" menu a la izquierda vista para diferentes proyectos
template:project:header:before Filtros de Proyectos (antes)
template:project:header:after Filtros de Proyectos (despues)
template:project:integrations Pagina de integracion de configuración de proyectos
template:project:sidebar Sidebar configuración de proyectos
template:project-user:sidebar Sidebar en la página de la información de usuario del proyecto
template:task:layout:top Task layout top (antes page header)
template:task:details:top Resumen de tarea top
template:task:details:bottom Resumen de tarea bottom
template:task:details:first-column Resumen de tarea columna
template:task:details:second-column Resumen de tarea dos columnas
template:task:details:third-column Resumen de tarea tres columnas
template:task:details:fourth-column Resumen de tarea cuatro columnas
template:task:dropdown Task dropdown menu en listado de paginas
template:task:sidebar:actions Sidebar on task page (sección de acciones)
template:task:sidebar:information Sidebar on task page (sección de información)
template:task:form:first-column 1st columna en forma de tarea
template:task:form:second-column 2nd columna en forma de tarea
template:task:form:third-column 3nd columna en forma de tarea
template:task:show:top Mostrar página de tareas : top
template:task:show:bottom Mostrar página de tareas : bottom
template:task:show:before-description Mostrar página de tareas : despues de la descripción
template:task:show:before-tasklinks Mostrar página de tareas : despues tasklinks
template:task:show:before-subtasks Mostrar página de tareas : despues subtareas
template:task:show:before-timetracking Mostrar página de tareas : despues timetracking
template:task:show:before-attachments Mostrar página de tareas : despues archivos adjuntos
template:task:show:before-comments Mostrar página de tareas : despues comentarios
template:user:authentication:form "Editar autenticación" formulario de perfil de usuario
template:user:create-remote:form "Crear un usuario remoto" formulario
template:user:external "Autenticación externa" la página de perfil de usuario
template:user:integrations Integración en el perfil de usuario
template:user:sidebar:actions Sidebar en el perfil de usuario (sección de acciones)
template:user:sidebar:information Sidebar en el perfil de usuario (sección de información)

Otro de los ganchos plantilla se pueden añadir en caso necesario , sólo hay que preguntar en el seguimiento de incidencias ** issue tracking **.