Guía 52 – Utilización de «sweetalert2» para confirmar «salvar» datos (Actualización)

Esta solución, en su versión anterior no se controlaban las validaciones de los campos y resultaba chocante el que apareciera el «Alert» de diálogo y que luego dijera que no había validado los datos y por ello, no había actualizado el registro.

En esta versión se resuelve esto validando uno a uno, los campos del formulario.

El código ha quedado de esta forma:

/* Validation fields */

var fields = ['text1','number1'];  // All fields to validate

var validation = true;
let i = 0;
while (i < fields.length) {
    var ctrl = Runner.getControl(pageid, fields[i]);
   var status = ctrl.validate();
   if (status.result == false) {
      validation = false;
   }
    i++;
}
console.log("validation: "+ validation);

if ( validation ) {
  Swal.fire({
    title: 'Do you want to save the changes?',
    showDenyButton: true,
    // showCancelButton: true,
    confirmButtonText: 'Save',
    denyButtonText: "Don't save",
    }).then((result) => {
    /* Read more about isConfirmed, isDenied below */
      if (result.isConfirmed) {
         Swal.fire('Saved!', '', 'success')
         // $('#saveButton7').click();
         $('a[id^="saveButton"]').click();

      } else { 
      if (result.isDenied) {
        Swal.fire('Changes are not saved', '', 'info') 
      }
    }
   })
}
return false

Creo que la solución, así, queda más consistente y válida.

Si deseas leer todo el artículo, sigue este link.

Guía 80 – Traducir contenidos gestionados en Base de Datos

En el foro de Xlinesoft un desarrollador preguntó cómo se podría realizar traducciones, de forma automática, de contenidos de una base de datos.

Pensé que podría ser este un ejemplo sencillo de cómo utilizar el repositorio de código de GITHUB, buscar código que pueda resolver el problema e incorporar ese código a un proyecto PHPRunner.

Objetivo

Al introducir o modificar un texto en un campo de la base de datos, y en ese momento, traducir dicho texto y almacenarlo en otro campo de la base de datos.

DEMO: https://fhumanes.com/translate

Si te interesa este tema, sigue leyendo el artículo en este enlace.

Guía 79 – Integrar en WordPress, versión 3

Con este sistema de «inyección de contenidos» de los desarrollos hecho en PHPRunner 10.91, lo que queda francamente bien, son las páginas del tipo «DashBoard» porque todas ellas utiliza Ajax para refrescar los paneles.

En este caso muestro un caso muy gráfico y os explico cómo se podría ver esos contenido integrados en páginas de WordPress.

Elecciones Comunidad de Madrid

Resumen General

Si te gusta este tema, sigue leyendo el artículo de este enlace.

Guía 78 – Integrar en WordPress, versión 2

Hace 3 años y medio que hice el artículo de integración con WordPress.

Hace muy poco un desarrollador preguntó en el Foro de Xlinesoft que deseaba hacer un sistema para el usuario final, donde quería tener la funcionalidad de un CMS (como WordPress, Drupal, etc.) pero a su vez publicar información de un sistema PHPRunner y le dirigí a este artículo.

Comprobé que el plugin de WordPress que recomendaba (WP DATA ACCESS) había evolucionado muchísimo, pero la funcionalidad FREE la habían recortado por lo que ya no parecía tan interesante.

También, porque un desarrollador de España había comprado (a Xlinesoft)  el Template de WordPress y no encontraba forma de  hacerle funcionar,  estuve ayudándole.  Revisé esta solución compleja por disponer de funciones más amplias que las habituales de publicación de información y de  ahí mi conocimiento de la solución.

Con esta información estuve pensando que lo mejor era contar con un plugin del tipo «shortcode» de WP e inyectar la página creada en la aplicación PHPRunner en el punto de la página de WP y así inicie mis prueba.

Para hacer esta inyección de página he utilizado el plugin de WordPress «simple embed code» que todo lo que habría que hacer, una vez instado el plugin es insertar, en la página, una cadena del tipo «{{https://fhumanes.com/wp-elecciones/page_5_dashboard.php?iframe=y}} para que en el sitio se inyecte el contenido de esa URL.

Sin hacer nada, la página se ve, pero se mezclan los estilos de WordPress con los de la aplicación PHPRunner y queda francamente mal. Visto el problema, la solución la orienté a modificar el plugin de WP en el filtrar y cambiar el fichero de estilo de la aplicación de PHPRunner. Esto funcionaba a medias, ya que la primera página como iba por ese «proxy» se hacía el cambio, pero para el resto de peticiones, que van directamente a la aplicación no se hacía el cambio y seguía con el problema.

Objetivo

Insertar contenidos de páginas de aplicación realizada con PHPRunner en una web realizada con WordPress.

Si te interesa este tema, sigue leyendo el artículo en este link.

Guía 77- Ejecución de tareas en colas en «background»

Estoy muy contento con este ejercicio, pues es algo que los sistemas disponían (Oracle Forms y Report, por ejemplo) y es muy habitual en sistemas grandes, pero no se ve en los sistemas Web Forms y se echa mucho de menos.

Estamos acostumbrados en las aplicaciones Web Forms (como las que realizamos en PHPRunner) a que todo se ejecute en el mismo momento que se solicita y esto hace :

  • Que los usuarios se queden «colgados» durante el tiempo que se completa la petición.
  • No tenemos forma de asegurar el correcto funcionamiento del sistema, pues esos procesos largos y pesados intentan capturar todos los recursos del sistema y no tenemos forma de limitar las ejecuciones pesadas, ni secuenciarlas para que no compitan todas las peticiones con todas las peticiones.
  • Aplicaciones para muchos usuarios, hace que estos sistemas sean inestables y que se puedan «colgar» con cierta facilidad.

Objetivo

Disponer de un sistema de diferentes colas de ejecución de tareas en «background» que nos permita regular la carga de los sistemas y asegurar que las tareas pesadas se ejecutan en orden y secuenciadas, para que no saturen el sistema.

DEMO: https://fhumanes.com/scheduler_queue

Usuarios: admin/admin y user1/user1

Si estas interesado en este artículo, sigue leyéndolo en este enlace.