Pestaña adicional
Este mecanismo permite agregar tus propias pestañas o modificaciones de la interfaz en las funciones existentes en Navigate CMS. Por ejemplo, la extensión Akismet antispam añade una pestaña cuando se visualiza el formulario de edición de un comentario. La nueva pestaña tiene dos funciones: comprobar si un comentario es spam e informar de la exactitud de la detección en el servicio Akismet.
Para agregar la nueva pestaña tenemos que decirle a Navigate CMS que haga algo cuando el usuario solicita la edición de un comentario. Esto se logra definiendo la vinculación al evento "Edición" de la función "Comentarios". Esta vinculación se establece en el fichero de definición de la extensión:
{
"title": "Akismet antispam",
"(más_propiedades)": "(más_valores)"
"bindings": [
{
"module": "comments",
"event": "edit",
"function": "nvweb_akismet_antispam_edit_tab"
}
]
}
La sección de vinculaciones (bindings) en la definición declara cuándo y qué se debe ejecutar al ocurrir ciertos eventos. Puedes encontrar una lista completa de las posibles combinaciones de módulos / eventos en la sección Eventos de este manual. nvweb_akismet_antispam_edit_tab es una función que tenemos que escribir en nuestro archivo principal de la extensión PHP (akismet_antispam.php).
function nvweb_akismet_antispam_edit_tab($params)
{
global $layout;
global $user;
$extension = new Extension();
$extension->load('akismet_antispam');
$comment = $params['comment'];
$navibars = $params['navibars'];
$naviforms = $params['naviforms'];
$navibars->add_tab('Akismet Antispam');
$navibars->add_tab_content_row(
array(
'<label>Akismet</label>',
'<button id="akismet_check">'.$extension->t('test_comment').'</button>'
)
);
// [...]
$layout->add_script('
$("#akismet_check").on("click", function()
{
// [...]
});
// [...]
');
}
Vamos a analizar el código de la función paso a paso. Hemos nombrado a nuestra función "nvweb_akismet_antispam_edit_tab" para evitar cualquier tipo de problemas de duplicación de nombres. La regla es simple; "nvweb" porque es una extensión de Navigate CMS, "akismet_antispam" como nombre único de la extensión y "edit_tab" porque describe el dónde la función va a mostrar algo.
Observa que la función recibe un único parámetro, pero más adelante en el código descubrimos que el parámetro es un array de objetos: el objeto comentario, la clase de presentación navibars y la instancia de naviforms que ayuda a generar campos de formulario. naviforms y navibars no se explican en esta sección del manual, ya que pertenecen a la parte de desarrollo de Navigate CMS. Sin embargo, lo que hacen es lo suficientemente claro para entender este ejemplo. Dependiendo de la combinación módulo / evento otros elementos se enviarán en la matriz de entrada. Tendrás que consultar la sección de Eventos para saber lo que se envía en cada caso.
$extension = new Extension();
$extension->load('akismet_antispam');
Este código carga la extensión, sus opciones y el diccionario de la extensión. Más tarde, cuando hacemos:
$extension->t('test_comment')
estamos pidiendo la traducción de la cadena "test_comment" en el idioma activo. Consulta la sección de definición de la extensión de este manual para saber cómo escribir un diccionario para tu extensión.
Una vez inicializado, se incluye el contenido HTML de nuestra cuenta con $navibars->add_tab_content_row y el código javascript asociado con $layout->add_script.
Eres libre de hacer cualquier cosa en tu función de extensión: leer los valores $ _POST, calcular algo, guardar los valores en la base de datos, generar informes...
Resumen
Para agregar una nueva funcionalidad en Navigate CMS tienes que:
- Identificar la combinación módulo / evento que necesitas y los valores que se obtienen de Navigate CMS.
- Escribir la sección de vinculaciones en la definición de la extensión.
- Crear la función que se ejecutará en el evento.
- Añadir el código HTML / JS que se insertará en tu pestaña y/o escribir la funcionalidad que desees ofrecer.
0 Comentarios