Julius'Lab

Formidable

(Formidable/Javascript) Convertir a Title Case el texto ingresado

Añadir el siguiente código en After Fields (Campos Después):

<script>
   function titleCase(string) {
      var sentence = string.toLowerCase().split(" ");
      for(var i = 0; i< sentence.length; i++){
         sentence[i] = sentence[i][0].toUpperCase() + sentence[i].slice(1);
      }
   return (sentence.join(" "));
   }
</script>

Del campo que se requiera transformar, buscar la caja correspondiente en Ajustes > Personalizar HTML, y sustituir el [input] por:

[input onblur="this.value = titleCase(this.value);"]

El método onblur ocurre cuando se pierde el foco del campo. Si se desea que ocurra mientras se escribe, usar onkeyup.

(Formidable/Javascript) Convertir a Title Case el texto ingresado Leer más »

(Formidable) usr_meta: códigos de comparación y resultados (code snippets)

SHORTCODE (CON PARÁMETRO) DEVUELVE TRUE (1) SI ES IGUAL A usr_tipo (user meta) DEL USUARIO ACTUAL
Uso: [checkmeta vum=»valor a comparar»] . Colocar el shortcode en posts o pages.

add_shortcode('checkmeta','check_user_meta');
function check_user_meta ( $atts ) {
   $currentusermeta = get_user_meta( get_current_user_id(), 'usr_tipo', $single = true ); //cambiar usr_tipo al user meta que se quiera usar
    $valueusermeta = $atts['vum'];
    if($currentusermeta == $valueusermeta)
	return true;
    else
	return false;
    }

SHORTCODE (SIN PARÁMETRO). DEVUELVE TRUE (1) SI ES IGUAL A usr_tipo (user meta) DEL USUARIO ACTUAL
Uso: [checkmeta] . Colocar el shortcode en posts o pages. Cambiar $valueusermeta = «valor a comparar».

add_shortcode('checkmeta','check_user_meta');
function check_user_meta () {
   $currentusermeta = get_user_meta( get_current_user_id(), 'usr_tipo', $single = true );
    $valueusermeta = "Médico";
    if($currentusermeta == $valueusermeta)
	return true;
    else
	return false;
    }

SHORTCODE (SIN PARÁMETRO). DEVUELVE EL VALOR DE usr_tipo (user meta) DEL USUARIO ACTUAL
Uso: [displayusermeta] . Colocar el shortcode en posts o pages. Cambiar $valueusermeta = «valor a comparar».

add_shortcode('displayusermeta','check_user_meta');
function check_user_meta () {
   $currentusermeta = get_user_meta( get_current_user_id(), 'usr_tipo', $single = true );
   return $currentusermeta;
}

DIVI – PLUGIN: CONTENT VISIBILITY FOR DIVI (FUNCIÓN CON PARÁMETRO)
Divi no tiene un plugin como Stax Visibility Logic para Elementor, donde permite elegir la visibilidad de un bloque seleccionando «by user meta». El plugin de Divi «Content Visibility for Divi» sólo agrega una caja en las opciones donde debe ponerse una expresión PHP booleana (que devuelva True), para ocultar el bloque. Para esto, la función siguiente sirve.

Uso: check_user_meta («parámetro») (sin corchetes)| Ejemplo: check_user_meta («Médico»)

Colocarlo en la caja Content visibility de Divi>Cualquier elemento>Panel opciones>Avanzado>Visibilidad

function check_user_meta ( $valueusermeta ) {
   $currentusermeta = get_user_meta( get_current_user_id(), 'usr_tipo', $single = true );
   if($currentusermeta == $valueusermeta)
	return true;
    else
	return false;
    }

(Formidable) usr_meta: códigos de comparación y resultados (code snippets) Leer más »

(Formidable/Javascript/RegEx) Quitar todas las etiquetas de un texto (RegEx way)

Se tienen dos campos: uno con RTF (text-rtf) y otro como texto normal (text-norm).
El objetivo es copiar el texto ingresado en text-rtf a text-norm despojándolo de todas las etiquetas HTML.
De pilón, despojar también de la entidad &nbsp; y otros semovientes similares que vayan apareciendo.

Se coloca en Personalizar HTML > «Campos después» (Fields after) del formulario, el siguiente código:

<script type="text/javascript">
jQuery( document ).ready( function ( $ ) { //COPIA DE text-rtf A text-norm
    $( '#field_text-rtf' ).change ( function () { //source field key
        var originalValue = $( "#field_text-rtf" ).val(); //source field key
        var newValue = originalValue.replace( /(<([^>]+)>)|&nbsp;/ig, '');
        $( "#field_text-normal" ).val( newValue ); //destination field key
        $( "#field_text-normal" ).change(); //destination field key
    });
});
</script>

La clave es el RegEx que está dentro del método Replace:

/(<([^>]+)>)|&nbsp;/ig

El cual se divide con la entidad «|» (or) para buscar también la entidad &nbsp;.
El RegEx sólo para las etiquetas es

/(<([^>]+)>)/ig

(Formidable/Javascript/RegEx) Quitar todas las etiquetas de un texto (RegEx way) Leer más »

(Formidable) Limitar número de caracteres con Javascript

Como siempre, poner el script en Personalizar HTML > «Campos después» (Fields after) del formulario.

<script type="text/javascript">
jQuery(document).ready(function($){ // Limita número de caracteres a 20
    $('#field_CLAVE_CAMPO').change(function(){ // Cambiar CLAVE_CAMPO al field key necesario
        if($(this).val().length>20){
             $(this).val($(this).val().substr(0, 20)); // Cambiar ambos 20 por el límite deseado
        }
    });
});
</script>

