VândPupăză

Icon

Bine o zis cine o zis cand o zis ce o zis

Am publicat jquery.tabToggle.js

De-a lungul unui weekend prelungit am apucat sa scriu niste cod pentru sufletul meu si am publicat un plugin de jQuery: tabToggle.

Vezi un demo la http://bitesizebugs.com/lab/jquery/tabtoggle/

Sursa la: http://github.com/oslego/tabToggle/tree/master

Problema

Exista zeci de plugin-uri de jQuery prin care se obtine comportamentul JS de tab navigation, insa majoritatea developerilor au fost prea zelosi. Desi urmaresc acelasi behavior plugin-urile pe care le-am studiat vin la pachet cu multe alte functionalitati gen efecte vizuale, ajax calls, actiuni multiple pentru acelasi click sau impun o conventie de naming de tipul: “#tab_1″ declanseaza “#tab_content_1″.

Aceste workflow-uri fie iti fac munca enervanta (naming conventions) fie inseamna fisiere inutil de greoaie (12+ kb). Toate astea cand vrei doar un meniu de tip navigation.

Ideea

Am avut nevoie de un plugin simplu de tab navigation asa ca mi l-am scris: jquery.tabToggle.js.

Cand folosesti tabToggle iti selectezi prin jQuery un set de elemente care actioneaza drept triggers (tab-urile) si le atribui un alt set de elemente care joaca rolul contiutului corespunzator fiecarui tab (targets).

Atat! Fara conventii de nume, fara obligatia de a lucra doar cu UL-uri sau alte forme de ingradire a strucurii. Singura conditie este ca numarul de triggers sa fie egal cu numarul de targets – un aspect logic, de bun simt :)

Vezi exemplul de cod de pe pagina de demo pentru detalii tehnice.

Pentru moment singurul behavior este de visibility toggle a targetului atunci cand faci click pe trigger-ul corespunzator. Am vrut ca tabToggle sa fie simplu si la obiect.

Pentru flexibilitate intentionez sa expun public in JavaScript metodele care se ocupa de managementul elementelor ca sa iti poti defini orice efect sau behavior iti doresti.

Nu vreau sa iti limitez creativitatea cu tabToggle. Vreau doar sa iti ofer functionalitatea de baza pentru un meniu de tip tab navigation. Nu intentionez sa extind tabToggle cu support pentru AJAX calls sau sa definesc animatii intre tranzitii. Exista deja plugin-uri care fac asta.

Il aveam scris de mai demult dar in cursul weekend-ului l-am curatat, l-am documentat, l-am testat si l-am dat comunitatii sub forma de cod open source. In versiunea minified codul are sub 1kb deci va lasa o urma foarte mica asupra bandwidth-ului consumat.

Git – version control

Cu ocazia asta am invatat sa folosesc si git – un sistem de version control. Am cont pe github si mi-a placut ca mi-a dat version control, wiki, si bug tracker, gratuit, in acelasi pachet.

Partea cea mai gustoasa la git este considerata usurinta in operatiunile de fork si merge ale repository-ului – o componenta cheie in proiectele la care lucreaza mai multe persoane.

Mai mult open source

Dupa ce l-am facut public am primit mai multe aprecieri din partea prietenilor. Asta m-a incurajat sa pregatesc pentru publicare si alte bucati de cod JavaScript sub forma de jQuery plugins.

Daca ai ceva de spus esti binevenit sa lasi un comentariu.
Daca observi functionalitate gresita te rog sa deschizi un issue pe github ca sa il pot investiga si/sau repara.

Licenta?

Codul e open source deci il poti folosi fara obligatii in orice proiect. Nu ma pricep la licente asa ca poti folosi acest plugin atat in proiecte personale cat si comerciale fara obligatii.

Intentionez sa public viitoare plugin-uri sub licente MIT si GPL, la fel ca licentele pentru jQuery.

Intrebare pentru cei mai priceputi juridic: exista o alternativa de licenta mai potrivita pentru acest tip de cod?

Input cu format inflexibil

Cand iti trebuie continut dintr-un input cu un format special si ti-e lene sa aplici niste logica sau expresii regulate pe server poti folosi un plugin de jQuery care iti ajuta userul sa introduca datele corect.

Mi se pare un plugin indispensabil celor care prezinta formulare care cer date / numere de telefon intr-un format inflexibil.

Acest plugin iti poate reduce numarul de useri frustrati care primesc o eroare dupa submitarea formularului pentru ca au uitat sa introduca o cratima intre prefix si numarul de telefon.

Niciodata nu ar trebui sa te bazezi pe datele prelucrate doar pe client pentru ca JavaScript-ul se poate dezactiva si cineva iti poate face ravagii pe server.

Migrare de la WordPress 2.0 la 2.7

heading_wordpress_upgrade

In weekend am facut schimbarea de la versiunea 2.0 de WordPress la 2.7.1
Mutarea nu a fost pe atat de simpla pe cat ma asteptam asa ca am sa fac un mic checklist cu ce voodoo trebuie sa faci si cat trebuie sa te lepezi de satana ca sa migrezi un wordpress antic la 2.7

Export posturi

Schema tabelelor din baza de date 2.0 difera fata de cea din 2.7. Nu mai merge cu un dump simplu de SQL.

WordPress a implementat un sistem de export/import articole pe baza de XML dar nu au oferit oficial si un tool de conversie.

Iti trebuie un plugin care face export in WXR:
http://technosailor.com/2006/07/05/wordpress-to-wordpress-import/

Import posturi

Folosesti fisierul WXR exportat cu ajutorul plugin-ului de la technosailor.

Un copy de tabele in SQL nu merge pentru ca nu mai exsita tabelul post2cat care tinea relatiile dintre categorii si posturi.

wp-content/uploads

Pluginul de la technosailor poate face sincronizare de contintut intre folderele wp-content/uploads de pe cele doua versiuni.

Daca ti-ai mutat vechiul blog, sau doamne-fereste ti l-ai sters, va trebui sa iti recuperezi wp-content/uploads manual prin ftp dintr-un backup.

Probleme intalnite:

“A temporary folder is missing”

Cand faci import de fisier WXR pe un server care nu are definit “upload_tmp_dir” in php.ini primesti o eroare care te lasa in copac: “A temporaty folder is missing”.

E un mesaj destul de vag si mi-a luat ceva timp sa inteleg ce se intampla.
Aici afli cum sa iti setezi un folder temporar pentru Apache in php.ini: http://www.dwightjack.com/diary/2009/01/04/fixing-missing-a-temporary-folder-error-on-wordpress-27-uploader/

Am facut o solicitare la wordpress sa adauge ceva mai multe detalii la acest mesaj de eroare. Voteaza daca ti se pare utila.

Trebuie sa te asiguri ca wordpress are permisiuni de scriere in wp-content/uploads.

Blogroll-ul nu se importa

Pluginul de export/import de la technosailor iti salveaza posturile dar nu si link-urile din blogroll. Va rebui sa ti le adaugi manual din nou – 0cazie buna sa faci curatenie prin blogroll.