Skip to content
This repository has been archived by the owner on Oct 10, 2023. It is now read-only.

Módulos

Gabriel edited this page Sep 12, 2021 · 10 revisions

Documentación:


Existen diferentes utilidades que se pueden incluir del lado del cliente y/o del lado del servidor en forma de módulos o plug-ins, para la asistencia en la implementación de servicios de terceros (como reCaptcha o Firebase) y la realización de tareas específicas (como generar PDF o XLS).

Módulos disponibles

Obtener un módulo

Cliente

Para obtener un módulo desde el controlador JS:

ui.obtenerInstanciaModulo("nombre");

Es posible invocar métodos públicos del módulo del lado del servidor mediante la propiedad servidor, por ejemplo:

var modulo=ui.obtenerInstanciaModulo("nombre");
modulo.servidor.metodoPublico(function(retorno) {
    //...
});

Servidor

Para obtener un módulo desde un controlador PHP:

\foxtrot::fabricarModulo('nombre');

Compilar/copiar módulos a producción y aplicación embebible (Cordova)

En desarrollo, todos los módulos estarán disponibles, pero ningún módulo será incluido automáticamente al construir la aplicación.

Para incluir módulos en la aplicación construída, deben especificarse los módulos a incluir el campo Incluir módulos de los diálogos de Construir embebible o Construir para producción del gestor de aplicaciones.

Desarrollo de módulos

Cliente

Los módulos deben residir en cliente/modulos/nombre, donde nombre es el nombre del módulo. En este directorio pueden residir archivos .js y .css (el nombre es indistinto). Todos los archivos .js y .css serán incorporados al construir.

Cabe aclarar que si el módulo se crea en fuente, será copiado a desarrollo al construir el framework, pero puede ser creado/instalado directamente en desarrollo.

Los módulos se registran en el framework mediante ui.registrarModulo:

ui.registrarModulo("nombre",function() {
    this.nombre="nombre";

    /**
     * Inicializa la instancia tras ser creada.
     * @returns {modulo}
     */
    this.inicializar=function() {
        //Esta función es opcional, pero si se implementa debe incluir la siguiente línea siempre
        return this.clasePadre.inicializar.call(this);
    };
});

Servidor

Los módulos deben residir en servidor/modulos/nombre, donde nombre es el nombre del módulo. En este directorio pueden existir dos archivos: nombre.php y nombre.pub.php (el módulo puede contar con una o ambas clases), además de archivos adicionales de soporte del módulo, como otras clases, código fuente de librerías de terceros, etc.; todos los archivos serán copiados al construir.

Cabe aclarar que si el módulo se crea en fuente, será copiado a desarrollo al construir el framework, pero puede ser creado/instalado directamente en desarrollo.

Clase privada:

La clase privada debe ubicarse en nombre.php, denominarse igual que el módulo, extender \modulo y residir en el espacio de nombres \modulos\nombre (donde nombre es el nombre del módulo).

namespace modulos\nombre;
defined('_inc') or exit;

/**
 * Componente concreto.
 */
class nombre extends \modulo {
}

Clase pública:

La clase pública debe ubicarse en nombre.pub.php, denominarse igual que el módulo, extender \modulo y residir en el espacio de nombres \modulos\nombre\publico (donde nombre es el nombre del módulo).

namespace modulos\nombre\publico;
defined('_inc') or exit;

/**
 * Componente concreto.
 */
class nombre extends \modulo {
}

Recursos y librerías:

Los archivos JS y CSS del módulo serán integrados en el núcleo del framework al construir, pero no aquellos en subdirectorios. Además, si se agrega un archivo .ignorar en un subdirectorio, el mismo será omitido tanto en la construcción como en la documentación.

Entonces, si el módulo tiene estilos que se deben integrar con los estilos de Foxtrot, deben crearse en (por ejemplo) modulos/nombre/estilos.css, pero si tiene hojas de estilo que deben permanecer independientes, pueden crearse en modulos/nombre/css/hoja.css. Asimismo, si el módulo incluye una librería de terceros, se debe alojar en un subdirectorio, por ejemplo modulos/nombre/tinymce/ con un archivo modulos/nombre/tinymce/.ignorar (en blanco) para evitar que vuelva a ser copiado cada vez que se construya la aplicación y, además, que interfiera con la documentación.

Clone this wiki locally