Julius'Lab

Nombre del autor:Julius Hernández

Problemas al reinstalar Adobe Photoshop

Delete everything that says Adobe on it from the following folders:

Program Files > Adobe
Program Files > Common Files > Adobe
Program Files (x86) > Adobe
Program Files (x86) > Common Files > Adobe
C:\Users\\AppData\Local\Adobe
C:\Program DATA\Adobe

NOTE: This will delete everything related to Adobe from your machine.

https://community.adobe.com/t5/download-install-discussions/trouble-uninstalling-adobe-cleaner-doesn-t-work/m-p/9847576#M78940

Problemas al reinstalar Adobe Photoshop Leer más »

(Formidable, Javascript) Recargar la página después que se ha enviado un formulario en un Bootstrap Modal

Un formulario insertado en un Bootstrap Modal (add-on de Formidable) no refrescará automáticamente la página, ocurriendo que, a la hora de hacer clic fuera de la ventana modal y luego abrir la modal de nuevo, mostrará el mismo formulario con el mensaje de éxito o error. Manualmente hay que recargar la página con el navegador.

Para evitar esto, hay que:

1. En los Ajustes del formulario > Al Enviar: Mostrar el formulario con el mensaje de confirmación.

2. Ajustes > Ajax > Activar Enviar este formulario con Ajax.

3. En los mensajes Al Enviar y Al Actualizar, colocar el siguiente javascript:

<script>
    setTimeout("window.location.reload(true);",2000);
</script> 

Siendo 2000 el número de milisegundos para que recargue la página.

(Formidable, Javascript) Recargar la página después que se ha enviado un formulario en un Bootstrap Modal Leer más »

(Javascript) Función para convertir cifras a texto (probar y pulir)

<script>
document.getElementById("numero").addEventListener("keyup",function(e){
    document.getElementById("texto").innerHTML=NumeroALetras(this.value);
});
 
 
function Unidades(num){
 
  switch(num)
  {
    case 1: return "UN";
    case 2: return "DOS";
    case 3: return "TRES";
    case 4: return "CUATRO";
    case 5: return "CINCO";
    case 6: return "SEIS";
    case 7: return "SIETE";
    case 8: return "OCHO";
    case 9: return "NUEVE";
  }
 
  return "";
}
 
function Decenas(num){
 
  decena = Math.floor(num/10);
  unidad = num - (decena * 10);
 
  switch(decena)
  {
    case 1:
      switch(unidad)
      {
        case 0: return "DIEZ";
        case 1: return "ONCE";
        case 2: return "DOCE";
        case 3: return "TRECE";
        case 4: return "CATORCE";
        case 5: return "QUINCE";
        default: return "DIECI" + Unidades(unidad);
      }
    case 2:
      switch(unidad)
      {
        case 0: return "VEINTE";
        default: return "VEINTI" + Unidades(unidad);
      }
    case 3: return DecenasY("TREINTA", unidad);
    case 4: return DecenasY("CUARENTA", unidad);
    case 5: return DecenasY("CINCUENTA", unidad);
    case 6: return DecenasY("SESENTA", unidad);
    case 7: return DecenasY("SETENTA", unidad);
    case 8: return DecenasY("OCHENTA", unidad);
    case 9: return DecenasY("NOVENTA", unidad);
    case 0: return Unidades(unidad);
  }
}//Unidades()
 
function DecenasY(strSin, numUnidades){
  if (numUnidades > 0)
    return strSin + " Y " + Unidades(numUnidades)
 
  return strSin;
}//DecenasY()
 
function Centenas(num){
 
  centenas = Math.floor(num / 100);
  decenas = num - (centenas * 100);
 
  switch(centenas)
  {
    case 1:
      if (decenas > 0)
        return "CIENTO " + Decenas(decenas);
      return "CIEN";
    case 2: return "DOSCIENTOS " + Decenas(decenas);
    case 3: return "TRESCIENTOS " + Decenas(decenas);
    case 4: return "CUATROCIENTOS " + Decenas(decenas);
    case 5: return "QUINIENTOS " + Decenas(decenas);
    case 6: return "SEISCIENTOS " + Decenas(decenas);
    case 7: return "SETECIENTOS " + Decenas(decenas);
    case 8: return "OCHOCIENTOS " + Decenas(decenas);
    case 9: return "NOVECIENTOS " + Decenas(decenas);
  }
 
  return Decenas(decenas);
}//Centenas()
 
function Seccion(num, divisor, strSingular, strPlural){
  cientos = Math.floor(num / divisor)
  resto = num - (cientos * divisor)
 
  letras = "";
 
  if (cientos > 0)
    if (cientos > 1)
      letras = Centenas(cientos) + " " + strPlural;
    else
      letras = strSingular;
 
  if (resto > 0)
    letras += "";
 
  return letras;
}//Seccion()
 
