viernes, 13 de diciembre de 2013

Trabajando con el Módulo Webform Add More en Drupal 7


Para inicar este post, se debe tener en cuenta las siguientes consideraciones:
  • Trabajar en un sitio en Drupal 7
  • Contar con un formulario usando el módulo Webform 
Ahora si podemos continuar, primero ¿que de interesante tiene este módulo?, pues permite seleccionar  a un conjunto de campos (fieldsets) para que inicialmente estén escondidos y de forma progresiva se vayen mostrado cuando se de click en un botón Añadir más. 

Da la apariencia de los field collection de añadir más campos de forma dinámica, debido a que aún no hay esta funcionalidad.

Sabiendo esto continuamos con la siguiente secuencia de pasos:
- Descargar e instalar el módulo Webform Add More
- Para nuestro mi caso cuento con la siguiente estructura de campos en mi formulario:


- Clonaré el fielset (Animal Care Teams) dando click al enlace Clone y dando check a la opción Add More Fieldset, obtenemos lo siguiente.


- Hacer el paso anterior y clonar una vez más
- Luego tendremos la siguiente estructura en el back-end:


- Finalmente en el front-end dando un poco de estilos con CSS tendremos:



Ahondando un poco más allá

Hasta ahora sólo se explicó un caso simple, que pasa si se agrega un fieldset más llamado Shelters, se sigue todos los pasos descritos anteriormente, pero como el módulo trabaja haciendo referencia a un fieldset se tiene que anidar cada fieldset (Animal Care Teams y Shelters)  dentro de otro, quedando de la siguiente forma:



Pero se presenta un problema... hay un bug en el módulo cuando se tiene fieldsets anidados, y si se prueba agregando y removiendo varias veces te darás con la sorpresa que duplica algunos botones e incluso no los muestra cuando debería.

Pero no se preocupe para corregirlo es necesario hacer los siguientes cambios en el archivo webform_addmore.js:

diff B .../sites/all/modules/webform_addmore/js/webform_addmore.js .../webform_addmore/js/webform_addmore.js
26c26
<           var parent_fieldset = $(this).closest('fieldset');
---
>           var parent_fieldset = $(this).parents('fieldset');
38,41c38
<           //Corrects duplicate Delete buttons
<           if (next.find(".del-btn").attr("class") == undefined) {
<             $(next).append(delBtn);
<           }
---
>           $(next).append(delBtn);
52,53c49
<           var parent_fieldset = $(this).closest('fieldset');
<           if (parent_fieldset.length==0) { return false;}
---
>           var parent_fieldset = $(this).parent();
63c59
<            
---
>
76,81c72,74
<           //Corrects duplicate AddMore buttons
<           if (cont.find(".add-more").attr("class") == undefined) {
<             $(cont).append(addBtn);
<           } else if (cont.find(".add-more").not(':visible').attr("class") != undefined) {
<             cont.find(".add-more").show();
<           }
---
>
>           $(cont).append(addBtn);
>           addBtn.show();
96c89
<         });
---
>         })


y que finalmente quede de la siguiente forma:




Espero les haya servido de algo, saludos y hasta la próxima.


viernes, 22 de marzo de 2013

Trabajando con servidores de versiones GIT, Mercurial


Mercurial

Error al hacer un hg clone 

$ hg clone https://sources.mydomain.com/clients
abort: sources.mydomain.com certificate error: certificate is for *.mydomain.com, mydomain.com (use --insecure to connect insecurely)

La solución es poner el comando --insecure para no verificar el certificado del servidor (ignoring web.cacerts config)

$ hg clone --insecure https://sources.mydomain.com/clients

para mayor información sobre los comandos de Mercurial hacer un: man hg en la terminal

$ man hg

martes, 26 de febrero de 2013

Comandos útiles de linux

1. Comando Tar
     El comando te tienes que ejecutar desde la consola es el siguiente:
   tar -zcvf nombre-archivo.tar.gz nombre-directorio
Donde,
  • -z: Comprimir archivos usando gzip
  • -c: Crear un nuevo archivo
  • -v: Verbose, es decir, mostrar el proceso durante la creacion del archivo
  • -f: nombre de archivo
- Comprimir todos los archivos y excluir un archivo y un directorio
   tar -zcvf myfiles.tar.gz * --exclude=file1.txt --exclude=directory1/

Ahora bien, Como Descomprimir un archivo .tar.gz.
El comando necesario para descomprimir sería el mismo pero cambiando algunos atributos.
tar -xvzf miarcho.tar.gz
 Donde:
  • -x: extrae el contenido del archivo comprimido
  • -v: Verbose, es decir, mostrar el proceso durante la creacion del archivo
  • -f: nombre de archivo

- Extraer un sólo archivo en un directorio diferente( usar -C)

  tar -zxvf test.tar.gz testfile1 -C anotherDirectory/

2. Borrar carpetas/directorios
  • elimina directorio:  rmdir /home/micarpeta
  •  recursivo(elimina directorios y subdirectorios): rm -rf /home/micarpeta

3. Copiar archivos de servidor remoto a tu servidor local

    scp -r user@server1:/var/www/html/ /backup

4. Copiar (transferir) de un servidor(server 1) 
a otro (server2)
    scp -r user@server1:/var/www/html/ user@server2:/var/www/html/

5. Mover archivos o carpeta de un directorio a otro

  • Mueve todos los archivos de la misma extension a otra carpeta 
          mv *.tar.gz backup/
      • Mueve todos los archivos aunque se encuentren en diversos subdirectorios.
                mv **/*.zip backup/
      • Mueve todos los archivos de un directorio a otro(incluyendo archivos .htaccess y otros)
                mv /directory_one/* /directory_one/.* /directory


      7. Combinar varios archivos en uno solo:
      cat score.txt names.txt > report.txt
      cat report.txt