Archive for Juliol, 2007

Problema amb el innerHTML d’una ’select’… en explorer

Amb el explorer no pots utilitzar el innerHTML per a canviar les opciones d’una llista d’HTML, amb el Firefox sí. La solució que es proposa des de Microsoft és utilitzar un DIV que envolte a la llista, i utilitzar innerHTML des del DIV.

http://support.microsoft.com/kb/276228/es

Comentaris

Algunes formes de crear Llistes desplegables amb javascript

Hi ha més maneres, però ens centrarem en la forma de crear-les insertant opció per opció, i no tot a la vegada, com podríem fer amb innerHTML o creant un Array.

La manera clásica, al menys per a mi, és creant objectes:

myList = document.forms['formular'].elements['box'];

optionNew = new Option(1,1);
optionNew2 = new Option(2,2);
optionNew3 = new Option(3,3);

myList.options[0] = optionNew;
myList.options[1] = optionNew2;
myList.options[2] = optionNew2;

Aquesta és compatible, al menys, amb Explorer i Firefox. També podríem utilitzar appendChild, però timdrem un problema de compatibilitat amb Explorer. El codi deuria de ser així:

optionNew = new Option(1,1);
optionNew2 = new Option(2,2);
optionNew3 = new Option(3,3);

myList.appendChild(optionNew);
myList.appendChild(optionNew2);
myList.appendChild(optionNew3);

Perquè ens funcione també amb Explorer, hauríem de crear elements en el DOM:

optionNew = document.createElement('option');
optionNew2 = document.createElement('option');
optionNew3 = document.createElement('option');
optionNew.value = 1;
optionNew2.value = 2;
optionNew3.value = 3;
optionNew.innerHTML = '1';
optionNew2.innerHTML = '2';
optionNew3.innerHTML = '3';

myList.appendChild(optionNew);
myList.appendChild(optionNew2);
myList.appendChild(optionNew3);

Ara ens quedaria veure la forma d’afegir algun que altre optGroup. Per exemple:

var optgroup = document.createElement('optgroup');
optgroup.label = "Prueba1";

var optgroup2 = document.createElement('optgroup');
optgroup2.label = "Prueba2";

optionNew = document.createElement('option');
optionNew2 = document.createElement('option');
optionNew3 = document.createElement('option');
optionNew.value = 1;
optionNew2.value = 2;
optionNew3.value = 3;
optionNew.innerHTML = '1';
optionNew2.innerHTML = '2';
optionNew3.innerHTML = '3';

optgroup.appendChild(optionNew);
optgroup2.appendChild(optionNew2);
optgroup2.appendChild(optionNew3);

myList.appendChild(optgroup);
myList.appendChild(optgroup2);

Podem fer més accions sobre les opcions, però ja ho veurem més endavant…

Comentaris

Fer que wordpress mostre els events futurs

Modificar el fitxer wp-includes/query.php:

  • En la línia 969 afegir una condició OR post_status='future'
  • En la línia 1084 afegir if ( 'future' == $status) { $this->is_preview = true; }, més els {} necessaris

Hi ha que modificar el sidebar de tema, perquè apareguen algunes coses bé. Per exemple, perquè aparega un DIV, amb els posts futurs, he afegit un troç de codi, molt paregut al que ja mostra els posts més recents, pero ara he canviat açò:

$posts = get_posts('numberposts=5&offset=1');

per açò:

$posts = get_posts('post_status=future');

Per que apareguen els posts futurs en les agrupacions per mes, he modificat el fitxer wp-includes/general-template.php, en la línia 358 he afegit una condició OR post_status='future'.
. Per cert, el meu template utilitzava la funció get_archives() que ya està deprecated, i l’he canviat per wp_get_archives().

La funció get_calendar() també está en wp-includes/general-template.php. Aquí no hi ha més remei que buscar tortes les selects que apareixen en la funció i possar la condició OR post_status='future'. A més de mirar-les totes, s’han de comprovar i, on hi estiga alguna condició de < currentTime o alguna cosa pareguda, haurem de llevar-la.

Comentaris

Instal·lar wordpress en dos idiomes

1.- Baixar e instal·lar wordpress:

  • Descomprimir l’arxiu.
  • Substituir alguns dels arxius, seguint les instrucciones donades en http://poplarware.com/bilingualblog.html S’ha de baixar el paquet corresponent a la versió de wordpress, descomprimir-lo i substituir els arxius que ens indiquen, abans d’instal·lar wordpress.
  • Crear una Base de dades.
  • Edició de l’arxiu wp-config.php. Els paràmetres seran els següents:
    • define(‘DB_NAME’, ‘wordpress’); <-- nom de la Base de dades
      define(‘DB_USER’, ‘username’); <-- nom de l'usuari
      define(‘DB_USER’, ‘password’); <-- contrasenya
      define(‘DB_HOST’, ‘localhost’);
  • Pujar els arxius al servidor
  • Accedir per mitjà de la URL, al fitxer wp-admin/install.php. I seguir els pasos que ens indica
  • Canviar la contrasenya de admin (la que ell ens proporciona)
  • Si tot va bé, eliminar el fitxer /wp-admin/install.php, i canviar els premisos a wp-config.php (600, per exemple).

2.- Instal·lar els paquets d’idioma

  • Aconseguir els paquets tipus .mo de castellà i català (es_ES.mo i ca_ES.mo).
  • Copiar-los en el directori /wp-includes/languages (si no existeix, s’ha de crear). En el plugin que instal·larem aconsellen fer còpia dels mateixos i dir-los es.mo i ca.mo, no he provat si funciona sense fer açò (jo el que he fet es tindre 4 fitxers, es_Es, ca_ES, ca i es).
  • Editar el fitxer wp-config.php, i canviar la línia define (’WPLANG’, ‘’); per define (’WPLANG’, ‘ca_ES’);
  • Amb açò ja tindrem la part privada del wordpress (i part de la pública, si no estem utilitzant una plantilla) traduïda.

3.- Instal·lar el plug-in langswitch i activar-lo. En el meu cas he instal·lat la versió 1.08, obtinguda de http://poplarware.com/languageplugin.html . S’ha de descomprimir i copiar en /wp-content/plugins. El plugin s’ha d’activar (amb el panell d’administració de wordpress).

4.- Anar al panell d’administració de wordpress, i anar al menú d’opcions. Una d’eixes opcions serà language switcher. Ahí podrem configurar l’idioma per defecte i els idiomes i formats d’hora/data soportats.

5.- Ara podrem canviar dinàmicament d’idioma afegint al final de la URL, el paràmetre: ?langswitch_lang=ca o ?langswitch_lang=es

6.- Les notícies s’han d’escriure entre les etiquetes [lang_es][/lang_es] i [lang_ca][/lang_ca]

7.- Si les dates no apreixen bé, pot ser siga culpa del tema. Reviseu el codi, i on estiga la funció get_time(), si es refereixes a la data i no al temps, s’ha de canviar per get_date().

No està tot fet, hi ha coses que encara no están traduïdes. Continuarem provant…

Comentaris