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

Gestor de aplicaciones

Gabriel edited this page Aug 29, 2021 · 17 revisions

El gestor de aplicaciones permite:

  • Crear una aplicación en blanco
  • Crear y editar vistas
  • Crear controladores de servidor
  • Crear y sincronizar el modelo de datos
  • Ejecutar los asistentes
  • Construir la aplicación para embeber (Cordova) o producción

Para acceder al mismo se debe ingresar a la URL:

http://localhost/foxtrot-framework-master/gestor/ (reemplazando http://localhost/foxtrot-framework-master/desarrollo/ por la URL del servidor de desarrollo).

Nota: Debe construirse el framework antes de poder acceder al gestor.

¡Muy importante!

Actualmente, el gestor está en desarrollo y está pensado para uso personal en un servidor local, por lo que no presenta ningún tipo de seguridad. Implementar el directorio /gestor/ en un servidor público o compartido deja abierta la posibilidad de cargar código arbitrario. Por el mismo motivo, por el momento no presenta demasiadas validaciones ni control de errores, y debe usarse con precaución.

En el futuro, el gestor de aplicaciones debe evolucionar y llegar a contar con autenticación de usuarios y mecanismos de seguridad para trabajo en equipo en servidores de desarrollo, ya sea en la nube o en intranet.

Nota: El gestor y el editor están diseñados para uso en escritorio exclusivamente, y están probados en la última versión de Opera (WebKit).

Comandos del gestor

Selección de aplicación

El menú desplegable en la esquina superior izquierda permite cambiar entre las diferentes aplicaciones del sistema. Seleccionar otra aplicación, no cambia el enrutamiento de dominios. Cada aplicación debe estar correctamente configurada en el archivo config.php.

Nueva aplicación

Crea una aplicación en blanco con sus archivos y elementos básicos, y configurará Foxtrot para que la misma se ejecute en el dominio especificado. Los archivos serán creados en /desarrollo/aplicaciones/nombre/ (donde nombre es el nombre de la aplicación).

Es posible que sea necesario editar el archivo config.php de la aplicación para establecer una base de datos diferente u otros ajustes; el asistente creará un archivo de configuración en blanco.

Si se ingresa un nombre de dominio, el asistente intentará editar el archivo desarrollo/config.php. Esto solo funciona con el enrutador de aplicaciones predeterminado y el formato de configuración de ejemplo. Debe omitirse el dominio cuando se haya realizado una configuración diferente.

Ver Primeros pasos para más información.

Nueva vista

Abre el editor con los parámetros correspondientes para crear una nueva vista. El nombre puede presentar / para crear la vista en un subdirectorio.

Al crear una vista, será necesario especificar las siguientes configuraciones:

Modo:

  • Embebible: Almacenará solo el cuerpo de la vista, sin los tags <html>, <head>, <body>, scripts ni estilos, a fin de que sea una vista para insertar dentro de otra en tiempo de ejecución.
  • Independiente: Almacenará la vista en un archivo HTML que podrá abrirse en forma independiente (Predeterminado).

Cliente:

  • Web: Almacenará la vista para funcionar en un servidor web (Predeterminado).
  • Cordova: Al guardar, generará un archivo HTML compatible con Cordova.
  • Escritorio: Al guardar, generará un archivo HTML compatible con el cliente de escritorio de Foxtrot.

Más información sobre el editor.

Editar una vista

Se puede acceder al editor mediante el comando ubicado a la derecha de cada vista.

Más información sobre el editor.

Ejecutar una vista / Probar vista Cordova

Abre la vista en una nueva ventana. Este comando funciona únicamente si la aplicación utiliza el enrutador predeterminado, o para previsualizar vistas Cordova. En caso contarario, normalmente puede ejecutarse la aplicación ingresando en http://localhost/foxtrot-framework-master/desarrollo (reemplazando localhost/foxtrot-framework-master por la URL del servidor).

Importante: La aplicación debe estar configurada para el dominio actual (usualmente localhost) en el archivo config.php para que este comando funcione correctamente. El enrutamiento de dominios es independiente de la aplicación seleccionada en el gestor.

Nota: Probando vistas Cordova, normalmente tendrás que volver a ejecutarla, o volver a la vista inicial, para poder refrescar la página (refrescar con F5 puede no funcionar).

Renombrar una vista

Permite cambiar la ruta y el nombre de la vista.

Duplicar una vista

Duplica la vista y su controlador JS.

Eliminar una vista

Elimina la vista. ¡Esta acción no se puede deshacer!

Nuevo controlador de servidor

Crea un nuevo controlador de servidor (PHP). El nombre puede presentar / para crear el controlador en un subdirectorio.

Nuevo modelo de datos

Crea las clases para un nuevo modelo de datos con su entidad. El nombre del modelo puede presentar / para crear las clases en un subdirectorio (el nombre de la entidad no debe tener /, residirá automáticamente en la misma ruta que el modelo).

Es posible crear solo la clase de la entidad, sin implementar una clase concreta del modelo. Para ello, debe marcarse la opción Crear solo la entidad. En este caso, el nombre del modelo no debe contener /, y si se desea crear la entidad en un subdirectorio la ruta debe especificarse en el nombre de la entidad (lo opuesto al caso normal).

