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 Sep 27, 2020 · 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/experimental-foxtrot-framework/gestor/ (reemplazando http://localhost/experimental-foxtrot-framework/desarrollo/ por la URL del servidor de desarrollo).

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

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).

¡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.

Comandos del gestor

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.

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.

Nuevo controlador de servidor

Crea un nuevo controlador de servidor (PHP).

Nuevo modelo de datos

Crea las clases para un nuevo modelo de datos con su entidad.

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, 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. Por lo tanto, es recomendable realizar una copia de seguridad antes de sincronizar una tabla con datos.

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: 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