În urmă cu ceva timp am postat un cod ce activa atributul placeholder și pe browsere mai vechi. Tot folosind scriptul în diverse proiecte am observat (și reparat) mici probleme. Iată o versiune actualizată cu următoarele modificări:

  1. Am adăugat clasa placeholder pentru elemente. Astfel, poți stiliza diferit respectivul element în funcție de ce conține (valoare legitimă sau placeholder);
  2. Am adăugat un container, ce-ți permite să activezi suportul pentru placeholder și pentru elementele injectate în DOM (sau doar pentru anumite elemente; exemplu: enablePlaceholderSupport('#header')). Dacă nu e specificat niciun container, placeholder este activat pentru toate elementele din body;
  3. Am îmbunătățit modul în care se afișează atributele value vs placeholder;
  4. Și cred că atât.

Enjoy! Read the rest of this entry »

Usability Rant 3

Sunt curios dacă eu sunt defect: în imaginea de mai jos, sliderul din stânga (de lângă butonul ăla mare cu un difuzor pe el), ce îți inspiră că face? Că ar ajusta volumul sau luminozitatea?

jQuery Lightbox

Chiar dacă unora nu le place „fenomenul” Lightbox, sunt unii clienți care vor așa ceva cu orice preț. La o adică, ce contează un user nemulțumit dacă stăpânul este fericit? :D

Prin urmare, am purces la căutarea unui script suficient de light pentru a se încărca rapid (având în vedere că toți clienții mei nu au conexiuni rapide – deh, ăsta e dezavantajul de a nu lucra cu români…) dar cu suficiente opțiuni pentru a satisface și cele mai exigente cerințe. De cele mai multe ori, „cele mai exigente cerințe” înseamnă image sets, deci nu am avut nevoie de mare șmecherie.

Slimbox 2

Și am dat peste Slimbox. Ultima actualizare e de prin 2010, dar nu-i problemă, pentru că funcționează excelent cu ultima versiune de jQuery.

Să optimizăm!

Așa cum am precizat, avem nevoie de viteză. Pagina trebuie să se încarce rapid, iar artificiile mai puțin importante pot aștepta. Read the rest of this entry »

IE7 & IE8 vs. HTML5

Se știe că, by default, versiunile mai vechi ale Internet Explorer (6, 7, 8 ) nu recunosc nativ tag-urile introduse în HTML 5 (section, article etc). Pentru a rezolva problema asta se apelează la un snippet js:

Eu prefer să pun toată șmecheria asta direct în head, nu în fișier extern pentru că este destul de mic și nu se merită să blochez încărcarea paginii cu un request razna. Cu toată povestea asta de mai sus se rezolvă pagina curentă. DAR… Read the rest of this entry »

Cum modifici un URL?

Am fost pus – și nu o dată! – în situația de a modifica structura unui URL. Și nu e vorba de domeniu sau TLD ci de parametri.

De exemplu, din url-ul următor:


http://iamntz.com/?s=ie9&post_type=post&posts_per_page=15

Vreau să schimb parametri în:


http://iamntz.com/?s=ie9&post_type=custom_post_type&posts_per_page=25&current_page=5

Cum se face?

Chiar dacă în ultima vreme am băgat cod PHP mai mult decât mi-aș fi dorit (deși nu aș putea să mă plâng că nu mi-a plăcut), nu pot spune că sunt avansat. Probabil aș putea să mă încadrez pe undeva la average. Prin urmare, trebuie să improvizez: Read the rest of this entry »

Youtube embed code

Long story short, Adrian Boioglu era nemulțumit că youtube nu are povestea cu embed la îndemână, trebuind să facă vreo două-trei click-uri pentru a lua codul respectiv. Prin urmare… Iată o rezolvare relativ simplă: un script greasemonkey.

E făcut în viteză maximă, căci timpul e scurt. Nu detectează dacă un film poate sau nu poate fi embeded. Probleme, sugestii, comentarii? Read the rest of this entry »

Zilele acestea am lucrat la un site (WP în cazul ăsta nu a fost folosit ca blog ci ca un CMS, deci e site, nu? :D ) și am fost pus în situația următoare: clientul vroia ca userii să-și facă un cont rapid, fără a intra în pagina de admin sau a aștepta confirmări pe email.

