martes, 23 de septiembre de 2014

SSL en testing

Ahora los testeos son con más seguridad! Cuando tu aplicación cumple con tus expectativas, puedes utilizar tu mismo testeo como aplicación final. Éste es uno de los objetivos de DynProj, para esto, solo debes borrar los datos de prueba desde la consola de tu proyecto haciendo clic en el ícono:


 






Si necesitas una url mas amigable, comunicare con el equipo de DynProj.

miércoles, 16 de julio de 2014

Como trabajar con DynProj

Aquí se presenta un ejemplo sencillo de una metodología de trabajo con DynProj para realizar proyectos rápidos. Dentro de un proyecto, debemos hacer que DynProj se ocupe del desarrollo de los ABM (Alta-Baja-Modificación a la base de datos), y luego trabajamos en el resultado para llegar a lo que queremos.

En éste blog se van a realizar diferentes publicaciones para demostrar como se ahorra tiempo con ésta metodología.

En éste caso, queremos mostrar como realizar acciones dinámicas en un formulario. Como ejemplo tenemos una empresa de turismo que desea registrar los pedidos. Cuando se ingresa un nuevo pedido, dependiendo del servicio y de la cantidad de integrantes nos da el costo total. La figura 1 muestra el resultado deseado y al final un pequeño video para verlo en funcionamiento.


Primero creamos el proyecto


Luego creamos el formulario "Servicios", posee dos campos, uno para registrar en nombre del servicio y el otro el costo.


Para el formulario "Pedidos" tenemos:

Nombre sirve para identificar el pedido.
Descripción para realizar las aclaraciones que crea conveniente.
Servicio se puede seleccionar de los servicios ingresados en el formulario Servicios.
Costo éste campo sirve para guardar un historial de los costos en los momentos que se realizaron los pedidos.
Fecha sirve para cargar la fecha del pedido.
Integrantes se ingresa la cantidad de integrantes que van a utilizar el servicio.
Total si bien éste valor se puede calcular automáticamente por medio del costo del servicio y la cantidad de integrantes (por lo tanto no sería necesario cargarlo en la base de datos), lo vamos a registrar para el caso en que el usuario que carga la información quiera modificar el total y luego aclarar en la parte de descripción.


Creamos un reporte para Pedidos.


Creamos otro reporte para servicios.


Ajustamos el menú


Cargamos un par de grupos de usuarios, para diferenciar permisos.



Cargamos un par de usuarios como ejemplo, un para usuario corriente y otro para administrador.



Luego de descargar el proyecto, cuando lo publicamos en nuestro computador o servidor está casi completo como lo queremos, sin ser la parte de la visualización de los pedidos. No queremos que el usuario tenga que cargar siempre el total (calculándolo a mano). También queremos que el costo aparezca cuando seleccionamos un servicio.



Hasta aquí es lo que podemos hacer con DynProj, en pocos minutos realizamos los abm de Servicios, Pedidos, sus respectivos informes, control de usuario, grupos de usuario y menú. También la gestión de usuarios y grupos. Para completar, ahora debemos trabajar en el producto descargado:

Vista de Pedidos
Archivo: views/pedidos.php

Aquí vamos a cambiar la visualización de la toma de pedidos, creando también la cuenta automática cuando se selecciona un servicio o se agregan integrantes.

- Cambio en el combobox de servicios, se agrega:

onSelect: function(rec){ obtenerCosto(rec.id); }

Código resultante:

<input id="servicio"  class="easyui-combobox" style="width:300px" name="servicio"  url="<?php echo base_url()."servicios/dataFullToSelect/"; ?>" data-options="valueField:'id',textField:'text', onSelect: function(rec){ obtenerCosto(rec.id); }" style="width:250px">

- Agregar las siguientes funciones JavaScript:

function obtenerCosto(id){
        jQuery.post("<?php echo base_url()."servicios/costo"; ?>",{
            id:id,
            <?php echo $this->config->item("csrf_token_name"); ?>: csrf_token_value
        },function(result){
            if(result.success){
                $('#costo').numberbox('setValue', result.costo);
                calcular();
            } else {
                $('#costo').attr('value', '');
                $('#total').attr('value', '');
                jQuery.messager.show({
                    title: "Error",
                    msg: result.msg
                });
            }
        },"json");
    }
    function calcular(){
        if ((!isNaN($('#costo').numberbox('getValue'))) && (!isNaN($('#integrantes').numberbox('getValue')))){
            var resultado = $('#costo').numberbox('getValue') * $('#integrantes').numberbox('getValue');
            $('#total').numberbox('setValue', resultado);
        }
    }


Controlador de Servicios
Archivo: controllers/servicios.php

Cuando se selecciona un servicio en el combo de la vista de pedidos, se solicita el costo por medio de Ajax, éste controlador es el que responde. Su acción principal es derivar la solicitud al modelo de servicios.

Agregar el siguiente código:

public function costo($id=null) {
        if (!isset($_POST))
            show_404();
        $id = intval(addslashes($_POST["id"]));
        $result = $this->servicios_model->costo($id);
        if ($result >= 0)
            echo json_encode(array("success" => true, "costo" => $result));
        else
            echo json_encode(array("msg" => "Error al cargar el registro."));
 }


Modelo de Servicios
Archivo: models/servicios_model.php

Aquí se realiza la consulta, dado el identificador del servicio,  devuelva el costo.

Agregar el siguiente código:

public function costo($id) {
    $sql = "SELECT costo FROM servicios WHERE id = ".$id.";";
    $query = $this->db->query($sql);
    foreach ($query->result_array() as $data) {
        return $data["costo"];
    }
    return 0;
}


Estilos
Archivo: css/dynproj.css

Se realiza un ajuste en el input del total para resaltar su valor:

Código:

#total{
    font-weight: bold;
    text-align: right;
}

Y ahí queda pronto, a continuación un pequeño video que demuestra su funcionamiento.


martes, 10 de junio de 2014

Video 07: ejemplo de aplicación resultante

Aquí se presenta la aplicación resultante en el trabajo realizado en los vídeos anteriores.




Video 05: como crear grupo de permisos

En este video se presenta como crear grupos de permisos (accesos) a las diferentes opciones del menú.

Cuando seleccionamos un menú en el acceso (o grupo de accesos), dynproj permite que los usuarios que estén dentro de ese grupo puedan acceder por completo a esa opción de menú. Esto quiere decir que si un usuario esta dentro del grupo "usuarios" y este grupo puede ver la opción de menú países, y a su vez, esta opción de menú apunta al formulario países, ese usuario tiene acceso completo al formulario países (puede crear, editar y eliminar países).

Si lo que necesitamos es un grupo para que sólo pueda visualizar países pero que no pueda cargar, editar o eliminar países, lo que se debe hacer es un reporte con los campos del formulario países, crear una opción en el menú que apunté a ese reporte, y agregar esa opción de menú al grupo.





Video 04: como crear un menu

En este video se presenta como crear y administrar opciones de menú. Una estructura de menú clara y simple proporciona a los usuarios un acceso rápido y cómodo para llegar al formulario o reporte deseado.


Video 03: Como crear un reporte

En este video se presenta como crear reportes a partir de los campos ingresados en los formularios. Cuando se selecciona un campo para un reporte, da como opciones campos no seleccionados previamente. También en la selección muestra campos de formularios relacionados de acuerdo a las selecciones anteriores.




Video 02: Como crear un formulario

Este video presenta de manera sencilla como crear un nuevo formulario de carga de información en DynProj.