Sin embargo, este código no funciona para impedir escribir más de 20 caracteres, simplemente «trunca» el texto ingresado después del vigésimo caracter. En caso de que quiera impedirse que se pase de 20 caracteres, usar el built-in de Formidable sólo en texto normal, no en RTF.

Tomado y corregido de Limit number of characters en Formidable Forms hooks for developers.

(Formidable) Limitar número de caracteres con Javascript Leer más »

(Formidable) Problema con shortcodes en modal RESUELTO – Sintaxis de shortcode

Los shortcodes funcionan en ventanas modales. Lo que pasa es que los shortcodes con parámetros deben venir sin «comillas», de esta forma:

[ formidable id=x readonly=administrator ]

No de esta forma, como lo indican aquí:

[ formidable id=x readonly=’administrator’ ] o [ formidable id=x readonly=»administrator» ]

Esta aclaración viene porque implementé una ventana modal en GuíaSaludMx y dentro un formulario con un parámetro del custom code mencionado arriba. No funcionó, porque al parámetro le puse las comillas, y me hizo pensar que el problema era la ventana modal.

(Formidable) Problema con shortcodes en modal RESUELTO – Sintaxis de shortcode Leer más »

(Formidable) Agregar contenido en un View cada cierto número de entradas

Esto puede ponerse debajo del código, al final del contenido del view. Sustituir el 3 por la cantidad de entradas entre cada contenido.

[ frm-condition source=frm-math decimal=1 content="[entry_position] % 3" equals="0" ]
    Contenido aquí
[ /frm-condition ]

Usos sugeridos:

  • En una vista de impresión, mostrar dos elementos en cada página (incluyendo un page-break al final y colocándolo dentro de la frm-condition).
  • Insertar un anuncio cada n número de entradas.

(Formidable) Agregar contenido en un View cada cierto número de entradas Leer más »

Copiar el valor de un Dynamic Field a un campo de texto o combinar varios en uno solo

COPIAR EL VALOR DE UN DYNAMIC FIELD A UN CAMPO DE TEXTO. #

Agregar el siguiente fragmento de código:

add_filter('frm_validate_field_entry', 'copy_my_dynamic_field', 10, 3);
function copy_my_dynamic_field( $errors, $posted_field, $posted_value ) {
  if ( $posted_field->id == 125 ) {
    $_POST['item_meta'][ $posted_field->id ] = FrmProEntriesController::get_field_value_shortcode( array( 'field_id' => 50, 'entry' => $_POST['item_meta'][120] ) );
  }
  return $errors;
}

125 es el ID del campo de texto donde se copiará.
120 es el campo dinámico que contiene el valor a copiar, y
50 es el campo original del cual el campo dinámico jalan las entradas.

COMBINAR VARIOS VALORES (DINÁMICOS O NO) EN UN CAMPO DE TEXTO #

add_filter('frm_validate_field_entry', 'combine_to_one_field', 8, 3);
function combine_to_one_field( $errors, $posted_field, $posted_value ) {
    if($posted_field->id == 125){ //change 125 to the ID of the destination field
        //change the value between the quotes to what should go in-between values
        $separator = " - ";
        $_POST['item_meta'][125] =
        $_POST['item_meta'][17] . $separator .
        $_POST['item_meta'][ $posted_field->id ] = FrmProEntriesController::get_field_value_shortcode( array( 'field_id' => 60, 'entry' => $_POST['item_meta'][19] ) ) . $separator .
        $_POST['item_meta'][ $posted_field->id ] = FrmProEntriesController::get_field_value_shortcode( array( 'field_id' => 58, 'entry' => $_POST['item_meta'][32] ) );
    }
    return $errors;
}

125 es el ID del campo de texto donde se combinarán los campos.
La línea con el campo 17 es un campo normal.
Las líneas con FrmProEntriesController son las de los campos dinámicos. En la primera línea, 19 es el ID del dynamic field a copiar y el 60 es el id del campo de donde jala las entradas.

Copiar el valor de un Dynamic Field a un campo de texto o combinar varios en uno solo Leer más »

(Javascript – Formidable) Accionar un campo Toggle de acuerdo al valor de un campo de selección

Colocar este código en la sección Campos Después (Fields After) en Personalizar HTML del formulario.

<script type="text/javascript">
jQuery(document).ready(function($){
  $('select[name="item_meta[530]"]').change(function(){ //530 es el campo de selección (dropdown)
     var val1 = $("select[name='item_meta[530]']").val();
     if (val1 == 'Pendiente' || val1 == 'Por entregar' || val1 == 'En proceso' || val1 =='Incumplimiento')
     {$("#field_bloqueado").attr("checked", true);} // "bloqueado" es el key del campo toggle a accionar
     else if (val1 == '' || val1 == 'Rechazado' || val1 == 'Cancelado' || val1 =='Concretado')
     {$("#field_bloqueado").attr("checked", false);}
     $("#field_bloqueado").change();
  });
});
</script>
<script type="text/javascript">
jQuery(document).ready(function($){
var oldValue = '';
var dynamic_field = document.getElementById("field_dfe");
var hidden_field = document.getElementById("field_hidden");
var aTimer;
var counter;

$(dynamic_field).change(function(){
oldValue = $("#field_just_show_it").val() ;
if (!(aTimer == undefined) ) clearInterval(aTimer) ;
counter = 0 ;
aTimer = setInterval(function(){
var newValue = $("#field_just_show_it").val() ;
counter ++ ;
if ( (newValue != oldValue) ){
if (newValue != oldValue && newValue != undefined) {
hidden_field.value = newValue;
oldValue = newValue;
$(hidden_field).change();
}
clearInterval(aTimer) ;
}
} , 100) ;
}) ;
}) ;

</script>

(Javascript – Formidable) Accionar un campo Toggle de acuerdo al valor de un campo de selección Leer más »