1 České vysoké učení technické v Praze Fakulta elektrotechnická ČVUT FEL katedra počítačů Bakalářská práce Informační systém pro plánování pracovních ...
ˇ e vysok´e uˇcen´ı technick´e v Praze Cesk´ Fakulta elektrotechnick´a
ˇ VUT FEL katedra pocˇı´tacˇu˚ C
Bakal´aˇrsk´a pr´ace
Informaˇ cn´ı syst´ em pro pl´ anov´ an´ı pracovn´ıch smˇ en Vladim´ır Mezera
Vedouc´ı: Ing. Martin Kom´arek
Studijn´ı program: Elektrotechnika a informatika strukturovan´ y bakal´aˇrsk´ y Obor: Informatika a v´ ypoˇcetn´ı technika Kvˇeten 2008
ii
Podˇ ekov´ an´ı Dˇekuji vedouc´ımu bakal´ aˇrsk´e pr´ ace Ing. Martinu Kom´arkovi za jeho pˇr´ınosn´e rady. D´ale bych chtˇel podˇekovat rodinˇe a pˇr´ atel˚ um za podporu pˇri vytv´aˇren´ı t´eto pr´ace. iii
iv
Nem´am z´ avaˇzn´ y d˚ uvod proti uˇzit´ı tohoto u ´koln´ıho d´ıla ve smyslu §60 Z´akona ˇc. 121/2000 Sb., o pr´avu autorsk´em, o pr´ avech souvisej´ıc´ıch s pr´avem autorsk´ ym a o zmˇenˇe nˇekter´ ych z´akon˚ u (autorsk´ y z´ akon).
Abstrakt C´ılem t´eto pr´ ace je naimplementovat aplikaci pro restauraˇcn´ı zaˇr´ızen´ı na pl´anov´an´ı smˇen zamˇestnanc˚ u. Software bude d´ ale ˇs´ıˇren jako open source alternativa ke komerˇcn´ım produkt˚ um. D˚ uraz je kladen na jazykovou mutaci, pozdˇejˇs´ı rozˇsiˇritelnost o dalˇs´ı funkce a moˇznost nainstalovat aplikaci na freehostingov´ ych serverech.
Abstract The goal of this work is to implement an application for planning employee workshifts in a restaurant environment. The software will be further expanded as an open source alternative for commercial products. Emphasis is placed on language mutation, later extension by further functions and the possiblity of installing the application on free hosting servers.
´ Uvod V dneˇsn´ı dobˇe je velmi d˚ uleˇzit´e m´ıt v podnik´an´ı pˇrehled o aktivit´ach sv´ ych zamˇestnanc˚ u. Tento fakt byl jedn´ım z d˚ uvod˚ u, proˇc jsem se rozhodl vytvoˇrit pro Ml´ ynskou kav´arnu aplikaci na pl´anov´ an´ı smˇen. Tento projekt je pˇr´ımo vytvoˇren ve spolupr´aci s kav´arnou. Bude ˇs´ıˇren d´ale i jako Open Source alternativa. Snaˇzil jsem se vytvoˇrit takovou aplikaci, kter´a by byla v budoucnosti snadno rozˇsiˇriteln´ a a pˇr´ıstupn´a z internetu. Komerˇcn´ı ˇreˇsen´ı nab´ız´ı dnes sice velmi komfortn´ı software s ˇradou zaj´ımav´ ych funkc´ı, kter´e ale pˇredevˇs´ım menˇs´ı firmy nevyuˇzij´ı, nebo je pro nˇe cena pˇr´ıliˇs vysok´ a. Pr´avˇe takov´ ymto subjekt˚ um je urˇcena tato aplikace. Projekt jsem nazval Merkur’s cafe a aktu´ aln´ı verzi aplikace um´ıstil na server sourceforge[31]. Douf´ am, ˇze tento projekt uˇsetˇr´ı n´ aklady a ˇcas, kter´e jsou v t´eto dobˇe jednˇemi z rozhoduj´ıc´ıch krit´eri´ı u ´spˇechu.
´ ´I STUDIE KAPITOLA 1. UVODN
2
´ 1 Uvodn´ ı studie 1.1
Vymezen´ı c´ıl˚ u
Aplikace by mˇela slouˇzit hlavnˇe menˇs´ım firm´am, kter´e tak nebudou muset utr´acet za komerˇcn´ı produkty. Ovl´ad´ an´ı by mˇelo b´ yt intuitivn´ı a jednoduch´e, aby uˇzivatel˚ um pr´aci usnadˇ novalo. D´ale jsme se zadavatelem urˇcili nˇekolik poˇzadavk˚ u, kter´e mus´ı b´ yt v aplikaci zahrnuty. 1.1.1
Funkˇ cn´ı poˇ zadavky
• zakl´adat/editovat/mazat uˇzivatele v syst´emu • pˇriˇrazovat uˇzivatel˚ um pracovn´ı role • pl´anovat doch´ azku zamˇestnanc˚ u • obsazovat do/odobsazovat zamˇestnance ze smˇen • informovat zamˇestnance o obsazovazen´ı do/odobsazov´an´ı ze smˇeny • komunikovat se zamˇestnanci • vlastn´ı registrace uˇzivatel˚ u • pˇridat pozn´ amku ke smˇen´ am • moˇznost vytv´ aˇren´ı ˇsablon se smˇenami • moˇznost jazykov´e mutace
1.2
V´ ybˇ er technologie
Mezi dalˇs´ımi poˇzadavky bylo, aby aplikace mohla b´ yt pˇr´ıstupn´a odkudkoliv z internetu a jej´ı ’ bˇeh mohl zajiˇst ovat obyˇcejn´ y freehostingov´ y server. Proto bylo potˇreba navrhnout webovou aplikaci, kter´a bude naprogramov´ ana pomoc´ı dynamick´ ych str´anek. 1.2.1
Technologie na freehostingov´ ych serverech
• JSP s podporou servlet˚ u [18] • ASP [16] • PHP [11] JSP - Nen´ı dnes na freehostingov´ ych serverech pˇr´ıliˇs rozˇs´ıˇrena. Je to hlavnˇe z d˚ uvodu omezen´eho pouˇzit´ı servlet˚ u a pouˇzit´ı dalˇs´ıch knihoven. Jeˇstˇe zaj´ımavˇejˇs´ı by v t´eto oblasti bylo pouˇzit´ı technologie JSF[17], kter´ a je dalˇs´ı abstraktn´ı vrstvou nad JSP. Bohuˇzel tato technologie se zat´ım pouˇz´ıv´ a sp´ıˇse v komerˇcn´ı sf´eˇre. ASP - Tuto technologii jsem zavrhl jako prvn´ı, protoˇze s n´ı m´am mal´e osobn´ı zkuˇsenosti. Dalˇs´ı probl´em je testov´ an´ı samotn´e aplikace, protoˇze moje programovac´ı prostˇred´ı bˇeˇz´ı prim´arnˇe na operaˇcn´ım syst´emu linux.
´ ´I STUDIE KAPITOLA 1. UVODN
3
PHP - Na ˇcesk´ ych hostinz´ıch m´ a dnes PHP nejvˇetˇs´ı podporu, kter´a je zp˚ usobena jeho jednoduchost´ı a znaˇcnou obl´ıbenost´ı u program´ator˚ u. Aktu´alnˇe se vysktytuje hlavnˇe ve verzi 5. Velkou v´ yhodou t´eto technologie je velmi jednoduch´ y jazyk, mnoˇzstv´ı knihoven a framework˚ u[22] postaven´ ych na tomto jazyce a tak´e v´ yborn´a dokumentace. Jako programovac´ı jazyk jsem zvolil PHP, a to hlavnˇe z toho d˚ uvod˚ u. • Osobn´ı dlouholet´ a zkuˇsenost v tomto jazyce • V´ yborn´ a dokumentace • Mnoˇzstv´ı knihoven a framework˚ u 1.2.2
Datab´ aze
Na freehostingov´ ych serverech se vyskytuj´ı nejv´ıce dva typy datab´az´ı, a to MySQL[3] a PostGRESQL[4]. Za v´ ychoz´ı datab´azi jsem zvolil MySQL, ale aplikace by v budoucnu mˇela b´ yt schopna podporovat v´ıce druh˚ u (PostGRESQL, Firebird[2]). 1.2.3
Framework
Aby byla aplikace opravdu snadno rozˇsiˇriteln´a, rozhodl jsem se vyuˇz´ıt moˇznosti framework˚ u. Dneˇsn´ı trend ve webov´ ych aplikac´ı jsou MVC[19] frameworky. Urˇcil jsem krit´eria, kter´e by mˇel dan´ y framework splˇ novat. • Jednoduch´ a implementace k´ odu • Jednoduch´ a jazykov´ a mutace • Podpora n´ avrhov´eho vzoru MVC (Model-view-controller) • Nez´ avislost na datab´ azi • Podpora v´ yvoje frameworku do budoucnosti
Obr´ azek 1.1: Architektonick´ y vzor MVC
Z tˇechto krit´eri´ı jsem vybral tˇri frameworky, kter´e vyhovovaly m´ ym poˇzadavk˚ um. Jednalo se CakePHP[6], Symfony[10] a Zend Framework[12]. Vˇsechny tˇri frameworky jsou velice kvalitn´ı a nab´ızej´ı mnoˇzstv´ı funkc´ı. Pro svou aplikaci jsem vybral Zend Framework, a to hlavˇe z tˇechto d˚ uvod˚ u. • Jednoduchost frameworku
´ ´I STUDIE KAPITOLA 1. UVODN
4 • Komponent´ aln´ı struktura frameworku • Podpora v´ıce druh˚ u datab´ az´ı • Podpora v´ yvoje frameworku od firmy Zend[5] • V´ yborn´a dokumentace • Velk´e mnoˇzstv´ı tutori´ al˚ u na internetu
ˇ SEN ˇ ´I KAPITOLA 2. EXISTUJ´IC´I RE
5
2 Existuj´ıc´ı ˇ reˇ sen´ı V dneˇsn´ı dobˇe existuje mnoho softwarov´ ych produkt˚ u, kter´e se zab´ yvaj´ı pl´anov´an´ım smˇen zamˇestnanc˚ u. Naˇsel jsem nˇekolik velmi zdaˇril´ ych projekt˚ u. Bohuˇzel se mi nepodaˇrilo naj´ıt ˇz´adn´ y open source, nebo freeware, kter´ y by slouˇzil k podobn´emu u ´ˇcelu
2.1
Aplikace
Na internetu jsem nalezl velkou mnoˇzinu softwarov´ ych produkt˚ u zab´ yvaj´ıc´ıch se spr´avou a evidenc´ı doch´ azky zamˇestnanc˚ u. Nepodaˇrilo se mi vˇsak naj´ıt aplikaci, kter´a by pˇr´ımo plnila poˇzadavky, kter´e byly v zad´ an´ı. • Aplikace mus´ı b´ yt webov´ a • Mus´ı zde b´ yt moˇznost informov´an´ı uˇzivatel˚ u pomoc´ı emailu • Uˇzivatel´e mus´ı b´ yt schopni sami se nahl´asit na smˇenu 2.1.1
Mr. Doch´ azka[9]
Jedn´a se o software pro stˇredn´ı a vˇetˇs´ı firmy. Architekturu t´eto aplikace tvoˇr´ı server/klient. Tento syst´em je tvoˇren hlavnˇe pro velk´e firmy, o ˇcemˇz napov´ıd´a i jeho licence, kter´a se podle emailov´e korespondence s pˇredstaviteli firmy pohybuje okolo 150 000 Kˇc v z´avislosti na zakoupen´ ych modulech. 2.1.2
eDoch´ azka[7]
Tento produkt je urˇcen pro mal´e a stˇredn´ı podniky. Jeho architektura je tak´e server/klient. Tato aplikace je podstatnˇe jednoduˇsˇs´ı neˇz Mr. Doch´azka. Soustˇred´ı se hlavnˇe na evidenci a doch´azku zamˇestnanc˚ u. Syst´em celkovˇe umoˇznuje: • Evidenci doch´ azky zamˇestnanc˚ u • Pˇrehled doch´ azky • Jednoduchou z´ alohu a export dat Syst´em bˇeˇz´ı pod operaˇcn´ım syst´emem Windows. Licence je rozdˇelena podle pˇr´ıpadn´eho pouˇzit´ı, ale pohybuje se kolem 1000 Kˇc. 2.1.3
Evidence doch´ azky II[8]
Tento projekt se od obou pˇredeˇsl´ ych produkt˚ u znaˇcnˇe liˇs´ı, a to pˇredevˇs´ım sv´ ym jednoduch´ ym, elegantn´ım ˇreˇsen´ım. Je to v podstatˇe excelovsk´ y soubor, kter´ y obsahuje pl´an doch´azky. Nev´ yhoda tohoto ˇreˇsen´ı je hlavnˇe v tom, ˇze nelze napl´anovat doch´azku pro v´ıce lid´ı, protoˇze by musel vedouc´ı smˇeny pl´ anovat doch´azku ruˇcnˇe. Toto je ˇreˇsen´ı sp´ıˇse pro spoleˇcnosti o mal´em poˇctu zamˇestnanc˚ u.
6
ˇ SEN ˇ ´I KAPITOLA 2. EXISTUJ´IC´I RE
Obr´ azek 2.1: Uk´azka aplikace eDoch´azka
Obr´ azek 2.2: Uk´ azka excel souboru projektu Evidence doch´azky II
´ KAPITOLA 3. ANALYZA
7
3 Anal´ yza 3.1
Zad´ an´ı
Zadavatel projektu urˇcil jist´ a krit´eri´a, kter´e mus´ı v´ ysledn´a aplikace splˇ novat. • Syst´em bude pˇr´ıstupn´ y z internetu • Ovl´ ad´ an´ı mus´ı b´ yt user-friendly • Moˇznost snadn´eho vytisknut´ı smˇen • F´orum pro komunikaci mezi uˇzivateli syst´emu • Smˇena m´ a urˇcit´ y ˇzivotn´ı cyklus • Zas´ıl´ an´ı reportu pomoc´ı emailu • Moˇznost ˇsablonovat smˇeny na t´ yden
3.2
Uˇ zivatel´ e
Kaˇzd´ y zaregistrovan´ y uˇzivatel mus´ı b´ yt obsazen v jedn´e ze syst´emov´ ych rol´ıch. Syst´emov´a role slouˇz´ı k autorizaci uˇzivatele v syst´emu. Kaˇzd´a syst´emov´a role dˇed´ı vˇsechna pr´ava od sv´eho pˇredka, pˇr´ıpadnˇe vlastn´ı dalˇs´ı pr´ ava na spouˇstˇen´ı pˇr´ıpadu uˇzit´ı. To znamen´a, ˇze uˇzivatel obsazen´ y v nˇejak´e roli je z´ aroveˇ n obsazen do vˇsech pˇredk˚ u vlastn´ı role. Role m˚ uˇze mˇenit pouze uˇzivatel se syst´emovou rol´ı vedouc´ı nebo jeho potomek. V pˇr´ıpadˇe, ˇze se uˇzivatel zaregistruje, je mu pˇriˇrazena role host, kter´ a m´ a v syst´emu nejmenˇs´ı opr´avnˇen´ı.
http://www.adultpdf.com Created by Image To PDF trial Pr´ ava sledov´ an´ı aktualit v syst´emu, f´orum pˇrihlaˇsov´ an´ı na smˇeny, pl´anov´an´ı doch´azky tvorba smˇen, potvrzov´an´ı smˇen, u ´prava uˇzivatel˚ u, statistiky nem´ a zat´ım ˇz´adn´a opr´avnˇen´ı nav´ıc Tabulka 3.1: Pr´ava na syst´emov´ ych rol´ıch
´ KAPITOLA 3. ANALYZA
8
3.3
Smˇ eny
Aby se mohl uˇzivatel pˇrihl´ asit na smˇenu, je pˇredt´ım potˇreba vytvoˇrit nˇekolik objekt˚ u, aby byly smˇeny snadno konfigurovateln´e a ˇslo s nimi manipulovat. Kaˇzd´a pracovn´ı smˇena se sklad´a z n´asleduj´ıc´ıch ˇc´ast´ı: • Typ smˇeny • Datum smˇeny • Seznam pˇrihl´ aˇsen´ ych uˇzivatel˚ u na smˇenu • Potvrzen´ı smˇeny 3.3.1
Pracovn´ı role
Pracovn´ı role1 jsou pˇriˇrazov´ any uˇzivatel˚ um se syst´emovou rol´ı zamˇestnanec. Tyto role d´avaj´ı opr´avnˇen´ı uˇzivatel˚ um pˇrihlaˇsovat se na smˇeny. Pracovn´ı role m˚ uˇze upravovat pouze uˇzivatel se syst´emovou rol´ı vedouc´ı. 3.3.2
Typ smˇ eny
Typ smˇeny ud´av´ a, kter´ y uˇzivatel se m˚ uˇze pˇrihl´asit na smˇenu a na jak´ y ˇcas je smˇena vyps´ana. Pr´avo na pˇrihl´aˇsen´ı na smˇenu vznik´ a uˇzivateli obsazen´ım do pracovn´ı role. Podle typu smˇeny m˚ uˇze b´ yt vytvoˇreno neomezenˇe smˇen. Uˇzivatele do pracovn´ı smˇeny m˚ uˇze pˇridat vedouc´ı. 3.3.3
ˇ Zivotn´ ı cyklus smˇ eny
Kaˇzd´a smˇena proch´ az´ı za dobu sv´e existence urˇcit´ ym ˇzivotn´ım cyklem. V prvn´ı f´azi je vytvoˇrena vedouc´ım. Opr´ avnˇen´ı uˇzivatel´e se pot´e mohou pˇrihlaˇsovat na smˇeny. Vedouc´ı pot´e vybere jednoho uˇzivatele, kter´eho do t´eto smˇeny obsad´ı. M˚ uˇze se st´at, ˇze se na smˇenu ˇz´adn´ y uˇzivatel nenahl´as´ı. V tom pˇr´ıpadˇe m˚ uˇze vedouc´ı vybrat nˇekoho z uˇzivatel˚ u a obsadit jej. D´ale se m˚ uˇze st´at, ˇze se obsazen´ y uˇzivatel nebude moci dostavit na danou smˇenu. V tom pˇr´ıpadˇe si m˚ uˇze poslat poˇzadavek na zruˇsen´ı smˇeny, kter´ y vedouc´ı obslouˇz´ı. Vedouc´ı m´a d´ale pr´avo odobsadit ˇ uˇzivatele s´am ze smˇeny nebo ho nahradit jin´ ym uˇzivatelem. Zivotn´ ı cyklus konˇc´ı po uplynut´ı data proveden´ı smˇeny. Pot´e jiˇz nelze se smˇenou d´ale manipulovat. 3.3.4
Potvrzov´ an´ı smˇ en
Kaˇzd´a smˇena se nach´ az´ı ve sv´em ˇzivotn´ım cyklu v urˇcit´e f´azi. . Typ stavu voln´ a potvrzeno vedouc´ım potvrzeno zamˇestnancem zruˇsena minulost
F´ aze Na smˇenu nen´ı pˇrihl´aˇsen ˇz´adn´ y zamˇestnanec. Vedouc´ı vybral zamˇestnance z nahl´aˇsen´ ych, nebo ze seznamu. Zamˇestnanec potvrd´ı u ´ˇcast, nebo je potvrzen vedouc´ım. Zamˇestnanec chce zruˇsit svoj´ı smˇenu. Datum smˇeny je jiˇz v minulosti a nelze s n´ı d´ale manipulovat. Tabulka 3.2: Stavy smˇeny
1
Pracovn´ı role nesouvis´ı nijak se syst´emovou rol´ı.
´ KAPITOLA 3. ANALYZA
9
Obr´ azek 3.2: Pˇrechod smˇeny do r˚ uzn´ ych stav˚ u
3.3.5
Zobrazov´ an´ı smˇ en
Smˇeny budou zobrazov´ any pomoc´ı di´aˇre. Aby byl di´aˇr pˇrehledn´ y, budou jednotliv´e smˇeny zobrazov´ any po t´ ydnech. Di´ aˇr vedouc´ıho se bude liˇsit od di´aˇre zamˇestnance. Kaˇzd´ y zamˇestnanec se m˚ uˇze pˇrihl´ asit se, odhl´ asit se na smˇenu, potvrdit u ´ˇcast, nebo zruˇsit smˇenu. Vedouc´ı bude m´ıt v di´aˇri odliˇsn´e funkce. • Moˇznost pˇridat nebo smazat smˇenu • Odebrat nahl´ aˇsen´eho zamˇestnance • Pˇridat/odebrat zamˇestnance ze smˇeny • Potvrdit uˇzivatele ve smˇenˇe 3.3.6
ˇ Sablonov´ an´ı
Syst´em umoˇznuje pouˇz´ıvat denn´ı ˇsablony. Vedouc´ı navol´ı ˇsablonu, kter´a se pot´e rozkop´ıruje na kaˇzd´ y den 8 t´ ydn˚ u dopˇredu. Probˇehne-li zmˇena ˇsablony, uprav´ı se podle toho i smˇeny v kalend´aˇri. Smˇeny v minulosti by jiˇz nemˇely j´ıt upravovat, a to hlavnˇe z d˚ uvodu pozdˇejˇs´ıho vyuˇz´ıv´an´ı statistik. 3.3.7
Reporty
Kaˇzd´ y zamˇestnanec je informov´ an pomoc´ı emailu o obsazen´ı do/odobsazen´ı ze smˇeny. Email m´a jednoduchou textovou u ´pravu, aby bylo moˇzn´e pˇrepos´ılat si emaily napˇr´ıklad na mobiln´ı telefon.
3.4
Uˇ zivatelsk´ e informace
Kaˇzd´ y uˇzivatel m´ a moˇznost vyplnit informace do sv´eho profilu, kter´e budou pot´e pouˇzity pˇri pl´anov´an´ı smˇen. M˚ uˇze napˇr. uv´est poˇcet smˇen, kter´e by chtˇel m´ıt v t´ ydnu. D´ale zde mohou b´ yt informace o nemocensk´e, dovolen´e apod. Uˇzivatel m˚ uˇze upravovat tyto informace pˇr´ımo ve sv´em
´ KAPITOLA 3. ANALYZA
10
profilu, nebo tak´e prostˇrednictv´ım di´ aˇre. Aby mohl vedouc´ı komunikovat se zamˇestnancem, m´a moˇznost pos´ılat mu zpr´ avy, kter´e se potom budou zobrazovat v jeho profilu.
3.5
Statistiky
Statistiky p˚ ujdou urˇcit vˇzdy za ˇcasov´e obdob´ı, kter´e si vedouc´ı zvol´ı. Budou se zobrazovat z´akladn´ı statistiky v syst´emu s ohledem na vybran´e ˇcasov´e obdob´ı. • Poˇcet odpracovan´ ych smˇen jednotliv´ ych uˇzivatel˚ u • Seznam nejv´ıce pouˇzit´ ych smˇen
3.6
F´ orum
Aby spolu mohli uˇzivatel´e komunikovat, bude v syst´emu implementovan´e f´orum. F´orum bude rozdˇeleno na jednotliv´ a t´emata, kter´e se budou ˇradit podle data zaloˇzen´ı. Uvnitˇr kaˇzd´eho t´ematu bude pot´e prob´ıhat diskuze. Kaˇzd´ y pˇrihl´ aˇsen´ y uˇzivatel bude m´ıt pr´avo na vloˇzen´ı pˇr´ıspˇevku do f´ora.
Obr´ azek 3.3: Analytick´e tˇr´ıdy
´ KAPITOLA 4. NAVRH
11
4 N´ avrh 4.1
Aplikace
Aplikaci jsem rozdˇelil na dvˇe hlavn´ı ˇc´asti - j´adro a subsyst´emy. J´adro zajiˇstuje z´akladn´ı funkce v syst´emu jako jsou: • Autorizace uˇzivatel˚ u • Navigace na pˇr´ıpady uˇzit´ı • Jazykov´ a mutace • Pˇripojen´ı k datab´ azi • Zobrazov´ an´ı prezenˇcn´ı vrstvy • Administrace uˇzivatel˚ u • Registrace uˇzivatel˚ u • Pˇrihl´ aˇsen´ı uˇzivatel˚ u Subsyst´emy budou vyuˇz´ıvat sluˇzeb j´adra, kter´e na nich bude nez´avisl´e. V prvn´ı f´azi tohoto projektu se poˇc´ıt´ a se subsyst´emy pl´anov´an´ı smˇen, statistiky a f´orum. Subsyst´emy mohou na sobˇe b´ yt vz´ ajemnˇe z´ avisl´e, napˇr. statistiky a pl´anov´an´ı smˇen.
4.2
Zend Framework
Framework je rozdˇelen na jednotliv´e komponenty, kter´e na sobˇe nejsou z´avisl´e. Velkou v´ yhodou je jejich v´ yborn´ a dokumentace a n´azorn´e pˇr´ıklady, kter´e pom´ahaj´ı k rychlejˇs´ımu pochopen´ı funkce a v´ yvoji v´ ysledn´e aplikace. Minim´aln´ı parametry webov´eho serveru pro pouˇzit´ı tohoto frameworku jsou: • Server s podporou PHP 5.1.4 a vyˇsˇs´ı • Moˇznost pouˇzit´ı m´ odu rewrite [1] 4.2.1
Pouˇ zit´ e komponenty frameworku
Zend Controller - Jedn´ a se o jednu z nejd˚ uleˇzitˇejˇs´ıch komponent frameworku implementuj´ıc´ı n´avrhov´ y vzor Front Controller[20]. Z´akladem t´eto komponenty je, ˇze vˇsechny poˇzadavky jsou zachyceny jedn´ım kontrolerem, a pot´e odnavigov´any na pˇr´ısluˇsn´ y kontroler. Tato komponenta oddˇeluje prezenˇcn´ı vrstvu od aplikaˇcn´ı logiky. Zend View - Tato komponenta slouˇz´ı k zobrazen´ı prezenˇcn´ı vrstvy. Slouˇz´ı ji k tomu tak´e velk´e mnoˇzstv´ı helper˚ u[23] a filtr˚ u[21]. Zend Layout - Umoˇznuje velice snadno implementovat dvou´ urovˇ novou prezentaˇcn´ı vrstvu, kter´a pot´e velmi zjednoduˇs´ı prezenˇcn´ı vrstvy jednotliv´ ych akc´ı na kontrolerech. Zend Translate csv, tmx[15]).
- Slouˇz´ı pro lokalizaci do r˚ uzn´ ych jazyk˚ u lze pouˇz´ıt nˇekolik form´at˚ u(gettext[14],
´ KAPITOLA 4. NAVRH
12
Zend Db - Jedn´ a se o komponentu, kter´a slouˇz´ı k pˇripojen´ı a obsluze datab´aze. Zend vyuˇz´ıv´a adapt´er PDO[25] a m´ a podporu pro nejzn´amˇejˇs´ı datab´aze. To znamen´a, ˇze vlastn´ı rozhran´ı je nez´avisl´e na datab´ azi. V konfiguraci staˇc´ı zmˇenit pouze ovladaˇc, protoˇze kaˇzd´ y SQL[26] dotaz proch´az´ı parserem, kter´ y ho pˇrizp˚ usobuje konkr´etn´ı datab´azi. Je ˇskoda, ˇze v t´eto verzi frameworku nen´ı jeˇstˇe implementovan´e ˇza´dn´e ORM[24], kter´e by velmi zjednoduˇsila pr´aci a u ´plnˇe odst´ınila pr´ aci s SQL.
Obr´ azek 4.1: Komponenta Zend Db
Zend Mail emaily.
- Komponenta na pos´ıl´ an´ı email˚ u. Podporuje emaily s pˇr´ılohami a tak´e HTML
Zend Registry - Glob´ aln´ı registry, do kter´ ych lze jednoduˇse vloˇzit a z´ıskat parametry nebo instance objekt˚ u, coˇz se hod´ı napˇr´ıklad pro datab´azov´e pˇripojen´ı. 4.2.2
Kontroler
Kaˇzd´ y kontroler mus´ı implementovat abstraktn´ı tˇr´ıdu Zend Controller Action. Akce a kontroler mus´ı m´ıt speci´ aln´ı n´ azev. Tˇr´ıda, kter´a je kontroler, mus´ı m´ıt n´azev zakonˇcen jm´enem Controller. To sam´e plat´ı u akc´ı, pouze s t´ım rozd´ılem, ˇze funkce, kter´e pˇrestavuj´ı akce mus´ı m´ıt n´azev zakonˇcen´ y jm´enem Action. Stane-li se, ˇze nelze nal´ezt konkr´etn´ı kontroler nebo akce, snaˇz´ı se aplikace odnavigovat na defaultn´ı kontroler nebo akci. Defaultn´ı kontroler m´a n´azev IndexController a defaultn´ı akce indexAction.
4.3
Struktura aplikace
Strukturu aplikace jsem navrhl podle v´ yvoj´aˇr˚ u Zend Frameworku, kter´ y rozdˇeluje jednotliv´e MVC u ´rovnˇe do oddˇelen´ ych sloˇzek. Tato struktura je velmi pˇrehledn´a.
´ KAPITOLA 4. NAVRH
13
Obr´ azek 4.2: Struktura aplikace
4.4
Datov´ y model
Za datov´e u ´loˇziˇstˇe pro aplikaci byla zvolena datab´aze MySQL. Model je navrˇzen tak, aby v budoucnosti nebyl probl´em integrovat jinou datab´azi.
4.5
Prezenˇ cn´ı vrstva
Prezenˇcn´ı vrstva aplikace bude tvoˇrena pomoc´ı HTML[13] a CSS[29]. Pro nˇekter´e validace formul´aˇr˚ u na stranˇe klienta budou pouˇzity javascriptov´e funkce. Tato vrstva bude dvou´ urovˇ nov´ a, a to z d˚ uvodu, ˇze se pro celou aplikaci vyuˇz´ıv´a jeden layout, coˇz velice zpˇrehledn´ı v´ ysledn´ y k´ od, protoˇze grafick´ y v´ ystup kontroler˚ u bude pouze ˇc´ast´ı v´ ysledn´eho layoutu.
´ KAPITOLA 4. NAVRH
14
adres´ aˇ r aplication class config controllers localization managers models plugins views helpers layouts scripts doc images img library tests
funkce v tomto adres´aˇri je vˇetˇsina soubor˚ u aplikace vlastn´ı komponenty aplikace konfiguraˇcn´ı soubory aplikace kontrolery k jednotliv´ ym UC soubory s lokalizac´ı pomocn´e tˇr´ıdy pro pr´aci s objekty adres´ aˇr s datov´ ym modelem pomocn´e pluginy adres´ aˇr s prezenˇcn´ı vrstvou pomocn´e tˇr´ıdy pro prezenˇcn´ı vrstvu layout aplikace view pohledy pro kontrolery dokumentace k aplikaci obr´ azky pro aplikaci obr´ azky pro aplikaci adres´ aˇr s komponentami Zend frameworku testy pro aplikaci
Tabulka 4.1: Tabulka s adres´aˇri a jejich obsahem
Obr´ azek 4.3: Architektura syst´emu
´ KAPITOLA 4. NAVRH
15
Obr´ azek 4.4: Logick´ y model datab´aze
16
KAPITOLA 5. IMPLEMENTACE
5 Implementace 5.1
Smˇ erov´ an´ı
Veˇsker´e poˇzadavky na aplikaci jsou smˇerov´any na prvn´ı spoleˇcn´ y soubor (tzv. bootstrap). Toto je potˇreba m´ıt nakonfigurovan´e pomoc´ı .htaccess souboru, kter´ y je um´ıstˇen´ y v rootu aplikace. RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule !\.(js|ico|txt|gif|jpg|png|html|php)$ /index.php 5.1.1
Bootstrap
Bootstrap se naz´ yv´ a soubor, na kter´ y jsou smˇerov´any vˇsechny poˇzadavky. Ten teprve vyb´ır´a kontroler, kter´ y dan´ y poˇzadavek obslouˇz´ı. Tento soubor v m´e aplikaci prov´ad´ı d˚ uleˇzit´e operace. V t´eto aplikaci se bootstrap naz´ yv´ a index.php a je pˇr´ımo v koˇrenov´em adres´aˇri aplikace. • Proveden´ı autorizace • Naˇcten´ı konfiguraˇcn´ıch promˇenn´ ych • Vytvoˇren´ı datab´ azov´e konektivity • Nastaven´ı cesty ke kontroler˚ um a pohled˚ um
5.2
Implementace kontroler˚ u
Pro svoji aplikaci jsem si trochu upravil kontroler, a to tak, ˇze jsem si vytvoˇril vlastn´ı abstraktn´ı kontroler, kter´ y implementuje funkce, kter´e jsou pro vˇsechny kontrolery spoleˇcn´e. To by mˇelo pˇrispˇet k urychlen´ı v´ yvoje pˇri rozˇsiˇrov´ an´ı dalˇs´ıch ˇc´ast´ı syst´emu. • Explicitn´ı autorizace uˇzivatele • Funkce na pos´ıl´ an´ı email˚ u • Funkce na zjiˇstˇen´ı syst´emov´e role uˇzivatele • Funkce na zjiˇstˇen´ı chyb pˇri bˇehu kontroleru
5.3
Manaˇ zeˇ ri
Manaˇzeˇri jsou speci´ aln´ı tˇr´ıdy, kter´e zapouzdˇruj´ı funkce, kter´e jsou pouˇzity ve v´ıce kontrolerech, nebo jsou vol´any v´ıcekr´ at. class UserManager { /** * Ziskani uzivatele podle jeho id. * @author Vladimir Mezera * @since 2.5. 2008 */ static function getUser($userid) { $aUser = new User(); return $aUser->fetchRow($aUser->select()->where("user_id=?", $userid)); } }
KAPITOLA 5. IMPLEMENTACE
17
Obr´ azek 5.1: Implementace jednotliv´ ych kontroler˚ u v aplikaci
5.4
Autentizace
Na pˇrihl´aˇsen´ı uˇzivatele slouˇz´ı login str´anka, kde uˇzivatel zad´a jm´eno a heslo. Heslo je v datab´ azi zaheˇsov´ano pomoc´ı funkce md5. Autentizace je prov´adˇena komponentou Zend Auth Adapter DbTable.
5.5
Autorizace
Autorizace v syst´emu se spouˇst´ı pomoc´ı autorizaˇcn´ıho pluginu. Ten se zaregistrov´av´a v bootstrapu a pˇred kaˇzd´ ym spuˇstˇen´ım kontroleru zavol´a metoda, kter´a zjist´ı, zda dan´ y kontroler m´a b´ yt autorizovan´ y. Pokud ano, zkontroluje zda je uˇzivatel pˇrihl´aˇsen. D´ale existuje na kontrolerech explicitn´ı autorizace, kter´ a slouˇz´ı k autorizov´an´ı akc´ı pro syst´emov´e role. Explicitn´ı autorizac´ı lze autorizovat metodu nebo cel´ y kontroler (um´ıstˇen´ım do funkce init). public function listAction() { $this->authorized(’leader’);
Konfiguraˇcn´ı soubory v aplikaci jsou dva. Jeden slouˇz´ı k nastaven´ı pˇripojen´ı k datab´azi. Druh´ y obsahuje syst´emov´e promˇenn´e, kter´e jsou zapotˇreb´ı ke spr´avn´emu bˇehu aplikace. [default] language = "cs" email = "[email protected]" title = "Ml´ ynsk´ a kav´ arna" address = "http://www.merkur.tym.cz"; 5.6.0.1
Naˇ c´ıt´ an´ı dat´ azov´ eho spojen´ı
Datab´azov´e pˇripojen´ı je nav´ az´ ano v bootstrapu, kde se z konfiguraˇcn´ıho souboru naˇctou data a vytvoˇr´ı se instance datab´ azov´eho objektu, kter´a se pot´e uloˇz´ı do glob´aln´ıho registru, aby ji mohly vyuˇz´ıt dalˇs´ı komponenty. Z´ aroveˇ n se nastav´ı tato instance jako defaultn´ı adapt´er pro komponentu Zend Db Table. //db $config_db = new Zend_Config_Xml(’application/config/db.xml’, ’production’); $database = Zend_Db::factory($config_db->database); $database->query(’SET CHARACTER SET utf8’); $database->query(’SET NAMES utf8’); Zend_Registry::set(’db’, $database); Zend_Db_Table::setDefaultAdapter($database);
5.7 5.7.1
Prezenˇ cn´ı vrstva Podporovan´ e prohl´ıˇ zeˇ ce
Jako podporovan´e prohl´ıˇzeˇce jsem zvolil dva nejv´ıce vyuˇz´ıvan´e, a to Internet Explorer a Mozilla Firefox. Tato aplikace bude fungovat i v jin´ ych prohl´ıˇzeˇc´ıch. Garantovat ovˇsem jejich pouˇzit´ı by bylo velmi n´ aroˇcn´e, a to hlavnˇe z d˚ uvodu testov´an´ı aplikace. 5.7.2
Helpery
Helpery jsou speci´ aln´ı tˇr´ıdy v Zend frameworku, kter´e slouˇz´ı v prezenˇcn´ı vrstvˇe aplikace. Jejich pouˇzit´ı je velice jednoduch´e a efektivn´ı. Do speci´aln´ıho adres´aˇre pro helpery staˇc´ı zadefinovat potˇrebnou tˇr´ıdu s danou funkc´ı. class Zend_View_Helper_BaseUrl { function baseUrl() { $fc = Zend_Controller_Front::getInstance(); $request = $fc->getRequest(); /* @var $request Zend_Controller_Request_Http */
KAPITOLA 5. IMPLEMENTACE
19
return $request->getBaseUrl(); } } V aplikaci jsem vytvoˇril helpery pro: • Lokalizaci • N´azev aplikace • Zobrazen´ı chybov´e hl´ aˇsky • Jm´eno uˇzivatele • Zobrazen´ı di´ aˇre • Z´ısk´ an´ı URL aplikace 5.7.3
Layout
Layout cel´e aplikace je v souboru layout.phtml v adres´aˇri layouts. Definuje z´akladn´ı HTML strukturu aplice viz uk´ azka tagu body.
Jak je vidˇet, layout jeˇste vyrendruje soubor menu.phtml, ve kter´em se dynamicky menu vytvoˇr´ı, podle toho, jestli je pˇrihl´ aˇsen nˇejak´ y uˇzivatel, a popˇr´ıpadˇe jakou m´a syst´emovou roli. Do obsahu se pot´e vyrendruje v´ ystup pˇr´ısluˇsn´eho kontroleru. 5.7.4
Obsah
Vˇetˇsina akc´ı na kontrolerech m´ a vlastn´ı grafick´ y v´ ystup, kter´ y je pot´e posl´an do layoutu a n´aslednˇe zobrazen. Zde se projevuje v´ yhoda pouˇzit´ı dvou´ urovˇ nov´e prezenˇcn´ı vrstvy, protoˇze v´ ysledn´ y k´od je pˇrehledn´ y a obsahuje pouze k´od k dan´emu v´ ystupu. showError($this); ?>
5.7.5
Tisk
Aby si mohli uˇzivatel´e jednoduˇse vytisknout seznam smˇen, je pro to pˇripraven´e speci´aln´ı CSS soubor, kter´ y se pouˇz´ıv´ a pouze pro tisk. Jeho funkce spoˇc´ıv´a v tom, ˇze pouze zmˇen´ı styly jednotliv´ ych tag˚ u, aby vzhled aplikace neobsahoval zbyteˇcnˇe barvy.
5.8
Vlastn´ı kompenty
K potˇreb´am vlastn´ı aplikace jsem si vytvoˇril jeˇstˇe komponenty, kter´e mi usnadˇ nuj´ı pr´aci. Prvn´ı je tˇr´ıda Calendar, kter´ a slouˇz´ı k pr´ aci s ˇcasem. • Form´atov´ an´ı data
KAPITOLA 5. IMPLEMENTACE
21
• Zmˇena data na ˇc´ıslo • Z´ısk´ an´ı ˇc´ısla dne v t´ ydnu • Z´ısk´ an´ı vˇsech dn˚ u v t´ ydnu podle data (pole dat) • Z´ısk´ an´ı prvn´ıho dne v t´ ydnu podle data Dalˇs´ı komponentou, kterou jsem si musel vytvoˇrit, je tˇr´ıda Validator. Validator slouˇz´ı k validaci formul´aˇr˚ u. Bohuˇzel v dobˇe programov´an´ı t´eto aplikace nebyla jeˇstˇe plnˇe funkˇcn´ı komponenta a by podobn´ y probl´em ˇreˇsila. Tato tˇr´ıda obsahuje metody pro jednotliv´e valiZend Form, kter´ dace. • Kontrola je-li dan´e pole pr´ azn´e • Kontrola spr´ avnosti emailu • Kontrola souhlas´ı-li hodnota pole s jinou hodnotou 5.8.0.1
Lokalizace
Lokalizace syst´emu je tvoˇrena pomoc´ı instance objektu Zend Translate. V bootstrapu se vytvoˇr´ı tato instance a uloˇz´ı se do registr˚ u. Nyn´ı jsou k dispozici dvˇe jazykov´e mutace, a to ˇcesk´ aa anglick´a. $translate = new Zend_Translate(’tmx’, ’application/localization/’, $config_default->language); Zend_Registry::set(’translate’, $translate); Pro lokalizaci v prezenˇcn´ı vrstvˇe pot´e slouˇz´ı helper, kter´ y se d´a jednoduˇse pouˇz´ıt v prezenˇcn´ı vrstvˇe. class Zend_View_Helper_TranslateText { function translateText($text) { $translate = Zend_Registry::get(’translate’); return $translate->_($text); } } Je-li potˇreba lokalizovat v jin´e vrstvˇe neˇz v prezenˇcn´ı, je k dispozici v glob´aln´ıch registrech aplikace instance objektu pro lokalizaci. Za form´at lokalizaˇcn´ıch soubor˚ u jsem zvolil TMX. Lokalizace nemus´ı b´ yt pouze v jednom souboru, protoˇze se v bootstrapu nastavuje adres´ aˇr s lokalizac´ı. To je v´ yhodn´e zejm´ena pˇri pˇrid´av´an´ı nov´ ych funkc´ı. <seg>Obsazeni do smeny<seg>Cast to workshift<seg>Dne %s jste byl/byla odobsazena ze smeny.<seg>At %s you were uncast from workshift.
22
KAPITOLA 5. IMPLEMENTACE
<seg>Odobsazeni ze smeny<seg>Uncast from workshift
5.9
ˇ Sablonov´ an´ı
ˇ Sablonov´ an´ı je jedna z n´ aroˇcnˇejˇs´ıch akc´ı, kter´e jsou v syst´emu. Jednak m˚ uˇze uˇzivatel upravit ˇsablonu a podle toho se uprav´ı vˇsechny dny, na kter´ ych je ˇsablona rozkop´ırovan´a. Kontrola, zdali m´a b´ yt rozkop´ırovan´ a ˇsablona na dalˇs´ı dny, se dˇeje pˇri pˇr´ıchodu do di´aˇre, kdy se kontroluje, zda nen´ı potˇreba ˇsablonu vytvoˇrit.
5.10
Rozˇ siˇ ritelnost do budoucna
N´avrh aplikace jsem se snaˇzil udˇelat tak, aby v budoucnu nebyl probl´em pˇrid´avat dalˇs´ı pˇr´ıpady uˇzit´ı. To se mi mysl´ım povedlo, protoˇze pro pˇrid´an´ı nov´ ych UC staˇc´ı vytvoˇrit kontroler, kter´ y implementuje abstraktn´ı kontroler MerkurController, a d´ale vytvoˇrit potˇrebn´e metody (jako napˇr. akce a pohledy). Nov´e kontrolery mus´ı b´ yt um´ıstˇeny ve stejn´em adres´aˇri s tˇemi p˚ uvodn´ımi kv˚ uli nastaven´ı bootstrapu.
KAPITOLA 5. IMPLEMENTACE
23
Mercur's cafe
http://www.tns.cz/workshift/show/week/1215468000
Týden 28 Nahlášení
07.07.08 - 13.07.08
Dny
Typ směny
Obsazení
Potvrzeno
Út 08.07 Přidat směnu
Barman ranni Od: 15:00 Do: 22:00 Smazat směnu
<
?|>
St 09.07 Přidat směnu
Barman ranni Od: 15:00 Do: 22:00 Smazat směnu
<
?|>
Čt 10.07 Přidat směnu
Barman ranni Od: 15:00 Do: 22:00 Smazat směnu
<
?|>
Pa 11.07 Přidat směnu
Barman ranni Od: 15:00 Do: 22:00 Smazat směnu
<
?|>
So 12.07 Přidat směnu
Barman ranni Od: 15:00 Do: 22:00 Smazat směnu
<
?|>
Ne 13.07 Přidat směnu
Barman ranni Od: 15:00 Do: 22:00 Smazat směnu
<
?|>
1z1
02.07.2008 23:43
Obr´ azek 5.2: Uk´azka vytisknut´ı di´aˇre se smˇenami
24
KAPITOLA 5. IMPLEMENTACE
Obr´azek 5.3: Uk´ azka v´ ysledn´eho zobrazen´ı aplikace (pˇr´ıpad uˇzit´ı Zobraz smˇenu) v Mozilla Firefox
´ ´I KAPITOLA 6. TESTOVAN
25
6 Testov´ an´ı 6.1
V´ ybˇ er testovac´ıho frameworku
Protoˇze pˇri kaˇzd´e vˇetˇs´ı opravˇe je potˇreba otestovat i funkˇcnost syst´emu, rozhodl jsem se pouˇz´ıt testovac´ı framework, kter´ y by zjednoduˇsil testov´an´ı a pomohl mi naj´ıt pˇr´ıpadn´e chyby. Objevil jsem tˇri projekty, kter´e splˇ nuj´ı m´e poˇzadavky. • Selenium IDE[34] • PHPUnit [32] • SimpleTest [35] Selenium IDE - Tento webov´ y testovac´ı framework slouˇz´ı k otestov´an´ı uˇzivatelsk´eho rozhran´ı. Je dod´ av´ an jako plugin do webov´eho prohl´ıˇzeˇce firefox. Podporovan´a verze firefoxu je 1.5 a vyˇsˇs´ı. Tento framework je v´ yborn´ y i z toho d˚ uvodu, ˇze jej mohou vyuˇz´ıvat i neprogram´atoˇri, protoˇze m´ a velmi intuitivn´ı ovl´ ad´ an´ı a r˚ uzn´e sc´en´aˇre lze vytvoˇrit v GUI rozhran´ı. Form´ aty testovac´ıch sc´en´ aˇr˚ u je nˇekolik (html, psv, gsp), coˇz pom´ah´a rozˇs´ıˇrit ˇrady uˇzivatel˚ u. PHPUnit - Jedn´ a se o testovac´ı framework, kter´ y napˇr´ıklad pouˇz´ıvaj´ı napˇr. v´ yvoj´aˇri Zend. Snaˇz´ı se hodnˇe pˇribl´ıˇzit JUnit[30], coˇz je framework pro Javu. Nyn´ı je ve verzi 3.2.19 a poskytuje ˇsirokou moˇznost testov´ an´ı. Doporuˇcen´a verze PHP je 5.1.4. PHPUnit je velmi rozs´ ahl´ y framework, kter´ y vyuˇz´ıv´ a i anotace a pˇri pouˇzit´ı testovac´ıho n´astroje Selenium RC je moˇzno ps´ at a testovat uˇzivatelsk´e rozhran´ı webov´ ych aplikac´ı. PHPUnit je velmi siln´ y n´astroj s v´ ybornou dokumentac´ı. SimpleTest - Jedn´ a se tak´e o velmi kvalitn´ı testovac´ı framework. Jak jiˇz n´azev napov´ıd´ a, je tento framework podstatnˇe menˇs´ı neˇz PHPUnit. To mu ovˇsem nic neub´ır´a na jeho schopnostech kvalitnˇe otestovat danou aplikaci. Obsahuje i moˇznost testov´an´ı formul´aˇr˚ u a simulaci chov´ an´ı browseru, takˇze m˚ uˇze otestovat i uˇzivatelsk´e rozhran´ı syst´emu. Vybral jsem kombinanci SimpleTest a Selenium IDE z tˇechto d˚ uvod˚ u: • SimpleTest je jednoduch´ y, a pˇritom velmi uˇziteˇcn´ y testovac´ı framework • Selenium IDE velmi rychle a jednoduˇse dok´aˇze otestovat z pohledu uˇzivatele syst´em • Vytv´ aˇren´ı testovac´ıch sc´en´ aˇr˚ u zvl´adnou i testeˇri
6.2
Pouˇ zit´ı SimpleTest
SimpleTest jsem vyuˇzil pro otestov´an´ı z´akladn´ıch funkˇcnost´ı syst´emu. SimpleTest zobrazuje v´ ysledky v html podobˇe, takˇze lze jednoduˇse zkontrolovat po nainstalov´an´ı funkce v syst´emu. • Pˇripojen´ı k datab´ azi • Tˇr´ıda FormValidator – Testov´ an´ı pr´ azdn´e hodnoty – Porovn´ an´ı dvou hodnot – Testov´ an´ı spr´ avnˇe zadan´eho emailu • Tˇr´ıda Calendar
´ ´I KAPITOLA 6. TESTOVAN
26 – Z´ısk´ an´ı spr´ avn´eho form´ atov´ an´ı data – Z´ısk´ an´ı prvn´ıho dne v t´ ydnu – Z´ısk´ an´ı t´ ydne, roku ze zadan´eho data – Z´ısk´ an´ı ˇc´ısla dne v t´ ydnu 6.2.1
Implementace SimpleTest
Vˇsechny testy jsou v adres´ aˇri tests. Ve spoleˇcn´em souboru index.php jsou pot´e zavol´any vˇsechny testy a zobrazeny pˇrehlednˇe na jednom m´ıstˇe.
V aplikaci jsem vytvoˇril na otestov´ an´ı nˇekolik z´akladn´ıch sc´en´aˇr˚ u, kter´e by mˇely otestovat celkovou funkˇcnost syst´emu z pohledu uˇzivatele. Testovac´ı scen´aˇre funguj´ı tak, ˇze jsou poskl´ad´any z menˇs´ıch testovac´ıch pˇriklad˚ u. Na z´ akladn´ı smoke test jsem navrhl tyto testovac´ı sc´en´aˇre. Nev´ yhoda Selenia spoˇc´ıv´ a v tom, ˇze lze testovat pouze na jedn´e jazykov´e mutaci, protoˇze nˇekter´e odkazy si plugin spojuje se jm´enem. • Smoke test • Vytvoˇren´ı testovac´ıho uˇzivatele • Otestov´ani registrace a n´ asledn´eho pˇrihl´aˇsen´ı
´ ´I KAPITOLA 6. TESTOVAN
27
• Zaloˇzen´ı role a typu smˇeny • Otestov´ an´ı ˇsablony • Testov´ an´ı pˇrihl´ aˇsen´ı na smˇenu • Smaz´ an´ı testovac´ıho uˇzivatele Nev´ yhodou Selenia IDE je fakt, ˇze vˇetˇsina sc´en´aˇr˚ u lze spustit pouze po instalaci syst´emu, kdy jeˇstˇe nejsou nahr´ ana ˇz´ adn´ a data, protoˇze pˇri spouˇstˇen´ı r˚ uzn´ ych operac´ı z´aleˇz´ı na poˇrad´ı dat a ´ to nelze bohuˇzel zajistit. V´ yjimkou je testovac´ı sc´en´aˇr Smoke test. Ukolem tohoto sc´en´aˇre je otestovat z´ akladn´ı funkce syst´emu. Dalˇs´ı probl´em je, ˇze testy jdou spouˇstet pouze v prohl´ıˇzeˇci Mozilla Firefox. Pro otestov´ an´ı funkˇcnosti to ovˇsem u t´eto aplikace staˇc´ı.
Obr´ azek 6.2: Uk´azka pouˇzit´ı Selenium IDE pluginu
28
KAPITOLA 7. DOKUMENTACE
7 Dokumentace Dokumentace projektu je velmi d˚ uleˇzit´ a pro dalˇs´ı rozvoj t´eto aplikace. Je potˇreba m´ıt zdokumentov´ano chov´ an´ı syst´emu a tak´e jeho implementaci. Dokumentaci m´am rozdˇelenou na nˇekolik ˇc´ast´ı: • Uˇzivatelsk´ a pˇr´ıruˇcka • Instalaˇcn´ı pˇr´ıruˇcka • Ostatn´ı dokumentace syst´emu
7.1
Uˇ zivatelsk´ a pˇ r´ıruˇ cka
Uˇzivatelsk´a pˇr´ıruˇcka je koncipov´ ana hlavnˇe pro uˇzivatele syst´emu. Je zde vysvˇetlena z´akladn´ı pr´ace s aplikac´ı: • Pr´ace s uˇzivateli (syst´emov´ a role, registrace) • Pr´ace se smˇenami (vytv´ aˇren´ı, u ´prava, ˇsablonov´an´ı) • Dalˇs´ı UC (f´ orum, statistiky) Pˇr´ıruˇcka je ps´ana pro uˇzivatele, kteˇr´ı by mˇeli pracovat v syst´emu, takˇze se pˇredpokl´ad´a jejich neznalost syst´emu.
7.2
Instalaˇ cn´ı pˇ r´ıruˇ cka
Pˇr´ıruˇcka popisuje instalaci syst´emu na server. Instalace zaˇc´ın´a vytvoˇren´ım datov´eho u ´loˇziˇstˇe a pot´e zkop´ırov´an´ım skript˚ u do dan´eho adres´aˇre. D´ale pak prob´ır´a nastaven´ı jednotliv´ ych konfiguraˇcn´ıch soubor˚ u aplikace a ˇreˇs´ı pˇr´ıpadn´e chyby, kter´e mohou pˇri instalaci nastat.
7.3
Ostatn´ı dokumentace syst´ emu
Tato dokumentace popisuje hlavnˇe v´ yvoj jednotliv´ ych ˇc´ast´ı syst´emu. Jedn´a se hlavnˇe o dokumentaci, kter´a pom˚ uˇze v´ yvoj´ aˇr˚ um v dalˇs´ım rozvoji aplikace. Dokumentaci jsem tvoˇril v nˇekolika v´ yvojov´ ych n´astroj´ıch. Anal´ yza aplikace je vytvoˇrena v Enterprise Architectu[27]. Datab´azov´ y model je navrhnut v Toad Data Modeleru [28], a to hlavnˇe z d˚ uvodu jednoduchosti modelov´an´ı a konverz´ı mezi logick´ ym a fyzick´ ym modelem datab´aze. Implementace je pops´ana pomoc´ı PHPDOC[33], kter´ y je pˇreveden do HTML podoby. Veˇsker´a tato dokumentace je um´ıstˇena na CD.
´ ER ˇ KAPITOLA 8. ZAV
29
8 Z´ avˇ er ´ C´ılem m´e pr´ ace bylo navrhnout aplikaci pro pl´anov´an´ı smˇen podle zadan´ ych krit´eri´ı. Ukol jsem splnil. Aplikaci jsem se snaˇzil napsat tak, aby byla mohla b´ yt v budoucnu snadno rozˇsiˇriteln´ a. K tomu by mˇelo pˇrispˇet i mnoˇzstv´ı dokumentace na pˇriloˇzen´em CD. Nyn´ı je aplikace jiˇz nasazena ve zkuˇsebn´ım provozu pro Ml´ ynskou kav´arnu, kde ji zaˇcnou zanedlouho vyuˇz´ıvat. Jiˇz nyn´ı m´am zaregistrovanou ˇz´ adost na pˇrid´an´ı dalˇs´ıho modulu, a to moˇznosti vytv´aˇren´ı u ´ˇct˚ u, aby z´akazn´ıci nemuseli platit pˇri odchodu, ale aby jim poˇzadovan´a ˇc´astka byla strˇzena. Jelikoˇz je budoucnost Zend frameworku v pevn´ ych rukou, d´a se cel´a aplikace velice jednoduˇse refaktorovat, nebo lze vyuˇz´ıvat nov´e komponenty, kter´e budou vyd´any. Tento projekt je vystaven na serveru sourceforge1 , aby ho mohla vyuˇz´ıvat i dalˇs´ı zaˇr´ızen´ı. Douf´am ˇze moje aplikace bude platn´ ym n´ astrojem pro pl´ anov´ an´ı smˇen zamˇestnanc˚ u a ˇze uˇsetˇr´ı ˇcas a moˇzn´a nemal´e finanˇcn´ı prostˇredky.
1
http://sourceforge.net/projects/merkur/
30
´ ER ˇ KAPITOLA 8. ZAV
KAPITOLA 9. LITERATURA
9 Literatura [1] Modul rewrite pro webov´ y server apache . http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html. [2] Ofici´ aln´ı str´ anky datab´ aze firebird . http://www.firebirdsql.org. [3] Ofici´ aln´ı str´ anky datab´ aze mysql . http://www.mysql.com. [4] Ofici´ aln´ı str´ anky datab´ aze postgresql . http://www.postgresql.com. [5] Ofici´ aln´ı str´ anky firmy zend . http://www.zend.com/en/. [6] Ofici´ aln´ı str´ anky projektu cakephp . http://www.cakephp.org/. [7] Ofici´ aln´ı str´ anky projektu edoch´azka . http://www.pokluda.cz/podpora/eDochazka.aspx. [8] Ofici´ aln´ı str´ anky projektu evidence doch´azky ii . http://wall.cz/excel-evidence-dochazky-ii.a63.html. [9] Ofici´ aln´ı str´ anky projektu mr. doch´azka . http://www.hpl.cz/produkty_a_sluzby/mr_dochazka.aspx. [10] Ofici´ aln´ı str´ anky projektu symphony . http://www.symfony-project.org/. [11] Ofici´ aln´ı str´ anky skriptovac´ıho jazyku php . http://www.php.net. [12] Ofici´ aln´ı str´ anky zend frameworku . http://framework.zend.com/. [13] Specifikace html 4.01 . http://www.w3.org/TR/REC-html40/. [14] Str´anky o projektu gettext . http://www.gnu.org/software/gettext/manual/gettext.html. [15] St´anka o tmx lokalizaˇcn´ım standartu . http://www.lisa.org/Translation-Memory-e.34.0.html. [16] Technologie asp . http://www.asp.net. [17] Technologie jsf . http://java.sun.com/javaee/javaserverfaces/. [18] Technologie jsp . http://java.sun.com/products/jsp/.
31
32
KAPITOLA 9. LITERATURA
[19] Vysvˇetlen´ı architektonick´eho vzoru mvc . http://cs.wikipedia.org/wiki/MVC. [20] Vysvˇetlen´ı n´ avrhov´eho vzoru front controller . http://martinfowler.com/eaaCatalog/frontController.html. [21] Vysvˇetlen´ı n´ avrhov´eho vzoru intercepting filter . http://www.phpwact.org/pattern/intercepting_filter. [22] Vysvˇetlen´ı pojmu framework . http://cs.wikipedia.org/wiki/Framework. [23] Vysvˇetlen´ı pojmu helper . http://devzone.zend.com/article/3350-Action-Helpers-in-Zend-Framework. [24] Vysvˇetlen´ı pojmu orm . http://en.wikipedia.org/wiki/Object-relational_mapping. [25] Vysvˇetlen´ı pojmu pdo . http://cz.php.net/pdo. [26] Vysvˇetlen´ı pojmu sql . http://cs.wikipedia.org/wiki/SQL. [27] O. str´anky aplikace Enterprise Architect. . http://www.sparxsystems.com.. [28] O. str´anky aplikace Toad Data Modeler. . http://www.toadsoft.com/toaddm/toad_data_modeler.htm. [29] O. str´anky CSS. . http://www.w3.org/Style/CSS/. [30] O. str´anky projektu JUnit. . http://junit.sourceforge.net/. [31] O. str´anky projektu Merkur’s cafe. . http://sourceforge.net/projects/merkur/. [32] O. str´anky projektu PHP Unit. . http://phpunit.sourceforge.net/. [33] O. str´anky projektu PHPDOC. . http://www.phpdoc.org. [34] O. str´anky projektu Selenium IDE. . http://selenium-ide.openqa.org/. [35] O. str´anky projektu SimpleTest. . http://simpletest.sourceforge.net/.
ˇ ˇ EHO ´ DODATEK A. OBSAH PRILO ZEN CD
A Obsah pˇ riloˇ zen´ eho CD
Obr´azek A.1: Struktura CD
Adres´ aˇ r appInstall app sql appTests docs databaseModel documentationEA documentationTDM HTMLDOC EA PHPDOC logs MANUAL
Obsah adres´aˇr s instalaˇcn´ım bal´ıˇckem adres´aˇr s aplikac´ı instalaˇcn´ı sql skripty aplikace dohromady s testy adres´aˇr s dokumentac´ı logick´ y a fyzick´ y model datab´aze dokumentace v Enterprise Architektu dokumentace v Toad Data Modeleru vyexportovan´a dokumentace do HTML vyexportovan´a dokumentace v EA vyexportovan´a dokumentace pomoc´ı PHPDOC r˚ uzn´e logy z testov´an´ı aplikace uˇzivatelsk´ y manu´al pro aplikaci Tabulka A.1: Struktura CD
33
34
ˇ ˇ EHO ´ DODATEK A. OBSAH PRILO ZEN CD
ˇ YCH ´ DODATEK B. SEZNAM POUZIT ZKRATEK
B Seznam pouˇ zit´ ych zkratek JSP Java Server Pages JSF Java Server Faces PHP UC Use Case (pˇr´ıpad uˇzit´ı) MD5 Hashovac´ı funkce .. .
35
ˇ ´I PR ˇ ´IRUCKA ˇ DODATEK C. INSTALACN
36
C Instalaˇ cn´ı pˇ r´ıruˇ cka Tato pˇr´ıruˇcka popisuje instalaci aplikace Merkur’s cafe. Aby byla instalace aplikace u ´spˇeˇsn´a, je potˇreba, aby byly splnˇeny minim´ alnˇe tyto podm´ınky: • Webov´ y server s podporou minim´ alnˇe PHP 5.1.4 • Moˇznost pouˇzit´ı modulu rewrite • Moˇznost pouˇzit´ı .htaccess souboru v aplikaci
C.1
Instalace datab´ aze
V t´eto verzi syst´emu je jedin´ a podporovan´a datab´aze zat´ım MySQL. Na pˇriloˇzen´em CD v adres´aˇri appInstall/sql se nach´ az´ı soubor install.sql, kde je d´avka pro zaloˇzen´ı tabulek a z´akladn´ıch dat. Ve vytvoˇren´e datab´ azi spust´ı tuto d´avku sql pˇr´ıkaz˚ u. Mˇela by se vygenerovat z´akladn´ı struktura tabulek. Po u ´spˇeˇsn´em vytvoˇren´ı by se mˇelo objevit 11 tabulek.
C.2
Instalace skript˚ u
Aplikace se nach´ az´ı v adres´ aˇri appInstall/app, jehoˇz obsah je potˇreba zkop´ırovat do rootu aplikace. Je tak´e potˇreba, aby mˇel webov´ y server pˇr´ısluˇsn´a pr´ava na spuˇstˇen´ı dan´ ych skript˚ u.
C.3
Nastaven´ı aplikace
Je-li instalace skript˚ u a datab´ aze dokonˇcena, je potˇreba nastavit jeˇstˇe konfiguraˇcn´ı soubory aplikace pro spr´ avn´ y bˇeh. C.3.1
Nastaven´ı datab´ aze
Datab´aze se nastavuje v souboru application/config/db.xml. Je potˇreba do pˇr´ısluˇsn´ ych tag˚ u doplnit poˇzadovan´e u ´daje. Tag host username password dbname
Hodnota adresa datab´azov´eho serveru uˇzivatelsk´e jm´eno do datab´aze uˇzivatelsk´e heslo do datab´aze jm´eno pˇr´ısluˇsn´e datab´aze
Aby instalace spr´ avnˇe fungovala, je potˇreba jeˇste nastavit jeden konfiguraˇcn´ı soubor, a to application/config/config.ini. Promˇ enn´ a language email title address
V´ yznam v´ ybˇer jazyka (moˇznosti cs, en) hlaviˇcka emailu pos´ılan´eho pˇri smˇen´ach n´ azev aplikace v hlaviˇcce url adresa aplikace
Tabulka C.2: Konfiguraˇcn´ı u ´daje [default] language = "cs" email = "[email protected]" title = "Ml´ ynsk´ a kav´ arna" address = "http://www.merkur.tym.cz";
C.4
Spuˇ stˇ en´ı
Po proveden´ı vˇsech instrukc´ı by se na poˇzadovan´e adrese mˇela objevit pˇrihlaˇsovac´ı str´ anka aplikace. Pokud se pˇrihlaˇsovac´ı str´ anka nezobraz´ı, m˚ uˇze b´ yt probl´em ve ˇspatn´em pˇripojen´ı k datab´azi, nebo webov´ y server nem´ a dostateˇcn´a pr´ava na spuˇstˇen´ı skript˚ u.
ˇ ´ PR ˇ ´IRUCKA ˇ DODATEK D. UZIVATELSK A
38
D Uˇ zivatelsk´ a pˇ r´ıruˇ cka Tato pˇr´ıruˇcka popisuje chov´ an´ı syst´emu z uˇzivatelsk´eho hlediska. Popisuje vytvoˇren´ı z´akladn´ı metodiky po instalaci syst´emu.
Obr´ azek D.1: Menu po pˇrihl´ aˇsen´ı uˇzivatele se syst´emovou rol´ı vedouc´ı
D.1
Uˇ zivatel´ e
Uˇzivatel´e v syst´emu jsou rozdˇelˇeni podle syst´emov´ ych rol´ı, kter´e jim pˇridˇeluj´ı pr´ava na pouˇz´ıv´an´ı UC.
Obr´ azek D.2: Hierarchie syst´emov´ ych rol´ı
D.1.1
http://www.adultpdf.com Created by Image To PDF trial ve
Defaultn´ı uˇ zivatel
Po instalaci syst´emu se v aplikaci nach´ az´ı pouze jeden uˇzivatel se syst´emovou rol´ı administr´ator. Jm´eno: admin Heslo: king
ˇ ´ PR ˇ ´IRUCKA ˇ DODATEK D. UZIVATELSK A Opr´ avnˇ en´ı host zamˇestnanec vedouc´ı administr´ ator
39
Pr´ ava sledov´ an´ı aktualit v syst´emu, f´orum pˇrihlaˇsov´ an´ı na smˇeny, pl´anov´an´ı doch´azky tvorba smˇen, potvrzov´an´ı smˇen, u ´prava uˇzivatel˚ u, statistiky nem´ a zat´ım ˇz´adn´a opr´avnˇen´ı nav´ıc Tabulka D.1: Pr´ava na syst´emov´ ych rol´ıch
D.2 D.2.1
Z´ akladn´ı UC Pˇ rihl´ aˇ sen´ı do syst´ emu
Pˇrihlaˇsov´ an´ı do syst´emu se neliˇs´ı od jin´ ych syst´em˚ u. Z´akladem je pˇrihlaˇsovac´ı str´anka, kam uˇzivatel zad´ a sv´e jm´eno a heslo. Pot´e se odnaviguje do syst´emu, podle toho jakou m´a pˇridˇelenou syst´emovou roli.
Obr´ azek D.3: Pˇrihlaˇsovac´ı str´anka
D.2.2
Registrace
Kaˇzd´ y uˇzivatel se m˚ uˇze do syst´emu zaregistrovat s´am. Staˇc´ı na z´akladn´ı str´ance v menu kliknout na poloˇzku registrace a vyplnit poˇzadovan´e poloˇzky. Po zaregistrov´an´ı se m˚ uˇze uˇzivatel ihned pˇrihl´asit do syst´emu. M´ a vˇsak minimum pr´av, protoˇze je mu pˇridˇelena syst´emov´a role host.
Obr´azek D.4: Registrace
ˇ ´ PR ˇ ´IRUCKA ˇ DODATEK D. UZIVATELSK A
40 D.2.3
Zmˇ ena u ´ daj˚ u
Kaˇzd´ y uˇzivatel si m˚ uˇze sv´e u ´daje upravit. Chce-li zmˇenit heslo, mus´ı ho zadat dvakr´at, aby si zbyteˇcnˇe nezablokoval u ´ˇcet. Stane-li se uˇzivateli, ˇze u ´ˇcet byl z nˇejak´eho d˚ uvodu zablokov´an nebo zapomˇel heslo, mus´ı poˇz´ adat uˇzivatele se syst´emovou rol´ı vedouc´ı a vyˇsˇs´ı, aby mu heslo zmˇenil.
´ Obr´ azek D.5: Uprava u ´daj˚ u
D.3
Pl´ anov´ an´ı smˇ en
Pro napl´anov´an´ı smˇen je potˇreba nejdˇr´ıve zaloˇzit metodiku, podle kter´e se budou smˇeny pl´anovat. Proto je nejdˇr´ıve potˇreba zaloˇzit n´asleduj´ıc´ı poloˇzky: • Vytvoˇren´ı pracovn´ıch rol´ı • Vytvoˇren´ı typ˚ u pracovn´ıch smˇen • Vytvoˇren´ı ˇsablony Je to z toho d˚ uvodu, ˇze smˇena je vytvoˇrena podle typu pracovn´ı smˇeny. D.3.1
Pracovn´ı role
Pracovn´ı role urˇcuj´ı, kter´ y uˇzivatel se m˚ uˇze pˇrihl´asit na smˇenu. Pracovn´ı role nem´a nic spoleˇcn´eho se syst´emovou rol´ı. Pracovn´ı role m˚ uˇze vytv´aˇret/editovat pouze uˇzivatel se syst´emovou rol´ı vedouc´ı. D.3.2
Typ pracovn´ı smˇ eny
Typ pracovn´ı smˇeny ud´ av´ a, kdo se m˚ uˇze pˇrihl´asit na smˇenu, a tak´e ˇcasov´e rozmez´ı smˇen. V typu pracovn´ı smˇeny se ud´ av´ a, kter´ a pracovn´ı role m´a opr´avnˇen´ı pˇrihl´asit se na smˇenu. Pracovn´ı role m˚ uˇze vytv´ aˇret/editovat pouze uˇzivatel se syst´emovou rol´ı vedouc´ı.
ˇ ´ PR ˇ ´IRUCKA ˇ DODATEK D. UZIVATELSK A
41
Obr´ azek D.6: Vytv´aˇren´ı typu smˇeny
D.3.3
Potvrzov´ an´ı smˇ en
Kaˇzd´a smˇena se nach´ az´ı ve sv´em ˇzivotn´ım cyklu v urˇcit´e f´azi. Typ stavu voln´ a potvrzeno vedouc´ım potvrzeno zamˇestnancem zruˇsena minulost
F´ aze Na smˇenu nen´ı pˇrihl´aˇsen ˇz´adn´ y zamˇestnanec. Vedouc´ı vybral zamˇestnance z nahl´aˇsen´ ych, nebo ze seznamu. Zamˇestnanec potvrd´ı u ´ˇcast, nebo je potvrzen vedouc´ım. Zamˇestnanec chce zruˇsit svoj´ı smˇenu. Datum smˇeny je jiˇz v minulosti a nelze s n´ı d´ale manipulovat. Tabulka D.2: Stavy smˇeny
D.3.4
Zobrazen´ı smˇ en
Smˇeny se zobrazuj´ı v di´ aˇri. Di´ aˇr m´ a dvˇe podoby, a to uˇzivatelsk´ y a administr´atorsk´ y. Administr´atorsk´ y reˇzim se liˇs´ı t´ım, ˇze m´ a v´ıce funkc´ı. Administr´atorsk´ y reˇzim di´aˇre m´a kaˇzd´ y uˇzivatel se syst´emovou rol´ı vedouc´ı. Je to hlavnˇe z d˚ uvod˚ u zjednoduˇsen´ı administrace smˇen.
D.4
ˇ Sablonov´ an´ı
ˇ ˇ Sablonov´ an´ı je moˇznost, jak se vyhnout vytv´aˇren´ı stejn´ ych smˇen kaˇzd´ y den. Sablona je tvoˇrena ˇ pro kaˇzd´ y den zvl´ aˇst’. Sablony m˚ uˇze vytv´aˇret a editovat pouze uˇzivatel se syst´emovou rol´ı ˇ vedouc´ı. Sablona se vytv´ aˇr´ı vˇzdy na dva mˇes´ıce dopˇredu, a pak se rozkop´ırov´av´a. Pˇri smaz´ an´ı ˇsablony se smaˇzou i vˇsechny smˇeny zaloˇzen´e podle n´ı. Smˇeny, kter´e nejsou zaloˇzeny podle ˇsablony, z˚ ustavaj´ı. D.4.1
Statistiky
V syst´emu jsou implementov´ any jednoduch´e statistiky, kter´e m˚ uˇze spouˇstet uˇzivatel se syst´emovou rol´ı vedouc´ı. Slouˇz´ı ke zjiˇstˇen´ı aktu´aln´ıho stavu vyt´ıˇzenosti jednotliv´ ych smˇen a uˇzivatel˚ u.
D.5
F´ orum
Aby spolu mohli uˇzivatel´e vz´ ajemnˇe komunikovat, je pro nˇe pˇripraveno f´orum, kam m˚ uˇze kaˇzd´ y uˇzivatel se syst´emovou rol´ı host poslat pˇr´ıspˇevek. Pouˇz´ıv´an´ı f´ora je jednoduch´e a intuitivn´ı.
ˇ ´ PR ˇ ´IRUCKA ˇ DODATEK D. UZIVATELSK A
42
Obr´ azek D.7: Pˇrechod smˇeny do r˚ uzn´ ych stav˚ u
D.6
Ofici´ aln´ı str´ anky projetku
Ofici´aln´ı str´anky projektu se nach´ azej´ı na adrese https://sourceforge.net/projects/merkur/. Zde jsou veˇsker´e materi´ aly o dan´e aplikaci jako instalaˇcn´ı pˇr´ıruˇcka, uˇzivatelsk´a pˇr´ıruˇcka, dokumentace pro program´ atory a ostatn´ı materi´aly t´ ykaj´ıc´ı se tohoto projektu. Jsou zde i kontakty pro nahl´aˇsen´ı chyb aplikace a kontaktu authora napˇr´ıklad pro pˇrid´an´ı nov´e funkˇcnosti.