Regionální potravina – internetové technologie – ČZU pef kit
Dokumentace – expost –závěrečná
- Zadavatel, členové komise:
doc. Ing. Zdeněk Havlíček, CSc.,
Ing. Petr Benda,
Ing. Václav Lohr. - Zhotovitel:
Bc. Michal Vondráček – zodpovědný vedoucí projektu,
Bc. Kateřina Kleinová,
Bc. Jan Koreň,
Bc. Lukáš Vlach,
Bc. Ondřej Veiner. - Cíl:
Vypracování projektu dle osnov stanovených předmětem Internetové technologie pro zimní semestr 2010 tj. Vytvoření webové aplikace obsahující alespoň jednou aplikaci(technologii) třetí strany pomocí api rozhraní.
- Stručná charakteristika funkcí, povinností a smyslu díla:
Zadavatel nám po dohodě přidělil téma týkající se regionální potraviny. Zadání zadavatele bylo specifičtější než u jiných otevřených témat, protože zacílení hotového díla má být k užitku investorovi, pro kterého je náš zadavatel zprostředkovatelem. Dále nás zadavatel korigoval a v případě otázek nám sloužil jako primární určující jednatel. Neposlední funkcí zadavatele je kontrola jakosti a zhodnocení našeho díla. Naší povinností je vyjít zadavateli vstříc a naplnění jeho přání a myšlenek naší realizací. Dílčí podklady byly korigovány ze strany zadavatele a průběžně doplňovány.
Dohodnutým výsledným dílem bylo vytvoření databáze jednotlivých producentů regionálních výrobků, jejich zanesení do mapy a vytvoření vhodného obsahového řešení, jehož nedílnou součástí je vhodné kategorizační třídění.
Obsah
- Regionální potravina - Dokumentace - expost
- Obsah
- Studie
- Rozložení týmu
- Návrh
- Standardy, technologie
- Obsahová část
- Rozložení našeho rozšíření
- Databázová základna
- PHP třída
- Ovládání
- Sémantické rozložení
- Kompatibilita, dostupnost - přístupnost
- Validita, seo optimalizace
- Provázanost
- Umístění
- Dokumentace
- Závěr, Feedback
Studie
Dle nabytých poznatků a po nastudování dodané literatury ve formě brožur jsme navrhli a doporučili zadavateli cíl naší práce jakožto ujasnění a konkretizace myšlenek investora, zadavatele i týmu zhotovitelů. Tím byla přepravovací fáze zakončena a plynule jsme se dostali do fáze inkubace. Bylo třeba, aby jednotliví členové prostudovali dostupné materiály a přinesli týmu vlastní pohled na věc. Podstatnou částí bylo filtrování a analyzování dodaných formulářových dokumentů, podle kterých jsme navrhli databázovou základnu, plně zaštiťující námi stanovenou a domluvenou tématiku. Po této analýze jsme se dostali do fáze iluminace, kdy jsme se začali konkrétněji vyjadřovat k dílčím tematickým návrhům na řešení částí aplikace a jejího propojování. V průběhu vývinu aplikace docházelo k průběžnému ladění a doplňování dílčích funkcí, tím byla průběžně projektová práce verifikována a testována s praktickými daty a používáním.
Během tohoto úseku byla rozloženo snažení jednotlivých členů týmu na tyto fragmenty
- Vedoucí projektu, konzultant a rozhodovací právo veta + doplňkové práce – Michal,
- tiskový mluvčí(wiki/kitlab), konzultant programátor, korektor CSS – Honza,
- databázový architekt, datový analyzátor a správce dat, datových zdrojů – Lukáš,
- grafický architekt, designér, technologický návrhář – Ondřej,
- stylistický dohled, uživatelská kontrola a korektury, návrhy CSS a rozložení – Kateřina.
Je nutno dodat, že různé činnosti týmu byly provázány v čase a nebyly striktně dodržovány. Každý z týmu měl funkci, která ho zavazovala k hledání a odlaďování chyb, nebo jejich specifikaci. Práce byla svědomitě vedena a plněna.
Návrh
Konečný návrh směřující k naplnění projektu se ustálil na rozšíření již existujícího portálu regionální potraviny, který jsme rozšířili o databázi producentů(zlomku ze všech) s dostupnými vhodně přístupnými informacemi. Rozřazeným do specifických – úzce charakteristických kategorií. Jejich filtrace a vhodném zobrazení na mapě. Nedílnou součástí projektu je administrační úroveň umožňující správu kategorií i jednotlivých producentů a jejich atributů.
Standardy, technologie
Projekt je charakterizován jako www aplikace a z tohoto hlediska je vypracován ve standardech: XHTML1.0, CSS2.1, PHP5, MySQL5, JS, GD/PNG.
Jako API 3rd stran jsou charakterizovány a použity především: Framework(zvyk.com), Auth3(zvyk.com), CAPTCHA(zvyk.com), jQuery, jQuery UI, jQuery UI - tabs, Google Maps JavaScript API V3.
Rozložení projektu – obsahová část
Jelikož navazujeme na již existující portál, neměníme standardní hlavní navigaci (Regionální potraviny-logo(úprava linku na projektovou stránku jako výchozí), O projektu, Regionální potraviny, Pro výrobce, Odkazy, Kontakt), pouze doplňujeme kategorii „Seznam, Mapa výrobců“, kterou linkujeme i na logo projektu). Tudíž ostatní odkazy směřují na oficiální portál a část, které se zhostíme je obohacena nad-hlavičkou informující o studentském projektu. Jelikož se považujeme za realizační tým zadavatele – neřešíme autorství podkladů, které mají vést k naplnění zadání ze strany investora.
Rozložení námi zpracovaného rozšíření
Pod hlavní horizontální navigací zachováváme navigační bar informující o aktuální pozici na webu. Dále dle převzatých stylů a ostatního rozvržení webu držíme levý filtrovací blok a pravý obsahový rámec. Levý blok obsahuje kategorie, dle kterých je možno filtrování producentů regionální potraviny. Pravá obsahová část standardně zobrazuje tabulkový výpis v jedné záložce(oušku) a v druhém navigační mapu s vyznačenými vyfiltrovanými producenty. Pod obsahovým rámem je umístěna informace o projektu a skupině, která tento projekt(rozšíření) realizovala. Dále jsou zde uvedeny absolutní odkazy na projekty téhož předmětu z jiných skupin plně podporující seo. Na stránce v oblasti patičky je uvedeno datum „poslední významné modifikace, programového jádra, nikoliv poslední změny na webu“. Následně je uveden odkaz pro zjednodušení přístupu do administrace(přihlášení). Tuto volbu v reálné aplikaci nedoporučujeme. Bereme v potaz, že se nejedná prozatím o reálné rozšíření a proto obsah nepodlehl plné stylistické korektuře.
Z pohledu katalogu uživatelských požadavků se tatáž stránka zobrazuje buďto pro prohlížení(běžný uživatel), a nebo administrátorsky s rozšířením pro správu obsahu(správce). Je možné aplikaci dodatečně rozčlenit, tak aby vyhovovala požadavkům investora pro rozdělení rolí (administrátor, plnič(obsah bodu), přidávač(bod), korektor aj…).
Dokumentace k databázové základně
Kromě tabulek(3) zajišťující autentifikaci uživatelů, jejich práva a přihlašování je systém tvořen 3hlavními tabulkami s následující strukturou:
První tabulka je určena k vytvoření nekonečné hierarchické struktury kategorií formou uzlového stromu. Druhá tabulka vytváří párování kategorií ke konkrétnímu místu a třetí tabulka definuje konkrétní místo ke kterému jsou doplněny charakteristické atributy.
-- -- Struktura tabulky `gmap_kategorie` -- CREATE TABLE `gmap_kategorie` ( `parentID` int(11) default NULL, `id` int(11) NOT NULL auto_increment, `kategorie` varchar(200) NOT NULL, `hide` tinyint(1) default NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;-- -- Struktura tabulky `gmap_parecky` -- CREATE TABLE `gmap_parecky` ( `pointId` int(11) NOT NULL, `katId` int(11) NOT NULL, PRIMARY KEY (`pointId`,`katId`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;-- -- Struktura tabulky `gmap_point` -- CREATE TABLE `gmap_point` ( `id` int(11) NOT NULL auto_increment, `lat` decimal(11,8) NOT NULL, `lon` decimal(11,8) NOT NULL, `hide` tinyint(1) default NULL, `nazevPodniku` varchar(250) NOT NULL, `okres` varchar(50) NOT NULL, `adresa` text NOT NULL, `jmenoKontaktniOsoby` varchar(200) NOT NULL COMMENT '; = oddelovac', `kontaktTelefon` varchar(200) NOT NULL COMMENT '; = oddelovac', `kontaktMobil` varchar(200) NOT NULL COMMENT '; = oddelovac', `kontaktFax` varchar(200) NOT NULL COMMENT '; = oddelovac', `kontaktEmail` varchar(200) NOT NULL COMMENT '; = oddelovac', `kontaktWww` varchar(200) NOT NULL COMMENT '; = oddelovac', `nabidkaProduktu` text NOT NULL, `prodejniDoba` text NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `lat` (`lat`,`lon`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Dokumentace třídy PHP obstarávající všechny uživatelské požadavky pro toto rozšíření
Třída je k dispozici pro náhled v otevřené formě “ .phps“.
http://regionalni-potravina.zvyk.com/fwcore/class/C_IT.phps
- C_IT::Face() – Standardní konstruktor pro statické volání třídy,
- C_IT::defaultLayout() – přidává do hlavičky dokumentu potřebné prolinkování, skripty a vytváří základní rozdělení výsledné stránky,
- C_IT::nic() – tato statická funkce nic nedělá, ale v třídě je a proto zde musí být uvedena,
- C_IT::flush() – určena pro develop aplikace a násilně vyprazdňuje vybrané proměnné,
- C_IT::foo() – vrací řetězec foooo…,
- C_IT::Mapa() – vrací řetězec = obsah rámu nesoucí definici mapy, bodů na mapě callback funkcí,
- C_IT::Seznam() – vrací řetězec = obsah rámu nesoucí seznamový charakter vybraných producentů,
- C_IT::getPointsBySelect() – vrací pole producentů včetně jejich atributů a dále přednastavuje střed mapy,
- C_IT::pointDetail($IN) – na základě předaného pole vrací vhodnou textovou reprodukci daného pole v řetězci
- C_IT::AddPoint() – vkládá bod do databáze,
- C_IT::editPoint() – vrací řetězec obsahující formulář pro editaci bodu(atributová část),
- C_IT::savePoint() – aktualizuje db o atributové části daného bodu a nakonci vrací obsah defaultLayout(),
- C_IT::delPoint() – odstraňuje bod z db, odstraňuje vazby mezi bodem a kategoriemi z db, vrací obsah Face(),
- C_IT::drawFiltr() – vrací vygenerovaný formulář s výběrem kategorií,
- C_IT::setFiltr() – nastavuje globální proměnné podle právě odeslaného filtru,
- C_IT::drawKatKnot($knotId=““) – vygeneruje daný uzel stromu kategorii, kterou vrací v řetězci,
- C_IT::drawKnotContent($C) – vrací v řetězci reprezentaci dané větve stromu kategorií předané asociativním polem,
- C_IT::authMenu($C = null) – vrací v řetězci potencionální menu k dané větvi stromu kategorií předané asociativním polem, nebo False,
- C_IT::delKat() – provede verifikaci(zdali je kategorie prázdná(nemá větve stromu) a není do ní přiřazen žádný bod) a za splnění podmínek kategorii maže, vrací řetězec obsahující drawFiltr()
- C_IT::addKat() – přidává větve k uzlu stromu, vrací řetězec obsahující drawFiltr(),
- C_IT::changeHideKat() – mění atribut viditelnosti větve stromu v db, vrací řetězec obsahující drawFiltr().
Dokumentace k ovládání
Dokumentace pro správce aplikace nebyla zatím vytvořena, protože se s největší pravděpodobností nejedná o konečné dílo. Tato část se zdá být otevřená do příštího semestru.
Sémantické rozložení
Již od počátku vzniku rozšíření je brán zřetel na vhodnou architekturu stránky z pohledu seo optimalizace a přístupnosti uživatelů i s hendikepem. Proto je stránka striktně formulována na po sobě jdoucí rámce hlavní navigace, bar s aktuální pozici, dílčí navigace – filtr, obsahový rám. Stylisticky je hleděno na jediný hlavní nadpis a dílčí podnadpisy.
Kompatibilita, dostupnost - přístupnost
Primární cílová skupina, pro kterou je rozšíření konstruováno jsou koncový zákazníci užívající standardních počítačů a tím i prohlížečů podporující plně výše uvedené standardy. Dále je přihlíženo a ověřována funkčnost na prohlížeče FF, Safari a Chrome. Bereme v potaz prohlížení na mobilních zařízeních (smart telefony, pad, atd.), tato kompatibilita nebyla zatím plně prověřena, avšak doufáme v její funkčnost. Přístupnost posilujeme povázáním externími odkazy na práce jiných týmů.
Validita, seo optimalizace
Validita kódu xhtml je plně pod kontrolou našeho projektu a poslední kontrola proběhla pozitivně. Avšak víme o nekorektnosti CSS stylů, které přebíráme z portálu, který rozšiřujeme. Těmto nepatřičnostem nejsme schopni v současné situaci předcházet(a v rámci časové náročnosti jej prozatím přehlížíme). Námi napsaný kód je validní i ostatní doplňky, které my přímo modifikujeme. Seo optimalizaci jsme mohli ovlivnit pouze ze sémantického hlediska a validity kodu. Ohledně obsahu jsme vázáni na data, které reprodukujeme. Víme o jistých doporučeních, které by měli seo úroveň našeho rozšíření zvednout. Jedná se o klíčová slova v hlavičce dokumentu, strukturovaný obsah, doplnění textově obsahové stránky při standardním načtení(element odstavce), dále opuštění od nadpisku h2 pro bar pod navigací a obecným pročištěním kódu od drobných inlinových dodělávek. I v takto „zpustlých“ stánkách se dostáváme nad 75% hodnocení seo-servisu. Výše uvedené doporučení by nás dostalo nad hranici 94%. Tato úprava by byla vhodná a žádoucí při reálné aplikaci našeho díla.
Provázanost
Splňujeme požadavky zadání projektů a to, že odkazujeme na stránky ostatních projektů. V rámci referencí na producenty odkazujeme taktéž na externí stánky a potencionální feedback by mohl pozitivně zvýšit hodnotu seo vyhodnocení ve vyhledavačích.
Umístění
V současné době je projekt vystaven ve dvou reprezentacích
- Soukromé prostory (originál a develop verze)
- školní prostory (duplikát a aktualizovaná verze)
Z čehož obě z uvedených prezentací jsou vázány ke studijním = nekomerčním účelům a jejich vlastnictví je vázáno na zodpovědného vedoucího projektu. Může volně sloužit ke zdroji pro studijní účely ostatních studentů v rámci ČZU. Avšak obsah, který tyto prezentace nesou, jsou v držení právoplatných majitelů, kteří informace pro studijní = nekomerční účely poskytli.
Vedení dokumentace
Dokumentace bude udržována a spravována v originálním znění do doby příslušné k tomuto rozšiřujícímu projektu na http://www.zvyk.com/ostatni/dokumentace-regionalni-potravina-projekt-internetove-technologie.html.
Závěr
Závěrem musím jako zodpovědný vedoucí projektu poděkovat všem členům týmu. Dále zmínit jejich zodpovědné chování v rámci delegovaných činností a za jejich unikátní přínos nejen v elementárních činnostech, kterými byli pověřeni. Práce jsme se chopili zodpovědně a v rámci možností jsme své úkoly svědomitě plnili. Poděkování patří taktéž směrem k Zadavatelům a jejich vstřícnosti, kterou nám prokázali.
Michal Vondráček
Feedback možný a vítaný: http://www.zvyk.com/kontakt


