Radsi tu ani nebudu psat jak dlouho mi to trvalo. Je pravda ze jsem mezi tim delal i jine veci a hlavne si hral s Dartem od Googlu, ale i tak nejsem spokojen se svou rychlosti. Zpet k anketam, co ankety umi. Do anket mohou hlasovat nebo prispivat pouze prihlaseni uzivatele. Kazdy uzivatel muze do ankety hlasovat jen pro jednu odpoved a to pouze jednou. Je to tak proto aby nekdo nehlasoval jak blby aby byla nejaka odpoved (nej)lepsi a abych ja tak nemel zahlcenou DB a taky proto aby hlasovani bylo vice objektivni a nezmanipulovane mnohacetnym hlasovanim. Pokud uzivatel zahlasuje a do 60s si svou odpoved rozmysli, muze kliknout na odkaz, ktery prave po 60s zmizi.
To same s pridavanim odpovedi – mohou pridavat pouze prihlaseni uzivatele, do kazde ankety pouze jednou(vyjimkou jsou majitele anket, kteri mohou vlozit odpovedi kolik chteji primo v ankete) a pokud do 60s si svou vlozenou odpoved rozmysli, muze ji vzit zpet a zapsat novou nebo pro neco hlasovat. Zde je to akorat nedodelek, ze pokud uzivatel svou moznost hlasovat vezme zpet, klikne na odkaz, zapsany hlas i odpoved se smazou, ale vizualne zustanou v ankete a jen se zobrazi zprava ze pokud chce uzivatel zadat jinou vlastni hodnotu, at refreshuje stranku. Pokud uzivatel klikne na odpoved, kterou ted smazal, web nespadne ani nevypise chybovou zpravu ASP.NET, ale nad anketou v boxu se zobrazi “Tato odpoved nebyla v DB nalezena.”. Cili i proti tomu je web chraneny. Na vyber pro moznosti v ankete je zatim 7 barev ale budu se snazit rychle pridat dalsi.
Kdyz uzivatel specifikuje odpoved, ktera jeste v tabulce neni, priradi se ji nahodna barva prave z techto 7 barev. Nebere to ohled na to jestli dana barva uz v ankete je, takze i kdyz je v ankete mene nez 7 polozek, tak se muze stat ze 8. polozka bude mit stejnou barvu jako nektera predchozi. Limit delky textu je pro otazku 80 znaku a pro odpoved 30 znaku. Dale pak limit odpovedi v jedne ankete je 255(coz by uz byla extremne dlouha anketa na strance, protoze zatim moje ankety neumi skryvat odpovedi ktere jsou niz nebo nemaji tolik hlasu), limit hlasu i limit anket je neomezeny ve smyslu ze ho ja umele neomezuji, ale DB nejake omezeni ma. Ale to je moje starost az budou dochazet indexy abych zmenil datovy typ sloupce nebo to vyresil jinak.
Ve vyslednem HTML ankety se muzou seradit polozky podle poctu jejich kliknuti sestupne. U kazde ankety mam poznaceno datum kdy byla vytvorena i datum, kdy muze vyprset, ktere muze byt nastaveno na Nikdy. Datum vytvoreni po vytvoreni ankety uz nejde nijak zmenit, kdezto datum expirace lze libovolne menit ve sprave ankety. Pro me jako pro webmastera je vyhoda ze se mi podarilo vsechen JS dat k vystupu html, takze ted pouze specifikuji
a v C# kodu zavolam jedinou metodu, kterou tento div naplnim. Tato metoda si bere jediny parametr a to ID ankety. O nic vice se nemusim starat, zadne kopirovani JS kodu do stranek, kde muze ale taky nemusi byt anketa. Na jedne strance muze byt vice anket, ale vsechny maji sve vlastni JS metody a funkce, takze nevyhoda je ve vetsim mnozstvi kodu, vyhoda je ze prohlizece nebudou zmatene kterou funkci maji pouzit.
Dalsi nedodelek anket je ze kdyz se bude hlasovat/zadavat nova odpoved, tak se pouze aktualizuje pocet hlasu, % a graf u odpovedi ktere jste dali hlas. Vsechny ostatni odpovedi, ackoliv se pomer hlasu zmenil, zustanou nezmeneny dokud nereloadnete stranku. Nahore je box ktery zobrazuje informace ktere anketa podava a dole je pocet hlasu celkove, ktery se aktualizuje nahoru ci dolu podle toho zda hlasujete / pridavate odpoved nebo odebirate hlas. Toto by bylo k samotnym anketam na strankach a ted k strankam, ktere tyto ankety spravuji:
Mam stranku pro zobrazeni vsech anket uzivatele, kde kliknutim na ikonku se nacte editacni stranka ankety. Tato stranka obsahuje pouze tabulku se strankovanim s informacemi o ankete a editacnim tlacitkem. Dale je zde moznost ankety radit podle techto kriterii:
- Vychozi (bez trideni)
- Podle poctu odpovedi
- Podle moznosti pridavat dalsi odpovedi
- Podle data vytvoreni
- Podle data expirace
- Podle celkoveho poctu hlasu
- Podle nazvu ankety a->z
Editacni stranka ankety ma 2 mody – Vytvareni nove ankety a Editace stavajici ankety. Pokud v adrese specifikujete misto ID ankety ‘new’, tak se vam otevre v rezimu Vytvareni nove ankety. Po vyplneni zakladnich meta informaci a kliknuti na tlacitko se vytvori v DB anketa a vas to presmeruje na stejnou stranku, pouze s ID teto ankety, kde uz muzete pridavat odpovedi. Odpovedi se pridavaji v popupu, vyplnite nazev odpovedi(tlacitko pro ulozeni se vam zobrazi az kdyz zadate neprazdny text), barvu zmenite pokud vam nebude vyhovovat a stisknete tlacitko. Pokud si rozmyslite ze nechcete pridavat novou odpoved, zmacknete tlacitko “zavrit” nebo kliknete kdekoliv mimo popup a ten se zavre.
Ihned po pridani odpovedi se bez postbacku prida tato odpoved ke stavajicim. S popupem je i editace odpovedi, tu lze zmenit ale jen barvu, text odpovedi zmenit nelze. Posledni akce je smazani odpovedi, to je bez popupu. Je tam jeste jedno tlacitko pro statistiky, ale to je zatim prazdna stranka. Dalsi funkci ktere web umi je kompletne smazat celou anketu vcetne vsech odpovedi a hlasu. Pokud nekde uzivatel neaktualizuje ID nebo odkaz na anketu uplne nevymaze, zobrazi se mu na tomto miste “tato anketa nebyla nalezena”. Par starsich obrazku z administrace z jeste nehotove verze:
Pridavani nove odpovedi. Dokud se nezada text, tlacitko pro ulozeni zustane skryte.
Po zadani libovolneho textu se tlacitko aktivuje.
Popup pro editaci odpovedi.
A hotove ankety v realu, prvne se “blbymi” daty se kteryma jsem to zkousel na localhostu:
A pokud si to chcete vyzkouset primo na strance, muzete na
http://www.sunamo.net/geocaching/ . Jinde jsem zatim tuto anketu nedal(i kdyz budou postupne pribyvat a navic chystam blogovaci system(uff), kde se bude moci dat anketa pod kazdy clanek). Nekdy az implementuji to API abych na nej mohl prispivat pomoci Windows Live Writeru a udelam ten blog system schopny, prenesu si tam mozna i tento blog na Bloggeru :).
]]>