function Miles(num){
  divisor = 1000;
  cientos = Math.floor(num / divisor)
  resto = num - (cientos * divisor)
 
  strMiles = Seccion(num, divisor, "MIL", "MIL");
  strCentenas = Centenas(resto);
 
  if(strMiles == "")
    return strCentenas;
 
  return strMiles + " " + strCentenas;
 
  //return Seccion(num, divisor, "UN MIL", "MIL") + " " + Centenas(resto);
}//Miles()
 
function Millones(num){
  divisor = 1000000;
  cientos = Math.floor(num / divisor)
  resto = num - (cientos * divisor)
 
  strMillones = Seccion(num, divisor, "UN MILLÓN", "MILLONES");
  strMiles = Miles(resto);
 
  if(strMillones == "")
    return strMiles;
 
  return strMillones + " " + strMiles;
 
  //return Seccion(num, divisor, "UN MILLON", "MILLONES") + " " + Miles(resto);
}//Millones()
 
function NumeroALetras(num,centavos){
  var data = {
    numero: num,
    enteros: Math.floor(num),
    centavos: (((Math.round(num * 100)) - (Math.floor(num) * 100))),
    letrasCentavos: "",
  };
  if(centavos == undefined || centavos==false) {
    data.letrasMonedaPlural="PESOS";
    data.letrasMonedaSingular="PESO";
  }else{
    data.letrasMonedaPlural="CENTAVOS";
    data.letrasMonedaSingular="CENTAVO";
  }
 
  if (data.centavos > 0)
    data.letrasCentavos = "CON " + NumeroALetras(data.centavos,true);
 
  if(data.enteros == 0)
    return "CERO " + data.letrasMonedaPlural + " " + data.letrasCentavos;
  if (data.enteros == 1)
    return Millones(data.enteros) + " " + data.letrasMonedaSingular + " " + data.letrasCentavos;
  else
    return Millones(data.enteros) + " " + data.letrasMonedaPlural + " " + data.letrasCentavos;
}//NumeroALetras()
</script>

(Javascript) Función para convertir cifras a texto (probar y pulir) Leer más »

(Formidable, CSS) Cómo formatear los campos Dropdown dinámicos y sus placeholders

SELECTOR SIMPLE (ELEGIR SOLO UN VALOR)

#frm_form_35_container .chosen-container-single > a { //incluir #frm_form_35_container para formatear todos los dropdowns de un formulario
	height: 32px!important; //modifica y ajusta la altura del campo, 32px funciona bien para los tamaños estándar, "!important" es importante
}

#frm_form_35_container .chosen-container-single > a > span {
	font-size: 16px; line-height:32px!important; // tamaño y alineación vertical del placeholder
}

 
MULTISELECTOR


#field_usr_especialidad_dyn_chosen > ul > li > input { //altura del dropdown (usr_especialidad = nombre del dyn field)
	height: 30px!important;
}

#frm_form_35_container .chosen-search-input {
	font-size:16px!important; // sólo tamaño de la fuente, no he hallado la alineación del placeholder
}

(Formidable, CSS) Cómo formatear los campos Dropdown dinámicos y sus placeholders Leer más »

(Formidable) Actualizar un campo en otro formulario con el ID de la entrada del otro formulario (Ejemplo: ID de Usuario)

Al CREAR una entrada nueva, este código copiará el valor de un campo en un Formulario Origen, en una entrada de un Formulario Destino, identificando esta última entrada con el valor de un campo en el Formulario Origen.

El Formulario Origen debe tener un campo con la entrada (del Formulario Destino) que se desea actualizar.

El siguiente código aplica al ID de usuario, el cual se copiará en el ID de usuario de la otra entrada.

add_action('frm_after_create_entry', 'frm_update_entry_in_other_form', 30, 2);
function frm_update_entry_in_other_form($entry_id, $form_id){
    if ( $form_id !== 2 ) { // 2 es el Formulario Origen
        return;
    }

    $entry_id = $_POST['item_meta'][676]; //676 es el campo del Formulario Origen con el ID de la entrada del Formulario Destino en la que se va a copiar
    $field_id = 673; //673 es el campo ID de Usuario en el Formulario Destino (donde se va a colocar el valor)
    $new_value = $_POST['item_meta'][80];// 80 es el campo ID de Usuario del Formulario Origen (contiene el valor a copiar)

    $added = FrmEntryMeta::add_entry_meta( $entry_id, $field_id, null, $new_value );
    if ( ! $added ) {
        FrmEntryMeta::update_entry_meta( $entry_id, $field_id, null, $new_value );
    }
}

Fuente del código (modificado por Julius): https://formidableforms.com/knowledgebase/frm_after_create_entry/#kb-save-the-entry-id-in-a-field

(Formidable) Actualizar un campo en otro formulario con el ID de la entrada del otro formulario (Ejemplo: ID de Usuario) Leer más »

(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 »