Prima idee a fost să caut un plugin care face asta. Dar apoi mi-am dat seama că trebuie să existe și o alte modalități în afara unui plugin sau sql băgat cu tupeu cu $wpdb->query. Prin urmare, am mai căutat puțin și am descoperit wp_create_user().

Toată povestea asta creează un utilizator nou și îl și autentifică. Am folosit json_encode deoarece fac toată treaba asta via AJAX și reîncarc pagina doar dacă userul s-a adăugat cu succes.

Codul arată așa: Read the rest of this entry »

În urmă cu aproximativ o lună am zis să încerc și eu marea cu degetul: afiliați. Prin urmare am făcut un plugin tare drăguț pentru Emag Profitshare. La momentul respectiv am întrebat (doar pe twitter) dacă Emag are vreun soi de API public. Răspunsul a fost… inexistent.

Azi am observat că Sigmanet a lansat un program de afiliere ceva mai utilizabil decât cel vechi (care presupunea trimiterea unei invitații pe mail, userul trebuia să își facă un cont etc. Long story short, puțin cam ineficient sistemul pentru cei ce nu au prieteni ce-și cumpără lunar componente de minim 1000 lei).

Ce înseamnă un API public?

Cu un API public ar însemna un pas uriaș într-o direcție corectă. Gândește-te cum ar fi să afișezi pe site-ul tău link-ul spre un produs și imediat lângă să afișezi prețul la zi! Sau cum ar fi să ai în sidebar-ul admin-ului de WordPress un search pentru produse! (astea sunt doar două idei, prefer să le țin pentru mine pe restul ori până se lansează ceva de genul, ori până îmi pierd orice speranță :D )

Care este problema de fapt?

Nu există astfel de API-uri din două motive: Read the rest of this entry »

Deoarece am primit ceva plângeri că nu mai pun link-urile pe categorii, iată că titlurile reapar. Enjoy!

Cum zilele astea am avut de-a face mai mult cu limbaje server-side (PHP), link-urile din această săptămână vor reflecta acest lucru.

Serverside

Clientside

  • Operatorii în JavaScript. Știai că === e mai rapid decât == în toate browserele exceptând Firefox 4?
  • Pentru Internet Explorer (și alte browsere super moderne) avem nevoie de workarounds de genul ăsta. De ce să folosești CSS3 când poți folosi JavaScript? Microsoft FTW!

Workflow

  • Cred că orice freelancer (și nu numai!) și-a pus la un moment dat problema productivității și a timpului petrecut muncind vs. timpului pierdut aiurea. Folosesc Paymo de vreo doi ani (poate chiar mai mult?) dar mi s-a întâmplat de multe ori să lucrez la un proiect și să fie nevoie de „mici modificări” (să fim serioși, toată lumea știe că nu există așa ceva!) la alt proiect. Opream timerul pentru primul proiect, dar fiind un task mic nu mai porneam iar aplicația. Aparent și alții au aceeași problemă și, din fericire, cei de la Paymo au rezolvat această problemă cu Paymo Plus. O aplicație asemănătoare este Chrometa dar am observat că e destul de buggy și am renunțat la ea după câteva ore.
  • Git: treburi un pic mai avansate.

La cumpărături de tastaturi

Dacă tot mi-am lăudat tastatura MS 4000 a zis că ar fi mișto să-mi facă o glumă și să crape subit. Nu-i mai mergea fix o tastă: L. Nu-i bai, mă duc să cumpăr alta din magazin. Problema este că, fiind o tastatură destul de ciudată (deh, cine vrea o tastatură ergonomică, non glossy și fără luminițe?) nu prea este pe stoc. Am făcut comandă la Evomag, dar cum nu voi avea parte de ea imediat, a trebuit să mă duc să cumpăr o tastatură.

Ce concluzii am tras? Pentru un periferic atât de important pentru confortul mâinilor se pune accent pe… aspect, nicidecum pe funcționalitate. Glossy, beculețe, luminițe. Ergonomia tinde spre zero. Layout stupid. Cu mici excepții de la prietenii mei, Microsoft.

Are luminițe? Are. Este slim? Este. Este și glossy? Este, cum să nu fie? Păi și atunci unde e problema? Read the rest of this entry »