Nota: Luego de agregar las propiedades a la clase de la entidad, se puede crear la tabla correspondiente en la base de datos mediante el comando Sincronizar.

Más información sobre la estrcutrura de las clases del ORM.

Sincronizar base de datos

Crea o actualiza* las tablas a partir de la estructura del modelo de datos de la aplicación. Utiliza la base de datos y credenciales presentes en la configuración de la aplicación.

En caso de que sea necesario replicar la sincronización en otro servidor, el gestor mostrará las consultas SQL ejecutadas. El historial completo de consultas quedará almacenado en desarrollo/sincronizacion.sql.

Importante: Al actualizar las tablas, el asistente agrega las columnas correspondientes a nuevas propiedades, modifica las columnas que hayan cambiado de tipo u otros parámetros (por ej. valor predeterminado) y elimina las columas correspondientes a propiedades inexistentes o removidas. Nótese que renombrar una propiedad es equivalente a eliminar la columna anterior y crear una nueva. No ejecutes la sincronización sobre bases de datos con contenidos sin haber realizado una copia de seguridad previamente.

Asistentes

Asistentes de creación de vistas y controladores.

Asistente de creación de ABMC

El asistente creará vistas, controladores JS y un controlador PHP, y agregará métodos a la clase del modelo que permitan consultar, dar de alta, modificar y eliminar registros para el modelo especificado. No se sobreescribirán archivos si ya existen.

El asistente soporta algunas etiquetas adicionales en las propiedades de la entidad; ver: ORM.

Por defecto, todos los campos serán de ingreso de texto (en el futuro, variará según el tipo de columna y se añadirá la etiqueta @tipo para mayor precisión).

Nota: Usualmente será necesario realizar algunos ajustes manuales al código generado, esto genera solo una plantilla.

Construir embebible

Construye y compila todos los archivos cliente (JS, HTML y CSS) de la aplicación, generando los archivos para embeber en Cordova o el cliente de escritorio (/embeber/).

En el campo Incluir módulos deben específicarse los nombres de los módulos que se desean integrar en la aplicación, uno por línea. Esta configuración quedará guardada para las compilaciones futuras.

Es posible especificar la ruta al directorio www de la aplicación Cordova, en cuyo caso intentará copiar los archivos, y preparar y ejecutar la aplicación. Para que esto sea posible, la ruta debe estar dentro del alcance de PHP.

Nota: Debido a su naturaleza de script ejecutado por el servicio de Apache, el gestor no puede ejecutar aplicaciones interactivas (con GUI) como Electron o emuladores Android. Sí puede preparar todo para que solo reste ejecutar manualmente, por ejemplo, cordova run electron.

Nota: Al trabajar con Electron, Foxtrot provee un método simple para acceder a la ventana de Electron, la cual es inaccesible en Cordova: ui.obtenerElectron().

Nota: No hace falta construir la aplicación antes de construir la versión embebible.

Requisitos: shell_exec() debe estar habilitado y tanto JRE (Java) como Cordova deben estar disponibles en PATH para poder compilar el código JavaScript (cuando se desmarque el modo de depuración) y construir la aplicación.

Construir para producción

Construye y compila todos los archivos cliente (JS, HTML y CSS) de la aplicación, generando el entorno de producción (/produccion/).

En el campo Incluir módulos deben específicarse los nombres de los módulos que se desean integrar en la aplicación, uno por línea. Esto incluirá tanto la parte del lado del cliente como la parte de servidor de cada uno de los módulos. Esta configuración quedará guardada para las compilaciones futuras.

Nota: Los archivos /produccion/config.php y /produccion/.htaccess no son reemplazados a fin de preservar la configuración. Es muy probable que se requieran modificaciones en estos archivos para completar la implementación.

Requisitos: shell_exec() debe estar habilitado y JRE (Java) debe estar disponible en PATH para poder compilar el código JavaScript (cuando se desmarque el modo de depuración).

Desarrollo de asistentes

Es posible crear nuevos asistentes, los cuales se mostrarán en el diálogo de Asistentes del gestor de aplicaciones, simplemente agregando un archivo en /fuente/gestor/asistentes, el cual contenga una clase del mismo nombre extendiendo asistente.

Nota: Cuando el nombre de archivo contenga guiones, serán removidos y la primer letra de cada palabra será convertida a mayúscula, por ejemplo crear-aplicacion => crearAplicacion.

defined('_inc') or exit;

/**
* Asistente concreto.
*/
class miAsistente extends asistente {
    /**
    * Devuelve los parámetros del asistente. Debe devolver un objeto con las propiedades [titulo,visible=>bool].
    * @return object
    */
    public static function obtenerParametros() {
        return (object)[
            'titulo'=>'Nombre del asistente'
        ];
    }

    /**
    * Imprime el formulario de configuración del asistente.
    */
    public static function obtenerFormulario() {
?>
<div class="form-group row">
    <label class="col-3 col-form-label">Parámetro</label>
    <div class="col-sm-9">
        <input type="text" class="form-control" name="param">
    </div>
</div>
<?php
    }

    /**
    * Ejecuta el asistente.
    * @var object $parametros Parámetros recibidos desde el formulario.
    */
    public function ejecutar($parametros) {
        //Recibido $parametros->param desde el formulario
        
        //Lógica del asistente
    }
}
Clone this wiki locally