2006-11-20

Dojo dátumválasztó agyműtét

Még mindig Dojo. Két baj volt a DropdownDatePicker-rel ami miatt bele kellett kicsit másznom a kódba. Az egyik, hogy ha érvénytelen értéket írok bele a HTML-ben, akkor hülyén jelenik meg a dátumválasztó (mindenhol NaN van), márpedig nem ártana ha megjelenítené azt az érvénytelen értéket is a szövegmezőben, a dátumválasztó komponensben meg pl. a mai napot. A másik, hogy a 0.3-0.4 verzióváltás egy kicsit döcögősre sikerült. Megváltoztak mezők nevei (date-value, displazFormat-dateFormat) és senki sem védi meg tőle a doksikkal nem elhalmozott programozót hogy keverve használja ezeket a dolgokat.

Állítólag az első problémát már próbálják orvosolni a 0.4.1-re, de nem nagyon bízom benne hogy úgy sikerül ahogy kellene neki. A repo-ban is olyat olvastam, hogy valaki bekommitolt valamit, a másik kipróbálta és nem működött. Verziók...

Szóval a következőt csinálja ez a dropdowndatepicker:

  1. A value mezőből kiolvassa a string értéket és megpróbálja dátummá konvertálni. Próbálja Rfc3339-es (yyyy-mm-dd) formátumban is meg más formátumban is. Közben warningol, mert Rfc3339 lesz a támogatott 0.5-től és senki sem azt használja. Ha sikerül neki a parse-olás akkor a value változóban egy szép érvényes dátum objektum lesz, ha nem sikerül akkor egy érvénytelen dátum. (Ami baj, mert máris elveszett az eredetileg beírt érték.)
  2. Ezután a dátum szerint beállítja a dátumválasztó komponenst. Ha érvénytelen volt a dátum, mindenhol NaN lesz.
  3. Végül a dátumválasztó állapota szerint visszaírja a szövegmezőbe a dátumot a megadott formátummal. Tehát ha véletlenül megmaradt volna az érvénytelen érték, még itt is felülvágná.
Ráadásul Post-olás előtt, ha érvénytelen dátum van a szövegmezőben, akkor felülvágja a komponensen kiválasztott dátummal, de ez csak a 0.4-es verzióban támogatott displayFormat használatánál jelentkezik. Van is egy szép TODO komment ezzel kapcsolatban a forrásban.

Szóval a következő helyeken nyúltam bele az agyába:

  • Ha a kiolvasásnál nem tudja dátummá konvertálni, nem ír vissza érvénytelen dátumot, hanem magát a string-et írja vissza.
  • Ha a dátumválasztó komponens beállítása előtt érzékeli hogy a value típusa string, a komponensen a mai napot jeleníti meg.
  • Ha a value típusa string, nem frissíti a szövegmezőt a komponens értéke szerint (mai nap).

Ha lenne attach-olási lehetőség, beraknám ide a kódot.

2006-11-03

This page contains both secure and nonsecure items, dojo 0.3

Csináltam egy SSL-en keresztül működő webalkalmazást amiben egy javascript frameworköt használtam. Az Exploreres felhasználók beszóltak, hogy minden egyes kattintásra egy kedves "This page contains both secure and nonsecure items" figyelmeztető ablak jelenik meg, és ez nem jó.

Szerencsére kéznél volt a Google, beírtam a figyelmeztető üzenet szövegét és már jöttek is a találatok, köztük ez a link, ami szépen -ábrákkal tűzdelve- leírja, hogy mit kell beállítani az exploreren.

Feljött még egy fórumos találat, amiben leírták, hogy ez azért van, mert az alkalmazás SSL-en keresztül megy, de lehet hogy valahol belül HTTP hivatkozást használ HTTPS helyett. Valami iframe-s témát is emlegettek és valaki leírta, hogy ő olyan webalkalmazást csinál, amit több ezren használnak és kicsit durva lenne minden felhasználónak leveleket küldözgetni. Illetve főleg azok a felhasználók lehetnek problémásak akik ennél komolyabb leveleket szoktak kapni, pl. vezérigazgató.

Szóval frankó lett volna egy olyan megoldás amit a szerveren programozással meg lehet oldani, de biztos voltam benne, hogy minden hivatkozást relatíven adtam meg, tehát nálam minden HTTPS volt. A javascript keretrendszerben lehet a kutya elásva, ami Dojo. Egészen pontosan Dojo 0.3.1

Nos, azt hittem itt további trükközésekről, kód és fórumbányászatról fogok írni, de nem: Letöltöttem a Dojo 0.4-et és működött. (Működik.)