Raději tu ani nebudu psát jak dlouho mi to trvalo. Je pravda že jsem mezi tím dělal i jiné věci a hlavně si hrál s Dartem od Googlu, ale i tak nejsem spokojen se svou rychlostí. Zpět k anketám, co ankety umí. Do anket mohou hlasovat nebo přispívat pouze přihlášení uživatelé. Každý uživatel může do ankety hlasovat jen pro jednu odpověď a to pouze jednou. Je to tak proto aby někdo nehlasoval jak blbý aby byla nějaká odpověď (nej)lepší a abych já tak neměl zahlcenou DB a taky proto aby hlasování bylo více objektivní a nezmanipulované mnohočetným hlasováním. Pokud uživatel zahlasuje a do 60s si svou odpověď rozmyslí, může kliknout na odkaz, který právě po 60s zmizí. To samé s přidáváním odpovědí – mohou přidávat pouze přihlášení uživatelé, do každé ankety pouze jednou(výjimkou jsou majitelé anket, kteří mohou vložit odpovědi kolik chtějí přímo v anketě) a pokud do 60s si svou vloženou odpověď rozmyslí, může ji vzít zpět a zapsat novou nebo pro něco hlasovat. Zde je to akorát nedodělek, že pokud uživatel svou možnost hlasovat vezme zpět, klikne na odkaz, zapsaný hlas i odpověď se smažou, ale vizuálně zůstanou v anketě a jen se zobrazí zpráva že pokud chce uživatel zadat jinou vlastní hodnotu, ať refreshuje stránku. Pokud uživatel klikne na odpověď, kterou teď smazal, web nespadne ani nevypíše chybovou zprávu ASP.NET, ale nad anketou v boxu se zobrazí “Tato odpověď nebyla v DB nalezena.”. Čili i proti tomu je web chráněný. Na výběr pro možnosti v anketě je zatím 7 barev ale budu se snažit rychle přidat další. Když uživatel specifikuje odpověď, která ještě v tabulce není, přiřadí se jí náhodná barva právě z těchto 7 barev. Nebere to ohled na to jestli daná barva už v anketě je, takže i když je v anketě méně než 7 položek, tak se může stát že 8. položka bude mít stejnou barvu jako některá předchozí. Limit délky textu je pro otázku 80 znaků a pro odpověď 30 znaků. Dále pak limit odpovědí v jedné anketě je 255(což by už byla extrémně dlouhá anketa na stránce, protože zatím moje ankety neumí skrývat odpovědi které jsou níž nebo nemají tolik hlasů), limit hlasů i limit anket je neomezený ve smyslu že ho já uměle neomezuji, ale DB nějaké omezení má. Ale to je moje starost až budou docházet indexy abych změnil datový typ sloupce nebo to vyřešil jinak. Ve výsledném HTML ankety se můžou seřadit položky podle počtu jejich kliknutí sestupně. U každé ankety mám poznačeno datum kdy byla vytvořena i datum, kdy může vypršet, které může být nastaveno na Nikdy. Datum vytvoření po vytvoření ankety už nejde nijak změnit, kdežto datum expirace lze libovolně měnit ve správě ankety. Pro mě jako pro webmastera je výhoda že se mi podařilo všechen JS dát k výstupu html, takže teď pouze specifikuji
Mám stránku pro zobrazení všech anket uživatele, kde kliknutím na ikonku se načte editační stránka ankety. Tato stránka obsahuje pouze tabulku se stránkováním s informacemi o anketě a editačním tlačítkem. Dále je zde možnost ankety řadit podle těchto kritérií:
- Výchozí (bez třídění)
- Podle počtu odpovědí
- Podle možnosti přidávat další odpovědi
- Podle data vytvoření
- Podle data expirace
- Podle celkového počtu hlasů
- Podle názvu ankety a->z
Přidávání nové odpovědi. Dokud se nezadá text, tlačítko pro uložení zůstane skryté.
Po zadání libovolného textu se tlačítko aktivuje.
Popup pro editaci odpovědi.
A hotové ankety v reálu, prvně se “blbými” daty se kterýma jsem to zkoušel na localhostu:
A pokud si to chcete vyzkoušet přímo na stránce, můžete na http://www.sunamo.net/geocaching/ . Jinde jsem zatím tuto anketu nedal(i když budou postupně přibývat a navíc chystám blogovací systém(uff), kde se bude moci dát anketa pod každý článek). Někdy až implementuji to API abych na něj mohl přispívat pomocí Windows Live Writeru a udělám ten blog systém schopný, přenesu si tam možná i tento blog na Bloggeru :).
]]>