Versión 2.17.0 (en desarrollo)
  • [r2.17.0.964 - 24/01/2019] Se agrega la posibilidad de incluir código extra en los documentos de tipo Reporte ODT (reporte_odt), en las ubicaciones que están disponibles para todos los tipos de página.
  • [r2.17.0.959 - 23/05/2017] Nueva ubicación de código extra para formularios: antes_accion.
  • [r2.17.0.958 - 23/05/2017] (Ticket #137) Para permitir que se cancele el upload de archivos en un envío de formulario, se agrega el nuevo método PHP FormFileUpload::cancelar(). También se agregan los métodos FormFileUpload::fueCancelado() y FormFileUpload::motivoCancelado() (upload.inc.php).
  • [r2.17.0.955 - 23/05/2017] Nuevos métodos PHP: Upload::rutaAbsolutaUpload(), FormFileUpload::tamanio() y FormFileUpload::tipo() (upload.inc.php).
  • [r2.17.0.954 - 23/05/2017] Se agrega la posibilidad de incluir código extra en las definiciones de menúes, en las ubicaciones que están disponibles para todos los tipos de página.
  • [r2.17.0.951 - 22/02/2016] Nuevo parámetro en los métodos PHP Javascript::construirLista(), Javascript::construirObjeto() y Javascript::construirArray(): $claves_como_strings = false (javascript.inc.php).
  • [r2.17.0.949 - 22/02/2017] (Ticket #135)

    Se agrega funcionalidad en el cliente, opcional, para prevenir el envío múltiple de formularios.

    • Nueva opción para generación en el archivo de configuración de la aplicación (aplicacion.xml): /aplicacion/generacion/formularios/evitar-envio-multiple.
    • Nueva opción para formularios: /formulario/evitar-envio-multiple. Tiene mayor prioridad que la opción global en aplicacion.xml.

    Esta funcionalidad se puede habilitar globalmente usando aplicacion.xml:/aplicacion/generacion/formularios/evitar-envio-multiple/@habilitar='true' y deshabilitar en formularios individuales con {entidad}_formulario.xml:/formulario/evitar-envio-multiple/@habilitar='false', o viceversa.

  • [r2.17.0.943 - 24/08/2016] Nuevo parámetro en los métodos PHP Mensaje::porTipo(), Mensaje::error(), Mensaje::alerta(), Mensaje::notificacion(), Mensaje::info(), Mensaje::generico(): $registrar = true (mensaje.inc.php), para controlar si se debe registrar el mensaje a través del Auditor.
  • [r2.17.0.942 - 24/08/2016] Nuevos parámetros de configuración de la aplicación: inclusion_inicio_head e inclusion_fin_head. Permiten incluir contenido personalizado después de la apertura y antes del cierre, respectivamente, del elemento head en todas las páginas HTML generadas.

    Advertencia de compatibilidad: Hasta el momento, si una aplicación generada contenía un archivo con nombre head.inc.php en su directorio raíz, éste se incluía antes de cerrar el elemento head. Esta funcionalidad (no documentada) de inclusión implícita quedó reemplazada por la definición explícita de inclusion_fin_head; por lo tanto, para mantener el comportamiento existente en las aplicaciones que estuvieran utilizando este archivo, se deberá definir inclusion_fin_head con valor 'head.inc.php'.

  • [r2.17.0.938 - 19/07/2016] Nuevo atributo para columnas de listados: /listado/columnas/*/@clase-expr; complementa al ya existente /listado/columnas/*/@clase.
  • [r2.17.0.937 - 19/07/2016] (Ticket #134) Corrección de funcionalidad incompleta: En #94 (r2.15.0) se agregó el atributo /listado/columnas/*/@clase, pero sólo se estaba aplicando en columnas regulares (columnas/columna) de listados normales; no se tenía en cuenta en listados de tipo seleccion ni seleccion_m, ni en columnas/acciones, columnas/checkbox ni columnas/combo. Ahora sí se aplica en todos los lugares mencionados.
  • [r2.17.0.934 - 19/07/2016] (Ticket #132) Corrección de deficiencia en la implementación de campos Seleccionables autocompletables en formularios: no se procesaban elementos XInclude en el listado asociado al campo; por lo tanto, si el listado contenía XIncludes, es posible que el autocompletable no funcionara correctamente.

    Para evitar posibles problemas de compatibilidad en aplicaciones existentes, el comportamiento predeterminado sigue siendo no procesar XInclude en los listados asociados; para hacerlo, es necesario habilitarlo explícitamente, usando uno de los siguientes atributos:

    • Para toda la aplicación: /aplicacion/generacion/formularios/@procesar-xinclude-documentos-relacionados = "true" en aplicacion.xml.
    • Para un campo particular: campo/entidad/@procesar-xinclude = "true" en *_formulario.xml.
  • [r2.17.0.933 - 19/07/2016] Nuevo método PHP XgapXml::loadDocumentFromFile() (xml.inc.php).
  • [r2.17.0.932 - 05/07/2016] Listados en formato HTML: se agregan clases al elemento contenedor del navegador de paginación. Estas clases están documentadas en el nuevo método PHP Componentes::clasesNavegador() (componentes.inc.php).
  • [r2.17.0.931 - 05/07/2016] Nuevo elemento y atributo para listados: /listado/configuracion/paginador/@filas-por-pagina.
  • [r2.17.0.928 - 24/05/2016] Nuevo método PHP Conexion::expresionComparacionValorEntre() (conexion.inc.php).
  • Mejoras en el buscador personalizado en listados:
    • [r2.17.0.927 - 24/05/2016] Se agrega la posibilidad de incluir separadores entre los campos: buscador/personalizado-simple/separador.
    • [r2.17.0.926 - 24/05/2016] Nuevo atributo, en tipos texto, calendario, combo y combobd: buscador/personalizado-simple//{texto|calendario|combo|combobd}/@etiqueta-pos.
    • [r2.17.0.925 - 24/05/2016] Nuevo atributo: buscador/personalizado-simple//*/@es-param-condicion-consulta.
  • [r2.17.0.921 - 13/05/2016] Cambios en la clase PHP Auditor (auditor.inc.php):
    • Nuevo parámetro en el método Auditor::log(): $en_error.
    • Nuevas constantes que definen los valores posibles para este parámetro: Auditor::EN_ERROR_*.
  • [r2.17.0.920 - 13/05/2016] Nuevos métodos PHP: Formateo::textoTipoErrorPhp(), Formateo::errorPhp() (formateo.inc.php).
  • [r2.17.0.919 - 21/04/2016] Nueva opción para generación en el archivo de configuración de la aplicación (aplicacion.xml): /aplicacion/generacion/@copiar-paginas-predefinidas.
  • [r2.17.0.918 - 21/04/2016] Nuevo método PHP Request::hostYPuerto() (request.inc.php).
  • [r2.17.0.917 - 21/04/2016] Nuevo método PHP Mensaje::porTipo() (mensaje.inc.php).
  • [r2.17.0.915 - 21/04/2016] Nuevo parámetro en los métodos PHP Form::combo_bd_sin_hidden y Form::combo_bd: $agregar_opcion_vacia (form.inc.php).
Versión 2.16.1 (17/04/2016)
  • [r2.16.1.855 - 04/12/2015] Nuevo atributo para la condición de acciones globales en listados: configuracion/acciones/accion/condicion/@efecto.
  • [r2.16.1.853 - 27/10/2015] En reportes ODT se agrega la posibilidad de indicar en cada solicitud si se debe realizar o no la conversión a PDF, a través de una variable PHP global booleana con nombre $emitir_pdf o de un parámetro de request con nombre xgap_conv.

    Para que se tengan en cuenta los valores mencionados, debe estar definida la constante PHP XGAP_COMANDO_GENERACION_PDF (ver item previo).

  • [r2.16.1.852 - 23/10/2015] En reportes ODT se agrega la posibilidad de emitir el reporte en formato PDF, convirtiendo internamente el ODT generado a PDF mediante un comando externo. Para ello debe estar definida la constante PHP XGAP_COMANDO_GENERACION_PDF y su valor debe ser el comando a ejecutar.

    Esta nueva funcionalidad está definida en el código de salida predeterminado, es decir que no se aplica en reportes que usan salida personalizada (/odt/configuracion/salida).

  • [r2.16.1.846 - 09/10/2015] Nuevo parámetro de configuración de la aplicación: formato_consultas_log. Indica el formato en que se deben guardar las consultas a la base de datos en el log de la aplicación. Si no se especifica o se usa el valor 'mantener', se mantiene el comportamiento previo, que es no aplicar ningún formato.
  • Mejoras para reportes ODT:
    • [r2.16.1.842 - 06/10/2015] Nuevo elemento: /odt/configuracion/template/xslt-adicional.
    • [r2.16.1.843 - 06/10/2015] Nuevo elemento: /odt/configuracion/reporte/meta.
  • [r2.16.1.840 - 06/10/2015] Nueva clase PHP: XgapODFXSLTProcessorExt (odf-xslt-ext.inc.php).
  • [r2.16.1.836 - 06/10/2015] Nuevo atributo para imprimibles en listados: configuracion/imprimibles/imprimir/@maximo-filas-permitidas.
  • [r2.16.1.834 - 06/10/2015] Nuevo parámetro opcional para el método PHP Componentes::controlImprimir(): $tip (componentes.inc.php).
  • Nuevas opciones para menúes:
    • [r2.16.1.824 - 08/09/2015] Los siguientes atributos admiten expresiones embebidas, cuando están habilitadas para la aplicación (/aplicacion/generacion/expresiones-embebidas/@habilitar = 'true'): carpeta/@nombre, carpeta/@roles, carpeta/@id, carpeta/@tip, carpeta/@clase, item/@nombre, item/@roles, item/@id, item/@url, item/@tip, item/@clase, separador/@roles.
    • [r2.16.1.825 - 08/09/2015] Nuevos atributos para items: item/@target y item/@usar-seguridad.
  • [r2.16.1.823 - 08/09/2015] Nueva opción de configuración de la aplicación /aplicacion/generacion/expresiones-embebidas (aplicacion.xml).
  • [r2.16.1.822 - 08/09/2015] Nuevos métodos Flash::descartarActual() y Flash::descartarSiguiente() (flash.inc.php).
  • [r2.16.1.816 - 14/05/2015] (Ticket #124) Nuevo atributo para columnas de acciones en listados: columnas/acciones/accion/@mostrar-si-deshabilitada.
  • [r2.16.1.814 - 13/05/2015] (Ticket #123) Nuevos elementos para formularios: /formulario/configuracion/flash/mensaje-insert-ok, /formulario/configuracion/flash/mensaje-update-ok, /formulario/configuracion/flash/mensaje-delete-ok y /formulario/configuracion/flash/mensaje-firma-digital-ok.
  • [r2.16.1.813 - 13/05/2015] Nuevo parámetro para la ubicación de código extra en masters 'despues_inicializacion': 'recordset'.
  • [r2.16.1.812 - 11/05/2014] Nuevo atributo para campos de formularios: campos//campo/@mostrarLinkDeshabilitado.
    Es equivalente al ya existente para listados columnas/columna/@mostrarLinkDeshabilitado.
  • [r2.16.1.805 - 08/04/2015] (Ticket #122) En campos de formulario de tipo ComboBD, se permite especificar el texto a mostrar en la opción del combo que corresponde a selección vacía, en vez del predefinido "--".
    • Nuevo parámetro para los métodos PHP Form::combo_bd() y Form::combo_bd_sin_hidden(): $texto_opcion_vacia.
    • Nuevo elemento y atributo para campos de formulario @tipo="ComboBD": campo/opcion-combobd-seleccion-vacia/@texto.
  • [r2.16.1.802 - 07/04/2015] Nuevo parámetro para el método PHP Json::codificar(): $es_utf8 = false.
  • [r2.16.1.794 - 26/03/2015] Nueva ubicación de código extra para formularios: despues_accion.
  • [r2.16.1.789 - 11/03/2015] Nuevo parámetro para los métodos PHP Conexion::existeFila(), Conexion::existeFilaCond(), Conexion::metaDatos(), Conexion::ajustarMetacolumnas(), Conexion::getTablas() y Conexion::getVistas(): $excepcion = false.
  • [r2.16.1.788 - 11/03/2015] (Ticket #119) Nuevo atributo para formularios: /formulario/campos/@considerar-request-inicializacion-valores-modificacion.
  • [r2.16.1.779 - 20/12/2014] Cambio en la clase PHP Conexion: se incluyen registros de operaciones sobre transacciones en el log de la aplicación.

    Nuevo parámetro en los métodos StartTrans(), CompleteTrans() y FailTrans(): $log = true, para indicar si se debe registrar o no.

  • [r2.16.1.778 - 20/12/2014] Se agrega la posibilidad de incluir en el log de la aplicación los mensajes emitidos a través de la clase Mensaje y de instancias de la clase ObjetoMensaje, y los errores producidos al procesar formularios.
    • Nuevo parámetro de configuración de la aplicación: tipos_mensaje_incluir_log.
    • Nuevo parámetro en los métodos PHP ObjetoMensaje::nuevo() y ObjetoMensaje::nuevoErrorPredefinido(): $guardar_backtrace.
    • Nuevo método PHP ObjetoMensaje::backtrace().
  • [r2.16.1.777 - 20/12/2014] Nuevo método PHP AplicacionXgap::realFullAppDir().
  • [r2.16.1.776 - 20/12/2014] Nuevo atributo en listados: /listado/consulta/condiciones_de_parametros//param/@ignorar-en-determinacion-filtro-vacio.
  • [r2.16.1.774 - 20/12/2014] Nuevo elemento para listados: /listado/configuracion/master. Complementa al ya existente /listado/configuracion/form.
  • [r2.16.1.769 - 20/12/2014] Nuevo parámetro para las ubicaciones de código extra en formularios 'despues_insert', 'despues_update' y 'despues_delete': 'realizar_redireccion'.
  • [r2.16.1.767 - 20/12/2014] Cuando se limpia un buscador personalizado en un listado usando el botón "Limpiar", ahora se envía en el POST el parámetro "accion" con el valor definido por la nueva constante BuscadorPersonalizadoSimple::VALOR_ACCION_LIMPIAR_BUSCADOR_PERS.
  • [r2.16.1.765 - 20/12/2014] Se introduce la posibilidad de usar un archivo de configuración de XGAP local: xgap.local.php.

    Si en el mismo directorio que xgap.php existe un archivo con nombre xgap.local.php, se usan las definiciones de constantes de configuración que haya en este último, en vez de las correspondientes del primero.

    Esto permite mantener xgap.php intacto, simplificando el proceso de actualización de la versión instalada de XGAP, ya que no se pierde la configuración si se sobreescribe este archivo con la nueva versión.

  • [r2.16.1.764 - 20/12/2014] Cambio en la clase PHP Conexion_oci8: se implementa el método referenciasEntrantes(), que antes retornaba siempre un valor vacío.
  • [r2.16.1.763 - 20/12/2014] Cambio en la estructura retornada por el método PHP Conexion::referenciasEntrantes(). Anteriormente no se podía retornar más de una referencia por cada tabla referenciante; la nueva estructura sí lo permite.
    La estructura anterior se incluye en la nueva por compatibilidad con versiones anteriores.
  • [r2.16.1.761 - 20/12/2014] Cambio en la clase PHP Conexion_postgres8: se implementan los métodos comentarioTabla() y comentariosColumnas(), que antes retornaban siempre un valor vacío.
  • [r2.16.1.760 - 20/12/2014] Nuevos parámetros para los métodos Conexion::comentarioTabla() y Conexion::comentariosColumnas(): $esquema = null, $excepcion = false.
  • [r2.16.1.758 - 20/12/2014] Nuevo parámetro para el método Conexion::clavesExtranjeras(): $esquema = false.
Versión 2.16.0 (19/12/2014)
  • [r2.16.0.743 - 10/11/2014] (Ticket #118) Nuevo elemento para acciones globales de listados: configuracion/acciones/accion/confirmar-ejecucion.
  • [r2.16.0.741 - 27/10/2014] Nuevo parámetro para la ubicación de código extra en formularios 'antes_redirigir': 'es_destino_predeterminado'.
  • [r2.16.0.737 - 30/08/2014] (Ticket #115) Nuevo elemento para campos de formulario: campo/condicion-no-editable.
  • [r2.16.0.736 - 30/08/2014] Nuevo parámetro para la ubicación de código extra en formularios 'despues_inicializacion': 'recordset'.
  • [r2.16.0.732 - 27/06/2014] Nueva ubicación de código extra para listados: despues_consulta.
  • [r2.16.0.729 - 27/06/2014] Nuevo método: Formateo::textoPlanoAHtml().

    Advertencia de compatibilidad: La versión mínima requerida de PHP pasa a ser 5.2.4.

  • [r2.16.0.727 - 22/05/2014] Nuevo elemento para menúes de details en masters: details/menu/condicion.
  • [r2.16.0.723 - 18/05/2014] (Ticket #75) Se agrega modo de mantenimiento.
    • Nueva sección en la guía de usuario para documentar este modo: Administración → Modo de mantenimiento.
    • Nuevos parámetros de configuración en_mantenimiento, pagina_mantenimiento, mensaje_mantenimiento, paginas_accesibles_en_mantenimiento y rolfs_acceso_en_mantenimiento.
    • Nueva página predefinida: aplicacionenmantenimiento_contenido.xml.
  • [r2.16.0.721 - 18/05/2014] Cambios en la interfaz iSeguridad:

    Nuevas constantes iSeguridad::VAR_SESION_ID_USUARIO_ACTUAL, iSeguridad::VAR_SESION_NOMBRE_CORTO_USUARIO_ACTUAL, iSeguridad::VAR_SESION_NOMBRE_COMPLETO_USUARIO_ACTUAL, iSeguridad::VAR_SESION_ID_ROLF_ACTUAL y iSeguridad::VAR_SESION_NOMBRE_ROLF_ACTUAL.

    Nuevos métodos iSeguridad::usuarioLogueado() y iSeguridad::rolFuncionalUsuarioLogueado(), implementados en Seguridad::usuarioLogueado() y Seguridad::rolFuncionalUsuarioLogueado().

    Advertencia de compatibilidad: Las aplicaciones que utilicen una clase de seguridad personalizada (parámetro de configuración clase_seguridad) que no herede de la implementación provista por XGAP (clase Seguridad) deberán implementar estos métodos.

  • [r2.16.0.716 - 18/05/2014] Nueva constante PHP: FULL_APP_DIR. Contiene la ruta completa del directorio raíz de la aplicación en ejecución.
  • [r2.16.0.713 - 13/05/2014] Nuevo atributo para páginas de tipo listado, formulario, master, contenido y grafico: /*/@clases.
  • [r2.16.0.705 - 30/04/2014] Cambios en los mensajes de flash:
    • Se agrega la posibilidad de mostrar acciones predefinidas en los mensajes, una para cerrar el cuadro de mensajes y otra para mantenerlo visible (transformarlo en permanente cuando es transitorio). Estas acciones están controladas por nuevos parámetros de configuración de la aplicación: mostrar_acciones_mensajes_flash, accion_mensajes_flash__cerrar__texto, accion_mensajes_flash__mantener__texto.
    • Ahora se puede especificar el efecto a usar cuando se muestran y ocultan los mensajes, mediante los parámetros de configuración de la aplicación efecto_abrir_mensajes_flash_transitorios, efecto_cerrar_mensajes_flash_transitorios, efecto_abrir_mensajes_flash_permanentes, efecto_cerrar_mensajes_flash_permanentes
  • [r2.16.0.704 - 30/04/2014] Nuevo atributo para columnas de listados: columnas/columna/@mostrarLinkDeshabilitado.
  • [r2.16.0.703 - 30/04/2014] Nuevos parámetros para las ubicaciones de código extra en masters 'antes_valor_campo' y 'despues_valor_campo': 'recordset' y 'valores'.
  • [r2.16.0.702 - 30/04/2014] Nuevo método PHP Formateo::truncar().
  • [r2.16.0.701 - 30/04/2014] Nuevo método PHP Conexion::crearConsultaGenerica().
  • [r2.16.0.700 - 30/04/2014] Nueva ubicación de código extra para listado, listado_seleccion, listado_seleccion_m y listado_master_inline: antes_fila_datos.
  • [r2.16.0.699 - 30/04/2014] Nuevo método PHP EstructuraPagina::esSimple().
  • [r2.16.0.695 - 29/04/2014] Nuevas funciones PHP xgap_array_insert() y uriPaginaActual() (funciones.php).
  • [r2.16.0.694 - 29/04/2014] Cambios en la clase PHP Html:
    • Nuevo método Html::heading().
    • Los métodos Html::cerrarTag(), Html::elemento(), Html::cerrarComentario() y Html::comentario() reciben un nuevo parámetro: $salto_linea. Si en la invocación no se pasa este parámetro, el comportamiento de los métodos es el mismo que antes.
  • [r2.16.0.693 - 29/04/2014] En campos de buscadores personalizados de tipo rangofechas (buscador/personalizado-simple/rangofechas) se incluye un botón que permite vincular los campos de inicio y fin del rango, haciendo que los dos tengan el mismo valor. De esta manera se hace más sencillo buscar una fecha específica, dado que sólo hace falta seleccionarla una vez.

    El elemento generado es un button con clase ButtonLinkFields.

  • [r2.16.0.691 - 29/04/2014] Se incluye el script formulario.js en páginas de tipo listado, seleccion, contenido y grafico.

    Advertencia de compatibilidad: Las páginas de estos tipos que incluyan manualmente formulario.js, por ejemplo mediante configuracion/inclusiones/archivo, deberían ser modificadas para quitar esta inclusión manual; de lo contrario el archivo se va a estar cargando dos veces.

  • [r2.16.0.689 - 29/04/2014] Nueva clase javascript XGAP_FORM.LinkedFieldSet (formulario.js).
  • [r2.16.0.688 - 29/04/2014] El flash ahora se puede deshabilitar, tanto para el request actual como para el siguiente. Este estado de deshabilitación se emplea para indicar que no se deben mostrar automáticamente sus contenidos al cargar la página, pero no afecta de ningún otro modo su funcionamiento; las operaciones sobre él se siguen comportando de la misma manera.

    Nuevos métodos en la clase PHP Flash (flash.inc.php): Flash::estaDeshabilitadoActual(), Flash::estaDeshabilitadoSiguiente(), Flash::cambiarDeshabilitadoActual(), Flash::cambiarDeshabilitadoSiguiente().

  • [r2.16.0.687 - 29/04/2014] Nuevo parámetro de request predefinido, con nombre dado por la nueva constante PHP RequestXgap::PARAMETRO_SIN_FOCO_INICIAL_AUTOMATICO. Si está presente en el request y tiene valor verdadero, en los formularios no se cambia el foco automáticamente al primer campo habilitado o al definido por /formulario/campos/@foco-inicial.
  • [r2.16.0.686 - 29/04/2014] Se agrega la posibilidad de registrar en el cliente el estado de los campos del formulario, usando el módulo javascript XGAP_FORM.FormState. La generación de esta característica está controlada por dos nuevos atributos XML: la opción de configuración de la aplicación (aplicacion.xml) /aplicacion/generacion/formularios/@registrar-estado-cliente-campos y la opción para formularios /formulario/@registrar-estado-cliente-campos.
  • [r2.16.0.684 - 29/04/2014] Nuevo módulo javascript para usar con formularios (formulario.js): XGAP_FORM.FormState.
  • [r2.16.0.683 - 29/04/2014] Nuevo atributo para el control de borrado lógico en listados: borrado-logico/valor/@boolean.
  • [r2.16.0.681 - 29/04/2014] Se agrega la posibilidad de usar la ubicación de código extra 'despues_inicializacion' en páginas de tipo listado_master_inline.
  • [r2.16.0.678 - 29/04/2014] Nuevo parámetro para la ubicación de código extra despues_obtener_vbles_sistema: 'agregado'.
  • [r2.16.0.667 - 31/03/2014] Nuevos atributos para definiciones de parámetros de request en listados y masters:
    • En listado: @nombre-expr y @expr en /listado/configuracion/acciones/accion/destino/parametros/parametro, /listado/columnas/columna/imagen/miniatura/parametros/parametro, /listado/columnas/columna/imagen/link/parametros/parametro y /listado/columnas/acciones/accion/destino/parametros/parametro; @nombre-expr en /listado/columnas/columna/parametros-link/parametro.
    • En master: @nombre-expr y @expr en /formulario/acciones/accion/parametros/parametro.
  • [r2.16.0.666 - 31/03/2014] Nueva función PHP: urlCompletoServidor() (funciones.php).
  • [r2.16.0.665 - 31/03/2014] Cambios en la clase PHP Request (request.inc.php):
    • Nuevos métodos: Request::esSeguro(), Request::esquema(), Request::host() y Request::puerto().
    • El método Request::metodo() ahora retorna el resultado siempre en mayúsculas.
  • [r2.16.0.650 - 24/03/2014] Nuevo atributo para controlar la validación en el cliente en campos de formulario: campos//campo/validacion-cliente/@excluir.
  • [r2.16.0.649 - 24/03/2014] Nueva ubicación de código extra para formularios: antes_procesar_uploads.
  • [r2.16.0.647 - 24/03/2014] Nuevos métodos PHP (upload.inc.php): FormFileUpload::linkArchivo(), FormFileUpload::fueMovido(), FormFileUpload::cambiarDirDestino(), FormFileUpload::cambiarNombreArchivo(), FormFileUpload::valor().
  • [r2.16.0.646 - 24/03/2014] Nueva excepción PHP: XgapIllegalStateException (illegalstateexception.inc.php).
  • [r2.16.0.644 - 24/03/2014] Nuevas funciones PHP (funciones.php): extraer_directorio_pagina() y uniformizar_separadores_directorio().
  • [r2.16.0.643 - 24/03/2014] Se agregó una página que permite comprobar si el entorno cumple con los requerimientos de un motor de XGAP. (/test_reqs.php).

    Además, en la parte inferior de la página principal del generador se agregaron links que llevan a esta nueva página (se muestra automáticamente uno por cada versión de motor instalada).

  • [r2.16.0.641 - 24/03/2014] Nuevo atributo para campos en masters: /formulario/campos//campo/@mostrar-saltos-linea.
  • [r2.16.0.640 - 24/03/2014] Nuevos elementos y atributos para acciones en masters (/formulario/acciones/accion): @imagen, @teclaacceso, @historial, @pasarParametrosDetail, tip, preparar.
    Además, el elemento link ahora puede no estar presente, lo que indica que la acción debe enviar el request a la misma página.
  • [r2.16.0.639 - 24/03/2014] Nuevos elementos: /listado/configuracion/texto-listado-vacio y /listado/configuracion/texto-listado-vacio-con-filtros para listados; /formulario/details/detail/texto-listado-vacio para masters.
  • [r2.16.0.638 - 24/03/2014] El parámetro de request RequestXgap::PARAMETRO_PAG_RETORNO ahora admite el valor especial SELF, que hace que el URL de retorno sea el mismo del request; es decir, causa que la página vuelva sobre sí misma con los mismos parámetros GET.

    Se puede usar, por ejemplo, para que un formulario se vuelva a cargar después de realizar la operación, en vez de volver a la página de retorno normal.

  • [r2.16.0.637 - 24/03/2014] Nuevos atributos para el elemento de formularios /formulario/campos//campo/destino-link/parametros/parametro: @nombre-expr, @dato y @expr.
  • [r2.16.0.623 - 26/11/2013] Nuevos elementos en javascript para formularios (formulario.js). Namespaces: XGAP_FORM.Select y XGAP_FORM.Select.Chained. Funciones y clases: XGAP_FORM.Select.resetSelection, XGAP_FORM.Select.setOptionsData, XGAP_FORM.Select.getOptionsData, XGAP_FORM.Select.getOptionData, XGAP_FORM.Select.OptionsFilter, XGAP_FORM.Select.Chained.ChildOptionsFilterByParentSelectedOptionData.

    Ejemplo: filtro de las opciones de un select de acuerdo al valor seleccionado en otro:

    <select id="padre" name="padre">
      <option value="" selected="selected">--</option>
      <option value="p1">Padre 1</option>
      <option value="p2">Padre 2</option>
    </select>
    <select id="hijo" name="hijo">
      <option value="" selected="selected">--</option>
      <option value="h1">Hijo 1</option>
      <option value="h2">Hijo 2</option>
      <option value="h3">Hijo 3</option>
      <option value="h4">Hijo 4</option>
    </select>
    <script type="text/javascript">
    jQuery(document).ready(function () {
      var combo_padre = obtener_elemento("padre"),
          combo_hijo = obtener_elemento("hijo"),
          datos_filtro = {
            "": true,
            "p1": [ "", "h2", "h3" ]
          };
      XGAP_FORM.Select.setOptionsData(combo_padre, "filtro", datos_filtro, [""], "value");
      (new XGAP_FORM.Select.Chained.ChildOptionsFilterByParentSelectedOptionData(
          combo_padre, combo_hijo, "filtro", "value", [""]))
          .applyFilterOnParentChange();
    });
    </script>

    El resultado es:

    Cuando en "padre" se selecciona En "hijo" quedan las opciones Filtro en efecto
    "" todas true
    "p1" "", "h2", "h3" [ "", "h2", "h3" ]
    "p2" "" default ([""])
  • [r2.16.0.622 - 26/11/2013] Nuevo elemento para reportes ODT: /odt/variables/variable/requerida.
  • [r2.16.0.620 - 26/11/2013] Nuevo código de error predefinido para mensajes: Mensaje::COD_ERR_EJEC_FALTAN_PARAMETROS.
  • [r2.16.0.616 - 01/11/2013] (Ticket #111) En reportes ODT se agrega la posibilidad de que se definan nuevas variables PHP: cada elemento que genera una variable $var_{nombre} ahora también puede generar una variable correspondiente $var_xmltxt_{nombre}, con el mismo valor pero con los caracteres especiales XML escapados para que se pueda emitir como texto XML de forma segura. Esta generación está controlada por el nuevo atributo /odt/configuracion/@definir-variables-xmltxt.
  • [r2.16.0.615 - 01/11/2013] Nuevo método PHP: Formateo::prepararTextoXml() (formateo.inc.php).
  • [r2.16.0.613 - 22/10/2013] (Ticket #109) Nuevo elemento para formularios: /formulario/campos//campo/condicion-campo-visible.
  • [r2.16.0.610 - 11/10/2013] Nuevo parámetro en las ubicaciones de código extra antes_insert, antes_update y antes_delete en formularios: boolean &'realizar_operacion' = true. Si se cambia su valor a falso, se aborta la operación y se vuelve a presentar el formulario.
  • [r2.16.0.607 - 10/10/2013] Nuevas funciones javascript (utilidades.js): xgapIsUndefined, xgapIsBoolean, xgapIsObject, xgapConstruirUrl.
  • [r2.16.0.604 - 03/10/2013] (Ticket #108) Nuevo elemento para masters: /formulario/campos//campo/condicion-visible.
  • [r2.16.0.601 - 01/10/2013] Nuevo atributo para campos de formulario autocompletables: (texto-autocompletable|seleccionar-autocompletable)/@ignorar-acentos.
  • [r2.16.0.598 - 23/09/2013] Nuevo tipo de validación para campos de formulario: ip4.
  • [r2.16.0.591 - 11/09/2013] (Ticket #107) Nuevo elemento para campos de buscadores personalizados simples en listados: /listado/configuracion/buscador/personalizado-simple//condicion.
  • [r2.16.0.584 - 02/09/2013] Nuevos parámetros en la ubicación de código extra antes_campo_link en formularios:
    • array 'metadatos'
    • array 'valores'
    • boolean 'agregado'
  • [r2.16.0.583 - 28/08/2013] Cambios en la clase Conexion:
    • Nuevos métodos PHP: Conexion::obtenerListaIndexadaPorClave() y Conexion::literalSql().
    • Conexion::obtenerTodos() recibe dos nuevos parámetros opcionales: $numrows y $offset.
    • Se modifica Conexion::expresionComparacionBinaria() para que acepte cualquier operador, no sólo uno de los predefinidos.
  • [r2.16.0.582 - 28/08/2013] Nueva clase PHP: XgapTableArray.
  • [r2.16.0.577 - 12/08/2013] (Ticket #105) Nuevo elemento para campos de formulario: campo/validacion-cliente; permite controlar la validación que se realiza en el cliente. Incluye los elementos campo/validacion-cliente/predefinida, campo/validacion-cliente/fn-condicion-realizacion y campo/validacion-cliente/fn-valor-atributo.

    El elemento campo/validacion-cliente/predefinida tiene el mismo significado que campo/validacion y es la nueva forma recomendada de especificar el tipo de validación de formato, aunque campo/validacion se mantiene por compatibilidad.

  • [r2.16.0.576 - 12/08/2013] (Ticket #104) Nuevo elemento para campos de formulario: campo/validacion-servidor-predefinida. Provee dos formas de controlar la validación que se realiza en el servidor: campo/validacion-servidor-predefinida/@realizar y campo/validacion-servidor-predefinida/condicion-realizacion.
  • [r2.16.0.571 - 01/08/2013] (Ticket #101) Mejora en campos de formulario que incluyen un calendario para selección de fecha/hora: se agrega la posibilidad de definir un controlador javascript para actuar ante la selección de un valor en el calendario, con el nuevo elemento campo/eventos/calendar-update.
  • [r2.16.0.570 - 01/08/2013] (Ticket #100) Se corrigen bugs causados por dos bibliotecas javascript de terceros (ExtJS y DHTML Calendar) que agregaban propiedades con el mismo nombre en el objeto Date, con lo cual la última de las dos en cargarse sobreescribía las propiedades definidas por la primera. Por ejemplo, ambas definen la función Date.parseDate.

    Advertencia de compatibilidad: Para solucionar el problema fue necesario modificar DHTML Calendar para renombrar las propiedades que agrega a Date, es decir que cambió parte del API definido por este widget. Específicamente, los cambios fueron los siguientes:

    Antes Ahora
    Date._MD Date._jscal_MD
    Date.SECOND Date.jscal_SECOND
    Date.MINUTE Date.jscal_MINUTE
    Date.HOUR Date.jscal_HOUR
    Date.DAY Date.jscal_DAY
    Date.WEEK Date.jscal_WEEK
    Date.parseDate Date.jscal_parseDate
    Date.prototype.getMonthDays Date.prototype.jscal_getMonthDays
    Date.prototype.getDayOfYear Date.prototype.jscal_getDayOfYear
    Date.prototype.getWeekNumber Date.prototype.jscal_getWeekNumber
    Date.prototype.equalsTo Date.prototype.jscal_equalsTo
    Date.prototype.setDateOnly Date.prototype.jscal_setDateOnly
  • [r2.16.0.569 - 23/07/2013] (Ticket #99) El formateo de valor de campo por código (listados: /listado/columnas/columna/[formato|formato-variedad]/codigo; formularios master: /formulario/campos//campo/formato/codigo) ahora tiene predefinida una nueva variable: $registro, que le permite al código tener acceso a todos los campos del registro al que pertenece el valor.
  • [r2.16.0.568 - 23/07/2013] (Ticket #98) En listados, la ubicación de código extra inicio_celda_encabezado ahora recibe un parámetro adicional: &'valor_a_mostrar'.
  • [r2.16.0.567 - 23/07/2013] Nueva función PHP info_tipos_pagina_xgap().
  • [r2.16.0.563 - 11/07/2013] Nueva constante RequestXgap::PARAMETRO_DISPOSICION_CONTENIDO_IMPRIMIBLES y nuevo método RequestXgap::disposicionContenido (request.inc.php).

    Se provee una manera de indicar por cada solicitud el tipo de disposición de contenido con que se deben retornar documentos no HTML generados por la aplicación, ignorando durante dicha solicitud el valor del parámetro de configuración disposicion_contenido_imprimibles. Para ello se debe pasar en la solicitud un parámetro con el nombre dado por la constante RequestXgap::PARAMETRO_DISPOSICION_CONTENIDO_IMPRIMIBLES y el valor deseado para la disposición de contenido.

  • [r2.16.0.562 - 11/07/2013] Nuevo método PHP Request::metodo().
Versión 2.15.0 (07/07/2013)
  • [r2.15.0.555 - 07/07/2013] Nuevo objeto javascript XGAP.Flash (flash.js). Permite acceder al Flash después de cargada la página.
  • [r2.15.0.553 - 07/07/2013] Se agregó el script de shell bin/console, que provee un shell interactivo de PHP con un entorno funcional de XGAP precargado. Requiere la versión CLI de PHP con soporte de readline.
  • [r2.15.0.552 - 07/07/2013] Se puede especificar en cada llamado la página de retorno en páginas de tipo listado, formulario, master, contenido, grafico y formulario_reporte, indicándola como valor del nuevo parámetro de request RequestXgap::PARAMETRO_PAG_RETORNO.
  • [r2.15.0.547 - 07/07/2013] Nuevos métodos PHP: Formateo::prepararSalidaString() y Formateo::prepararSalidaUrl().

    La función preparar_salida() ahora es un alias de Formateo::prepararSalidaString(), con algunas mejoras de rendimiento.

  • [r2.15.0.546 - 28/05/2013] (Ticket #94) Nuevo atributo para columnas de listados: /listado/columnas/*/@clase.
  • [r2.15.0.544 - 20/05/2013] (Ticket #93) Mejora en campos de formulario de tipo Seleccionable: se agrega la posibilidad de definir controladores javascript para actuar ante la selección de un valor, con el nuevo elemento campo/eventos/select.
  • (Ticket #92)
    • [r2.15.0.543 - 11/05/2013] Nuevos métodos javascript XGAP_FORM.cambiarHabilitacionSeleccionable(), XGAP_FORM.deshabilitarSeleccionable() y XGAP_FORM.habilitarSeleccionable() (formulario.js).
    • [r2.15.0.542 - 11/05/2013] Nuevos métodos javascript XGAP.cambiarHabilitacionLink(), XGAP.deshabilitarLink() y XGAP.habilitarLink() (utilidades.js).
  • [r2.15.0.539 - 11/05/2013] (Ticket #91) Nueva opción para campos de formulario autocompletables: (texto-autocompletable|seleccionar-autocompletable)/columnas-extra-mostrar.
  • [r2.15.0.522 - 19/04/2013] (Ticket #90) Nuevo parámetro de configuración de aplicación: usar_css_ext_predefinido.
  • [r2.15.0.518 - 30/03/2013] Se crea la versión inicial de un manual de usuario de XGAP, en el directorio doc/manual. Se consolida en este lugar información que antes podía encontrarse separada en diferentes lugares.
  • [r2.15.0.511 - 12/03/2013] Nuevo objeto javascript: XGAP.console (utilidades.js). Provee un reemplazo para window.console que es seguro para usar en cualquier entorno: si la consola no está disponible, los métodos de este objeto no tienen efecto, en vez de producir un error.
  • [r2.15.0.509 - 05/03/2013] Nueva función PHP (funciones.php): xgap_get_remote_file_contents().
  • [r2.15.0.490 - 22/01/2013] Nuevo parámetro en el método PHP Auditor::log(): $tipo; nuevas constantes para usar con este parámetro: Auditor::TIPO_LOG_OPERACION, Auditor::TIPO_LOG_ERROR, Auditor::TIPO_LOG_ADVERTENCIA, Auditor::TIPO_LOG_INFORMACION.

    Advertencia de compatibilidad: El agregado del tipo hace que cambie:

    • el formato del archivo de auditoría; se agrega el tipo como segundo campo en cada línea.
    • la estructura de la tabla de auditoría en la base de datos; se puede usar el script bd/update-2_15_0.sql para actualizar las bases de datos de aplicaciones existentes.
  • (Ticket #87)
    • [r2.15.0.488 - 21/01/2013] Nuevo parámetro de configuración de aplicación: duracion_token_csrf.
    • [r2.15.0.487 - 21/01/2013] Cambio en la interfaz iSeguridad: nuevo método iSeguridad::destruirSesionAplicacion().

      Advertencia de compatibilidad: Las aplicaciones que utilicen una clase de seguridad personalizada (parámetro de configuración clase_seguridad) que no herede de la implementación provista por XGAP (clase Seguridad) deberán implementar este método.

    • [r2.15.0.486 - 21/01/2013] Nuevas clases PHP: XgapRand (rand.inc.php) y XgapCsrf (csrf.inc.php).

      Advertencia de requerimientos: La clase XgapCsrf requiere que esté disponible la extensión Hash de PHP.

    • [r2.15.0.485 - 21/01/2013] Nuevo parámetro de configuración: sal_hashes.
      Se incluye un botón en la página de configuración de la aplicación que permite generar un valor aleatorio para este parámetro.

      Advertencia de compatibilidad: Se debe agregar el parámetro sal_hashes al archivo de configuración de las aplicaciones existentes, dado que es requerido.

    • [r2.15.0.484 - 21/01/2013] Nueva función javascript (utilidades.js): xgap_random_token().
  • (Ticket #84) Soporte para firmas digitales en operaciones de formularios.
    • [r2.15.0.483 - 21/01/2013] Nuevo elemento para formularios: /formulario/firma-digital.
    • [r2.15.0.482 - 21/01/2013] Nuevas clases e interfaces PHP: iXgapPublicKeyInfrastructure, iXgapStoredPublicKeyInfrastructure, iFirmaOperacion, XgapPublicKeyInfrastructure, XgapOpenSslPublicKeyInfrastructureTest, XgapDefaultOpenSslPublicKeyInfrastructure, FirmaOperacion, FirmaOperacionDefault.
    • [r2.15.0.481 - 21/01/2013] Nueva constante booleana, disponible para las aplicaciones en tiempo de ejecución: XGAP_FIRMADO_OPERACIONES_HABILITADO; se define automáticamente durante la generación en xgap.php, de acuerdo al valor de aplicacion.xml:/aplicacion/seguridad/@usa-firmas-digitales.
    • [r2.15.0.480 - 21/01/2013] Nueva opción de configuración de generación en aplicacion.xml: /aplicacion/seguridad/@usa-firmas-digitales. Permite habilitar o deshabilitar en tiempo de generación el uso del soporte de firmas.
    • [r2.15.0.479 - 21/01/2013] Nuevos parámetros de configuración de la aplicación: archivo_clase_pki, clase_pki, archivo_clase_firmaoperacion, clase_firmaoperacion, frase_clave_privada_requerida, certificado_obligatorio_en_carga_clave_privada, codificador_datos_firmaoperacion y archivo_codificador_datos_firmaoperacion.
  • [r2.15.0.475 - 18/01/2013] Cambios en la clase PHP Contexto:
    • Nuevos métodos: Contexto::existeSesion(), Contexto::idSesion(), Contexto::cambiarIdSesion() y Contexto::regenerarIdSesion().
    • Por consistencia en los nombres, se agrega el método Contexto::destruirSesionAplicacion() con la misma funcionalidad que Contexto::destruir_sesion_aplicacion() y este último se hace obsoleto, disparando un aviso si se invoca.
  • [r2.15.0.473 - 18/01/2013] (Ticket #86) Se agrega la posibilidad de definir el tiempo máximo de inactividad de la sesión, de forma separada para cada aplicación, usando el nuevo parámetro de configuración duracion_sesion. Si el tiempo de inactividad se supera, en el siguiente acceso se destruye automáticamente la sesión de esa aplicación, sin afectar a las demás. Este control es independiente de la duración de sesión configurada en PHP.

    Nuevo método PHP Contexto::obtenerTiempoUltimaActividad()

  • [r2.15.0.472 - 17/01/2013] (Ticket #85) Los menúes generados a partir de archivos *_menu.xml se pueden guardar en un cache para evitar que se recreen en cada solicitud.
    • Nuevos atributos para las definiciones de menúes: /menu/@cache, para indicar el tipo de cache a usar (por defecto se usa cache por rol), y /menu/@id para permitir que las aplicaciones guarden más de un menú en cache.
    • Se reconoce un nuevo parámetro en los requests, definido por RequestXgap::PARAMETRO_RECARGA_MENU. Si está presente en el request, se invalida el cache y se reconstruye el menú.
  • [r2.15.0.470 - 17/01/2013] Nuevas clases PHP XgapXml y XgapXmlArray (xml.inc.php).
  • [r2.15.0.469 - 17/01/2013] Nuevas excepciones PHP: XgapNotImplementedException, XgapFunctionNotImplementedException y XgapMethodNotImplementedException.
  • [r2.15.0.468 - 17/01/2013] Los items de menúes generados a partir de archivos *_menu.xml ahora comprueban si el usuario tiene permiso para acceder al destino (/menu//item/@url), de acuerdo a lo que indica iSeguridad::puedeVerPagina(), y no se muestran en caso de no tenerlo.

    Advertencia de compatibilidad: En el código generado ahora se convierten correctamente los caracteres XML especiales en entidades. Esto implica que si en un archivo de definición de menú se estaban escapando manualmente estos caracteres, se debe corregir para eliminar el escape manual. Por ejemplo, si ppal_menu.xml antes decía:
    url="ciudad_listado.php?xgap_historial=reset&amp;amp;agregado=true"
    se debe cambiar a:
    url="ciudad_listado.php?xgap_historial=reset&amp;agregado=true"

  • [r2.15.0.467 - 17/01/2013] Nuevos métodos PHP: Flash::vaciar(), Flash::existeSiguiente() y Flash::obtenerSiguiente().
  • [r2.15.0.466 - 17/01/2013] Cambios en la clase PHP Conexion:
    • Nuevos métodos Conexion::blobEncode() y Conexion::blobDecode().
    • Los métodos Conexion::ejecutarConsulta(), Conexion::ejecutarConsultaLimitOffset(), Conexion::ejecutarConsultaSegura(), Conexion::ejecutarConsultaSeguraLimitOffset(), Conexion::ejecutarConsultaActualizacion(), Conexion::obtenerPrimeraFila(), Conexion::obtenerPrimero() y Conexion::obtenerTodos() reciben un nuevo parámetro $excepcion, que permite indicar si al producirse un error en la consulta se debe disparar una excepción o generar un error de aplicación, como ocurría hasta ahora; el comportamiento predeterminado sigue siendo generar un error.
  • [r2.15.0.465 - 17/01/2013] Nueva clase PHP: XgapClassLoader (classloader.inc.php). Implementa carga automática de clases/interfaces provistas por XGAP. Se activa automáticamente cuando se carga la configuración, o se puede habilitar manualmente invocando a XgapClassLoader::register().
  • [r2.15.0.463 - 16/01/2013] Se define explícitamente qué parámetros de configuración son requeridos.

    Advertencia de compatibilidad: Ahora se verifica más estrictamente la correctitud de los parámetros de configuración durante la carga del archivo conf.inc.php, por lo cual se producirán excepciones en aplicaciones que tengan algún problema de configuración que antes no se detectaba, por ejemplo un parámetro requerido faltante o un parámetro entero definido como string.

  • [r2.15.0.461 - 16/01/2013] Nueva interfaz PHP: iXgapVarConvert (ivarconvert.inc.php), con implementaciones: XgapVarConvertSerialized (varconvertserialized.inc.php), XgapVarConvertExported (varconvertexported.inc.php), XgapVarConvertJson (varconvertjson.inc.php), XgapVarConvertXml (varconvertxml.inc.php).
  • [r2.15.0.457 - 16/01/2013] Cambios en la clase PHP Http (http.inc.php): nuevos métodos Http::statusLine() y Http::getStatusCodeReasonPhrase(); nuevas constantes Http::HTTP1_STATUS_*
  • [r2.15.0.456 - 16/01/2013] Nuevos métodos PHP: Formateo::entrecomilladoSimple() y Formateo::entrecomilladoDoble().
  • [r2.15.0.455 - 16/01/2013] Cambios en la clase PHP Json (json.inc.php):
    • Nuevo método Json::decodificar()
    • Nuevo parámetro $opciones en Json::codificar()
    • Json::codificar() ahora dispara una excepción si no puede codificar el valor dado.
  • [r2.15.0.454 - 16/01/2013] Nuevas funciones PHP: es_array_indexado_secuencial(), matrix_2d_transpose(), find_classes_in_dir(), xgap_convert_encoding(), xgap_convert_encoding_to_utf8(), xgap_convert_encoding_to_internal() (funciones.php).
  • [r2.15.0.451 - 15/01/2013] Nueva clase PHP: XgapGenericFactory (genericfactory.inc.php).
  • [r2.15.0.448 - 15/01/2013] Nueva clase PHP: Recursos (recursos.inc.php), que provee acceso a objetos globales.
  • [r2.15.0.447 - 15/01/2013] Nuevos métodos en la clase PHP FormFileUpload (upload.inc.php): FormFileUpload::contenido(), FormFileUpload::contenidoLineas().
  • [r2.15.0.446 - 14/01/2013] Nuevo parámetro en el método PHP Form::abrir_grupo (form.inc.php): $clase.
  • [r2.15.0.445 - 14/01/2013] Nuevos métodos en la clase PHP Componentes (componentes.inc.php): Componentes::separadorGrupoFormulario() y Componentes::comentarioCampoFormulario().
  • [r2.15.0.443 - 14/01/2013] Nuevos métodos para manejo de mensajes en la clase PHP ExcepcionXGAP (xgap.php): ExcepcionXGAP::getFullMessage(), ExcepcionXGAP::getFullDevMessage(), ExcepcionXGAP::prependToMessage(), ExcepcionXGAP::appendToMessage(), ExcepcionXGAP::prependToDevMessage(), ExcepcionXGAP::appendToDevMessage() y ExcepcionXGAP::__toString().
Versión 2.14.1 (21/09/2012)
  • [r2.14.1.434 - 02/08/2012] Se agrega un nuevo paso de generación que permite compilar los archivos PHP producidos. Requiere que esté instalada la extensión PECL bcompiler.
  • [r2.14.1.433 - 02/08/2012] Nuevos parámetros de configuración: id_usuario_en_sesion_base_nombre e id_usuario_en_sesion_base_var.
  • [r2.14.1.432 - 02/08/2012] Nuevos métodos PHP: Conexion_postgres8::cambiarParametroConfiguracion() y Conexion_postgres8::establecerVariableSesion().
  • [r2.14.1.421 - 09/06/2012] Nuevo parámetro en Conexion::ejecutarStoredProcedure() (conexion.inc.php): $registro_log. Permite indicar si se debe guardar la operación en el log del auditor.
Versión 2.14.0 (09/06/2012)
  • [r2.14.0.415 - 09/06/2012] (Ticket #44) Compatibilización con PHP 5.3.
  • [r2.14.0.411 - 10/04/2012] Nuevo método PHP: Formateo::ip4SinCerosIniciales().
  • [r2.14.0.404 - 29/03/2012] Nuevo método PHP: Html::idValido().
Versión 2.13.3 (20/11/2011)
  • [r2.13.3.394 - 20/11/2011] Nuevo elemento para separadores de campos en formularios: /formulario/campos//separador_grupo/@nombre.
  • [r2.13.3.392 - 09/11/2011] Nuevo atributo para campos seleccionables autocompletables en formularios (/formulario/campos//campo[@tipo="Seleccionable"]/texto-autocompletable y /formulario/campos//campo[@tipo="Seleccionable"]/seleccionar-autocompletable): @es-combo.
  • [r2.13.3.387 - 20/05/2011] (Ticket #73)
    • Nuevo parámetro en Javascript::codificarString(): $comillas_dobles.
    • Se pasa a tener la extensión XMLWriter como dependencia, si se usan menúes de details en masters.
  • [r2.13.3.384 - 10/06/2011] (Ticket #71)
    • Nueva clase PHP: SmtpEmail (email.inc.php).
    • Nuevos parámetros de configuración: XGAP_CONF_SMTP_HOST, XGAP_CONF_SMTP_PORT, XGAP_CONF_SMTP_USER, XGAP_CONF_SMTP_PASS, XGAP_CONF_SMTP_SECURITY.
    • El método Mensaje::mail() ahora envía el email via SMTP si la aplicación está configurada para usar este protocolo.
  • (Ticket #70) Formularios: Se agrega autocompletado opcional en campos de texto y seleccionables.
    • [r2.13.3.373 - 20/05/2011]
      • Nuevos elementos para campos en páginas de tipo formulario: /formulario/campos//campo/texto-autocompletable y /formulario/campos//campo/seleccionar-autocompletable, aplicables cuando campo[not(@tipo)] o campo[@tipo="Seleccionable"].
      • Nuevo método PHP: Form::autocompletable() (form.inc.php) y nueva función javascript XGAP_FORM.crearCampoAutocompletable() (formulario.js).
      • Nueva clase PHP: Json (json.inc.php).
    • [r2.13.3.374 - 20/05/2011] Nueva función javascript XGAP_FORM.moverFocoAPrimerCampo() (formulario.js).
  • [r2.13.3.371 - 20/05/2011] Nuevos métodos en la clase Conexion: Conexion::ejecutarConsultaSeguraSinMsg(), Conexion::ejecutarConsultaSeguraLimitOffsetSinMsg(), Conexion::expresionComparacionBinaria(), Conexion::operadoresBinariosComparacion(), Conexion::textoOperadorBinarioComparacion().
Versión 2.13.2 (19/05/2011)
  • [r2.13.2.361 - 16/05/2011] Cambio en masters: las filas de la tabla principal del master ahora se generan con id, igual al de las filas de formularios: id="{nombre del campo}_fila".
  • [r2.13.2.360 - 16/05/2011] Nuevo parámetro en Tabla::abrirFila() (tabla.inc.php): $nombre.
  • [r2.13.2.356 - 09/05/2011] Nuevas funciones PHP (funciones.php): unserialized_ok() y unserialize_with_exception(); nueva excepción PHP ExcepcionXGAPUnserialize.
  • [r2.13.2.352 - 09/05/2011]
    • Nueva clase singleton Pagina (pagina.inc.php)
    • Nuevas clases ObjetoMensaje y ListaMensajes (mensaje.inc.php)
    • Nuevos métodos Mensaje::mostrar() y Mensaje::mostrarLista() (mensaje.inc.php).

    Se agrega un modo para que el código personalizado tenga la posibilidad de mostrar mensajes en las páginas de una forma estandarizada.
    Ejemplo de uso:

    <formulario>
        ...
        <codigoExtra>
            ...
            <codigo ubicacion="despues_inicializacion" tipo="PHP">
                <![CDATA[
                ...
                Pagina::instancia()->mensajes()->agregar(ObjetoMensaje::nuevo(
                        'No se pudo realizar la comprobaci&oacute;n.',
                        Mensaje::TIPO_ALERTA));
                ...
                ]]>
            </codigo>
            ...
        </codigoextra>
        ...
    </formulario>

    Los mensajes almacenados en Pagina::instancia()->mensajes() se muestran automáticamente en páginas de tipo formulario, formulario_reporte, master, listado, seleccion y seleccion_m. Para mostrarlos en páginas de tipo contenido, se puede incluir código similar al siguiente dentro de /pagina/contenido:

    if (!Pagina::instancia()->mensajes()->isEmpty()) {
        Mensaje::mostrarLista(Pagina::instancia()->mensajes(), true, null, 'cont-msjs-pag');
    }
  • [r2.13.2.349 - 09/05/2011] Cambios en la clase Http:
    • Nuevos parámetros en Http::noCache(): $send_content_type, $media_type, $charset.
    • Http::headerContentType() ahora no envía charset si el parámetro $charset es vacío.
  • [r2.13.2.348 - 08/04/2011] Nuevo elemento para comandos en páginas de tipo contenido: /pagina/configuracion/comandos-genericos/comando/preparar.
  • [r2.13.2.346 - 21/03/2011] (Ticket #69) Se agrega la posibilidad de especificar condiciones en los elementos de menúes para indicar si deben mostrarse o no en tiempo de ejecución.
    Para ello se incorporan a la definición del menú los elementos carpeta/condicion, item/condicion y separador/condicion.
  • [r2.13.2.345 - 19/03/2011] Mejoras en la definición de menúes: Nuevos atributos carpeta/@id, carpeta/@clase, carpeta/@tip, item/@id, item/@clase, item/@tip.
  • [r2.13.2.339 - 15/03/2011] Cambios en la clase PHP Conexion (conexion.inc.php):
    • Nuevos métodos: Conexion.estaConectado() y Conexion.reconectar().
    • Cambios en los metadatos retornados por Conexion.metaDatos():
      • Se incluyen tres nuevos campos: 'gentype', 'size' y 'scale'. El campo 'gentype' puede tomar cualquiera de los valores definidos por las nuevas constantes Conexion::DATATYPE_*.
      • Se modifican los valores devueltos en los campos 'len' y 'clen', dado que eran inconsistentes: en algunos casos representaban la longitud del campo y en otros su tamaño; ahora corresponden siempre a la longitud y el campo 'size' al tamaño.
  • [r2.13.2.337 - 14/03/2011] Se agrega la posibilidad de cambiar la tecla rápida asociada a los comandos predeterminados en formularios:
    • Nuevos parámetros de configuración de la aplicación tecla_acceso_boton_agregar, tecla_acceso_boton_agregar_seguir, tecla_acceso_boton_borrar, tecla_acceso_boton_cancelar y tecla_acceso_boton_guardar.
    • Nuevos atributos /formulario/configuracion/boton-agregar/@teclaacceso, /formulario/configuracion/boton-agregar-seguir/@teclaacceso, /formulario/configuracion/boton-borrar/@teclaacceso, /formulario/configuracion/boton-cancelar/@teclaacceso y /formulario/configuracion/boton-guardar/@teclaacceso.
  • [r2.13.2.334 - 24/02/2011] Nuevo método PHP: DescriptorPaginas::tipoFormulario().
  • [r2.13.2.333 - 24/02/2011] Nuevos elementos para páginas de tipo reporte_odt: /odt/configuracion/antes-inicializacion y /odt/configuracion/salida.
  • [r2.13.2.332 - 23/02/2011] Nuevas funciones PHP (funciones.php): str_starts_with(), str_istarts_with(), str_ends_with(), str_iends_with().
  • [r2.13.2.330 - 23/02/2011] Nuevo atributo en el elemento raíz de todos los tipos de página: /*/@mantener-pagina-sesion-vencida, que permite evitar la redirección a la página de inicio cuando vence o no está creada la sesión del usuario. Se puede obtener el mismo efecto definiendo una constante PHP con nombre XGAP_CONF_MANTENER_PAGINA_SESION_VENCIDA y valor true, antes de la inicialización de XGAP en la página.
  • [r2.13.2.328 - 19/02/2011] Se elimina del motor la versión 4.92a de ADOdb (motores/ultimo/clases/terceros/adodb), por lo cual ya no se puede usar el parámetro de configuración version_adodb con valor vacío.
Versión 2.13.1 (19/02/2011)
  • [r2.13.1.326 - 01/02/2011] Nuevo parámetro de configuración para las aplicaciones: longitud_max_cols_text.
  • [r2.13.1.324 - 13/01/2011] Nuevo método en la clase PHP Conexion: Conexion::esBooleano().
  • Se modificaron varias de las páginas provistas por defecto para las aplicaciones, ubicadas en el directorio xml del motor. Los cambios no pasan automáticamente a las aplicaciones generadas, por lo cual es conveniente comparar estas páginas con las ya existentes en las aplicaciones y pasar manualmente las diferencias.
    • error_formulario_contenido.xml [r263]
    • error_contenido.xml [r263]
    • index_contenido.xml [r296]
    • login_contenido.xml [r298]
    • logout_contenido.xml [r298]
    • seguridad_contenido.xml [r321]
    • seleccionarrol_contenido.xml [r323]
  • [r2.13.1.304 - 03/01/2011] Nuevo atributo para acciones globales en listados: /listado/configuracion/acciones/accion/destino/@historial.
  • [r2.13.1.301 - 29/12/2010] Cambios en clase PHP Mensaje (mensaje.inc.php): Los métodos Mensaje::error(), Mensaje::alerta(), Mensaje::notificacion(), Mensaje::info() y Mensaje::generico() reciben un nuevo parámetro: $clase_extra.
  • [r2.13.1.300 - 29/12/2010] Nuevo método en clase PHP Conexion (conexion.inc.php): Conexion::concat().
  • [r2.13.1.297 - 22/12/2010] Nuevos parámetros en el método PHP AdministradorHistorial::actualizar() (historial.inc.php): $comandos e $ignorar_request.
  • [r2.13.1.295 - 22/12/2010] Cambios en clase PHP Flash (flash.inc.php):
    • Nuevo método Flash::instancia().
    • El método Flash::mantener() ahora mantiene también el tiempo de presentación actual; este comportamiento se puede controlar con el nuevo parámetro $mantener_tiempo_presentacion.
  • [r2.13.1.293 - 22/12/2010] Nuevos métodos en clase PHP Request (request.inc.php): Request::eliminar(), Request::eliminarGet(), Request::eliminarPost().
  • [r2.13.1.289 - 13/12/2010] Cambio en funciones javascript cambiarSeleccionSelect() y restaurarSeleccionSelect() (formulario.js): ahora disparan un evento change sobre el select que afectan.
  • [r2.13.1.287 - 09/12/2010] (Ticket #66)
    • Nuevo elemento para campos de formulario de tipo 'Lista' y 'ListaBD': /formulario//campos//campo/controles-seleccion-lista, que indica que se debe adjuntar a la lista una serie de controles para modificar la selección de sus elementos, los cuales permiten seleccionar y deseleccionar todos los elementos, y restaurar la selección inicial.
      Es posible especificar opciones para estos controles mediante elementos hijos de controles-seleccion-lista.
    • Nuevos parámetros para Form::select_multiple() (form.inc.php): $controles_seleccion y $opciones_controles_seleccion.
    • Nueva función javascript (formulario.js): restaurarSeleccionSelect().
  • [r2.13.1.286 - 09/12/2010] (Ticket #65) Nuevo atributo para el elemento titulo de campos de formulario de tipo 'CheckBox': /formulario/campos//campo[@tipo='CheckBox']/titulo/@posicion.
  • [r2.13.1.285 - 09/12/2010] (Ticket #64) Nuevo atributo para el elemento consulta-sm de campos de formulario (tipo 'SeleccionableMultiple', 'Lista' y 'ListaBD'): /formulario/campos//campo/consulta-sm/@realizar-en-alta.
  • [r2.13.1.284 - 09/12/2010] (Ticket #63) El atributo /formulario/campos//campo/@filas ahora permite el valor 0 para campos de tipo 'SeleccionableMultiple', 'Lista' y 'ListaBD', el cual indica que la lista generada debe tomar la altura que le asigna por defecto el navegador.
  • [r2.13.1.280 - 01/12/2010] (Ticket #62) Nuevo elemento para campos de formulario: /formulario/campos//campo[@tipo="SeleccionableMultiple"]/orderby.
  • [r2.13.1.275 - 29/11/2010] (Ticket #61) Cambio en listados, en columnas de acciones enviadas por POST (/listado/columnas/acciones/accion[tipo-request="POST"]): los parámetros se estaban enviando al destino como parte del URL; ahora se envían como parte del POST.
  • [r2.13.1.273 - 29/11/2010] (Ticket #60)
    • Cambios en la clase Flash: nuevos métodos Flash::tiempoPresentacionActual(), Flash::cambiarTiempoPresentacionActual(), Flash::tiempoPresentacionSiguiente() y Flash::cambiarTiempoPresentacionSiguiente(); nueva constante Flash::TIEMPO_PRESENTACION_INDETERMINADO.
    • Se elimina la constante Componentes::DURACION_MENSAJE_FLASH.
Versión 2.13.0 (28/11/2010)
  • [r2.13.0.269 - 17/11/2010]
    • Nuevos tipos de campo de formulario (/formulario/campos//campo/@tipo): Lista y ListaBD.
    • Nuevo elemento para campos de formulario de tipo Combo o Radio (/formulario/campos//campo[@tipo="Combo" or @tipo="Radio"]): select/options, alternativo al ya existente select/option.
  • [r2.13.0.266 - 17/11/2010]
    • Nuevos métodos PHP: Html::atributoTexto() y Html::atributoSimple().
    • Se escapa correctamente (a) la salida HTML generada por Html::abrirTag() y el parámetro $titulo de los métodos de la clase Form; (b) la salida javascript producida por la clase Tooltip; (c) el código PHP generado a partir de /formulario/campos//campo/tip, /formulario/campos//campo[@tipo='Link']/etiqueta, /formulario/campos//campo[@tipo='Link']/click y /formulario/campos//campo[@tipo='Link']/destino-link/parametros/parametro/@valor. Advertencia de compatibilidad: Esto provoca problemas en aplicaciones existentes que escapan el texto manualmente en los lugares mencionados, dado que se produce un doble escape.
  • [r2.13.0.262 - 09/11/2010] Nuevo elemento en páginas de contenido: /pagina/configuracion/comandos-genericos/comando/condicion.
  • [r2.13.0.261 - 09/11/2010] Cambios en /*/seguridad/validacionExtra, para todos los tipos de página:
    • Nuevo atributo: validacionExtra/@metodo-http.
    • El código PHP en validacionExtra/codigo tiene disponibles nuevos parámetros: &$mensaje_usuario, &$mensaje_debug y &$params_extra, que permiten pasar mensajes y parámetros arbitrarios a la página de error.
  • [r2.13.0.257 - 09/11/2010] Nuevos métodos en la clase HistorialNavegacion (historial.inc.php): HistorialNavegacion::siguienteA(), HistorialNavegacion::anteriorA() y HistorialNavegacion::primeroPorTipo().
  • [r2.13.0.255 - 09/11/2010] Http::redirigirAError() (configuracion.inc.php) ahora permite (1) indicar el método HTTP a usar para la redirección (GET o POST) y (2) pasar parámetros arbitrarios a la página destino.
  • [r2.13.0.253 - 09/11/2010] Nuevo método (configuracion.inc.php): Configuracion::paginaInterna().
  • [r2.13.0.249 - 09/11/2010] Nueva función PHP (funciones.php): urlCompletoPagina().
  • [r2.13.0.247 - 03/11/2010] Nuevo elemento para listados: columnas/columna/parametros-link.