92
Mendelova univerzita v Brně Provozně ekonomická fakulta Brno 2017 Komplexní webové administrační rozhraní pro firmu IdeaTech Diplomová práce Vedoucí práce: Ing. Jiří Lýsek, Ph.D. Bc. Jan Vodák

Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

MendelovauniverzitavBrněProvozněekonomickáfakulta

Brno2017

Komplexníwebovéadministračnírozhranípro

firmuIdeaTech

Diplomovápráce

Vedoucípráce:

Ing.JiříLýsek,Ph.D. Bc.JanVodák

Page 2: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl
Page 3: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Rád bych zde poděkoval Ing. Jiřímu Lýskovi, Ph.D. zamožnost vypracování tétoprácepodjehoodbornýmvedenímazajehocennéradynejenpřidohledunadda-nou prací, ale ivprůběhu celého mého studia na Provozně ekonomické fakultěMendlovyuniverzity.DálemépoděkovánípatříspolečnostiIDEATECHs.r.o., jme-novitěPetruVojáčkoviaAdamoviKyselovizacennéradyaaktivnípřístuppřikon-zultacíchodsamotnéhopočátkuzpracovánítohotoprojektu.Celéspolečnostipatřípoděkování za poskytnutou příležitost vypracovat toto téma pod záštitou jejichjménaazavloženoudůvěruvemě.

Page 4: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl
Page 5: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Čestnéprohlášení

Prohlašuji, že jsem tutopráci:KomplexníwebovéadministračnírozhraníprofirmuIdeaTechvypracoval/a samostatně aveškeré použité prameny ainformace jsou uvedenyvseznamupoužitéliteratury.Souhlasím,abymojeprácebylazveřejněnavsouladus§47bzákonač.111/1998Sb.,ovysokýchškoláchvezněnípozdějšíchpředpisů,avsouladusplatnouSměrnicíozveřejňovánívysokoškolskýchzávěrečnýchprací.

Jsemsivědom/a,žesenamojiprácivztahujezákonč.121/2000Sb.,autorskýzákon, ažeMendelova univerzita vBrněmá právo na uzavření licenční smlouvyaužitítétoprácejakoškolníhodílapodle§60odst.1Autorskéhozákona.

Dále se zavazuji, že před sepsáním licenční smlouvy ovyužití díla jinouosobou(subjektem)sivyžádámpísemnéstanoviskouniverzityotom,žepředmět-nálicenčnísmlouvanenívrozporusoprávněnýmizájmyuniverzity,azavazujiseuhraditpřípadnýpříspěveknaúhradunákladůspojenýchsevznikemdíla,atoaždojejichskutečnévýše.

VBrnědne18.května2017 _______________________________

Page 6: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl
Page 7: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Abstract

Vodák, J. Complex web administration system for IDEATECH company. Diplomathesis.Brno:MendelUniversity,2017.Thethesisdealswiththedesignandimplementationofacomplexwebadministra-tionsystem for IDEATECHcompany, focusingon theuniversalityof solutionandthe possibility of its repeated uses across various company projects. The designand subsequent implementation are based on the company's written require-ments.

Keywords

Administrationsystem,CMS,modularsystem,Nette framework,PHP,MVC,Boot-strap,UMLlanguage,e-shop,advancedwebtechnologies.

Abstrakt

Vodák, J.Komplexníwebovéadministrační rozhranípro firmu IDEATECH.Diplo-movápráce.Brno:MendelovauniverzitavBrně,2017.Práce se zabývá návrhem anáslednou implementací komplexníhowebového ad-ministračníhorozhraníprospolečnost IDEATECHs.r.o., sezaměřenímnauniver-zálnostnavrhovanéhořešeníamožnostijehoopakovanéhovyužitínapříčrůznýmiprojektyspolečnosti.Návrhanásledná implementacevycházízesepsanýchpoža-davkůspolečnosti.

Klíčováslova

Administračnísystém,CMS,modulárnísystém,Netteframework,PHP,MVC,Boot-strap,jazykUML,internetovýobchod,pokročiléwebovétechnologie.

Page 8: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl
Page 9: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Obsah 9

Obsah1 Úvod 11

2 Cílpráce 12

3 Technologieprotvorbuwebovýchaplikací 133.1 Základnínástrojeprotvorbuwebovýchaplikací..................................................133.2 Frameworky..........................................................................................................................153.2.1 Typyframeworkůajejichhodnocení...............................................................153.2.2 PříkladyPHPframeworků....................................................................................17

3.3 ArchitekturaMVC................................................................................................................193.4 Pokročilévývojářskénástroje........................................................................................203.5 Metodikyapřístupypřivývojisystému....................................................................23

4 Metodika 26

5 SpecifikacepožadavkůspolečnostiIDEATECHs.r.o. 275.1 Neformálníspecifikacepožadavků..............................................................................275.2 Formálníspecifikacepožadavků..................................................................................305.2.1 Formálníspecifikacesprávyobsahuanastavení........................................305.2.2 Formálníspecifikacemoduluprointernetovýprodej..............................32

6 Analýzapožadavků 356.1 Volbatechnologie................................................................................................................366.2 Funkčníanefunkčnípožadavky....................................................................................376.3 Analýzarizik..........................................................................................................................38

7 Návrhsystému 417.1 Rozvrženídomodulů.........................................................................................................447.1.1 Coremodul...................................................................................................................447.1.2 CMSmodul...................................................................................................................487.1.3 E-shopmodul..............................................................................................................497.1.4 Frontmodul.................................................................................................................51

Page 10: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

10 Úvod

7.2 Návrhdatabáze.....................................................................................................................547.3 Návrhvzhleduadministračnísekce............................................................................58

8 Implementaceazavedenírozhraní 608.1 Implementace.......................................................................................................................618.1.1 Autowiringatvorbakomponent........................................................................618.1.2 Dashboard....................................................................................................................638.1.3 Uživatelé,nastaveníoprávněníaaktivnostimodulů................................658.1.4 Nastaveníměnanákupníprocesnafrontendu...........................................69

8.2 Testování.................................................................................................................................718.3 Praktickévyužitísystému................................................................................................738.4 Ekonomickézhodnoceníprojektuadobanávratnosti.......................................75

9 Závěr 77

10 Literatura 7910.1 Knižnízdroje.........................................................................................................................7910.2 Internetovézdroje..............................................................................................................80

11 Seznamobrázků 82

12 Seznamtabulek 83

A Kompletnízadánípožadavkůspolečnosti 85

Page 11: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Úvod 11

1 ÚvodNasoučasných, moderních arychle se rozvíjejících konkurenčních trzích vznikáazaniká velké množství společností, jejichž úspěch se odvíjí od mnoha faktorů.Jednímztěchtofaktorůmůžebýtprezentacefirmysvyužitíminternetovýchtech-nologií,kterásestalajižjejínezbytnousoučástí.Doby,kdystačilajednoduchá,sta-tickáwebovástránka,jsoujiždávnominulostí.Naprostávětšinafiremnynívyuží-vápokročiléwebovéaplikace,poskytujícívlastníkůmpestrouškálumožností, jaksesvouwebovouprezentacípracovat.Internetjakotakovýsepostupemčasustalvelmi silným nástrojem, obsahující obrovský potenciál, apokud jej firmy dokážísprávně využít, mohou posílit svou stabilitu azískat konkurenční výhodu oprotiostatnímúčastníkůmtrhu.

Prezentacefirem,potažmojednotlivcůskrzeinternet,jedefactonikdynekon-čícíproces,kterýbysenemělpodokončeníjednéfázepovažovatzahotovouzále-žitost,alenaopakbysedotétooblastimělodáleinvestovatakekaždémuprocesupřistupovatsnaprostouprofesionalitouodsaméhopočátku,nehleděnato,jestlisejednáopočátečnínávrh,design,marketingovoupropagacinebodalšírozvojwebu.Ztěchtoaspektůjepatrné,žejedenčlověksámnedokážepokrýtcelýtentoproces,aproto je potřeba více odborníků ve své profesi, kde každý přispěje kvýsledkusvýmdílem.

Jednotlivéwebovéprezentace semohou velmi lišit, vzhled často podléhá fi-remníidentitě,společnostiseodsebesnažíodlišovat,čímžsemohoudostávatvícedopovědomízákazníků,tudížvtétooblastimohouUXdesignéřiagrafici,zabývají-císedanouproblematikou,prokázatsvékreativníschopnosti.Avšakexistujíijistépožadavky, které se pravidelně opakují, což může být dáno některými trendydnešnídoby.Profirmy,kterésezabývajívývojemwebovýchprezentacíasystémůnajejichsprávu, jeprotočastozbytečnéprokaždouzakázkuvyvíjetnovýsystémnasprávutěchtostránek,alenaopakjevýhodnéposkytnoujižsvéhotovéřešení,kterésedá lehcepřizpůsobitarozšířitonové,specificképožadavky.Tatohotovářešení bývají součástí firemního know-how, což se dá považovat za dalšízmožných faktorůovlivňujícíúspěšnost firmy.Může tedybýtvelmidůležité,abykaždá společnost, zabývající se danou problematikou, dokázala poskytnou svévlastnířešení.Dálejetakénezbytné,abytytospolečnostidokázalysprávněavčasreagovat na dynamické změny vokolí, zahrnout tyto změny do svých postupůasnažitsejevyužítvesvůjprospěch,čímžbymohlyposkytovatlepšířešení.

Existujíijižhotovářešení,kterájsouvolnědostupnákužití,avšaktatořešenínemusejíbýtpro spoustyzákaznických firemdostačující.Dokáží siceposkytnoutnezbytnýzáklad,aleprospecificképožadavkyklientůsestávajínepoužitelná,atohlavně zdůvodu špatné rozšiřitelnosti kóduajehobudoucínemožnosti jednodu-chéúdržby.Naopakpromaléateprveserozvíjejícíspolečnostijevolnědostupnéřešenísystémuprosprávustránekvhodnýmřešením,atohlavnězdůvoduúsporfinancínebomožnostijednoduchéimplementace.Pokudsespolečnostitatořešenívbudoucnuosvědčíazjistí,žeposkytujíprodukt,okterýjemezizákazníkyzájem,můžoupožadovatvytvořeníspecifickéhosystémunamíru.

Page 12: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

12 Cílpráce

2 CílpráceHlavnímcílemtétoprácejeposkytnousjednocenékomplexníadministračnířešeníproopakujícísepožadavkyzákazníkůnasprávuwebovéaplikace,kterébyopako-vanýmužitímušetřiločasahlavněfinančníprostředkyspolečnostivynaloženépřibudoucím vývoji. Tyto úspory by měly být vrámci této práce vyhodnoceny jakzhlediskatechnické,takiekonomickéstránkyanásledněbymělybýtdoporučenyidalší možnosti budoucího vývoje. Výsledný systém bude použit aotestován nakonkrétnímpřípadě.

Opakujícísepožadavkynasystémbudoupřevzatyzesepsanéhozadáníspo-lečnostíIDEATECHs.r.o.,prokteroujetentosystémurčen.Tytopožadavkybudouanalyzovány,nazákladěvýsledkůtétoanalýzybudenavrhnutapozdějiimplemen-továnvýslednýsystémsezaměřenímnauniverzálnostvyužitínapříčrůznýmipro-jektyspolečnosti.Vrámci implementacesystémubudezvolenaoptimální techno-logie, vycházející zpotřeb společnosti atato technologie bude pospána vrešeršinástrojůprotvorbusystémůdanéproblematiky.

Jedna zklíčových myšlenek je také zajištění možnosti budoucí jednoduchérozšiřitelnosti systému za pomocí využití modulů. Tímto krokem bude zajištěnamodernizace existujících firemních řešení, kterámohoubýt již zastaralá ajejichžmomentální rozšiřitelnosti je značněomezena jednak zdůvoduzmíněné zastara-losti,nebokvůlišpatněudržovanémukódu.Aleipřestobybylovhodnétatostarářešeníprozkoumataurčit,zdaněkteréznichbudemožnézachovatasjednotitdonové,ucelenéverze.

Page 13: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Technologieprotvorbuwebovýchaplikací 13

3 TechnologieprotvorbuwebovýchaplikacíÚplněnazačátkubymělbýtobjasněnzákladnírozdílmezidvěmapodobnýmipo-jmy, které někteří lidé často zaměňují. Těmito pojmy jsou webová stránkaawebováaplikace.Webovástránka(prezentace)jeformátovanýdokument,kterýjemožné zobrazit skrzewebový prohlížeč. Formátovávání je nejčastěji zajištěnopomocí hypertextu, což je kombinace značek jazykaHTML, nebo XHTML. Obsahstránek je tvořen textem,odkazyumožňujícímipřechodmezi jednotlivýmistrán-kamiamultimediálnímidaty–obrázky,videi,zvukem.Cílemwebovéprezentacejeovlivnit, či změnit chování určité skupiny lidí – prezentuje určitý produkt, neboslužbuaječastokanálemproprodej.

Webová aplikace je naopakslužba, poskytovánaprostřednictvímwebovéhoserveru ainternetového prohlížeče, který slouží jako klient anezná podrobnostiovnitřnílogiceslužby.Manipulacesaplikacíaschopnostšířitjibeznutnostiinsta-lacesoftwarumeziuživateli tvoříhlavnívýhodu tétoslužby.Řešíurčitýproblémprostřednictvímsebesama.Neníkanálemproprodejproduktu,alepřímoproduk-tem.Cílemwebovéhodesignérajevytvořitnovýnávyk–aplikacetedyzapadnedoživotačlověka,který jipoužívá.Stěmitodvěmapojmy ještě souvisí jedenpojem,atoe-shop.E-shopprodáváproduktyaslužbyonline–cíleme-shopuneníjenpre-zentaceproduktů,alepředevšímjejichpřímýprodej(Řezáč,2014).

3.1 Základnínástrojeprotvorbuwebovýchaplikací

Základnímnástrojem,nebospíšejazykemprotvorbuwebovéaplikace,bezkteré-hoseneobejdežádnývývojářwebovýchaplikací,jehypertextovýznačkovacíjazyk,zkráceněHTML, což je označení pro anglický výrazHypertextMarkup Language.Tentojazykumožňujepropojitvelkémnožstvíoddělenýchinformacíavytvořittaknovéuspořádáníproexistujícíinformace.Tomáznásledek,ževjednomdokumen-tumohoubýtvedlesebeumístěnyinformacezoddělenýchzdrojů.Jejichpropojeníjedosáhnutopomocíelementů,díkykterýmsemohouvytvářet, formátovatneboupravovatwebovéstránky.Jednásenapříkladonastavenívzhledutextu,vkládáníobrázků atabuleknebopoužívání rámůproumístění jednotlivých informací (Pí-sek,2014).

Doplňkempro tento jazyk,kterýsevyužíváprokonkrétnínastavování stylůaprvkůHTMLdokumentu, jsoukaskádovéstyly,neboliCSS (CascadingStyleShe-ets).Tentodoplněksevyužíváhlavněprooddělenímkóduvyužitéhoprodefino-vánívzhleduodobsahudokumentu,cožmázanásledekzpřehledněnívýslednéhokódu.Jednáseosouborpravidelapředpisů,kteréumožňujíformátovatdokumen-ty, definují způsobprezentace vjednotlivýchkoncových zařízeních, určují vzhledastyljednotlivýchprvkůdokumentuHTMLaXHTML,alejakotakovédostrukturynezasahují,cožjejejichhlavnívýhoda.Jednásetedyosamostatný,doplňujícíjazykkHTML,jehožvytvořenéstylyseaplikujínaobsahdokumentuwebovýchstránek(Druska,2006).

Page 14: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

14 Technologieprotvorbuwebovýchaplikací

Koncepcehypertextujeznámavícenež60let.Včervenci1945napsalVanne-varBushčlánek„AsWeMayThink“proAtlanticMonthly,vekterémpopsalsystémpro „prohlížení apořizování poznámek zrozsáhlých textů agrafiky“. Avšak prvníverzeHTML jazyka (HTML 1.0) byla objevena až vroce 1990 aneoficiální verzeHTML+bylapředstavenavedruhépoloviněroku1993.Tatoverzesiceobsahovalaelementy pro práci sobrázky, formuláři atabulkami, ale sformátováním textuaodstavců si zatím neporadila. Vsoučasné době se využívá verze HTML 5.1,zčehožlzeusoudit,žespostupemčasusevydávalynovéverze,kteréreagovalynapožadavky uživatelů, redukovaly počty zbytečných elementů anaopak přidávalynovéelementyafunkcionalitu(Písek,2014).Zvýšeuvedenéhopopisujepatrné,žetentojazykmáširokévyužití,avšakexistujíirůznáomezení,sekterýmisinepora-dí,ajeprotopotřebasiuvědomit,žeprovytvořeníněkterýchfunkcí,kterýmidnesběžněwebovéstránkydisponují,sipouzesHTMLnelzevystačit.Nenízdemožnévytvořitověřováníuživatele,HTMLjeurčenoprostatickýobsahdokumentůnebonelzevytvořitdynamickyseměnícínabídky,vysouvacímenuanicpodobného(Pí-sek,2014).

Předchozí zmíněné nedostatky jazyka HTML řeší programovací jazykJavaScriptodspolečnostiNetscape.Jednáseojednuznejrozšířenějšíchtechnolo-giívůbecadefactojedinýskutečnýprogramovací jazykpoužívanývrámciHTMLdokumentů.Přestožezačaljakojednoduchýjazyk,kterýnacházeluplatněníveva-lidaciformulářůnebodrobnémanipulacisobsahemstránky,taksevelmivyvinul,aproto jevněmdnesmožnévytvářetbohatéklientskéaplikace.Běhemněkolikaprvníchletsvéexistencedokázalodsunoutnavedlejšíkolejsvéhojedinéhokonku-rentaVBSCript,navrženéhospolečnostíMicrosoft,akromětohovprůběhutohotoobdobí také začal do jisté míry nahrazovat zásuvný modul Flash (Pehlivanian,2014).

JazykJavaScriptsepostupemčasustalsilnýmapokročilýmvývojářskýmná-strojem, avšak ne všichni návrháři, působící voblastí daných technologií, jsouschopni vněmprogramovat na dostatečně vysoké úrovni, aproto se obracejí nanejrůznějšíknihovny,kterébyjimpomohlysběžnýmiúkonyanavícbyjimušetři-ly ičas. Pro ulehčení práce ztěchto důvodu vznikla všestranná avolně dostupnáknihovnajQuery,využívajícíspoustukoncepcízjazykůHTMLaCSS.Tatoknihov-na poskytuje víceúčelovou abstraktní vrstvu pro běžné webové skriptování ajeužitečnáskorovevšechsituacích,vnichžjepotřebaskriptovat.Jednásenapříkladopřístup kelementům dokumentu skrze model DOM (Document Object Model),ozměnuobsahudokumentu,schopnostreagovatnaakceuživatele,animovatzmě-ny vdokumentu, ale hlavně usnadňuje používání technologie Ajax1 (Chaffer,2013).

PopularitaJavaScriptuneklesala,alenaopakstálerostla,nacožzačalyreago-vativelkéspolečnostijakotřebaGoogle,kterýserozhodlprosvůjvlastníprohlížeč

1Ajax – asynchronní JavaScript aXML (Asynchronous JavaScript andXML) umožňuje aktualizovatobsah stránky bez nutnosti obnovení, zažádat azískávat data ze serveru po načtení stránkyaodesílatmujejzpětnapozadí

Page 15: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Technologieprotvorbuwebovýchaplikací 15

Chrome vytvořit zbrusu novou avýkonnou implementaci jazyka, čímž docházíkoživenímyšlenky, že lze jazykvyužítnejenvrámciklientskéhoskriptování, alelze jej využít iproprogramovaní serverovéhokódu.Tytoúvahyvroce2009ústívzaloženíneformálníorganizaceCommonJS,kterásistanovilazacílprozkoumatastandardizovatchybějícíserverovározhraní. Ještěvtomtéžrocesealeobjevujejinýprojekt -Node.js,kterýpřicházísesadourozhraníaknihovenobalujícínověvytvořenouimplementaci jazykaajednodušetímdovolujespouštětJavaScriptovýkód imimo webový prohlížeč. Node.js si velmi rychle získal silnou uživatelskouzákladnu,zastínilCommonJSastalsetakdefactostandardnímřešenímproserve-rovévykonáváníJavaScriptu(Žára,2015).

DalšímvelmidůležitýmjazykemjejazykPHP.Natentojazyknesmíbýtzapo-menuto, jelikož se jedná ojeden znejvíce rozšířených jazyků na straně serveruvoblasti webového vývoje aje na něm založena většina projektů, téměř 78,9%všech webových aplikací. Jeho počátky spadají do stejného roku jako u jazykuJavaScript,tedydoroku1995,alenarozdílodnějbylojehohlavnínáplníodsamé-hopočátkuřešitúlohyběžícívýhradněnastraněserveru.PHPjazykvytvořilRas-mus Lerdorf pod názvem „PersonalHome Page (Tools)“, což bylo přeloženo jako„Nástrojproosobnídomovskéstránky“,alenynísejednáspíšeorekurzivnízkratku„PHP:HypertextPreprocessor“,českyHypertextovýPreprocesorPHP.HlavnímcílemjazykaPHPjetedyzmíněnézpracovánídattak,abyjebylomožnédynamickyzob-razovatdowebovýchstránek.Konkrétněse jednáomatematickévýpočty,převá-dění formátů dat aspolupráce sdatabázemi. Dále umožňuje vývojářům vylepšitstatickéstránkyoreakcenauživatelsképožadavky.JazykPHPseúzcespecializujenawebovývývoj,aprotopředstavujeobvyklouvolbuprotytovývojáře(Hopkins,2014).

3.2 Frameworky

Přivývojijakékolivaplikacečisystémujevhodnézvážitmožnostvyužitíjižexistu-jícíchframeworků.Jednáseosoftwarovoustrukturu,kterásloužíjakopodporapřitvorběavývojidanéaplikace.Můžeobsahovatpodpůrnéknihovnynebotřídy,pří-padnějinéužitečnénástroje.

3.2.1 Typyframeworkůajejichhodnocení

Jakjemožnéodhadnoutzpodnadpisu,existujevícedruhůframeworků,týkajícíchse webových prezentací či aplikací. Již byla zmíněná knihovna jQuery, jež samaosoběnení frameworkem,nýbrž jenzmíněnouknihovnou, amůžebýtve frame-worcích obsažena. Frameworky se dají rozdělit na frontendové abackendové.Souvisítosrozdělenímaplikace,kdepojemfrontendpředstavujeklientskoučást,která běží na straně klienta aje běžně viditelná. Naproti tomu backednová částaplikace,neboliserverováčást,sestaráoadministraciklientskéčástianacházísena straně serveru. Prostým ajednoduchým tvrzením se dá říci, že frontendovéframeworky se starají ozpůsob zobrazování aprezentování informací, tedyoproblémy uživatelského rozhraní. Backendové mají naopak za úkol se starat

Page 16: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

16 Technologieprotvorbuwebovýchaplikací

oserverovoučástaplikace,běžícívpozadí,jehožsoučástíjepotomizpůsobzobra-zování.Samozřejměsedajírůzněkombinovatapoužívatsoučasně.

AsinejznámějšímfrontendovýmHTML,CSSaJavaScriptovýmframeworkem,napomáhajícímpřitvorběuživatelskéhorozhraní,jeBootstrap,kterýbylpůvodněvyvinut pro potřeby Twitteru aněkteří jej nazývali „responzivní framework“. Tovšak jižnenípřílišpřesné,protožezvládnepokrýtmnohemširšíškáluproblémů,mezikterésedáresponsivitawebuzařadit.Bootstrapjedefactosadanástrojů,ježmá za úkol usnadnit práci stvorbou šablony, napomáhá súpravou typografieacelkově stvorbouelementůuživatelského rozhraní azároveňošetřuje zobrazo-vánínapříčvšemiplatformami.Podtímtonázvemsevdnešnídoběmohouskrývattakétechnologie jako jsouReact,Angular,Vueatp.,avšakzdesepojednáváo fra-meworku pro tvorbu GUI (Graphical User Interface). Mezi hlavní výhody těchtotypůframeworkůpatří(Málek,2013):

• Rychlý vývoj typizovaných webových prezentací pomocí znovupoužitelnýchkomponent,cožusnadňujezačátkyprojektů

• Usnadněnívývojeaúbytekstarostíprogramátorůmsfrontendovoučástí• Sjednocenívizuálníhojazykanapříčcelýmprojektem,tzn.žegrafik,designer,kodéraprogramátorvyužívajísjednocenézobrazováníelementů

Podle výše zmíněného rozdělení frameworků bude dále vtextu pojednávánooframeworcích patřících svým zařazenímdobackendové části. Hlavní výhodoutěchto frameworků je, že pokud uživatel dodrží doporučené postupy anávrhovévzory,můžeseoprostitodvedlejších,rušivýchčinnostíneboproblémůamůžesesoustředitnahlavníčinnost,čímžsiusnadnípráciavývoj.Dalšímineménědůleži-týmivýhodamimohoubýtzajištěníbezpečnostiadodrženísprávnýchprogramá-torskýchstandardů,čímžsezpřehledňujekódapředcházíseopakovanémupsaníduplicitního kódu. Aplikace využívající framework se stává snadno udržovatelnáarozšiřitelnánejenprosamotnéhovývojáře,aleiproostatníuživatele.Mezidalšívýhodypoužitíframeworkupatří(Monus,2015):

• Rychlejšívývoj• Dobřeorganizovaný,znovupoužitelnýaudržovatelnýkód• Prosazovánímoderníchwebovýchvývojovýchpostupů,jakonapříkladobjek-tověorientovanéprogramování

• Odděleníprezentaceodlogiky(architekturaMVC)• Škálovatelnostkódu

Pokudsevývojářrozhodneprovyužití frameworku,nepřináší to jenomřaduvý-hod,alemusíbýtzváženy imožnénevýhody. Jednouznich jeužsamotnévyužitíkódutřetíchstranvevlastníaplikaci.Tomázanásledekhlavněriziko,žepokudsebudespoléhatjennatentokódajehovývojsevbudoucnuzastaví,mohoubýtvy-stavenyrizikuivšechnydalšíprojekty,kdesetentokódvyužívá.Nebylobytopo-prvé,kdysevývojurčitéhoframeworkuúplnězastavilatímdefactozaniknul.Dal-

Page 17: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Technologieprotvorbuwebovýchaplikací 17

šínevýhodamůžebýtnaivnípocitbezpečí,kdychybněnapsanáaplikacejemnoh-dyvícezranitelná,nežkdyžframeworknevyužívá.Dásepředpokládat,žezačínají-cíprogramátormůžemítsprvotnímvývojemjistéproblémyaudělámnohochyb.Mělabybýt takézvážena individuálnostprojektu, jelikožužití frameworkumůžedoznačnémíryprogramátorasvazovat,apokudbyprojektbylpříliš individuálníčinestandardní,budelepšísetomutovyužitízcelavyhnout.Některézdrojepouka-zujínasníženírychlostiaplikacevyužívajícínějakýframework,avšaktototvrzeníjemnohdyvelmisporné.

3.2.2 PříkladyPHPframeworků

MezinejznámějšíPHPframeworkylzezařaditnapříkladLaravel,Symphony,Yii,Zend,CakePHPnebopročeskévývojářevelmidobřeznámýNetteframework.

IkdyžjeLaraveloprotiněkterýmframeworkůmrelativněmladý(2011),me-ziPHPprogramátoryse těšíobrovsképopularitěnapříčcelýmsvětem.Mezi jehohlavní přednosti patří velmi rozvinutý ekosystém splatformou připravenoukokamžitému hostování. Na jeho webu je dostupných velmi mnoho tutoriálůarozsáhládokumentacevpodoběkomentovanýchvideozáznamůobrazovky,kte-réjsounazývanýLaracasty.Dalšívýhodoujejehosamotnáimplementace,ježdis-ponuje spoustou vlastností, které urychlují samotný vývoj, nebo to, že obsahujevlastní odlehčené šablonovací jádro Blade. Tento framework garantuje snadnouimplementaci často se opakujících činností jako je například autentizace, relaceařazenídofrontnebosměrování.Navícobsahujevlastnílokálnívývojovéprostře-dínazvanéHomested.Tatokombinacepřednostíznějčinnívelmisilnývývojářskýnástroj(Monus,2015).

Pro vývojáře, kteří přechází zfrontendového prostředí do backendového, jevhodnépřiklonitsekeframeworkuYii,atohlavněztohodůvodu,žetentonástrojjepřímointegrovanýsJavaScriptovouknihovoujQueryavesvémzákladujejuži-vateldostávásesadoufunkciproAJAXamechanismempromotivyaskiny.JednouzdalšíchvýhodjejehogenerátorkóduzvanýGii,tvorbaprototypůnebofakt,žejezaložennakódovacímpojetíDRY–„Don‘tRepeatYourself“,cožvpřekladuzní„ne-opakujse“ajakoužvětšinaframeworkůuživatelevedekčistěobjektověoriento-vanémuprogramování.Jehohlavnídominantoujejehoúdajnárychlost–honosísetitulem „nejrychlejší PHP framework“, která pramení zvyužití Lazy Loadingu,vpřekladu„pohodovéhonačítání“(Monus,2015).

ProrozsáhléprojektysejevíjakovelmivhodnéřešeníZendFramework,kte-rý byl vytvořen aoptimalizován prometodologii agilního vývoje systému.Mimojiné je velmi robustní aobsahuje velmi velké množství konfiguračních volebamožností nastavení.Mezi jeho hlavní partnery se řadí voblasti IT velmi dobřeznámefirmy,jakojsouIBM,Adobe,MicrosoftaGoogle.Mezidalšíjehopřednostiseřadíspoustakladněhodnocenýchfunkcionalit–napříkladnástrojeprokryptogra-fické kódování, testovací nástroje PHP Unit testing, online ladicí nástrojeafrontendovýeditorDragandDrop(Monus,2015).

DalšímvelmipopulárnímmeziPHPvývojáři je frameworkSymphony, jehožkomponenty jsou využity pro řadu známých projektů, jakými jsou Drupal nebo

Page 18: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

18 Technologieprotvorbuwebovýchaplikací

mimojinéijižzmíněnýframeworkLaravel.Tojedánohlavnětím,žejehokompo-nentyjsouopětovněvyužitelnéPHPknihovny,dodávanéprostřednictvímnástrojepro správu závislostí vPHP projektech - Composeru, který bude popsánvpodkapitole3.4.Mezitytosamostatnéknihovnypatřínapříkladtvorbaformulá-řů,směrování,šablonování,autentizacenebokonfiguraceobjektů(Monus,2015).

Jako poslední zPHP frameworků byl záměrně ponechán vČeské republicenejvícerozšířenýNetteframeworkodčeskéhovývojářeDavidaGrudla.Mezijehohlavnípřednostiseřadíšablonovacísystém, ladicínástroje,rozsáhlézabezpečeníprotichybámazranitelnostemnebokvalitníčeskádokumentace.Záměrnějenavr-žentak,abyconejvíceusnadňovalaulehčovalprácivývojáře.

Mezijednuzhlavníchpřednostítohotoframeworkuje, jižzmíněnýladicíná-strojTracy, který jemimo jinéznámýpodnázvemLaděnka, jež sedámimo jinépoužítijakojakosamostatnákomponentavjakémkolivsoukromémprojektu.Po-máhá rychleji odhalit chyby, logovat je nebo měřit čas – stará se tedyodebuggování. Jelikož PHP jazyk poskytuje dostatek volnosti, mnohdy sevprojektuvyskytnoutěžceodhalitelnéchyby,otovětšírolihrajeprávětentoná-stroj,kterýtytochybysprávněvizualizuje.Tracy jehojněvyužívánavtakzvanémvývojovémprostředí, kdyprogramátoroviusnadňuje vývoj anapomáhápři odla-ďování chyb. Naproti tomu vostrém, produkčním režimu zůstává skrytá, chybyzaznamenávádotextovýchsouborů,nebojeumíodeslatprostřednictvíme-mailupříslušnéosobě.Informaceochybáchhrajívelmipodstatnouroli,neboťuživateléjsoudefactonejlepšítesteři,avšaksamivelmimálokdyposkytnouzpětnouvazbuoaplikaciajejífunkčnosti,takževlastnítestováníaplikace,kteréjesoučástívývoje,bynemělobýtopomíjeno.Existujeipřípad,kdyladicíinformaceseneposílápřímodooknaprohlížeče, což se týkánapříkladajaxovýchpožadavků, generováníXMLvýstupůčiobrázků.TytochybyjemožnéodchytávatprostřednictvímdoplňkůdointernetovýchprohlížečůjakojsouGoogleChromeneboFirefox(NetteFoundation,2017a).

NettevyužívájakošablonovacísystémLatte,kterýjenavrženpřímoproPHPjazyk,jelikožzčástivyužíváijehosyntaxiavycházízpotřebpřímowebdesignerů.PoužitímtěchtošablonjePHPvývojářůmusnadněnapráceazároveňjejižnatétoúrovní provedeno zabezpečení proti zranitelnostem, například proti XSS2, které,ikdyžjejednoznejtriviálnějšíchnarušení,můževéstikodcizeníidentity.Obranouproti tomutotypuútoku je takzvané„escapování“vypisovanýchproměnných,cožjepřevodznaků,majícíchvdanémkontextuspeciálnívýznam,najinéodpovídajícísekvence. Pro časté zapomínání na tuto povinnost byl navržen automatickýme-chanismus, jenž disponuje technologií Context-Aware Escaping. Ta automatickydetekuje, ve které části dokumentu semakronachází apodle toho zvolí správnýzpůsobošetřeníproměnnýchatímzabraňujechybámpramenícímzmylnězvole-néhodruhuošetřenívypisovanýchdat(NetteFoundation,2017d).

2XSS–Cross-sitescriptingjedruhzranitelnostiwebovýchaplikací,kterávyužíváneošetřenévstu-pyaútočníkdokážepodstrčitsvůjvlastníJavaScriptovýkóddostránky

Page 19: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Technologieprotvorbuwebovýchaplikací 19

DalšímivýhodamiLatte,kteréjsoupřímouvedenynastránkáchNette(NetteFoundation, 2017d), je využitímaker, bloků, dědičnosti apoužívání filtrů, jež lzespolečně smakry ivytvářet. Filtry jsou speciálnímdruhem funkcí, jenž pomáhajíupravitnebopřeformátovatdatadovýslednépodoby.Makrajsoufragmentykódu,kterýmjepřiřazenidentifikačnířetězecapotéjsoupreprocesoremnahrazenyob-sahemdanéhomakra.Navíc jevšablonáchsystémdíkyLattevelmirychlý,neboťjednotlivéšablonysepřekládajídoPHPkóduapotéseukládajídocachepamětinadisk,cožmázanásledek, jakobybylypsánypřímovPHP,ale jsoumnohempře-hlednějšíabezpečnější.

Velmidůležitáprácesformulářijevyřešenadíkyvlastnímumechanismu.Net-te výrazně usnadňuje vytváření azpracování přímo vaplikaci, data odeslaná nastraněserveruseautomatickyvalidujíprostřednictvímJavaScriptu,jeposkytnutozabezpečeníprotizranitelnostematentomechanismuspočítáismožnostípřekla-duwebovéstránkydovícejazykůnebosrežimemprovícenásobnévykreslování.Uživatelsetakévyhneceléřaděrutinníchúkolů,jakýmjetřebapsanídvojívalida-ce na straně serveru iklienta, minimalizuje se pravděpodobnost vzniku chybabezpečnostníchděr.Tovšezcelatransparentněaautomaticky.Dálejezabráněnoútokům již zmíněnéhoXSS, ověřuje sevaliditaUTF-8 kódovánínebo jestlinejsoupoložkyvybranévselectboxechpodvržené(NetteFoundation,2017b).

3.3 ArchitekturaMVC

Vposledních letech se začíná prosazovat vývoj založený na architektonickýchanávrhovýchvzorech,kterýumožňujenavrhovatsoftwarerychleji,vlepšíkvalitěaznovupoužívat jižexistujícízdroje.Vývojářmůžepracovatnavyššíúrovniabs-trakceaaplikujevzory,kterépopisujíobecnářešeníopakujícíchseproblémůpřinávrhu. Vzory zapouzdřují specifickou znalost architektury atechnologie, čímžpomáhajívytvářetznovupoužitelnýkód.Vsoftwarovéminženýrstvísehojněvyží-vánapříkladarchitekturaMVC.Tabyladefinovánajižpočátkem80-týchletminu-léhostoletí, avšakkrozmachunávrhovýchvzorůdocházíažo10 letpozději, atohlavnědíkyzveřejněnípublikacenatototéma(Bruckner,2012).

Všechny PHP frameworky, jež byly zmíněné vpředchozí podkapitole, tutosoftwarovouarchitekturuvyužívají,aprotojepotřebajizmínittakézde.MVC,ce-lýmnázvemModel-View-Controller,nebotakéMVP,kdePmůžeznamenatPresen-ter (Controller), se skládá ze tří základníchvrstev,přičemžkaždá znich jeodpo-vědná za specifické činnosti. Architektura vznikla zpotřeby oddělit u složitýchaplikacísgrafickýmrozhranímkódobsluhy(Controller)odkóduaplikační logiky(Model)aodkóduzobrazujícídata(View,nebolipohled).Tímtoseaplikacemno-hemvícezpřehlední,usnadňujebudoucívývojatýmovouspoluprácivícespecialis-tůneboumožňujetestováníjednolitýchčástízvlášť.

Funkční adatový základ celé aplikace se nazýváModel, jenž obsahuje celouaplikační logiku ajakákoliv akce uživatele představuje jeho akci. Vnitřní stav sispravuje sám, vennabízí pevnědané rozhraní avoláním funkcí toho rozhraní semůžezjišťovat,čiměnitvnitřnístav.Modelnevíoexistencikontroleruanipohle-

Page 20: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

20 Technologieprotvorbuwebovýchaplikací

du.Pohled jenaopakvrstvaaplikace,kterámána starost zobrazovánívýsledků.Obvyklevyužívánějakýšablonovacísystémaví,jaksemázobrazitvýsledekzíska-ný zmodelu. Celý tento průběh řídí kontroler, který zpracovává požadavky oduživatelů ana jejich základě volá patřičnou aplikační logiku apoté žádá pohledovykreslenídat(NetteFoundation,2017c).Popisprocesujeznázorněnnanásle-dujícímobrázkuabudepopsánnailustrativnímPHPframeworku

Obr.1 SchémaarchitekturyMVC

Uživatelův požadavek, který přišel formou HTTP požadavku, je zpracován skrzerouteranáslednějepředándáledoaplikace.Router ječástaplikacesloužící jakoobousměrnýpřekladačmeziURLadresamiaakcemikontroleru.Dokážetedypod-leURLadresyurčit,kterýkontrolerajakáakcesemávykonat,nebonaopakjakáURLadresa semávygenerovat.Nyní, když jeurčenkontroler aakce,přicházínařadu model, jenž obstará potřebnou aplikační logiku (například dodá potřebnédataneboprovededílčívýpočty)avýsledekvrátízpětdokontroleru.Tentatodatapředádozvolenéhopohledu,kterýsepostaráozobrazenídatavýsledekskrzeok-nointernetovéhoprohlížečezobrazíuživateli.

3.4 Pokročilévývojářskénástroje

Vúvodnípodkapitolebylypředstavenyzákladní technologieprovývojwebovýchaplikací čiwebovýchprezentací, avšak tyto technologienemusejí býtdostačující,protoexistujíidalšítechnologie,kterénaněnavazujíavylepšujíje,čímžusnadňujínáslednouprácipřivývoji.

PrvníztěchtopokročilejšíchtechnologiíješablonovacísystémJade(mimoji-né známý ipod starším názvem PUG). Vznikl původně pro Node.js, ale existuje

Page 21: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Technologieprotvorbuwebovýchaplikací 21

ialternativaproPHPjazyk.Ujakéhokolivwebu,aťužsejednáokomplikovaný,čijednoduchý, si lzeusnadnitprácihnedpři samotnémkódování. Šablonynabízejí,kromězákladníchvěcí jakojsouproměnné,podmínkynebocykly,hlavnětakéal-ternativnízápisHTMLjazyka,kterýmázanásledekúspornějšíkód.Tentoúspornýkód je až následně převeden do prostého HTML. Základní pravidla pro psanívtomtošablonovacímsystémujsou(Krause,2017):1. OstrézávorkyběžnévHTMLsenepoužívají.Namísto tohosepíší jennázvy

elementů2. Koncovéznačkysevynechávajívšudeazanořeníjedosaženoprostřednictvím

tabulátorovéhoodsazení3. Třídyaidentifikátorysepíšípřímoknázvůmelementu4. Atributysezapisujídozávorek5. Každýtextnazačátkujechápánjakoelement,připojenýtextkelementujede-

finovánpřesznaksvisléholomítka

Existujetedymožnostodlišného,avšakúspornějšíhozápisuHTMLkódu,kterýten-tozákladníjazyknavícrozšiřujeonovoufunkcionalituanáslednějepřevedendoklasickéhoHTML.Tosehodízejménaurozsáhlejšíchprojektů.CoalesrozsáhlýmiCSS styly? I na ně lze aplikovat podobný přístup. Aby kód zůstal srozumitelnýabylazachovánastruktura,případněabymohlodojítkobohaceníonovoufunkci-onalitu,bylynavrženyCSSpreprocesory,kterépřekládajívlastnísyntaxizdrojové-hokódudoklasickéhoCSS,sekterýmsiužinternetovéprohlížečedokážíporadit.MezinejznámějšípříkladysedajízařaditLESSaStylus,kteréjsoupsányvNode.js,nebo velmi populární SASS, který je oproti dvěma předchozím napsánvprogramovacím jazyceRuby. Je tedypatrné, žekjednoduchémuzapisováníCSSstylů je nutné přidat dílčímezikrok, kterým je transpilace3, což není vhodné proeditacistylůpřímonaserveru.Vevývojovémprostředíjeřešenímsledovacírežim,jenž monitoruje změny vsouborech apři změně dojde kpřekladuaznovusestavenívýslednéhoCSSsouboru.

SASSvyužívávícesyntaxí–klasickouSASSneboSCSS.Odsebese liší tím,žeSASSnepoužíváuzávorkovánídosloženýchzávorekaanistředníky,alemístotohovyužívá odsazení pomocí tabulátoru.Druhoumožností jeSCSS, kterémá stejnousyntaxijakoLESS,alevyužíváuzávorkováníastředníky.Jakýzpůsobzápisusiuži-vatelzvolí,jeužjennaněm.Ateďhlavníotázka,cototedyvývojářipřinášízavý-hodykromědělbykóduapřehlednosti?Jednásehlavněo(DocumentationofSass,2016):

• Rozšíření jazyka oproměnné,mixiny (znovupoužívání opakujícího se kódu),Nesting(přeloženojakohnízdění,což jezanořováníCSSstylůdosebe),různéfunkcečipočetníoperaceapodmínky

3Transpilace–procespřekladuzdrojovéhokóduz jednohoprogramovacího jazykado jiného.Narozdílodkompilacedocházíkpřekladujazykůnapřibližněpodobnéúrovniabstrakce

Page 22: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

22 Technologieprotvorbuwebovýchaplikací

• Mnohoužitečnýchfunkcípromanipulacinapříkladsbarvamiajinýmihodno-tami

• Pokročiléfunkcejakonapříkladsměrnicekontrolyproknihovny• Dobřeformátovaný,automatickykontrolovanývýstupprotichybám• Dělbusouborunamenší,znovupoužitelnéčásti,kterélzeimportovat

Zněkterých výše uvedených poznatků vyplývá, že existuje více nadstavbovýchtechnologií, které vyžadují více úkonů, než je nezbytněnutnépři psaní prostéhokódu.Avšakvyužitímkombinacítěchtotechnologiíaněkterýchznástrojů,kteréjepotřeba do projektu zapojit kvůli některým ztěchto technologií, se mohou lišitdobřívývojářiodtěchobyčejných.MezidalšípokročilénástrojelzezařaditBower,GruntaGulp, což jsoumodulyproužmnohokrátzmíněnýNode.jsajejichvyužitísemůžehoditprávěprozmíněnédodatečnéúkony,spojenésvyužitímúspornější-hozápisukódu.Proupřesnění,nástrojBowerstěmitoúkonypřímonesouvisí,alemázaúkolstaratseoklientskoučástaplikaceaněkdyjeoznačovánza„balíčkovacísystém“(Staněk,2014).Tentonástrojdodávádoprojektupotřebnéknihovnyjakomůžebýt třeba jQuerynebopotřebnésouborypro frontendovýframeworkBoot-strap.

NyníkonečněkezmíněnémupreprocesorovémupřevoduSASSdoCSS,kteroumůžemítnastarostjedenzdvojiceGulpneboGrunt.Obadvasloužíjakotakzvaný„The JavaScriptTaskRunner“, cožznamená, že tytonástrojepospuštěníautoma-ticky sledují, zachytávají areagují na změny vurčitých souborech (transpilace).Oba dva jsou si velmi podobní, ovládají se pomocí příkazové řádky, jsou open-sourcepodlicencíMITamajíširokouaaktivníkomunituuživatelů.Rozdíl jevšakažten,žeGulpsesnažíbýtrychlejšítím,žedatasemezijednotlivýmiprocesypře-dávají přes pipeline4, čímž se redukuje počet diskových operací aúlohy se dajísnadno řetězit, avšak je na vývojáři, který zvolí (Ožana, 2014). Potřebnémodulyproprácistěmitonástroji jsoudoprojektudodánypomocí jiného,„balíčkovacíhosystému“NPM,aletentokrátsejednáo„serverovýbalíčkovacísystém“,kterýdopro-jektuautomatickypřidávánapříkladmodulygulp-pug,gulp-sass,gulp-imagesatd.,aletakémůžesloužitjakonáhradazapředchozízmíněnýBower,kterýoprotinovězmíněnémuNPMvesvépodstatěnicodlišnéhoneposkytuje,takžeNPMlzevyužítipropřidáníknihovenjakojsouBootstrap,jQueryatd.

Vpřípadě využití frameworku budou kdispozici již hotové knihovnyanástroje,kterésebudoudoprojektumocipřidávat,atímmůžebýtpráceulehče-na.Přecijenjetovýhodnější,nežnavšechnyproblémyznovuvyvíjetřešenísamo-statně.OsprávuzávislostísevPHPstaránástrojzvanýComposer,kterýpodleofi-ciálnístránkygetcomposer.orgumožňujedeklarovattytoknihovnyamánastarostjejich závislosti. Navíc se stará oaktualizace těchto knihoven ajiž při počátečníinstalaci vybírá nejaktuálnější verzi.Nejedná se však oklasického „správce balíč-ků“,jenžbymělzaúkolglobálníinstalaci,nýbržsestaráopřidávánízávislostído 4Pipeline–sadainstrukcí,kteráseuplatňujepřitokudat,kdyvýstupjednohoprocesujezároveňvstupdalšího,cožumožnívykonávánívětšípočtuinstrukcíaumožňujeparalelnízpracování.

Page 23: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Technologieprotvorbuwebovýchaplikací 23

konkrétního projektu. Na první pohled je ipatrné, že základní myšlenka tohotonástrojenenížádnánovinka,alejesilněinspirovánazmíněnýmNPM.

Vposledníchletechsevelmirychledopovědomívšechprogramátorů,bezoh-ledunato,vjakémjazycesvéprojektyvyvíjejí,dostalpojem„verzovacínástroje“,nebotaké jenzkráceněGIT. Jednáseonástroj,kterýumožňujerychlýpřístupkekompletní historii projektu, možnost vyvíjet bez dostupnosti připojeníkcentrálnímu repozitáři nebo schopnost vytvářet lokální větve vývoje.Vneposlednířadě jekaždákopierepozitáře jehoúplnouzálohou. Jehohlavnívý-hodoujemožnostprocházetsihistoriivývoje,mítpřehled,kdojezajakoučástvý-vojezodpovědnýahlavněumožňujesnadnývývojprojektuvtýmech.Ikdyždojdeksituaci,kdyjednotlivýčlenovétýmuupravístejnésoubory,nedojdekjejichvzá-jemnémupřepsání,nýbržvývojářeupozornínatytomožnéproblémyapřimějeje,abysvoupráci sladili. Jednotlivévětveumožňují, ževývojprobíháodděleněakesloučení těchto větví dojde až vpřípadě, kdy se jedná o odladěnou část, které jepřipravenakespojeníshlavníprodukčníverzíprojektu.Tentonástrojsehodíjakprovývojvelkých,takimalýchprojektů(Vrána,2012).

Sprvní oficiální verzí tohoto nástroje přišel jeden zhlavních vývojářůLinuxkernelu LinusTorvalds vroce2005.Celýprincip je založenna způsobuukládánísouborů,kdykaždýsouborjeuloženvždyjenjednouapotéjsouukládányjentzv.snapshotavkaždémpomyslnémuzlu(commit)jsouuloženyvšechnysouboryprá-vě jako tyto snapshoty. Jedná se o binární soubory, kteréumožňují ukládatneje-nomtextovésoubory,aletakéiobrázkové,případnějinésouboryavelikostadre-sáře zůstává skoro totožná. Neukládá se rovnou na server, ale každá operace jenejprvelokální,takžesemezilokálníuložištěaservervložídílčímezičlánek,kterýumožňuje možnost opravy před publikováním na zmíněný server. Pro kontroluintegrityjsouvyužitykontrolnísoučtyznámejakohash(Gajda,2013).

3.5 Metodikyapřístupypřivývojisystému

Již jsouznámézákladníaipokročilejšínástrojeprovývoj redakčníchsystémůvewebovémprostředí, ale ještě je však potřeba před zahájením celého vývojovéhoprocesusiobjasnitjistéfakty,jakýmijsounapříkladinformace,jakpřitomtovývojipostupovat, co je potřeba zjistit za informace ještě před daným vývojem ajakéexistujímetodyvývojesystémůjakotakových.

Celkováúspěšnost tvorbysystémůpodlevětšinyprůzkumůneníuspokojivá.Podle společnosti Standish Group vrámci projektu CHAOS je úspěšnost projektudefinována splněním tří kritérií –projekt dokončen včas,podle rozpočtu asevšemi specifickými funkcemi. Spostupem času se však tato úspěšnost tvorbyprojektůpostupnězlepšuje,atoivlivemnapříkladaplikacírůznýchmetodik,stan-dardůanorem.Zvýšitúspěšnostsoftwarovýchprojektůsemimojinétakésnažíjaktradičnípřístupy,takityagilní.Každýznichvšakktomupřistupujenazákladějiných předpokladů. Tradiční přístupy považují tvorbu IS za definovaný proces,který je možné přesně popsat apodle toho popisu opakovaně realizovatazlepšovat.Agilnípřístupynaopakvycházejí zpřesvědčení, že tvorba IS jeempi-

Page 24: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

24 Technologieprotvorbuwebovýchaplikací

rickýproces,jenžnemásmyslpopisovat,alejetřebajejmonitorovatapřizpůsobitrealitě.Vrámcitradičníchpřístupůsemůžemesetkatsreferenčnímimodelypro-cesů,různýmimodelyživotníhocyklu,posuzovánímzralostiazpůsobilostiprocesůatradičnímimetodikamibudováníIS.Agilnípřístupyjsoureprezentoványagilnímimetodikami, jež jsou postaveny pouze na iterativním modelu životního cyklusvelmikrátkými iteracemi.Vposlednídoběsevícenežkompletníagilnímimeto-diky používají spíše jen jednotlivé agilní metody či praktiky, které se navzájemkombinují(Bruckner,2012).

Mezihistorickyneznámějšímodely životního cyklupatří vodopádovýmodelamodel pro iterativní vývoj. Životní cyklus systému je časovýúsek, který začínáúmyslemvytvořitsystémakončí,kdyžsesystémpřestanepoužívat.Modelživot-níhocyklujerámecprocesůaaktivitaječastoorganizovándofází.Vodopádovýmodel, který se rozšířil zejménav70. a80. letechminuléhostoletí, se inspirovalpostupy vprůmyslu arozdělil vývoj softwarudopostupněprováděných fází. Po-jemvodopádsezačalpoužívatproto,že jednotlivé fázenásledujíposoběajejichgrafickéznázorněnípřipomínávodopád(Bruckner,2012).Celýprocesjezachycennanásledujícímobrázku.

Obr.2 JednotlivédílčífázeživotníhocykluVodopádovéhomodeluZdroj:Tvorbainformačníchsystémů,2012

Začínáfázíspecifikacepožadavků,poténásledujefázeanalýzy,návrhu,implemen-tace,testováníanakoneczavedení.Vdoběvznikutohotomodelupředstavovalvý-

Page 25: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Technologieprotvorbuwebovýchaplikací 25

znamnýpokrok, neboťdokázal rozdělit celýproces vývojenadílčí fáze, které semohouopakovat.Vdnešnídobě je jižmnohdykritizovaný,alevněkterýchpřípa-dechmůžebýtdostačující.Tozávisíhlavněnatom,zdanazačátkuprocesuvývojemohou být specifikovány všechny požadavky azda se vprůběhu vývoje nemění.Vopačnémpřípaděnastáváproblém.Dalšípodstatnývlivje,zdajepotřebazapo-jenízákazníkadoprojektu.Vodopádovýmodelpočításezapojenímjennazačátkuanakonci.Nejpodstatnějšínedostatekjevčasnáintegrace,kteráseprovádíažnakonci vývoje, kdy semohou zjistit značnénedostatky vyžadující změny vnávrhuapřeprogramování,cožvedekezpožděníceléhoprojektu(Bruckner,2012).

Tytonevýhodyřešíiterativnívývoj.Tenjepostavennaskutečnosti,žečlověklépeřešímenšíproblémy,aprotojepotřebarozložitcelýprojektdodílčíchprojek-tů–iterací.Přitomjednotlivéiteraceobsahujívšechnydílčífázeodplánováníažpozavedení. Výsledkem každé iterace je funkční, otestovaná část systému. To vedekpodstatnémusníženírizikpřivývoji,protožepřípadnéproblémyseodhalívčas,atudíž se také včas dají řešit. Iterativní vývoj rovněž poskytuje lepší přehledoprojektujakotakovém(Bruckner,2012).

Zastánci agilních vývojových přístupů jsou přesvědčeni, že proces vývojenelzepředempospat,alejenutnéjejprůběžněmonitorovatapřizpůsobovatzmě-nám,aprotokaždázagilníchmetodikjesvýmzpůsobemjedinečná.Ikdyžpočátkytěchto technik sahají do 80. letminulého století, důležitým rokembyl rok 2011,kdy byl definovánManifestu agilního vývoje softwaru,ve kterémbyly definoványzákladníprincipyvývoje,založenéhonatěchtotechnikách.Mezineznámějšímeto-dikypatříLeanDevelopment,ExtrémníprogramováníneboSCRUM,kterájeza-měřenahlavněna řízeníprojektuajejíž vývojprobíhávkrátkých iteracíchnazý-vaný Sprint trvajících vrozmezí 2 až 4 týdnů. Členové týmů si vybírají úkoly,účastní se denních schůzek,monitorují aidentifikují vzniklé problémy asnaží sevševrámciSprintuvyřešit(Bruckner,2012).

Page 26: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

26 Metodika

4 MetodikaPřivývojisystémubymělybýtdodrženyjistépostupy,kterýmisebudeřídititatopráce abude se dle nich postupovat. Tyto přístupy tvorby systémů vycházízmodelůživotníhocyklu,případnězjinýchpřístupů,okterýchbylopojednávánovpředchozípodkapitole.Tatoprácebuderozčleněnananásledujícíčásti:

• Specifikacepožadavků• Analýzapožadavků• Návrhsystému• Implementace• Testování• Zavedenírozhraní• Vyhodnocení

Vúvodní fázibudouspecifikoványdílčípožadavkyspolečnosti,prokterou jesys-témvyvíjen.Tytopožadavkyjsouzaloženynazadáníspolečnosti,kdejsoudefino-vány opakující se požadavky klientů na administrační systém.Na základě těchtopožadavkůbudepotéprovedenaanalýza,vekterésezvolíoptimální technologie,zanalyzujíseostatnífiremnířešeníazjistíse,jestlizdanýchřešenílzevyužitíně-kteréčástiprovývojnovéhosystému.Nazákladětohotozjištěníbudoudefinoványfunkční anefunkční požadavky apoté se provede analýza rizik, ve které budounalezenymožnárizikaprojektu,prokterésenásledněstanovípříslušnáopatření.Součástianalýzybudoutakévlastnípostřehyapoznámkykespecifikacipožadavkůspolečnosti,kterébudoureagovatnapřípadnénedostatky.

Nazákladněspecifikacepožadavkůanáslednéanalýzysevyhotovínávrhsys-tému,kterýbudeobsahovatdílčínávrhyfunkcionalitysystému.Projednotlivéná-vrhysevyužije jazykUML,procesnímodelování,ERmodeladrátěnýmodel.Sys-tém bude během návrhu rozložen na dílčímoduly se zaměřením na určitý druhfunckionality.Podokončenínávrhunásledujeimplementace,jejížvýsledkembudefunkční systém, využitelný jako již hotovýprodukt. Implementacebudeprobíhatpostupněpo částech, kdy výstupemkaždé části bude funkční část systému, potéproběhne krátké zhodnocení dosavadní části spřípadnými návrhy na zlepšení,kterébudouimplementoványvnásledujícíčásti.Vzhledemnaplánovanébudoucírozšiřování,nebopřípadnédrobnéúpravydlepožadavkůjedlovýchzákazníkůbu-dou jakosoučást implementace také sepsány testy.Tyto testyzamezínáslednýmchybámplynoucímprávězezmíněnýchzměnvsystému.

Funkčnířešenísenásledněotestujenafiremníchzakázkách,kdesezjistí,jestlinavržené řešení obstojí vreálných podmínkách ana praktických problémech. Pozavedenírozhranídoostréhoprostředíseprovedezhodnocení,zdařešenívyhovu-je,činikoliv.Součástícelkovéhovyhodnoceníjetakéekonomickézhodnoceníefek-tivnosti, ekonomické úspory společnosti atechnické shrnutí. Společnosti budounavrženymožnostiprozlepšení,neboprostorypropřípadnérozšíření.

Page 27: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

SpecifikacepožadavkůspolečnostiIDEATECHs.r.o. 27

5 SpecifikacepožadavkůspolečnostiIDEATECHs.r.o.

Jižbylouvedeno,ženověnavrhovanéřešeníbudevyvíjenovespoluprácisespo-lečností IDEATECH s.r.o. Jde oobchodní společnost se sídlem vhlavním městěPraze. Do rejstříku obchodních firem byla zapsána pod identifikačním číslem05090521dne17.5.2016.Ztoho lzeusoudit, že se jednáorelativněmladouspo-lečnost, avšak její zakladatel ajeho společníci už předtím působili několik letvdaném oboru, ale pod jinou právní formou podnikání. Výhradním vlastníkemspolečnostijeAdamKysel,jenžspolečnostzaložilsezákladnímkapitálovýmvkla-dem 100000 Kč, aje tedy jediným vlastníkem. Společnost se po celou dobu svéexistencezabývátěmitopředmětyčinností:

• Zprostředkováníobchoduaslužeb• Poskytovánísoftwaruvoblastiinformačníchtechnologií,zpracovánídat,hos-tingovéasouvisejícíčinnostiswebovýmiportály

• Poradenskáakonzultačníčinnost,zpracováníodbornýchstudiíaposudků• Reklamníčinnost,marketing,mediálnízastoupení• Grafickéslužby

V současné době se společnost primárně zabývá tvorbou webových aplikacíainternetových obchodů, zčehožmá firma největší příjem, ale tento fakt by jejířídícípracovnícichtělizměnitamítvíceprostředkůnatvorbumobilníchaplikacíadálevícerozvíjetitutooblastpodnikání.Proukázkutvorbyspolečnostvytvořilaspoustuwebovýchaplikacíspokročilýmifunkcemirezervací,snapojenímnatřetístrany(např.účetnísystémPohoda),různéplatebníbrány(např.GoPay),propoje-nínaMLMsystémD3Soft,propojeníslékařskoukartouaspoustudalšíchsystémů.Momentálněspolečnostvyvíjíispecifickouwebovouaplikacizaměřenounarepor-tyaanalýzydatabázovéhovyužitíklientůprospolečnost,zabývajícíseprávěopti-malizacídatabází.VnejbližšídobězahájíprojektnatvorbuspecifickéhoCRMsys-tém. Jako vedlejší činnosti společnost vyvíjí doplňky pro systém WordPressaaktuálně jsou vČeské republice jediní, kdo vlastní propojeníWordPressWoo-CommerceseslužbouBalíkobot,zekterépramenípasivnípříjemspolečnosti.Jakocíldonásledujícíhoroku2018sizvolilirozšířeníslužbydoblízkéhozahraničí,atozejménadoRakouskaaSlovenska,jelikožmístovykonáníčinnostijemomentálněměstoBřeclav,ježležínahraniciČeskérepublikystěmitozeměmi.

5.1 Neformálníspecifikacepožadavků

Ve2kapitolebylodefinováno, žehlavnímcílem jevytvoření sjednocenéhokom-plexníhořešeníproopakujícísepožadavkyzákazníkůnasprávuwebovéaplikace,vycházejícízdefinovanýchpožadavkůspolečnosti.Taktovytvořenýsystémbymělsloužitjakojižhotovýprodukt,kterýbudezákazníkůnabízen,nebobymělalespoň

Page 28: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

28 SpecifikacepožadavkůspolečnostiIDEATECHs.r.o.

poskytnoudostatečně stabilní základprodetailnější zadání arozšiřování dle po-třebzákazníka.Společnostdisponujevícehotovýmiprojektysloužícímijakorefe-renceprolepšípředstavyzákazníků,přičemžtatořešeníbylavyvíjenapředchozímzákazníkůmpřímonamíru.Velmičastosevšakstává,ženovýzákazníkmástejnépotřeby,aprotobymutatořešenítakévyhovovala.Bylobytedyvhodnétatořeše-nísjednotit,případněnavrhnoutnová,pokudbyjižnevyhovovalanebobylazasta-ralá.Nověposkytnutéřešeníbymělobýtkomplexníaposkytovatširokéspektrummožností. Ztohoto důvodu by semělo knově navrhovanému řešení přistupovatzodpovědnějižodsamotnéhonávrhu,apokusitsesystémsprávněrozdělitdodíl-čích částí, nebolimodulů, kterébyměly jít jednodušeodebratnebonaopak taképřidat.Ztohovyplývá,žetytočástimusíbýtnasoběnezávislé.

JelikožvespolečnostiIDEATECHs.r.o.nejsoujakozaměstnancijenprogramá-toři,kteřídisponujípotřebnýmiznalostmikódu,aleijinízaměstnancispecializujícísenajinéoblasti,bylobyvhodnépronověnavrženýsystémvytvořitpřívětivéuži-vatelské prostředí, skrze které by se dalo se systémem snadno pracovatavpřípadě potřeby vsystému provéstmodifikace bez nutnosti zásahu do kódu.Ztěchto zmíněnýchdůvodů je jednouzhlavníchmyšleneknavrhnoutmechanis-musprourčování aktivníchmodulů, ke kterému budoumít přistup výhradnězaměstnancifirmyabudouschopnizákazníkovinakonfigurovatsystémdlepotřeb.Zákazníknebudemítktétočástisystémupřístup,atudížnebudeschopensisámaktivovatnebodeaktivovatjednotlivéčásti.Pokudbyvyjádřilpotřeburozšířitsys-témojižhotovoukomponentu,mělobystačitjijenzaktivovatvsystému,případněpřizpůsobitfrontendovoučástatímvševyřešit.

Jaknapovídápředchozíodstavec,nevšichnivadministračnímrozhraníbudoumít stejné oprávnění abudou zde moci vykovávat všechny akce. Proto byvsystémumělbýtnavrženstabilnímechanismusprodefinováníuživatelskýchpráv, založený na uživatelských skupinách ajim definovaných přístupů kakcím,kterébudoumocivykonávat.JenzaměstnancispolečnostiIDEATECHbudoumociaktivovatadeaktivovatčástiadministračníhosystémuabudounadnímmítabso-lutníkontrolu.Můžeseale takévyskytnousituace,kdyzákazníkbudevyžadovatvymezenípravomocíprosvézaměstnance.Jednásenapříkladosituaci,kdynebu-dechtít,abyněkteříjehozaměstnanci,kteříbudoumítksystémupřístup,simohlizobrazitinformaceoobjednávkáchneboouživatelskýmúdajích,avšakbudevyža-dovat,abysemustaralinapříkladčistějenopřidávánípříspěvkůnaweb.

Jednouzhlavníchanedílnýchfunkcionalitsystémubymělabýtsprávaobsa-hu webu. Webovou stránku, neboli frontendovou část, budou tvořit jednotlivéstránky,ježbudouzařazenydomenu.Díkyněmuseuživatelbudemocipohybovatnawebu,aprotobyvsystémumělbýtmechanismusprovytváření,potažmocel-kovou správu tohoto menu adefinování, jaké položky vněm budou zařazeny,vjaképozicisebudounacházet–zanořovánípoložekdosebeadefinovánívztahůmezinimi.Dalšífunkcionalitouprosprávuobsahuwebu,kterájevsystémuočeká-vaná,jemožnostpráceseSEOpoložkami,jakýmijsounapříkladtitulkyapopiskystránek či klíčová slova webu, na která se zákazníci velmi často ptají.Kekonkrétnímupřidáváníobsahuwebuvelmičastomajitelépoužívajíblog,nebo

Page 29: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

SpecifikacepožadavkůspolečnostiIDEATECHs.r.o. 29

spíšeaktuality,čímžinformujízákazníkyopřipravovanýchakcíchčizměnáchne-boposkytujíinformativnísdělení.Tatočástsedávesměspojmenovatrůznýminá-zvy,avšakpodstatnéjeto,žesloužíkpřímémuvkládáníinformacídostránky.

Velkáčástzákazníků,kteří společnostosloví, tvoří skupinuvyužívající inter-net jakoprostředekproprodej.Tentoprodejmůžebýtprimární činností, tvořícíjediný zdroj příjmuprostřednictvím takzvanéhoe-shopu, nebo činností podpůr-nou,kdy internetovýprodejpředstavuje jen částhlavníhopříjmuazákazníkdis-ponujenapříkladi„kamennouprodejnou“.Cílemtétopráceneníposkytnoudode-tailupropracovanouplatformuproprodej, ale jaknázevprácenapovídá,bylobyvelmi vhodné zahrnout do nově vytvořeného komplexního řešení ipevný základpropřípadnébudoucíhorozšiřování.Tentozákladbybylomožnévněkterýchpří-padech,kdynejsoukladenyvelmispecificképožadavky,použít,případnětotoře-šenírozšířitprostřednictvímmodulůanovýchfunkcionalit.Problematikainterne-tovéhoprodejejepoměrněkomplikovanouzáležitostíavyvinoutřešeníprovelkéspolečnosti by samo osoběmohlo zabrat jednomu člověku velmi dlouhou dobu,avšak základ bývá de facto stejný. Požadované řešení této části administrace jetedyurčené spíšepromenší společnosti,případněpro společnostinacházející senapomezímalýchastředněvelkýchpodniků.Detailnípožadavkybudourozebrányvnásledujícípodkapitole5.2.2.

Velmidůležitoučástísystému,kterébysemělavěnovatjistápozornost,tvořísprávamedií.Jakjižbylozmíněnovúvodu3.kapitoly,obsahwebovýchstránekjetvořenkromětextutakéimultimediálnímidaty,donichžlzejednoznačnězařaditobrázky,videaazvuk.Tatodatajsoulidmimnohemlépevnímána,jedokázáno,žejim lidé věnují více pozornosti alépe znich získávají informace. Nově navrženýsystém byměl uživateli vyjít co nejvíce vstříc aposkytnout jednoduchou správutěchtodůležitýchdat.Toznamená,žeuživatelbudemítjasnýpřehled,jakádatasenajehowebunacházejí,budeexistovatjednoduchámožnostjepřidávat,odstraňo-vatčieditovat.Ktomutotypudatsevztahujítakéjistéstandardy,podlekterýchjenutné definovat ktomuto typu dat specifické atributy – titulek azástupný text.JednásesoučástSEOoptimalizace,aikdyžsemůžezdát,ženemusímítvelkývliv,přestobybylohodnétytokonvencedodržetaumožnituživatelijednodušepraco-vatstěmitospecifickýmidaty.

Velmiúčinnýmnástrojem,který lzevyužítproprácisnávštěvníkemwebovéstránky, je sběr uživatelských e-mailových adres. Pro jejich získání je nutnýsouhlasuživatele,jenžvšakmůženawebovéstráncesámposkytnoutpřijehovy-plnění.Taktozískanouadresulzepotévyužítmnohazpůsoby, jakonapříkladprozasílání informativníche-mailovýchzpráv,které lzevyužít jakopodporuprodeje,nebo pro možnosti remarketingu, tedy cílení reklamy na zákazníky. Proto byvsystémuměl být zahrnut mechanismus, který by umožňoval sběr e-mailovýchadresoduživatelů,uchovávatjeaumožňovatzákladníoperacejakonapříkladex-portprojinévyužití.

Page 30: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

30 SpecifikacepožadavkůspolečnostiIDEATECHs.r.o.

5.2 Formálníspecifikacepožadavků

Specifickézadáníspolečnostipatříhlavnímapodlepředpokladunejvícepoužíva-ným položkám administrace - správě obsahu ačásti pro internetový prodej.Kostatním věcem jsou poznamenány jen minimalistické požadavky, hlavně naexistenci určité funkcionality, aproto je zde prostor pro návrh vlastního řešení,případněprozlepšení.ProUXnávrhadministračníhorozhraní jekladenpožada-vekna jednoduchostprostředí, sekterýmbyseuživatelům jednodušepracovalo.Velmiběžnětotižvoblastivývojesystémůdocházíksituaci,žesezákazníciobra-cejínaposkytovateleslužeb,protoženevědí, jaksněkterýmičástmisystémupra-covat, některé položky nemohou najít acelkově se jim systém zdá složitý. Protoisebelepší záměr nemusí být vždy správně pochopen anesmí se zapomínat nahlavnímyšlenku,prokohojenavrhovanéřešenívyvíjeno–prozákazníky.AprávěpodledosavadníchzkušenostísevelmiosvědčilotabulkovéUXprostředí,kterémuuživatelédobřerozumí.

Předpokládanáhlavnínabídkamenuadministracevzadáníseodrážíod jed-notlivýchčástíafunkcionalitsystému, jež jsouspecifikoványprávěvzadání.Tatohlavnínabídkajezachycenananásledujícímseznamu:1. Obsahstránek2. Aktuality3. E-shop4. Partnerskélogaasociálnísítě5. Uživateléapráva6. NastaveníaSEO7. Sběruživatelskýche-mailovýchadres8. Videonávodykadministraci

Základ administrace je tedy tvořen správou obsahu webové prezentace. Ta seskládáprimárnězdílčíchstránek,asamotnézařazovánístránekdomenu je tohosoučástí.Jednotlivéstránkymusejíjítjednoduševytvořit,editovatatakéodstranit.U jednotlivých stránek musí existovat funkcionalita pro zařazení stránky, nebonaopakojejívyřazenízmenu,případněmožnoststránkyzařaditdosekundárníhomenu,takzvanéhosubmenu.

5.2.1 Formálníspecifikacesprávyobsahuanastavení

ObsahstránkybymělobsahovatzákladnínastaveníSEOprvků,jakýmijsoutitulekapopisek, ježbymělybýtoptimalizoványprointernetovévyhledávače.Optimali-zace vtomto případě znamená kontrolu, případně omezení počtu znaků. Pokuduživatel hledá specifickou stránku prostřednictvím internetového vyhledavače,zadádovyhledavačeklíčovéslovoatenmuzobrazípoložky,kterésplňujípodmín-kyvyhledávání.Tytopoložkybudouobsahovatprávězmíněnýtitulekakrátkýpo-pisek.Jetedyvhodnézvolitdostatečnoudélku.Tituleksebuďautomatickydoplní

Page 31: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

SpecifikacepožadavkůspolečnostiIDEATECHs.r.o. 31

znázvu položky, nebo se definuje ručně. Kromě zmíněného titulku, popiskuanázvubystránkamělaobsahovat takémožnostnastaveníURLadresy,podkte-roubudedostupná,jejíobrázekaperex(krátký,sekundárnípopisekobsahu).Tex-tovýchpopisůmůžebýtsamozřejměvícenežjenjeden.Stránkabytakémělaob-sahovatmožnostvolbypořadídanéstránkyvmenu, ježsemůženastavitpomocíčísla – čím vyšší číslo, tím bude položka zařazena výš vseznamu. Ke konkrétnístráncemusíjítkroměpopiskůadílčíchnastavenívložittakéobsah.

Pro vkládání konkrétního obsahu do webových stránek se využije některýzjednoduchýcheditorů.TyumožňujívkládatkroměčistéhotextutakéHTMLele-mentyatímformátovattext.Tytoeditoryfungujínaprincipurozšířeníklasickéhotextového prvku HTML formuláře ofunkcionality pro vkládání právě HTML ele-mentů.VýslednýtextsepotéuložídodatabázeajehovýstupsenebudeošetřovatprotivýpisuHTMLelementů.Některéwebovéstránkyjsoupřílišindividuální,jed-notlivépodstránkyobsahujímnohotextovýchblokůaitytoblokymusejí jítněja-kýmzpůsobemeditovatskrzeadministraci,avšakvložitvětšímnožstvítěchtoedi-tovatelnýchblokůdodetailustránkynenísprávnéřešení.Protojepotřebanavrh-noutmechanismuseditovánítextovýchblokůpřímozfrontendovéčástípoprove-deníautentizaceaautorizace.Tosenebudetýkatpevnýchbloků,kterésedajíedi-tovatpřímozadministraceamajíjasněurčenésvémísto–aktualityajinépodobnébloky.

Každástránkamůžeobsahovat svougalerii fotek, ježmůžebýt realizovánaskrzeprezentaci(takzvanýslider),nebomaticově,avšaktotojespíšeotázkanávr-huwebovéprezentace.Nahrávání fotekbymělo jít realizovathromadnýmvýbě-rem abýt omezeno velikostí jednotlivých fotek na 5MB, smožností upozornění,pokud je fotkavětšínež800KB,abyuživatelnahrával fotkyvkvalitěprowebovéstránky.Název fotkyazástupnýpopisekseautomatickypřiřadí,avšakbudeexis-tovat možnost jej vadministraci manuálně změnit. Fotky by mělo jít hromadněnahrát, ale případně také ihromadně odstranit. Každá stránka bude kromě svojígalerie také obsahovat i možnost nahrát obrázek na pozadí, případně jedenzobrázkůnastavitjakohlavní.

Jižzmíněnéaktualitybysemělyskládatznázvu,titulku,URLadresy,kterábysemělaautomatickydoplnitnebojít iručnězadat,obrázku(případněizvíceob-rázků) akonkrétního obsahu. Titulekmůže obsahovat základní HTML elementy,jakými jsou vložení prázdného řádku či tučného textu. Některé aktualitymohoumítvyššíprioritusdělenínežjiné,cožznamená,žebymělybýtvpořadínadostat-ními,abysijichuživatelsnázevšimnul.Protobymělaexistovatmožnostnastavittutoprioritu,ježbudepředchronologickýmřazenímdledatavložení,apokudda-tumvloženínebudeaktuální, nýbrždopředný, aktualitabudenawebové stráncezobrazenaažnastanetotodatum.

Součástí téměř všech webových prezentací bývají například vpatičce, nebokdekoliv jinde na stránce, partnerská loga společnosti zobrazeny formou logakonkrétního partnera, jeho jména aodkazu na jehowebovou stránku. Jednotliváloga by měly jít seřadit například pomocí číselného řazení ataké určit, na jakéstránce se budou zobrazovat. Pro toto určení lze využít mechanismus kategorií,

Page 32: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

32 SpecifikacepožadavkůspolečnostiIDEATECHs.r.o.

přičemžjednotlivékategoriejsouexistujícístránky.Pokudbyprologonebylavy-brána žádná kategorie, logo partnera se zobrazí na všech stránkách.Na stejnémprincipubymělyfungovatidalšíinformace,kteréjsouprowebdůležité.Jednásezejménaonastavení kontaktního telefonu, e-mailových adres, odkazůna sociálnísítě,aletakéiopopisekaklíčováslovaceléwebovéstránky.Internetovévyhledá-vače jemohou ignorovat, ale někteří zákazníci nikoliv, takžeminimálně jen proefektbytutatomožnostmělabýt.Případněponechatvtétočástimožnostproroz-šířeníodalší specifickéúdajepodlebudoucíchpotřeb, ježbybylopotřebanasta-vovatzadministrace.

Propřípad,žeadministračníprostředíbudemocivyužívatvíceuživatelskýchskupin,mělbybýtnavrženmechanismusprodefinováníoprávněníkonkrétnímskupinám uživatelů, čímž se získá alespoň částečná kontrola nad uživatelskýmchováním.Otétomožnostibylopojednávánoužvpředchozíkapitoleoneformálníspecifikacipožadavků,avšakzdebudourozebíránykonkrétníspecifikaspolečnos-ti.Samotnásekceprodefinováníuživatelskýchprávbymělabýtpřístupnájenpo-věřeným uživatelům, apokud by byl udělen přístup izákazníkovi knastavováníoprávnění,musí být vyřešena otázka, jak zamezit přidělení přístupu kinternímunastaveníadministrace.Samotnýmechanismusbymělbýtconejvícejednoduchý-uživatelé se budoumoci shlukovat do skupin, přičemž těmto skupinám se budemocipovolovatpřístupdodílčíchčástísystému.Pokuduživatelbudemítpřístupdospecifickéčásti,nebudetoautomatickyznamenat,ževtétosekcimůževykoná-vatjednotlivéakceproeditaci,vytvářeníamazánípoložek.Budeplatit,žecokolivnenípovoleno,automatickyseberejakozakázané.Vpřípaděpotřebysebudemocijakémukolivuživateli vygenerovatnovéheslo, ježbudenáhodnéabudemuode-slánona email, skrze který se budedo systémupřihlašovat. Pro ještě detailnějšípřehlednadvyužívánímsystémubybylovhodnézaznamenávatvšechnyuživa-telskéakceamítpřehlednadtím,kdyakýmbylyprovedeny.Protentopožadavekbymělabýtzavedenadílčísekce,kdebudevýpistěchtojižprovedenýchakcí.Díkytomubudevelmisnadnévpřípaděpotřebyjednoznačněurčit,kdojezaakcizod-povědnýazjistit,pročsetakstalo.

Propokusovyhnutísečastoopakujícímdotazůmbyvadministracimělaexis-tovatmalásekce,kterábyobsahovalapřipravenévideonávody,jaksadministracípracovat aupozorňovat na její klíčové informace. Je samozřejmostí, že novémuklientovibudevševysvětleno,alepropřípad,žebyněcozapomnělnebobychtělpráci delegovat na více lidí, budou zde zmíněné návody připravené zaměstnancispolečnosti. Skrze návody se společnost pokusí odpovědět na všechny klientovipřípadnéotázky.Tatočástbynemělabýtsoučástíhlavníhomenu,aleodkaznanibymělbýtumístěnnaméněnápadnémístovpatičce,nebohlavičcesystému.

5.2.2 Formálníspecifikacemoduluprointernetovýprodej

Jednoduchýzákladplatformyurčenéprointernetovýprodejmusíobsahovatsprá-vuproduktů,přičemžtytoproduktymohoubýt jednoduché,nebonaopakvaria-bilní. Jinýmislovy,kproduktuexistujemožnostdefinovat libovolnéatributy.Pro-duktzůstávávždystejný,alemůžesevyskytovatvrůznýchprovedeních jakona-

Page 33: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

SpecifikacepožadavkůspolečnostiIDEATECHs.r.o. 33

příklad velikosti oblečení. Další parametry produktu jsou název, cena, nastaveníURL adresy pro zobrazení detailu produktu ve webové stránce, nastavení slevyaakčnícenyneboto,zdaproduktlzevůbecobjednat,případněstatus(publikova-ný,skrytýatd.).Dálekaždýproduktmůžemítsvougaleriiazařazenídokategorií,podlekterýchseproduktybudoumocinawebovéstráncefiltrovat.Tytokategoriese budou moct snadno vytvářet aeditovat ana webu pro ně bude připravenéstromové menu. Produkty se budou moci přidat do košíku anásledně znějiodebrat.Nákupníkošíkbudepropojensuživatelemavpřípaděnedokončeníná-kupukošíknezaniká,nýbržzůstávástálenaplněnproduktykonkrétníhouživatele.Prodokončenínákupubudenutnépostupněvdílčíchkrocíchvyplnituživatelskéúdaje, zvolit metody dopravy aplatby, které budou editovatelné zadministraceapotvrditsouhrnobjednávky.Kobjednávcesebudemocipřipojituživatelskýsle-vovýkupón,jenžbudetakéeditovatelnýzadministrace.Poslednímkrokemobjed-návkybudeděkovnástránka,nakterousebudemociuživateldostatpouzepodo-končeníobjednávky.Tatoděkovnástránkabudeobsahovatpřípadnéskriptyproměřeníkonverze.

Všechnydokončenéobjednávkybudoukzobrazenívadministraci,kdebudemožnostnastavovatjimdílčístavpodletoho,jestliseobjednávkazpracovává,pří-padnějenacestě,neboužvyřízená.Objednávkabudetakéeditovatelná–uživatelési budoumoci změnit jejich zadané údaje, doplnit další produkt kobjednávce čiručněnastavitdobusplatnostifaktury,nebojejídatumvystavení.Fakturasebudegenerovatautomatickyapříchozíplatbypřesinternetsespárujíručněskonkrétníobjednávkouskrzevariabilnísymbol.Tenseautomatickyvygenerujepřidokonče-ní objednávky. Při dokončení objednávky, nebo při jakékoliv změně stavu se zá-kazníkoviautomatickyodesíláinformačníe-mailnajímzadanouadresu,případněpřivznikuobjednávkydojdekinformováníidotyčnéosoby,kterájezaobjednávkyzodpovědná.Zákazníkovinavíc se-mailempřichází ifakturave forměPDFdoku-mentu. Jako seuchovávají všechny e-mailové adresyuživatelů, získané zwebovéstránky, tak by takéměl existovat ipřehled všech zákazníků – registrovanýchineregistrovaných–ajejichseznamsevšemijejichinformacemiapřehledyjejichobjednávek.

Kromějižzmíněnékupónovéslevy,limitovanédatemplatnostiapočtempou-žití,budouexistovatislevyuživatelské.Tytoslevypředpokládajíregistracizákaz-níka do systému abudou vycházet zcelkové utracené částky. Vadministraci senastaví zlomové částky, při jejichž překročení dochází kpřepočtu cen na webupodleprocentuálníslevy,ježsepromítnejakdocenproduktu,takidocelkovéce-nyobjednávky.Tyto slevy sevšakneprojevído cenzapoštovnéaplatbu.Kromětěchto slev se musí počítat ismnožstevními slevami, které budou vycházetznakoupenéhomnožství.Navícsenesmízapomenoutnamožnostnastavenívíceměn.Tatočástnemusíbýtvždyvyužita,alevpřípaděpotřebybymělaexistovatmožnostnadefinovatzadministraceměny,vekterýchsebudeobchodovat.Správ-cesystémubudemocivytvořitměnu,nastaví jízkratkuaurčit jejíkurz.Zákazníknawebové části jednoduše přepneměnu, ceny se přepočítají podle nastaveného

Page 34: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

34 SpecifikacepožadavkůspolečnostiIDEATECHs.r.o.

kurzuatotouživatelovonastavení seprojeví ivadministraciae-mailovýchzprá-vách.Objednávkatedybudeivadministracizobrazenavdanéměně.

Ztěchtopožadavků jepatrné,žeprotutočástsystémujsouvyžádánaspeci-fickánastavení,kterásetýkajíkromějižzmíněnýchpoložektakéhlavněúčetníhonastavení, tedy zdaprovozovatel bude, či nebudeplátceDPH.Vpřípadě, žeplát-cembude,mělbyzdenastavitivýšidaněatatohodnotasedáleprojevíidovýpo-čtucenproduktů.Totonastavenísemůžepourčitédobězměnit,aprotojevhodnévždynastavitplatnost.Ikdyžpřizaloženíinternetovéhoobchodunemusíbýtpro-vozovatelplátceDPH,pouplynutínějakédobymůžezjistit,žepřekročilpovolenouvýšiobratuaautomatickyseplátcemDPHstává,tudížmusítytozměnyzahrnoutido budoucího účetnictví. Kvůli vystavování faktur bude potřeba nastavit idalšíúdaje, jakými jsou sídlo společnosti, kontaktní údaje včetně identifikačního číslaadaňovéhoidentifikačníhočíslaspolečnosti,čísloúčtuakódbanky,případněspi-sovouznačku.

Page 35: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Analýzapožadavků 35

6 AnalýzapožadavkůPoprostudování výše zmíněnýchpožadavků společnosti jepotřebaupozornitnajistévlastnípoznatky,případněnaspecifickénedostatky ještěpředzačátkemná-vrhu systému, které mohou pramenit zpřehnané snahy ojednoduchost ajiž naprvní pohled působí poměrně zastarale, proto je potřeba do pozdějšího návrhuzavéstjistoumíruinovace.Některéztěchtoprvkůbysemohlyprojevitjižvranýchfázíchnávrhu,avšak jsoupatrné jižvtutochvíli.Napříkladpředpokládanérozvr-ženísystému,kteréseodrážídovzhledumenujižnaprvnípohlednemůžebýtta-kové, jaké bylo zamýšleno vzadání, ale bude více sjednocené. Je to důsledkemhlavněpožadavkunajednoduchostsystémuapřímovpůvodnímzadáníjezmíně-no,žečímvícemožnostímáuživatelnavýběr,tímvíce jejtomůžezmást,cožbymohlonastathnedpřiprvnímpohledunasložítezákladnímenu.Dalšímdůvodemjeplánované rozvržení systémůdo samostatnýchmodulů, tímpádemseněkterézamyšlenépoložkysjednotídojednénadřazenépoložky.

Prácesjednotlivýmiúdaji, jakozmíněnéřazenípoložek, jevdnešnídoběne-zbytnýstandart.Zmíněnoumetoduřazenípomocíčíselnéhodnotylzenaopakpo-važovat za již zastaralou, protože spříchodem nových technologií (viz. HTML 5atd.)seprácesdatystalavíceintuitivnízáležitostí.Tytonovétechnologieposkytu-jířadunovýchfunkcionalit,ježpřidůmyslnémvyužitíposkytnouvbudoucnuuži-vateli jistý komfort. Například při využití technikyDrag andDrop uživateli stačípoložkypomocímyšiposkládattak,jakuznázavhodné,přičemžvpozadíseuklá-dajíjižzmíněnéčíselnéhodnotyprourčenípořadí.Vzadáníbylyopomenutyijinéužitečnéfunkceproprácisdaty,kterébynemělychybět.Vpřípaděmnohavypsa-nýchpoložekbypřiklasickémtabulkovémzobrazenímohlodocházetkproblémupřivyhledávání,ztohotodůvodubyprotomělyexistovatkroměmetodyjednodu-chéhořazeníjednotlivýchpoložekidalšíoperaceproprácisdaty,jakojsounapří-kladfiltrování,vyhledávánínebomožnostzmíněnéhromadnéoperacemazání.

Nejvícedůležitýpoznatek,kterýbymělbýtbrándoúvahyještěpředsamot-ným začátkem navrhování systému, se týká návrhumodulu pro internetový ob-chod.Podokončeníobjednávkymásystémgenerovatfakturyaposkytovatpřehledjednotlivýchobjednávek, které zajisté budouobsahovat informace ozákazníkovi,provozovateličioproduktechvobjednávce,alehlavněoceně.Cosealestane,po-kudseněkterýzezmíněnýchúdajůvadministracizmění?Tytozměnysevžádnémpřípaděnesmíprojevitdojižexistujícíchobjednávekafaktur,protožebyzpůsobilynaprostýzmatekacelýmodulbysestalnepoužitelným.Zezmíněnéhodůvodute-dy vyplývá, že při jednotlivých změnách vproduktech, údajích provozovatele,vúčetnictví,neboúdajíchzákazníkanesmídojítktomu,abysetytozměnyprojevi-ly do historie. Vpřípadě nutnosti smazání některých dat je potřeba tato datavadministraciuchovatzdůvoduarchivaceanapojenínajinépoložky,jakomohoubýtzmíněnéobjednávky.Ztohotodůvodusenamístoúplnéhosmazánípoložkyjenskryjí,vpřípadeeditacebysesystémmělpokusitstaroupoložkuodstranit,pokudby byla napojenana jiné údaje, tak je potřeba ji vsystémuuchovat atudíž ji jenskrýtanazároveňvytvořitnovoupoložkuspožadovanýmizměnami.Závěrjetedy

Page 36: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

36 Analýzapožadavků

takový,žejepotřebakvalitníhonávrhudatabázeapotésamotnéfunkcionality,ježvyužije právěnávrhdatabáze akontroly referencí jednotlivých odkazů ztabulek.Tytokontrolyreferencívdatabázibudoumítnastarostvýjimkyvkódu.

6.1 Volbatechnologie

Zespecifikacepožadavkůspolečnostijepatrné,žejepotřebanavrhnoutkomplexnířešení, přičemžhlavní zamýšlená výhoda taktonavrženého systému je jeho zno-vupoužitelnostarozšiřitelnost.Zpředchozípodkapitoly3.2oframeworcích jasněvyplývají výhodyvyužití různých typů frameworkůanavíc jejichvyužitípřispějepropožadovanouznuvupoužitelnostneborozšiřitelnostacelkověisprávnýzákladaplikace. Zmíněné závěry vycházejí hlavně ze skutečnosti, že tyto softwarovéstruktury jsounavrženy tak,abydokázalyoddělitprezentaci informacíod logikyaplikace,kódsestávádobřestrukturovanýaznovupoužitelnýatudížseilépeudr-žuje,což jepřesněto,cospolečnostIDEATECHpožaduje.Dalšívýhody,kteréfra-meworkydoprojektupřinášejí, jsouvyužití jejichdoplňkůabezpečnostníchme-chanismů, pro které stačí dodržení doporučených postupů. Navíc sohledem navelikost společnosti je itéměř nevyhnutelné využít některý zjiž existujících fra-meworků,tudížbysepřípadnénevyužitímohlopovažovatizachybu.

Otázka výběrubývá velmi často ryze subjektivní, jelikož každý zexistujícíchframeworků poskytuje své specifické metodologie asvé výhody. Ze zmíněnýchexistujícíchframeworkůvšakbudeprotentoprojektzvolenčeskýNETTEframe-work,cožjedánohlavnětím,žetentoframeworkjemezivývojářivČeskérepubli-cenejvíce rozšířen, tudíž bynemělnastat problémvpřípadě zaměstnánínovýchvývojářů do společnosti. Přejít zjednoho frameworku na druhý by se totižmohlproprogramátoryjevitjakoproblém,jelikožjetootázkaprogramátorskýchnávy-ků akonvencí, ve kterých by společnost chtěla novým istávajícím členům vyjítvstříc.Využitý frameworknavícsvoustrukturoua rozhranímdefinujedoznačnémíryikódaplikace.

Mimo jiné budou do projektu zapojeny izbylé popisované technologie, bezkterých by se podobný projekt zajisté neobešel. Jedná se ojazyk JavaScriptsknihovnou jQueryafrontendovýframeworkBootstrap.Protvorbuklientskýchwebových prezentací, nad kterými bude systémpracovat, se využije šablonovacísystémJadestechnologiíSASS.Provýslednézpracovánísouborůaspojenívšechdílčích prvkůdohromady se postará nástrojGulp. Pro přidávání potřebnýchdíl-číchprvkůbudevyužitnástrojBoweraprosprávuzávislostívNETTEframewor-ku apřidávání potřebných knihovendoprojektubude využit nástrojComposer.Přivolbědatovézákladnyprojektuseopětvycházízpotřebspolečnosti,prokte-rou je systémvyvíjen.Budousevyužívat firemní servery,kterévyužívajíMySQLdatabáze.Proúčelyzamýšlenéhotypuprojektujetovhodnýtypdatabáze,jelikožsenepředpokládajíspecificképožadavkynadata.

Page 37: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Analýzapožadavků 37

6.2 Funkčníanefunkčnípožadavky

Jedná se převážně onový projekt, který neobsahuje žádné hotové části převzatézjinýchfiremníchřešení,jelikožpoprovedenírychléhoprůzkumubylozjištěno,žebysedoprojektunemohly jednodušezakomponovat.Společnostdisponujehoto-vými řešeními na různých komerčních platformách, případně se řešení vyvíjelozcelanamíruklientovi,anepočítalosesobecností,tudížsetatořešenínedajíjed-nodušezahrnoutdonověnavrhovanéhosystému,avšakvněkterýchpřípadechlzevyužítalespoňmyšlenkyaalgoritmy.Jednáseozákladprosprávuwebovýchstrá-nek, pro kterou byl již vminulosti navržen jednoduchý mechanismus, případněinspirace ohledně funkcionality internetového obchodu, ale žádné hotové částiřešenídoprojektunebudoupoužity.

JinéprojektyspolečnostivyužívajísystémnaprogramovanývjazycePHP,kte-rýnevyžívážádnýframework,aikdyžsejednáoúčinnýzáklad,kterýsedárychlevyužítsohledemnabudoucívývojčispoluprácivývojářůvtýmu,jezcelanepouži-telnýazastaralý.Proto jepotřebavšenavrhnout zcelaodzákladu.Vpřípaděpo-třebyby se vbudoucnumohlouvažovat vrámci rozšíření onaprogramování ko-munikačníchrozhraní,čímžbysedoprojektudalazahrnout jinářešení,kterábyspolečnostchtělavbudoucnunabízet,nebojejižnabízí.

Využitím frameworku lze získat výhodu možnosti zahrnutí již hotovýchaveřejněposkytovanýchknihovenprozvolenýframework,cožvšaknebývápod-mínkou,protožeexistujíijiné,obecnéknihovny,kterésedajívyužítnapříčvšemirůznýmiprojekty.Navícvevětšiněpřípadůjsoutytoknihovnylepšímřešením,nežkterébyprogramátorsámvytvořil.Ztěchtodůvodůbudoudoprojektuzahrnutytytoknihovny:

• Mpdf:rozšířenáknihovnaprogenerováníPDFsouborůnejenvNette frame-worku

• Upload-manager:knihovnaproprácisesouboryajejichnahrávánímnaser-ver

• Ublaboodatagrid:knihovnaprosnadnějšímanipulacisdaty,kteráobstarávápráci sjednotlivými položkami jako například filtrování, řazení, selektování,vkládáníaeditacipoložek.

• Nellaforms-datetime:knihovnazprojektuNellaproprácisdatemveformu-lářích.

• Mobiledetect:vpřípaděpotřebydetekcemobilníchzařízení• KdybyTranslation:knihovnaprolokalizacitextů.Vpřípaděpotřebypřekla-dů,nacházejícíchsenawebovéstránce,bymělbýtnavrženvlastnímechanis-mus,aleprotvorbupřekladůležícíchvadministraci,jetatoknihovnadostaču-jící.Nenípotřeba,abyměluživatelmožnostpřekládattextyiproadministrač-níčást,alelzejenadefinovatskrzestatickésoubory.

• Kdyby Facebook:knihovna sloužící pro uživatelské přihlášení prostřednic-tvímúdajůzesociálnísítěFacebook

Page 38: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

38 Analýzapožadavků

• Carrooinettemenu:komponentaprotvorbumenuvadministrativníčásti• TinyMCE:WYSIWYGeditorpropřidáváníHTMLelementůpřivkládáníobsa-hudowebovéprezentace.

• Nette AJAX aNette Forms: rozšiřující knihovny pro zpracování ajaxovýchpožadavkůaprácisformuláři

• Chartist.js:JavaScriptováknihovnaprovykreslovánígrafůvsystému

6.3 Analýzarizik

I když jdeoprojekt jednotlivce, jepotřeba identifikovatmožná rizika,pokusit sejimpředejít,neboonichalespoňpředemvědět.Prodanouanalýzusevyužijeme-todaRIPRAN,vekterébudestanoveníhodnotypravděpodobnosti,žerizikooprav-du nastane, odhadnuto na základě zkušeností zpředchozích firemních projektů,protoženěkterézuvedenýchrizikneníanijinakmožnépřesněkvantifikovat.

MetodaRIPRAN(RIskPRojectANalysis)jeurčenazejménaproanalýzuprojek-tovýchrizikajejímautoremjeB.Lacko.MetodapůvodněvzniklaproanalýzurizikautomatizačníchprojektůvrámcivýzkumnéhozáměrunaVUTvBrně.Praxeuká-zala,žepourčitýchúpraváchjemetodumožnoaplikovatproanalýzurizikširoké-hospektrarůznýchprojektůavurčitýchpřípadechiproanalýzujinýchdruhůri-zik,nežjakýmijsouprojektovárizika.RIPRAN™jeochrannáznámka,registrovanáautorem vÚřadu průmyslového vlastnictví Praha pod reg. 283536 (RIPRAN,2016).

Průběhmetodysedělído4postupnýchkroků,kteréjsou(RIPRAN,2016):1. Určenínebezpečíazpracováníscénáře–identifikacerizika2. Kvantifikacerizika–výšeškodyapravděpodobnostsjakoukeškodědojde3. Reakcenarizikaprojektu4. Celkovéposouzenírizikaprojektu

Pro kvantifikaci rizika se využívají stanovené údaje, podle kterých lze verbálněohodnotitnepříznivédopadynaprojekt(RIPRAN,2016):

• Velkýnepříznivýdopadnaprojekt–VDo Ohroženícíleprojektuajehocelkovéhodokončenío Škodavícejak20%hodnotyprojektu

• Střednínepříznivýdopadnaprojekt–SDo Škoda0,5%-19,5%hodnotyprojektuo Ohroženítermínů,zásahydoplánů

• Malýnepříznivýdopadnaprojekt–MDo Škodydo0,5%hodnotyprojektu,malézásahydoplánu

Page 39: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Analýzapožadavků 39

Verbálníkvantifikacehodnocenírizikseskládázetříčásti:Vysokápravděpodob-nostVP,kamrizikospadá,pokudjejehopravděpodobnostvýskytunad66%.DálejetostřednípravděpodobnostSPsrozmezím33–66%aNízkápravděpodobnostNP,kamrizikospadá,pokudjejehopravděpodobnostpod33%.Podletěchtoúda-jůsestavípřevodní tabulka,zekterésezískáposledníhodnotadruhéhokroku–hodnotarizika.

Tab.1 MetodaRIPRAN-převodnítabulkaprohodnotyrizika

VD SD MD

VP VysokáhodnotarizikaVHR

VysokáhodnotarizikaVHR

StředníhodnotarizikaSHR

SP VysokáhodnotarizikaVHR

StředníhodnotarizikaSHR

NízkáhodnotarizikaNHR

NP StředníhodnotarizikaSHR

NízkáhodnotarizikaNHR

NízkáhodnotarizikaNHR

Zdroj:RIPRAN,2016.

Z těchto hodnot byly sestavy následující klíčové hrozby, scénář, který nastanevpřípadě jejich výskytu, pravděpodobnost toho výskytu, ohodnocení dopadu naprojektacelkovéhodnotarizika.Jelikožsejednáoprojektjednohočlověkavrámcidiplomovépráce, bylydonásledujícíchhrozeb zahrnuty jenopodstatněné rizika.Následujícítabulkač.2tedyodpovídávýsledkudruhéhokrokumetodyRIPRAN.

Tab.2 MetodaRIPRAN-určeníhrozebakvantifikacerizikprojektu

ID Hrozba Scénář Pravděpod. Dopad Riziko

1. Chybnýnávrh,nepochopenízadání

Zpožděnítermínů,chybnáimplementace

0,30 VD SHR

2. Zahrnutíkódutřetíchstran

Omezenípřiimplementaci 0,25 MD NHR

3.Zastavenívývojezvolenýchframeworků

Nemožnostbudoucíhorozvoje

0,35 VD VHR

4.Nenávratnostimplementovanéhořešení

Ztrátyspolečnostizprodeje

0,35 VD VHR

5. Chybnězvolenétechnologie

Nedokončeníprojektu 0,15 SD NHR

6. ProjektjednotlivceŠpatnézabezpečení,chybyvprojektu

0,20 VD SHR

Page 40: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

40 Analýzapožadavků

Třetí krok spočívá vsestavení konkrétníchopatření, díkykterýmhodnoty rizika,získanévedruhémkroku,klesnounanižšíúroveň,ježjelépeakceptovatelná.Dálese také stanoví předpokládané náklady, termíny realizace opatření aodpovědnáosoba.Donověsestavované tabulkynemusejíbýtzahrnutyhrozby,kterýmvyšlavýslednáhodnotarizikaNHR, tedynízkáhodnota.Tyto typyhrozebseakceptují,jelikožhodnotujižvícesnížitnelze.NaopakjepotřebaklástdůraznahodnotytypuSHRahlavněVHR,protožemajívysokýcelkovýdopadnaprojektajejichpravdě-podobnostjetakévysoká.

Tab.3 MetodaRIPRAN–návrhynaopatření

Č.Rizika Návrhnaopatření

Náklady,termín,

odpovědnost

Nováhodnotarizika

1.NeustálakonzultacesezadavatelemIterativnívývojsystémuvkombinacisjinýmiosvědčenýmipřístupy

Beznákladů31.10.2016JanVodák

NHR

3.NalezeníinformacíohledněbudoucnostivývojeVolbakvalitnítechnologieseširokoukomunitouuživatelů

Beznákladů31.10.2016JanVodák

SHR

4.PředimplementačnípřípravaVolbakvalitníhoobchodníhozástupceAnalýzapožadavkůzákazníků

Beznákladů31.3.2017JanVodák

SHR

6.SebevzděláváníNavázáníspoluprácesodborníkyzpraxePrůběžnákontrolavýsledkůpráce

Beznákladů30.4.2017JanVodák

NHR

Již bylo zmíněno, že se akceptují jediněhodnoty snízkouhodnotou rizika. Podlevýsledků lze soudit, že se podařilo téměř u všech hrozeb snížit tuto hodnotu napožadovanouúroveň,avšakspřihlédnutímnamíruabstrakcepřiodhadusejednápouzeoilustračníhodnoty.Jedinýmihrozbami,kterézůstalypořádrelativněvyso-ké, jsou nenávratnost navrženého řešení aohrožení plynoucí zvolby technolo-gie(frameworku).Tytomožnostianinelzenapožadovanouúroveňoptimalizovat,protožebudouexistovatvždy.Nikdynenígarantováno,ževývojzvolenétechnolo-giesejednohodnenezastaví,alespřihlédnutímnaživotnostinternetovýchaplika-cí,vývojářskoukomunituamnožstvíprojektůvČeskérepublice,využívajícízvole-ný framework, je tato hrozba pro společnost přijatelná. Návratnost jakéhokolivprojektunenítakénikdygarantována,avšakzkušenostiodpovědnýchlidíspoleč-nosti ukazují, že je tatohrozba taképřijatelná, což je podpořeno také faktem, žeprojektjevyvíjenvrámciakademickýchúčelů.

Page 41: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Návrhsystému 41

7 NávrhsystémuProzákladnínávrhsystémujepotřebapřevéstslovníanalýzusystémudostandar-dizovanépodoby,kterávyužívápřiobjektověorientovanéanalýzeanávrhumode-lovací techniky založené na jazyku UML –Unified Modeling Language. UML bylvytvořenvpolovině90. let avsoučasnosti je vtétooblasti standardem. Jehovel-kouvýhodoujenezávislostnaprocesuvývoje,protoženenísvázánsžádnoukon-krétnímetodikou.UMLjevpodstatějedinoupoužívanouobjektovounotací,kterájepodporovánanaprostouvětšinouCASEnástrojůanaUMLjepostavenavětšinaobjektověorientovanýchmetodik.Tentojazykumožňujeprostřednictvímrůznýchtypů diagramu zachytit systém zrůzných pohledů ana různé úrovni abstrakce(Bruckner,2012).

Propopsáníchovánísystémuzhlediskauživatelelzevyužítdiagrampřípadůužití,neboliUseCaseDiagram.Vtomtotypudiagramulzezachytit,jakétypyuži-vatelůpoužívajísystémajakéčinnostivykonávají.Prvkydiagramujsouaktér(Ac-tor),případužití (Usecase)avztah(Relation).Aktérpředstavujeprvekokolísys-tému,kterýkomunikujesesystémemanemusísenutnějednatjenoživéosoby,aletaké oexterní systém, se kterým modelovaný systém komunikuje. Aktér hlavněvymezujezákladníroli,kterouhraječlověk,hardwarovézařízeníneboexternísys-témvevztahukmodelovanémusystému(Bruckner,2012).

Zpředchozích kapitol ospecifikaci požadavků na systém anásledné vlastníanalýzybylsestavennásledujícíUseCaseDiagram, jenžzachycujezákladnípoža-davkynafunkcionalituzpohleduuživatele.Dílčípřípadyužití,zachycenénanásle-dujícímobrázku,představujízákladníuživatelskéoperace,kterémůžoudefinovaníuživatelésesystémemvykonat.Jednotlivépřípadyužitívyjadřujízákladníúroveň,přičemž další vnořené interakce se dají zobrazit při dílčím rozkladu činnosti donižších vrstev. Jednotlivými aktéry jsou Administrátor, tedy uživatel snejvyššímoprávněním,aProstýuživatel.RoleAdministrátor jevevztahu typugeneralizacekProstémuuživateli,cožznamená,žepřebírávšechnypřípadyužitíodtohototypurole.Samozřejměvsystémumůžebýtnadefinovánovícetypůrolí,kterébudoumítoprávnění pouze pro specifické případy užití, avšak pro počáteční návrh je pod-statné rozlišit alespoň tyto dvě role, kde Administrátor byměl být typ role protvůrcesystémuaUživatelzákazník,prokteréhojesystémpřizpůsoben.Ztohovy-plývá, žeNastavenímodulů,Správauživatelského oprávněníaZobrazení záznamůouživatelskýchakcíchbudoupřístupnéjenprotvůrcesystému,nikolivprozákaz-níky. Vyplývá to zpředpokladu, že zákazník nemůžemít oprávnění pro aktivacinezaplacených modulů, kontrola uživatelských akcí může sloužit jako takzvaná„zadnívrátka“,kteránapříkladvpřípaděstížnostiklientanachybějícídatamohoudokázat,žepřípadnésmazáníprovedlkonkrétníuživatel.Avšakvpřípaděpotřebysedátatosekcezpřístupnitizákazníkovi.

Page 42: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

42 Návrhsystému

Obr.3 ZákladníUseCaseDiagramsystému

Další ze zástupců zřady technikpromodelování jeprocesnímodelování, kterévyužívámnoho různýchnotací, obvykle závislýchna konvenci vdanémbyznysu,nakonvencidodavatelesoftwaruanapoužitémmodelovacímnástroji.Standardi-zaceproprocesnímodelovánínenítaksilnájakovpřípaděUML,zejménaprotožese jedná omodelování mnohem měkčího systému než programového. Striktníkonvencemodelu vtakovémpřípadě často velmi svazuje, což vedektomu, že serůznédůležiténuancevbyznysuzachycujínestandardizovaně.Nadruhoustranuje striktní konvence nutná, aby byl zachován jednotný smysl procesníhomodeluajehopoužitelnost(Bruckner,2012).

ZezástupcůprocesníhomodelováníbylazvolenaEriksson-Penkerovanota-ce, která slouží jako rozšíření UML apokouší se vyřešit nevhodnost standarduUMLproprocesnímodelování.NěkterézUMLdiagramů,napříkladdiagramakti-vit,sehodípromodelováníněkterýchaspektůprocesu,jakojemodelovánínávaz-nostičinností,avšakneumožňujevhodněmodelovatněkterébyznysaspektypro-cesů(napříkladkvantitativnícíleprocesu).ErikssonaPenkernavrhujímodelovatprocesjakocelekasledovatunějvstupníavýstupníobjekty,kontrolníapodpůrnézdrojeahlavněcílprocesu.Tentopřístuppaklzekombinovatsestandardnímdia-gramem aktivit UML pro zobrazení toku činností vrámci procesu, případně propředáváníudálostímeziprocesy(Bruckner,2012).

Diagram základních procesů první vrstvy navrhovaného systému je znázor-něny na následujícím obrázku. Mezi základní procesy patří Internetový prodej,Správaobsahuwebu aGlobální správaCMS.Tytoprocesyopětobsahují řadudal-ších,menších procesů, takže se opět dají rozložit na nižší úrovně. Opět jsou zdezachycenyzákladnírole,kterétytoprocesybudouvsystémuvykonávatprostřed-

Page 43: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Návrhsystému 43

nictvímudálostí.Projednotlivéprocesyjsoupoužityzdroje,informaceanavíctytoprocesymajísvůjvýstup,nebopravidlo.

Obr.4 Eriksson-Penkerůvdiagramzákladníchprocesůsystému

Výstupemprocesuprosprávuproduktůjesamotnýprodukt,správyinternetovéhoprodejejeúčetnínastaveníavýstupemsprávyobjednávekjefaktura.Zdrojemto-hoto procesu jsou údaje ozákaznících aobjednávky apodmínkou je dokončeníobjednávkyzfrontendovéčástizákazníkem.

Page 44: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

44 Návrhsystému

7.1 Rozvrženídomodulů

Systémbude rozdělenna veřejně přístupnou část (frontendmodul), který je pří-stupný všem uživatelským rolím, počínaje základnírolí typu guest (prostý ná-vštěvníkwebu)aprivátníčást(backend),dokterébudoumítnaopakpřístuppou-ze uživatelé svybranými rolemi. Privátní část se dále rozdělí do dílčíchmodulů,kterévyplývajízezákladníhonávrhusystému,znázorněnémprostřednictvímUseCasediagramunaObr.3.Tytomodulyjsou:

• Blogmodul• CMSmodul• Coremodul• Emailmodul• Eshopmodul• Mediamodul

Blogmodulbudesloužitprovkládánípříspěvkůdoklientskéčástísystémuajednásevlastněomodulprovkládáníaktualit.TentomodulbymohlbýtklidněsoučástíCMSmodulu,avšakbudelepšíjejosamostatnit,cožusnadníbudoucímožnostde-aktivacevpřípadě jehonevyužití,avšaknávrh tohotomodulubudesoučástíCMSmodulu.Mediamodulsloužíprosprávuvšechnahranýchobrázkůnaserver,emailmodulnaopakobstaráprácisesesbíranýmiemailovýmiadresamizákazníků.Složi-tosttěchtomodulůjepoměrnějednoducháajejichvelikostnenípřílišvelká,cožjedánotím,žeplníúzkýokruhčinností.VícesložitějšíjsoumodulyCMS,Eshop,FrontaCore,protožejejichokruhčinnostíjemnohemvícerozsáhlejší.

Označitmediamodul za jednoduchý semůže jevit poněkud sporně, protožejeho složitost může být naopak velmi komplikovaná, avšak vzákladním návrhubude vykonávat pouze jednoduchou správu médií o které bylo pojednávánovpodkapitolách5.1–správamédiía5.2–nahrávánífotekproprodukty,stránkyaaktualitypřípadněpronahráníobrázkujakopozadístránky.Základnísprávabudetedyobsahovatpřehlednahranýchsouborů(obrázků),editaciSEOelementůjakojepopisekazástupnýtextobrázku,nastavováníhlavníhoobrázkuzjižnahranýchobrázků,případěsebudekontrolovatvelikostnahrávanýchsouborůpřijejichna-hrávání.Kromězmíněnéhovýčtuprvků,kterébudouobsahovatsvéobrázky,mo-houbýtvrámcirozšiřovánísystémuvytvořenýnovéprvky,kterébudoumíttakésvévlastníobrázky.Ztohotodůvodumusíbýtpozdější implementacedostatečněobecnáapočítatstímtofaktorem.

7.1.1 Coremodul

Tentomodulbudesloužit,jaknázevnapovídá,jakojádro-budesepřesnějpřistu-povat do privátní části systému, anavíc bude obsahovat základní funkcionalitu,kterámusíbýtobsaženavjakémkolivprojektu,kterýbudenatomtosystémupo-staven.PřípadyužitítohotomodulujsouNastavitaktivnímoduly,Spravovatuživa-

Page 45: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Návrhsystému 45

telskéoprávněníaZobrazitzáznamyprovedenýchakcívsystému,kteréjsouzobra-zenynaObr.3.Tytopřípadyužití byly tedy sjednocenydo tohotomoduly adálebudouobohacenyodalšífunkcionalitusystému.

Zpředpokládaného rozdělení systémuna veřejněpřístupnou aprivátní část,nebodáletakénasekce,kterébudoupřístupnéjenvybranýmuživatelskýmrolím,vyplývá,žebudepotřebakontrolovat,zdauživateljepřihlášený,apokudbudepři-hlášen, jestlimápotřebnéoprávněníprovstupazobrazenípožadovanéčástisys-tému.Procesproověřenítotožnostiuživateleseodborněnazýváautentizaceamázaúkolověřit, žeuživatel je skutečně ten, zakohosevydává.Procesautentizacebudezaložennadatabázi,vekterébudouuloženyuživatelskéúdaje(přihlašovacíjménoaheslo),jejichžkombinacibudeznátjendanýuživatel.Procesověřeníuži-vatelskéhooprávněnísenazýváautorizaceanavazujenaautentizaci.Přihlášené-mu uživateli bude přidělena konfigurovatelná role, které je přiděleno oprávněnípropřístupdosekce.

Přinávrhuapozdější implementacisemusíbrátdoúvahyzvolenátechnolo-gie-Nette framework, který využívá architekturu MVC. Daná funkcionalita bylapopsána vpodkapitole 3.3, avšak pro navržení mechanismu autentizaceaautorizacejepotřebasprávnéhopochopení.PronáslednépopsánípožadavkuoduživatelenazobrazenístránkybudevyužitUMLsekvenčnídiagram.Tentotypdia-gramu graficky znázorňuje průběh zpracování procesu vpodobě zasílání zprav.Zprávy si posílají většinou objekty, ale komunikovat mohou itřídy nebo aktéři.Základnícharakteristikouobjektujejehoschopnostpřijmoutzprávuareagovatnani – spuštění příslušnémetody. Vrámci tétometody objektmůže poslat zprávadalšímuobjektu,atakvznikásekvencezpráv,ježjeprávězachycenapomocítoho-totypudiagramu(Bruckner,2012).

Na obrázku jsou znázorněni aktér Uživatel aobjekty Router, KontroleraDatabáze. Prododržení autentičnosti jsoupojmenovány ise zprávami anglicky,jelikož ivpozdější implementaci bude všepojmenováno anglicky.Diagramobsa-hujedva typy zpráv –plná čára splnou šipkana konci značí synchronní zprávy,kdy vysílající objekt čeká na ukončení zpracování zprávy. Šrafovaná čára značíasynchronnínávratovouzprávu,kdyvysílajícíobjektnaopaknanávratovouzprá-vu čekat nemusí. Na obrázku lze tedy vidět, že počáteční uživatelský požadavekpřicházínaRouter,kterýjejzachytíazpracuje.Podlezpracovanéhopožadavkusenajde příslušný Kontroler, ve kterém se případně naleznou požadovaná datavDatabáziatěmitodatysenaplníšablona,kterásenazávěrzobrazíuživateliskrzeoknowebovéhoprohlížeče.

Page 46: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

46 Návrhsystému

Obr.5 Sekvenčnídiagrampropožadaveknazobrazenístránky

Procesautentizaceaautorizacejetedyvyužitivprocesuzobrazenístránkysysté-mem abude následně znázorněn vdiagramu aktivit, který rovněž patří do UML.Tentotypdiagramuumožňujezachytitposloupnostaktivit,kterémohouprobíhatjaksekvenčně,takparalelně.Lzejejvyužítpromodelováníbyznysprocesů,mode-lování logiky scénáře případu užití či modelování logiky byznys pravidel. Jdeoobjektověorientovanoualternativuvývojovýchdiagramů.Prvkydiagramujsou:zahájení,ukončení,jednotlivéaktivity,tok,rozhodováníavětvení.Pokudjepotře-bazachytit,kdodanouaktivituprovede,lzektomuvyužítprvektakzvanéplaveckédráhy,čímžseaktivityseskupídosouvislýchpruhůpodlenositeleaktivity(Bruc-kner,2012).

Jižvtomtobodělzevymezittakzvané„plaveckédráhy“proaktéry,kteříbudouvykonávat jednotlivé aktivity abudou jimiUživatel aSystém.Uživatel celýproceszahájísvýmpožadavkemnaSystémozobrazeníurčitésekce,Systémmujizobrazí,aleještěpředtímprovedeověřenízmíněnéautentizaceaautorizace.Tytočinnostisebudouověřovatpřikaždémpožadavku ještěpřednačtenímpožadovanýchdatzdatabázevkaždémkontroleru.Bylobyprotovhodnévyužít základníprvekob-jektového programování – dědičnost anadefinovat pro kontrolery společnéhopředka.Konkrétnínávrhfunkčnostijezobrazennanásledujícístraně.

Znásledujícího obrázku lze jednoduše vyčíst posloupnost kroků, které pře-cházízobrazeníkonkrétnístránky.Vpřípaděneúspěchupřiautentizacičiautori-zacibudenásledovatzobrazeníchybovéhláškyapřesměrovánínapředempřipra-venoustránkuprotentopřípad,nebonaopakvpřípaděúspěchuseuživatelizob-razípožadovanástránka.Nejprveseprovádíkontrolaoprávněníaažpotésepro-vádíkontrola,zdajemodulvůbecaktivní.Jetodánopřevážnětím,žeikdyžbudesekce aktivována, uživatel do ní vůbec nemusí mít přístup – proto se kontrolaoprávněníprovádídřív.

Page 47: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Návrhsystému 47

Obr.6 Diagramaktivitprokontroluautentizaceaautorizace

Kromě těchto zmíněnýchkontrolbudeCoremodul obsahovatdalší, již zmíněnouzákladní funkcionalitu. Do této funkcionality bude patřit práce suživateli, tedymožnostuživatelevytvořitaručněmunastavitjehoroli.Rolesebudedáttakéma-nuálněvytvořitanastavit jípřístupydokonkrétníchsekcí.Při tomtonastavováníseopětmusíbrátvpotazzvolenátechnologie.VNette frameworkuexistujemož-nostroledefinovatspolusezdrojiaakcemivkonfiguračníchsouborechapokaždé,kdyžsevsystémuvytvořínovýzdrojneboakce,musíseručněnadefinovatprávěvtěchto souborech. Této možnosti by však bylo dobré se vyvarovat, zdrojesakcemi automaticky ukládat do databáze auživatel by poté jen ručněvadministraci nastavil dílčí oprávnění pro dané role. Pro automatické načtenízdrojůaakcísevytvořítakzvanýautoloader,kterýprojdevšechnysouboryapodlezvláštníhopřípaduanotacejeuložídodatabáze.Uloženíproběhnejenjednou,ulo-ží se vždynázev akce/zdroje akněmu se takéuloží jehopopisekprousnadněnípozdějšímanipulacestěmitodaty.Budesevycházetjižzezmíněnéhopravidla,žecokolivnenípovoleno, je zakázáno.Uživateli vystačí vždy jen jedna role, čímž sesituace značněusnadní, jelikožvpřípaděvíce rolí bymohlodocházetkekonflik-tům,kdynějakýzdrojbyvjednérolibylpovolenavjinézasene,avšakvzhledemnarozsahnavrhovanéhosystémujetopřijatelnézjednodušení.

Page 48: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

48 Návrhsystému

7.1.2 CMSmodul

Tentomoduljedefactohlavníprveksystémuajehoprimárníúlohoubudeobsta-rat správu obsahuwebu - zde se budou vytvářet aspravovat jednotlivé stránkyfrontendovéhomoduluaztěchtostráneksebudedefinovatimenu.Základnífunk-cionalitutohotomoduluznázorňujenásledujícíUseCasediagram.

Obr.7 UseCaseDiagramprosprávuobsahuwebu

Kromězmíněnétvorbystránekprofrontendovoučástsezdetakébudouvytvářetamodifikovat idalší položky, které stvorbouobsahu souvisejí. Jedné seotvorbuaktualit, jež budou vyčleněny do samostatnéhomodulu, ale co se týká zařazení,patřísemazuživatelskéhohlediskatotozačleněnínebuderozpoznatelné.Dáleseprowebbudouvytvářetodkazynasociálnísítěapartnery,kterébudouveforměobrázku aodkazu na příslušnou webovou stránku, jak bylo specifikovánovpožadavcích společnosti. Posledním zdaných nastavení je práce se-mailovýmiadresami,kteréurčí,kamsebudouodesílate-mailyzkontaktníhoformuláře,nebovpřípaděvytvořenínovéobjednávkyatp.Vazbatypuextendznačírozšířenídané-hopřípaduužití onovou funkcionalitu.Uživatel sicepřistupuje avyvolápůvodníakci,kteráovšemvyvoláakcirozšiřující.Jednásesamostatnýpřípadužití,kterýnapůvodní akci nemá žádný vliv avpřípadě nefunkčnosti či neexistence by se pů-vodnívolanýpřípadužití takči takprovedl.Oexistencirozšířenípůvodnípřípadužitínemusíanivědět.

Přitvorbějednotlivýchstránekprowebovouprezentacibynemělobýtzapo-mínáno,ževevelmimnohapřípadechexistujídílčípodstránky jednotlivýchstrá-nek.Jinýmislovy,podstránkamůžebýtpotomekjinéstránky,kterájenaopakjejírodič, tedy nadřazená položka, což má za následek definování vztahu rodič-potomek.Vevýpisumenunafrontendovéčástísepotomvyužijetakzvanéstromo-

Page 49: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Návrhsystému 49

vémenu,ježjeobdobnéjakoprovýpiskategorieproduktů,kdesetentovztahmusítakénavrhnout.Jednotlivékategoriebytakémělybýtnavrženyipromodulaktua-lit/blogu,čímžseusnadnípozdějšífiltrováníveveřejněpřístupnéčásti.Dálemůženastat situace, že dílčí stránka nemusí být dynamická aeditovatelná přímozadministrace, nýbrž odkazujena statickou stránku, která je již předdefinována.Zmíněný příklad semůže týkat třeba výpisu produktů, nebo stránkamůže takéodkazovat na produkt, který by mohl být ve specifických případech zařazen domenujakojehopoložka.

Ztěchtozmíněnýchdůvodůjevhodnétvorběmenuvěnovatjistoupozornost,jelikožprostézatrhnutí,zdajestránkapoložkoumenubynemuselobýtdostačují-cí.Navícsevelmičastoobjevujípřípady,vekterýchjepotřebanawebovéstráncevytvořit více typů menu, kdy položky hlavního menu, umístěného napříkladvhlavičce webové stránky, nemusejí odpovídat položkám jednoduššího menuumístněnéhovpatičce.Protojevhodnévytvářetjednotlivémenujakoobjekty,dokterýchbudouzařazoványjednotlivéstránky,příspěvkyblogu,produktynebosta-tickéodkazynaakcepresenterů.Tytomenusepotébudouuživatelůmsnázeedi-tovat.

Součástí tvorby jednotlivýchstránekbude taképráce seSEOelementy,kon-krétněstitulkem,popiskemaklíčovýmislovy.Ztohotodůvodubysemělyvytvořitvšechnydostupnéstránkyzwebovéprezentacevpříslušnésekciatoivtompří-padě, že budou odkazovat na již připravenou statickou šablonu. Pro každou zestráneksezmíněnéhodnotyjednodušenastavíapotévšabloněvypíší.Vpřípadě,žesehodnotyvadministracinevyplní,využijísepředempřipravené,obecnétexto-véřetězce,kterébudoustatickydefinoványvpříslušnýchmetodáchpropředávánídatdojednotlivýchšablon.Vevýchozímetoděpronastavenítěchtohodnotsetedynejprvepokusínajítpříslušnástránkavadministraci,vpřípaděnalezenísedoplníhodnotyzadministrace,jinaksedoplníobecnépopisky.

7.1.3 E-shopmodul

Obsahemtohotomodulubudouveškeréčinnosti,ježspadajípodpoložkuinterne-tovéhoprodeje.Jednáseovolitelnýtypmodulu,jelikožnevšichni,kteříoslovíspo-lečnost IDEATECH, budou chtít prostřednictvím svého webu prodávat. Proto byměljíttentomodelsnadnodeaktivovat.Hlavníčinnostijsouznázorněnynanásle-dujícímUseCasediagramu.Diagramzachycujezákladnípřípadyužití.Některélzeopěthierarchickyrozložitnanižšíúrovně.NapříkladSpravovatproduktyobsahujedalšípřípadyužití,jakýmijsouVytvořeníproduktu,Vytvořenívariantproduktu,Vy-tvořenígaleriíproduktu,VytvořeníatributůproduktuaZařazeníproduktudokate-gorií.

Jižbylozmíněnévespecifikacipožadavků,ženěkteréproduktynemusejíbýtjenjednoduché,alenapříkladjedenproduktsemůževyskytovatvevícevariantáchazákazníksiztěchtovariantmůževybrat.Bylobyvelminevhodné,kdybypřivý-pisuproduktůbyltentýžproduktvypsánvícekrát,pokaždévjinévariantě,protožesede facto jednáotentýžprodukt.Každávariantavšakmůžemít jinévlastnosti,různoucenučiobrázky.Naopakhodnoceníbymělozůstatvždystejné, jelikožse

Page 50: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

50 Návrhsystému

jednávždyojedenatentýžprodukt.Protojepotřebakproduktůmvytvářetatribu-ty,kterékjednotlivýmproduktůmbudemožnépozdějipřiřadit,atímvytvořit je-jich varianty. Zjednoduchého produktu se tedy může stát produkt svariantamipodle toho, zda mu bude některý zatributů přidělen. Zjednotlivých atributů setedy vytvoří další produkty, jež jsou kpůvodnímu produktu ve vztahu rodič-potomekabudouvytvořenynazákladětěchtoatributů.

Obr.8 UseCaseDiagramprosprávuinternetovéhoobchodu

PřípadužitíSpravovatobjednávkyjerozšířenofunkcionalituOdeslatinformačníe-mailozměnáchzákazníkovi.Vztahmezitěmitopřípadyužitíjeinclude,cožzname-ná,žepokudby totorozšířenínefungovalo,nefungovalby ipůvodnípřípadužití.Ztohovyplývá,že jsounasoběpřímozávisléapřípadužitíSpravovatobjednávkybybeztohotorozšířenínebylfunkční.Jetodánohlavnětím,žepokudseobjednáv-kajakkolivzmění,musíotombýtuživatelinformovánskrzee-mail.Dálelzetentopřípadužitíopětrozložitnanižšíúroveň, jelikožvesprávěobjednávkysebudoumociUpravitúdajezákazníka,kterésenepromítnounikamjinamneždoúdajůob-jednávky,budezdemožnostPřidatdalšíproduktydoobjednávky,nastavitmanuál-něneboautomatickydatumvystaveníasplatnostifaktury.MimotytomožnostizdebudevelmidůležitýprocesNastavenístavuobjednávky.Těchmůžemítobjednávkavíce,avšakvždybudepouzejedenproces,kterýnastavísystémbuďtoautomatic-ky, nebo jej nastaví uživatel podle toho, zda zákazník zaplatil, zda je objednávkahotová,nebonaopakzrušena.Všechny tytostavyapřechodmezinimi jeznázor-něnnanásledujícímstavovémdiagramu.

Page 51: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Návrhsystému 51

Obr.9 StavovýDiagramproobjednávku

Zpředchozíhodiagramuvyplývávelkémnožství stavů, vekterých seobjednávkamůže vyskytovat. Tyto stavy lze zredukovat jen na pětmodifikovatelných stavů:Nová,Přijatá,Expedovaná,Pozastavená,Zrušená.Existujevšakještědodatečnýšestýstav,cožjestavprokošík,vněmseobjednávkanacházípokudnenídokon-čena, aproto tyto objednávky nejsou zahrnuty do přehledu objednávekvadministraci. Do tohoto přehledu se objednávka dostane až vmomentě, kdy jiuživatelpotvrdíaobjednávkasestaladokončenou.Tentostavobjednávceautoma-tickynastavísystém.Vdatabázi tedymůžeexistovatmnohopoložek,kterénebu-dou do administrace zahrnuty amohou se využít pro pozdější analytické účely,napříkladprozjištění,kteréproduktybylypřidánydokošíkunejčastěji,avšakob-jednávkanebyladokončena,nebojestliseuživateldostalalespoňkprocesuvolbymetoddopravyaplatbyatp.Ztohototedy jasněplyne,žekošík jevlastně jenne-dokončenáobjednávka,kterájeurčitýmzpůsobemspárovánasezákazníkem.

7.1.4 Frontmodul

Poslednímzezmíněnýchmodulů jeten,prokterýnenínastavenožádnéomezenípřístupuajetedyveřejněpřístupnýkomukoliv.Dotétočástisepropisujídata,kte-rájsouvytvářenaamodifikovánazprivátnísekce,aprotoodrážímožnosti,ježpo-skytujekompletníadministrace.Na rozdílodostatníchmodulůse tatočástbudevelmi častoměnit apřizpůsobovat podle potřeb apožadavků klienta, nehledě nato, jestlisebude jednatopotřebytýkajícísevzhledunebo jinémodifikace.Velmivýhodnébyvšakbylotutočástnavrhnoutconejvíceobecně,abyitadydocházelokezměnámconejméněanapříkladprovzhledbymohlabýtnavrženavýchozíša-blona,kterábysejenminimálněupravovalavpřípadech,kdyklientnebudevyža-dovatoriginálnívzhledtétočásti.Návrhpřípadůužitíajehoaktérůprotentomo-duljeznázorněnnanásledujícímusecasediagramu.

Naprvnípohledsemůžezdát,žeprotipředešlýmusecasediagramůmjeten-to návrh poměrně složitější, avšak to je dáno převážně tím, že ostatní diagramyvyjadřujíprvníúrovněnávrhuadajísedálerozkládatnanižšívrstvy.Tentonávrh

Page 52: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

52 Návrhsystému

seužpoměrněmocrozkládatnedáazahrnuje téměřkompletnípřehleduživatel-skýchpřípadůužití.HlavnímiaktéryjsouNávštěvník,tedyuživatel,kterýnenípři-hlášen, anaopakPřihlášený uživatel, kterýmá stejnémožnosti, ale navíc získávámožnostHodnotitprodukty,VyužívatuživatelskéslevyavpřípaděpotřebatakéEdi-tovatsvůjprofil.NepřihlášenýipřihlášenýuživatelbudoumítmožnostVyhledávatprodukty,Nakupovat produkty,mítmožnostVolby peněžníměny, ve které budouchtít nakupovat atím pádem se iceny automaticky přepočítají dle nastavenéhokurzu,OdebíratnovinkynebosePřihlásit.Pokuduživatelzapomeneheslo,existujezdemožnostVygenerovatheslonovéaodeslatjejnazadanýe-mail.Tentorozšiřují-cípřípadužitíjezdevyužitprovícemožnostívrůznýchvazbách(includeiextend).Vnávrhujemožnévidětivazbugeneralizacemezipřípadyužití. Jednáomožnostvyužítslevy jednakuživatelské,neboprostřednictvímslevovýchkupónů.Vždysejednáoslevy,alepokaždésebudouvněkterýchdetailechlišit.

Obr.10 UseCaseDiagramproveřejněpřístupnoučást

Ve specifikacích společnosti vpodkapitole 5.2 bylo pojednávalo o problému, kdyjednotlivéwebovéstránkyobsahovalyvětšípočeteditovatelnýchblokůavytvoře-nípatřičnéhopočtuformulářovýchpolíveditacijednotlivýchstránekapodstránekvCMSmodulubylo jižvdanépodkapitoleoznačenozaneoptimálnířešení.Tentoproblém se dá vyřešit využitím WYSIWYG knihovny TinyMCE, kterou pomocíJavaScriptovéhonastavení lzevyužítprotakzvanou„inlineeditaci“.Lzepoté tedydosáhnoutpožadovanéhoefektu,žepřihlášenýuživatelspříslušnýmoprávněním

Page 53: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Návrhsystému 53

mámožnostpřímovewebovéstráncetytoblokyeditovat.Předpokládanáfunkcio-nalitapotomjetaková,ževjednotlivýchšablonáchbudouvypsányvýchozítextovéhodnoty,kterépokliknutínaněspustíeditaciajakmileproběhnezmíněnáeditace,novéhodnotyseuložídodatabáze,odkudsevždyodtohotookamžikubudouvypi-sovat do šablony namísto výchozích hodnot. Nemusí se jednat pouze o textovéhodnoty, jelikožknihovnaumožňujevkládáníHTMLelementůdoprostého textu.Naprvnípohledbysemohlozdát,že tato funckionalitabymělaspadatpodCMSmodul, avšak jedná se o funkcionalitu Frontmodulu, protože právě zde se danáfunkcionalitabudevykonávat.

Jakfungujekošíkjižbylonastíněnovnávrhumoduluprointernetovýobchod(Eshop modul), avšak samotné provedení nákupu je samo osobě také poměrněkomplikovanýmprocesemabylobyvhodnéjejtrochuvícerozebrat.Tentoprocesseodehrávávuživatelskéčástisystému,tudížjehonávrhpatřísem.Tentoprocesjezachycennanásledujícímdiagramuaktivit.

Obr.11 DiagramAktivitproprocesuživatelskéobjednávky

Celý tento proces se odráží od požadavků, které byly specifikovány vpředchozíkapitole5.2.2,abudeseskládatzpětidílčíchkroků–zobrazeníobsahukošíku,

Page 54: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

54 Návrhsystému

kde bude možnost využít slevový kupón, vyplnění údajů ozákazníkovi -vpřípadě,žejepřihlášen,setytoúdajedoobjednávkydoplníautomatickyatentokroksepřeskočínavolbumetodydopravyaplatby,zobrazenísouhrnuobjed-návky apři následném potvrzení objednávky se zobrazíděkovná stránka, kdecelýtentoprocesjednohonákupukončí.Prvníčtyřikrokyseskládajíprimárnězečtyř samostatných formulářů, kdy se automatickypřecházínanásledujícípřipo-tvrzení tohopředchozího.Posledníkrok–děkovnástránka je jenpoděkovánínazávěr. Při potvrzení objednávky seuživateli odesílá informativní e-mail svýzvoukzaplaceníazároveňse jedene-mailodesíláoprávněnéosoběsinformacíonovéobjednávce. Do souhrnu objednávky se zákazník bude moct dostat jediněvpřípadě,ženemáprázdnýkošík,vyplnilzákaznickéinformaceazvolilsizpůsobdopravyaplatby.Obdobnětobudeisděkovnoustránkou,nakterousebudemoctdostatjenpopotvrzeníobjednávky.

Přivolbědopravyaplatbysenavícbudekontrolovat, jakoucelkovoučástkuzákazník hodlá utratit, neboli jaká je suma košíku. Podle této sumy se následněuživateli zobrazí příslušné volby dopravy a platby, cožmá za následek vyřešeníproblémucenydanýchmetodpodleurčitéutracenéčástky.Napříkladsiprovozo-vatelinternetovéhoobchodubudepřát,žeodutracenéčástky1000Kčbudoutytometodyzdarma.Vadministracivpříslušnémnastavenéprointernetovýobchodseještěpředtímnastavíprávětatozlomováčástka,odkterésedanémetodyzobrazíapomocídatabázovéhodotazuse tytohodnotyautomatickyvyfiltrujíprodanývý-pis.

7.2 Návrhdatabáze

Pro návrh datové základny se využívajímodely patřící do ERmodelů, jež sloužípřímopromodelovánídat.Základnímielementydatovéhomodelunakonceptuálníúrovni jsou entita (Entity) avztah (Relationship). Příkladem entitmůže být kon-krétníprvekreálnéhosvěta.Vztahjenějakéspojenímezitěmitoentitami.Uvztahůlzerozlišovat jejichkardinalituavolitelnost.Kardinalitazkoumá,zdavztah jednéentity kvýskytu jiné entity je výjimečný (exkluzivní), atedy může nastat pouzejednou,nebozdamůženastatvícekrát.Uvolitelnostivztahusesleduje,zdavztahpřivýskytuentityvždynastaneajetedypovinný,nebozdanastatnemusíajetedyvolitelný(Bruckner,2012).

Jižbylostanoveno,žebudevyužitaMySQLrelačnídatabázeaztohotodůvodubudetaképronávrhvyužitspeciálnínástrojMySQLWorkbench,kterýsevyužíváprosprávu,potažmomodelovánítohototypudatabázeabylvytvořenpřímospo-lečnosti MySQL. Výstupem tohoto modelování je potom EER diagram,voriginálním znění Enhanced Entity-Relationship model, který byl navržen protvorbu „přesnějších“ databázových schémat alépe odráží datové vlastnosti neboomezení.VporovnánímsklasickýmERmodelemobsahujevšechny jehomodelo-vacípojetí,avšaknavícobsahujenapříkladvztahytypuspecializaceageneralizace(Bruckner,2012).Vzhledemkfunkcionalitěnavrhovanéhosystémubudecelkovýnávrhrozložendomenšíchčástí,kterébudousložitpropopisdílčíchčástí.Celkový

Page 55: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Návrhsystému 55

návrhbyzdenebylomožnéjednodušepopsat,protobudezaměřenojennavybra-néstěžejníčásti,kterébylynavrhoványvpředchozíchpodkapitolách.

První ztěchto částí jenávrh datové základny pro produkty. Zpožadavkůspolečnostiasamotnéfunkcionalityplatformyprointernetovýobchodvyplývá,žeproduktybudouexistovat jednoduchéavariabilní.Vše jezachycenonanásledují-címnávrhu.Návrhobsahuje tabulkyprodukt,kategorie,hodnoceníproduktu, atri-butyahodnotyatributů.Kvůlipřednostibylyněkterévazby,kterévedlynatabulkymimotentonávrh,odstraněny,alevtěchtotabulkáchzůstalyodkazujícíindexy.

Obr.12 EERdiagrampronávrhproduktů

Zvazeb,kterézdezůstaly,jsoupatrnévztahytypu1:1,kdynapříkladproduktmů-žemít svéhorodiče,nebonaopaksvéhopotomka.Tostejnéplatí iprokategorie,kterébudoutvořitukázkovoustromovoustrukturuvpřípaděsložitějšíchzanoření.Ze znázorněných vazeb je dále patrné, že jeden produktmůžemít více atributůsvícehodnotamiaatributmůžebýtpřiřazenkvíceproduktům.Ztohovyplývá,žejepotřebatakzvanávazebnítabulka,kterépomáhářešittentotypvztahu,jenžjeoznačenýM:N.Tentovztahlzepotomrozložitprostřednictvímtétotabulkynajed-nodušší–1:N,kdyprvekzjednétabulkymůžebýtvevazebnítabulceobsaženví-cekrátvrůznýchkombinacíchsprvkemzjinétabulky.

Tentotyptabuleksevnávrhuvyskytovalvelmičasto.Obdobnátabulkajena-příklad potřeba pro přiřazení produktů kobjednávce, jelikož objednávka můžezahrnovatvíceproduktů,alenavíctytoproduktymohoupatřitdovíceobjednávek.Stejnývztahplatíiproproduktyakategorie–produktmůžebýtvevícekategori-íchatytokategoriemohoumítvíceproduktů.Tytovazebnítabulkypotomobsahu-jíjenindexyspřímouvazbounazáznamydodanýchtabulek,nebomohouobsaho-

Page 56: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

56 Návrhsystému

vatiprimárníklíčpropřípad,žesektomutodanémuzáznamupřipojídalšíatribu-ty, jak jemožné vidět ve vazební tabulceproprodukty aatributy. Zde sepřiřadíatribut avarianta pro produkt, navíc se však uchovává ihodnota, jestli je danýprodukt ten původní (variabilní produkt), nebo je již varianta tohoto produktusdanouvlastností.

Funkcionalita jepotomtaková,žeexistujemožnostvytvořit jednoduchýpro-dukt,atributyaprodanýatributidílčíhodnoty.Tytoatributysepřiřadíproduktu,který se tím pádem stává variabilní, azvolí se, které hodnoty atributu se budouaplikovatprotentoprodukt.Vpozadísepotomtentoproduktzkopírujeavytvářísepodletěchtohodnotatributůvevícevariantách.Tytokopieproduktusepotommohouodsebelišitvněkterýchvlastnostech,jakýmijenapř.cena.Veveřejnéčástisepotomvypisujíproduktyapodletypu(jednoduchý,variabilní)sevdetailupro-duktudálehledajítytokopie,kterésiuživatelmůžeskrzevolbu,realizovanoufor-mulářem,zobrazitapřidatdokošíku.

Další, poměrně rozsáhlejší návrh se týká objednávky včetně tabulek proukládáníúdajůkosobámavšechostatníchsouvisejícíchúdajů.Konkrétnítabulkaproproduktybylakviděnívpředchozímdiagramuasobjednávkoujespojenaskr-ze indexyvpropojovací tabulce,kterázdeprozjednodušenínenízachycena.Zdebybylovhodnéobjasnitpředchozípoznatekoprovázanostidat,kterásepřidoda-tečnémodifikacinesmíprojevitdojinýchuchovávanýchúdajů.Velmičastonasta-nesituace,žezákaznickéúdajeaúdajeměnovýchkurzůbudoumodifikovány,způ-sobyplatbyadopravymohoubýtsmazány,aležádnáztěchtomodifikacísenesmíprojevitdofaktur,kterébudouvycházetprávězúdajůobjednávek.

Řešenítohotoproblémuvyplývázeskutečnosti,žeobjednávkysimusívšech-ny potřebné údaje uchovávat skrze reference do příslušných tabulek avpřípaděmodifikaceněkterýchztěchtoúdajůmusíbýtošetřenajejichneměnnost.Tétostá-lostidatsedosáhnetak,ževpozadísemístomodifikacekonkrétníchdatvytvářejídatanová,jakjižbylonaznačenovkapitole6.Napříkladznásledujícíhodiagramuvyplývá,žetabulkaosoby(person)jejenpropojovacítabulkou,kteráspojujeúdajepro adresu, bankovní účet, detail osoby, potažmo právnické osoby avšech dalšíúdajů do jednoho celku. Vpřípadě modifikace detailních informací se vytvářívpříslušenétabulcenovýzáznam,starýseponecháváneaktivníanovýzáznamsepropojívpříslušnétabulceproosoby.Požadovanázměnasetedyskutečněvykoná,alestaréúdaje,nakteréseodkazujevobjednávce,zůstávajístálevdatabáziulože-ny.Taktosiobjednávkauchováváúdajeprodopravu,platbu,měnovékurzy,údajeprodejceakupujícího,alecojehlavní,údajeproúčetnictvíatp.Pokudbyuživatelpožadovalsmazáníněkterézpoložky,nakteroujeodkazovánoskrzecizíklíč,po-ložkaseneodstraní,alenýbržsejenskryjetímzpůsobem,žesejínastavíhodnotastatusunaskrytý.

Page 57: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Návrhsystému 57

Obr.13 EERdiagramproobjednávku

Nastaveníúčetnictvíodpovídátabulka„accounting_settings“,kteráuchovávávy-mezenou platnost, velikost DPH, odkaz na prodejce ataké odkaz na jeho detail.Detail ztoho důvodu, že pokud se změní údaje pro prodejce, tyto změny se siceprojevídonověvzniklýchobjednávek,alenesmídojítkezměněglobálníhonasta-venívelikostiDPH.Tentoúdajjevymezensvouplatnostíatotopravidlonesmíbýtporušeno. Vúdajích prodejcemůže dojít ke změně adresy, případně názvu, tytozměnyseneprojevídostarýchfaktur,jelikožsikaždáuchovávápotřebnéinforma-ce,aleDPHbýtzměněnonemůže.

Detail účetního nastavení obsahujemimo jiné ipoložku „tax number,“ kteráodpovídá daňovému identifikačnímu číslu prodejce (účetního). Účetní nastaveníbudeglobálníprocelýsystémavždymusíbytnastavenoatoivpřípadě,žeprovo-zovatel není plátceDPH.Vtomtopřípaděnastaví hodnotuna0 anevyplňujepo-

Page 58: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

58 Návrhsystému

ložkuproDIČ(taxnumber).PředkaždoubudoucípracísDPHsevždybudoukon-trolovat tyto dva údaje, jinak se sDPH počítat nebude. Ceny produktů aslužebvsystému potom budou podléhat tomu účetnímu nastavení, objednávky budoucenupřepočítávatvždypodlesvéhonastavení,jehožhodnotusivždyuchovávají.

7.3 Návrhvzhleduadministračnísekce

Jižbylozmíněno,ževeřejněpřístupnáčástsebudeprojektodprojektuměnit,tak-ženávrhvzhledu,potažmozákladnífunkcionalitybudeprovedenprodefactone-měnnou část systému – pro administrační, privátní sekci, jež obsahuje všechnymodulyažnajednuvýjimku,kteroutvoříprávězmíněnýfrontendovýmodul.Podletěchtomodulůdojdekesjednocenípoložekmenu,kterébudeobsahovatNástěnkusloužícíprozákladnípřehled,globálníNataveníaSprávuuživatelů.Tytotřipo-ložky vzniknou rozdělenímCoremoduluna více částí, jelikož se předpokládá, žetytopoložkyzdebudouobsaženyvždy.Dálezdebudepoložkaprosprávuobsahu–CMS (vycházející ze zkratky Content Management System), E-shop ana závěrSprávamédií.

Pronávrhzákladníhorozloženíprvkůnastráncebudevyužitnávrhprostřed-nictvímwireframu,nebolidrátěnéhomodeluajednáseopoměrnědůležitýkrokpři přípravě obsahuwebové stránky. Jedná se oskicu prezentace obsahu (např.podoba webové stránky), neboli návrh, který definuje funkci aobsah stránky.WireframeobvyklepřipravujeUXspecialista,jinýmislovyodborníknauživatelskýzážitek apoužitelnost webu. Prostřednictvím toho návrhu je rozhodnutoobudoucímrozloženíjednotlivýchprvkůtak,abywebovástránkaefektivněplnilasvůjcíl.Ktomupatřínejenrozvrženíjednotlivýchprvkůnawebu,aletakévhodnérozloženítextů,jejichmnožstvíaúčel(Sálová,etal,2015).

Protožese jednáoadministračníčástsystému,nenípotřebaexperimentovatsevzhledem,sesnahouoslovitconejširší spektrumuživatelů,alenaopakbyzdemělbýtkladendůraznajednoduchostamělybybýtdodrženyjistéstandardy,vy-užívajícísepřitvorběvzhledusystému.Zejménapak,ženejvětšíčástprostorubymělabýtvěnovánaprávěproprácisdaty,menubymělobýtjednoduché,většinoubýváumístěnonalevéstraně,ahlavičkaspatičkanemusejíbýtpřílišvýrazné,alenaopakbymělyobsahovatjennutnéúdaje.Následujícíobrázekodpovídátomutorozvrženíprostřednictvímdrátěnéhomodelu.

Page 59: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Návrhsystému 59

Obr.14 Drátěnýmodelproadministračnísekci

Vzhledsebudeměnitconejméně,změnamimohouprojítbarvyadministraceaoběklientské loga, která jsou umístěna vlevo nahoře apodmenu vlevo dole, kde jeumístěnvodoznakklientskéhologa.Menujeumístěnopřesnětak,jakbylopopsá-novlevoajefixováno,takženebudemizetpřiposunuobrazovkydolů.Tentoposunsetedybudetýkatjenpravéčástiodmenu,tedyté,kterájeurčenaproobsah,cožjedánohlavnědůrazemnapoužitelnost.Vpravodolejeumístěncopyrightslogemspolečnosti IDEATECH,vlevodolevpatičcebudeodkaznačastédotazy,kdespo-lečnostumístípřípadně imateriálysvideempronastaveníapráci sadministrací.Hlavičkaobsahové části budeobsahovat ikonupropřepnutímenudo ještě tenčílišty,místonázvůpoložekmenuzůstanoujenikonkyaobsahováčástsetímpádemstává ještě větší.Dále zdebudehlavní titulekpro jednotlivé stránky, vpravopakbudeinformaceoprávěpřihlášenémuživatelisodkazemnajehodetailníinforma-ceatlačítkoproodhlášení.

Page 60: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

60 Implementaceazavedenírozhraní

8 ImplementaceazavedenírozhraníZpředchozích kapitol, ve kterých byly rozebírány specifikace anásledně návrhfunkcionality systému, lze vydedukovat, že nově navrhovaný systém byměl býtzaložen na co nejvíce samostatných anezávislýchmodulech, což bylo patrné užvdoběspecifikacepožadavkůanáslednýnávrhtojenpotvrdil.VýchozíadresářovástrukturaNette frameworku tedy jižnenídostačující, avšak istoutomožností sejižpočítáaopřípadnoumodifikaciarozdělenísouborůdovlastnístrukturysepo-stará takzvaný autoloader, který při dodržení jmenných prostorů tříd zabezpečísprávnénalezenípotřebnýchsouborů.

Výsledná adresářová struktura je zachycena na následujícím diagramu, kderozloženíaplikacedomodulůjevyjádřenojednímadresářempojmenovaným„mo-dul name“, podstatné je však obsah tohoto adresáře, který odpovídá rozloženímkaždému znavrhovaných modulů. Tímto rozložením je zabezpečena dostatečnánezávislostmodulů, jelikožvšechnyjejichpotřebnésouboryjsouobsaženyuvnitřjejichvýchozíhoadresáře.Vyskytujesevšakisituace,žesevolajíprvkyjinéhomo-dulu, kčemuž velmi běžně dochází ve frontendovémmodulu, jenž se skládá vý-hradně zprvků jinýchmodulů. Třídy, které jsou společné pro vícemodulů, jsouobsaženyvnadřazenémadresářipromoduly,tedyvadresářipojmenovanémapp.Propojení se zbytkem aplikace je také zajištěno skrze konfigurační soubory, při-čemžkaždýzmodulůmávlastníavšechny jsouspojenydo jednohohlavníhona-cházejícíhosevadresářinazvanémapp.

Obr.15 Výslednérozvrženíadresářovéstruktury

Tytokonfiguračnísouborysloužíprovýchozínastavení,kterémánastarosttřídaConfigurator spouštěnápřipočáteční inicializaci.Výchozímnastavenímmůžebýtnapříkladnastaveníprodukčníhoavývojovéhorežimu,nastavenísession,databá-zeatp.Mimojinésezdeumísťujídefinicevlastníchslužeb,kteréjsouvelmičasto

Page 61: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Implementaceazavedenírozhraní 61

využívány, čímž se kód stává přehlednější aje tím zajištěna znovupoužitelnostopakujícíhosekódu.Jakovlastníslužbyjsouzdekonfiguroványmimojinékompo-nenty,ježtvořízákladnístavebníkámenceléhosystému.

8.1 Implementace

První ukázkovým příkladem, který plynule navazuje na rozložení adresářovéstruktury azákladnímu popisu konfiguračních souborů, potažmo využití kompo-nent,jeprávěmožnostitvorbykomponentskrzeautowiring.

8.1.1 Autowiringatvorbakomponent

Tento proces začíná definicí takzvaných továrních služeb ve zmíněných konfigu-račníchsouborech,skrzekteréjsoutytokomponentyvytvářenyjakoinstancetříddaných komponent. Výhodou takto vytvářených komponent je mimo jiné takémožnost jejich opakovaného vytváření skrze Nette nástroj Multiplier. Následnéredukcemnožstvíkódujedosaženoprostřednictvímslužbyprotovárnítřídy,kterájepostavenanafunkcionalitězvanéInterfaceaDIkontejneru,cožjevesvépodsta-tě jednoduše řečeno delegování zodpovědnosti ododávání potřebných závislostídovyššíchvrstev,tedytam,kdesepotomtřídyopravduvytvářejí.Většinousejed-náosystémovýkontejner,kterýjenapočátkutvorbytéměřvšechobjektů(Dobeš,2014).Následujícíukázkakóduodpovídátaktonavrženékomponentě.

1. class PriceCounterControl extends Control { 2.

3. const TEMPLATE_PATH = '/../templates/components/PriceCounter/'; 4.

5. private $currencyManager; 6. private $currency; 7.

8. public function __construct(CurrencyManager $currencyManager) { 9. parent::__construct();

10. $this->currencyManager = $currencyManager; 11. $this->currency = $this->currencyManager->getActualCurrency(); 12. } 13. // Class content = render function and others functions ... 14. } 15. 16. interface IPriceCounterControlFactory { 17. /** @return PriceCounterControl */ 18. public function create(); 19. }

Vpříslušnémpresenteru se poté tato komponenta jednoduše vytvoří za pomocivytvořeného rozhraní, které je zachycenovpředchozímukázkovémkódu.Vytvo-řenípakvypadánásledovně:

1. /** @return PriceCounterControl */

2. protected function createComponentPrice() { 3. return $this->priceCounterControlFactory->create(); 4. }

Page 62: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

62 Implementaceazavedenírozhraní

Ukázkovoukomponentou,vytvořenou tímtozpůsobem, jenapříkladkomponentaprovýpočetvýslednéceny,kterésevolápokaždé,kdyžsevsystémuvypisujejaká-kolivpoložkatýkajícíseceny.Tatokomponentajezachycenaprávěvpředchozíchukázkách kódu na předchozí straně. Ceny produktů jsou uloženy vdatabázi, alevýslednáčástkasedopočítávápodlepoložek,ježobsahuje.Výslednácenasemůžeskládatzvícefaktorů,kterémajínavýslednouhodnotuvelkývliv-jednáseoDPH,slevyaměnovýkurz.Dáledotohotovýpočtuvstupuječinitel,žepokudsebudoudopočítávatslevyzobjednávky,taktytoslevybysenemělytýkatcenzadopravunebo platby. Vposlední řadě se zde vyskytujemožnost zaokrouhlení anastavenípočtudesetinnýchmístpřivýpisuvýslednéčástky.

Pro ukázku zde bude uvedena hlavní funkce, sloužící pro výpočet výslednéčástky, což je takévýstupem této funkce. Funkce spadápodpříslušnýmodel ajevolánave zmíněné komponentě pro výpočet ceny. Jakoparametry se této funkcipředávajíhodnotyceny,měnovýkurz,účetnínastavení,identifikačníčíslouživate-le apřidaná částka.Nejdříve se testuje, zda je prodejce plátceDPH apokud ano,částka se zvýší ohodnotuDPH. Totéž se provede ipro dodatečnou částku, kteréodpovídánapříkladcenězadopravuaplatbu.Pokudjezadánouživatelovoidenti-fikační číslo, zjistí se jeho celkováhodnotaútraty aprozkoumáse, jestli pro tutohodnotunenínastavenanějakásleva.Tentodruhslevysloužíjakověrnostníklub,kdy od určité částky se ceny snižují ozadanou procentuální hodnotu. Kupónovéslevyseřešíjižpřivýpočtucelkovéčástkyproobjednávku,takževtomtobodějetato sleva již započtenavproměnnéprohodnotu ceny.Nazávěr sepřičtekceněpřidánačástka,kterésenetýkalyslevyzvěrnostníhoklubu,aprovedesepřepočetpodleměnovéhokurzu.Všejezachycenonanásledujícíukázcekódu.

1. public function calculatePrice($price, $cur, $settings, $uid, $adPrice) { 2. $vatPayer = isset($settings[self::TAX_NUMBER]);

3.

4. if ($settings && $vatPayer) { 5. $price = $price * (1 + ($settings[self::VAT] / 100));

6. if ($adPrice) { 7. $vat = 1 + ($settings[self::VAT] / 100);

8. $adPrice = $adPrice * $vat;

9. }

10. } 11. 12. if ($uid) { 13. $userAmount = $this->personManager->getUserTotalAmount($uid); 14. $discount = $this->getActualUserDiscountLevel($userAmount); 15. $price = $discount ? $price * (1 - ($discount / 100)) : $price; 16. } 17. 18. if ($adPrice) { 19. $price += $adPrice; 20. } 21. 22. return $price / $cur[CurrencyManager::EXCHANGE_RATE]; 23. }

Page 63: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Implementaceazavedenírozhraní 63

8.1.2 Dashboard

Nyníkukázcesystému,kterývycházízpředchozíhowireframenávrhu.Poúspěš-némpřihlášenídoadministraceakontroleoprávněnínásledujepřesměrovánínauvítacístranu,ježsloužíjakonástěnka(anglickydashboard).Tatonástěnkamázaúkol integrovat informace zvíce složek do jednoho zobrazení avyužívá se jakopřehled klíčových informací aupozornění. Tato uvítací stránka je zachycena nanásledujícímobrázku:

Obr.16 Domovskástránkaadministrace–dashboard

Naobrázkulzevidětvýchozírozvrženípoložekvadministraci.Toseskládázezá-kladníchprvkůjakojsoumenu,hlavička,patičkaaobsahováčást.Vobsahovéčástijsou vboxechumístěny základní číselné statistiky, jakými jsoupočet objednávekvdaném měsíci, celkové měsíční tržby apočet dotazů zkontaktních formulářů.Tytopoložkyzároveňobsahujíprocentuálníporovnáníoprotipředchozímuměsíci.Vdolníčástijerychlýpřehledposledníchobjednáveksodkazynajednotlivédetai-lyatakéjezdeznázorněnpřehledposledníchuživatelskýchpřihlášenídoadminis-trace sejménem uživatele ačasem jeho přihlášení. Nejvíce dominantní část do-movskéstránkyvšaktvořígrafickévyjádřeníměsíčníchtržebzaposlednírok.Uži-vatel si tedy dokáže jednoduše představit, jaké tržby momentálně dosahujevporovnání spředchozími měsíci irok pozpátku. Vpřípadě že bude modul prointernetovýobchodneaktivní,příslušnépoložkynebudouvůbecpoužityabudouskryty.

Page 64: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

64 Implementaceazavedenírozhraní

Vpodkapitole6.2ofunkčníchanefunkčníchpožadavcíchbylovysvětleno, žepro grafické vyjadřování informací je využito JavaScriptové knihovny Chartist.js.Toto využití spočívá vpřidání potřebných JavaScriptových souborů do projektuavnásledné předáním dat pro vykreslení. Mimo jiné jednotlivé vytvoření grafu,získánídatprografajehovypsánídošablonyjerealizovánotakéskrzekomponen-tu, okterých bylo psáno vpředchozí podkapitole. Předání příslušných dat meziPHPsouboryaJavaScriptemjezajištěnoskrzepříslušnýtypNettefunkce-handle,které jsou určeny pro zpracování signálů, neboli pro subrequesty. Hlavní využitítěchto funkcí spočívá ve zpracování ajaxových požadavků, kterých je mimo jinévyužíváno například u formulářů nebo pro zmíněné předání dat do JavaScripto-výchsouborů.Vtétofunkcijepotřebasizískatpříslušnádata,kterájsoupotéode-slánavJson formátuanáslednězískánavJavaScriptovémsouboru.Proukázku jezdeuvedenapříslušnáfunkce:

1. public function handleGetMonthData() { 2. $months = array(); 3. $sales = array(); 4. $monthsNames = $this->formatHelperService->getChartMonths();

5.

6. for ($i = 0; $i < 12; $i++) { 7. $monthNum = date('n', strtotime("-$i month"));

8.

9. $monthSales = $this->getTotalMonthSales($monthNum);

10. 11. if($monthSales > 0){ 12. array_push($months, $monthsNames[$monthNum - 1]); 13. array_push($sales, $this->getTotalMonthSales($monthNum)); 14. } 15. } 16. 17. $this->presenter->sendJson([ 18. 'labels' => array_reverse($months), 19. 'series' => [ 20. ['name' => 'monthSales', 'data' => array_reverse($sales)], 21. ]]); 22. }

Vtétofunkcijevidětzmíněnézískánídatprojednotlivéměsícerokdozaduodak-tuálníhoměsíce.Datajsoupředánajediněvtompřípadě,kdyžjsoutržbyprodanýměsíc větší než 0, což zabrání zbytečnému vykreslení nulových hodnot. Ověřenímůžebýtvhodnénapříkladpokudnějakáfirmazačínávyužívattotořešeníanemáhistorickádataprozobrazení.Jménoměsícesezískávázpomocnéslužby,vekteréjsoudefinoványmimojinézkratkyčeskýchměsíců,nebosezdenacházífunkceproformátováníjmenosobajejichadresdopodobyvhodnéprovýpisdošablony.Poténásledujevšabloněprovýpiszavolánítétofunkceskrzespeciálnímakroplink,kte-résloužíproodkazovánísenametodypresenteru,čímžsedatanačtoudošablonyavpříslušeném skriptu, který slouží pro vytvoření grafu, jsou data získána pro-střednictvímjQuerymetodygetJsonanáslednějsoudosazenydografu.

Page 65: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Implementaceazavedenírozhraní 65

8.1.3 Uživatelé,nastaveníoprávněníaaktivnostimodulů

Přehledyúdajůuživatelů ajejichpřípadná správavadministraci využívákompo-nentu datagrid, okteré bylo psáno vpodkapitole 6.2 ofunkčních anefunkčníchpožadavcích.Tatokomponentausnadňujepráci sdatyaumožňujemimo jinéna-příkladvyhledávání,řazení,filtrování,aletakémožnosteditacenebovkládáníúda-jůpřímovdanémvýpise.Ukázkovýdatagridpropřehleduživatelůajejichrolí jezachycennanásledujícímobrázku:

Obr.17 Ukázkovýdatagridprosprávuuživatelů

Naobrázkujeznázorněnvýpisuživatelůazákladníchinformacíonich.Tentovýpisjerealizovánskrzetabulku,avšaktajeobohacenaprávěozmíněnouinteraktivitu.Tabulkaobsahujeklasickyhlavičku,kdejsouvypsánynázvysloupců,kterélzeřa-dit vzestupně či sestupně, apod názvy sloupců jsou umístěny vyhledávací pole,případněfiltry,přičemžprácesjednotlivýmiprvkyjerealizovánaajaxově.Podtě-mitořádkynásledujevýpisdanýchinformací.Ukázkovývýpisnaobrázkuobsahujemimojinéiinformaciopřihlašovacímjménědosystému,kteréjerealizovánoskr-ze unikátní e-mailovou adresu auživatelskou roli. Tato role se dá jednoduše přikliknutínanizměnit,jakjepatrnézpředchozíhoobrázku,alzejivybratzpředempřipravenéhoseznamuvšechpovolenýchrolí.

Prodetailnebovytvořenínovépoložky jsouzdeumístěnypříslušnátlačítka,kteráodkazujínakonkrétnípodstranu.Možnosttvorbyaeditacepoložkypřímovevýpisezdenenímožnévykonávat, jelikožse jednáorozsáhlejšíproces,alenapří-klad vdatagridu pro uživatelské role je tatomožnost tvorby aeditace přímo vevýpisemožná,jelikožroleobsahujípouzezákladníinformace,jakýmijsoujejíjmé-no,popisekanáslednýunikátní textovýřetězec,podlekterého lzeroli jednodušeidentifikovat.Tytoakcenáslednězpracovávajípříslušnéhandlemetody,okterýchbylopsánovpředchozípodkapitole.

Autentizaci uživatele zajišťuje speciální třída, která se využívá při uživatel-skémpřihlášenído systému, aleprovedeníautorizace předcházípoměrně složi-tější proces. Jednotlivým rolímmusí být umožněnomanuální nastavení přísluše-néhooprávněníprojednotlivésekce,případněudělenípovolenívykonávatjednot-

Page 66: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

66 Implementaceazavedenírozhraní

livéakce.Ztohotodůvoduodpadámožnostvyužitínastaveníoprávněnískrzekon-figuračnísoubory,kdesilzepředemnadefinovatuživatelskéroleapotéjimnasta-vovat oprávnění, anelze využít ani možnost nastavení oprávnění skrze anotace,protožeivtomtopřípaděbyadministrátorvsystémunemohljednodušeprovádětmodifikace.Protojepotřebavytvořenívlastníhozpůsobu,kterýjezaložennaano-tacích, jak již bylo nastíněno vpodkapitole 7.1.1, anavíc je potřeba také zapojitdatabázi.

Anotacejsouspeciálnídruhkomentářů,kterédokážírozšířitprogramovacíja-zykonovoufunkcionalitu.Celýmechanismusjetedyzaložennavytvářeníspeciál-ních komentářů, ve kterých bude nastaveno jméno apopis pro jednotlivé zdroje(presentery)ajejichakce,nakteréuživatelmůžebýtpřesměrovánakterébymohlpřípadněvykonat.Tytoakcesetýkajíijednotlivýchkomponent,ježjsouprospeci-fické případy vytvářeny. Pro všechny tyto anotace se následněprovádí kontrola,zda jsouuloženyvdatabázi,avpřípadě,že tamnejsou,provedese jejichuložení.Tatočinnostjemimojinépodmínkyvkontroletakézaloženanatestováníunikát-níhosloženéhoklíčevdatabázi,kterýmánastarostprávědoplněkkontroly,zdajepoložka již vdatabázi uložena. Tento klíč se skládá zejména akce aindexu nazdroj, tedy na presenter. Jméno zdroje také navíc obsahuje jméno modulu, cožumožňuje hned na první pohled jednoznačně určit, pod kterýmodul tento zdrojpatří,atoikdyžkromězmíněnýchhodnotpoložkaproakciobsahujeipřímorefe-rencinadanýmodul.Procesnačtenívšechanotacízdrojůaakcí,uloženídodata-bázeisezmíněnoukontrolou,seprovádíautomatickyvždypřivstupuuživateledopříslušnésekcepronastaveníoprávněníaobstarávájispeciálníslužba.

Ztoho mechanismu vyplývá, že je potřeba uchovávat zvlášť uživatele, role,zdroje aakce pro tyto zdroje. Pro propojení rolí ajejich povolených zdrojůsakcemi je vytvořena vdatabázi speciální vazební tabulka, která obsahuje třisloupcesindexyrolí,zdrojůaakcí.Procesmanipulacesdatytétotabulkyjezabez-pečen skrze komponentu formuláře. Tento formulář obsahuje všechny akce do-stupnévdanémsystémuauživatelmámožnostvněmzatrhnout,kteréakcebudoupro danou roli povoleny. Při zpracování se poté ztéto tabulky nejprve smažouvšechnyaktuálnízáznamyurčenéprodanouroliauložísevšechnynověpovolenéakce,kterébylyuživatelempovolenyisodkazynajejichzdrojaroli.Ukázkatohotoformuláře je znázorněnana následujícímobrázku, kde je nastavení přístupůproroli Administrátor. Tato role je zároveň nejvyšší zákaznickou rolí aje přiřazenauživateli,kterémubudesystémnásledněprodán. Jednáseovpořadídruhounej-vyšší roli hned za rolí Super Administrátor, která je naopak přiřazena vývojáři,případnělidemzespolečnostiIDEATECHališísehlavněvtom,žesenedáeditovat.Tatorolemápermanentněpovolenpřístupkamkolivamožnostvykonatvšechnyakce,zejménasepak jednáomožnostpřístupuklogovanýmuživatelskýmakcím,případněmožnosturčovataktivnostmodulů.

Page 67: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Implementaceazavedenírozhraní 67

Obr.18 Formulářpronastaveníoprávněníprovybranouuživatelskouroli

Naobrázkujsouvidětmoduly,kterélzepokliknutínajejichnázevrozbalit.Jejichobsahem jsou vlevomožnosti nastavení aktivnosti zdroje avpravo jsou zmíněnéakce.Ponajetínakaždýformulářovýprvekseobjevínápovědasloužícíprozvýšenípřehlednosti.Prosténázvyzdrojůaakcívětšiněuživatelů,svýjimkouprogramáto-ra,nicneřeknou,odtohojsouzdezmíněnénápovědy.

Výslednésestavenímánastarostspeciálnítřída,ježsloužíjakotakzvaný„au-torizátor“. Nette framework disponuje již hotovou implementací takovéto třídy,kteráposkytujeprogramátorovilehkouaflexibilnívrstvuprořízeníuživatelskýchprávapřístupů.Nověnavrženátřídavyužíváprávětentopředpřipravenýmecha-nismus, jehožpráce spočívávdefinici rolí ajednotlivýchzdrojů.Ztohotodůvodusetedyuchovávajíprávězmíněnéinformace,jakýmijsouzdrojeaakce,jelikožme-chanismusjevybudovánnajižexistujícífunkcionalitěNetteframeworku.Tatotří-dabudevyužívatnávrhovývzor „factory“abudevracetpřisvémvytvořeníkom-pletní nastavení uživatelského oprávnění, seznam rolí, zdrojů apovolených akcípro jednotlivérole.Následujícíkódzachycujevýslednoumetodu,kterázabezpečívráceníkompletníhonastavení.

1. public function getPermission() { 2. $permission = new Permission(); 3. $permission = $this->gerRoles($permission);

4. $permission = $this->getResources($permission);

5. $rolesActions = $this->roleManager->getAllResourceActions();

6.

7. foreach ($rolesActions as $action){ 8. $role = $this->roleManager->getRole($action[self::ROLE_ID]);

9. $res = $this->roleManager->getResource($action[self::RESOURCE_ID]);

10. $action = $this->roleManager->getAction($action[self::ACTION_ID]); 11. $permission->allow($role, $res, $action); 12. } 13. 14. $permission->allow(self::SUPER_ADMIN, Permission::ALL, Permission::ALL); 15. 16. return $permission; 17. }

Page 68: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

68 Implementaceazavedenírozhraní

Tatometodavytvářípůvodnípřipravenoutříduproprácisoprávněnímapotézís-kávšechnypovolenéakce izdroje apředá jedo tohotonastavení včetněpřísluš-nýchuživatelskýchrolí.Nazávěrseautomatickynastavíoprávněníproroli„SuperAdministrátor“, která není konfigurovatelná zadministrace. Po nakonfigurovánítéto tovární třídydokonfiguračníhosouborusemůžepřistoupitkekonkrétnímuhlídání oprávnění, jež se bude provádět vždy před jakýmkoliv přesměrováním,nebospíšepřednačtenímstránky.Toholzedosáhnoutskrzeumístěnínásledující-hokódudostartovacímetodyrodičovskéhopresenteru,odkteréhojejdědívšech-nyostatnípresentery.

1. protected function startup() { 2. parent::startup();

3.

4. $moduleSlug = strstr($this->getName(), ':', true);

5. $resource = $this->getName();

6. $action = $this->getAction();

7.

8. if (!$this->getUser()->isAllowed($resource, $action)) { 9. $logMsg = $this->translator->translate('core.common.permission');

10. $this->flashMessage($logMsg, MessageType::ERROR); 11. if ($this->loginPresenter) { 12. $this->redirect($this->loginPresenter); 13. } 14. }else if (!$this->moduleManager->checkModulActivity($moduleSlug)) { 15. $modulMsg = $this->translator->translate('core.common.noActiveMod'); 16. $this->flashMessage($modulMsg, MessageType::ERROR); 17. if ($this->loginPresenter) { 18. $this->redirect($this->loginPresenter); 19. } 20. } 21. }

Vpředchozímkódujezachycenapodmínka,zdauživatelmáoprávněnípropřístupdopožadovanéhopresenteruakonkrétníakce,alejezdejijinýtest.Pokuduživatelsdanourolímápožadovanéoprávnění,ještěseneprovádípožadovanépřesměro-vání,alemísto tohosespouští tentodalší test–zda jemodul,kamuživatel žádáopřístup,aktivní,činikoliv.Tatoaktivnostsetakénastavujevadministraciskrzedatagrid aje velmi prostá. Modul má své jméno, unikátní textový identifikátoraaktivnost.Tentounikátníidentifikátorjevlastníprvníčástjehonázvu-například„CoreModul” bude mít svůj identifikátor „Core”. Tento identifikátor je obsaženvnázvuzdroje(presenteru),kterýtentozdrojzačleňujedomodulu.Aktivnostmo-dulusenastavujeskrzetentodatagrid,kdeobdobnějakoseprouživatelevolírole,takzdesevolízedanýchmožností–aktivní,neboneaktivní.

Znázvuakcevpresenterusetedyvezmeiidentifikátor(název)modulu,najdesepříslušnýzáznamvdatabáziaprovedese test, zda jemodulnastaven jakoak-tivní.Pokudne,provedesepřesměrovánínapresenter,kterýsloužípropřihlášení.Uživatelužpřihlášenýje,jelikožsplnilprvníčásttestu,takžebudepřesměrovánnadomovskoustránkuadministrace–tedynanástěnku.Mimojinéjevkódutakévi-dětvyužitípřekladačerealizovanéhoproadministraciskrzeknihovnuKdyby.Jed-notlivé řetězce jsou umístěny vpříslušných souborech azde jsou jen jednoduše

Page 69: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Implementaceazavedenírozhraní 69

volány. Přístup do jednotlivých sekcí je nyní kontrolován jednak na základě pří-slušnéhouživatelskéhooprávnění,takinazákladěaktivnostimodulu.Toalenenívše, protože je navíc potřeba neaktivní položky vadministračním menu skrýtatoto skrytí zamezí zbytečným pokusům opřístup. Administračnímenu využíváknihovnu, která byla také zmíněna vpodkapitole 6.2 ofunkčních anefunkčníchpožadavcích.Využitímtétoknihovnylzepotomjednodušekonfigurovatmenupro-střednictvímkonfiguračnímsouborů.Tytosouboryjsoupozdějipřidánydokonfi-guračníchsouborůprodílčímoduly,kteréjsouspojenyvjedenvýslednýsoubor.

Vykreslenímenuzajišťujespeciálníkomponenta,vnížseověřuje,zdamodulproodkazovanoupoložkujeaktivní.Názevmoduluseurčívezmíněnýchkonfigu-račníchsouborech.Využitímtétoknihovnyprotvorbumenusedátakéověřovat,jaké role do jednotlivých odkazůbudoumít přístup, avpřípadě, že uživatel tutorolinemá,položkaseautomatickyskryje.Obdobněsedákontrolovattakéto,zdajeuživatelpřihlášen,zdajepředánpožadovanýparametrpropožadovanouakcineboje zde možnost vytvořit vlastní metodu, která se otuto kontrolu postaráazkonfigurace je na ni odkázáno. Kontrola aktivnostimodulů se netýká veřejněpřístupné části –webovéprezentace.Přesněji řečeno sekontrolyprovádějí předúplně každou akcí, takže izde, ale všechny akce obstarávají presentery vtomtomodulu, takže tato kontrola bude vždy provedena skladným výsledkem. Je tedypotřeba jižpředtvorbouveřejněpřístupnéčástivědětdopředu,cozákazníkoče-kává, avpřípadě budoucí potřeby se požadovaná funkcionalita doděláavadministracizaktivuje.

8.1.4 Nastaveníměnanákupníprocesnafrontendu

Nákupníprocesveveřejněpřístupnéčásti seskládáz5kroků,kdeprvníkrok jezobrazení obsahukošíku, za tímtokrokemnásleduje zadáníuživatelskýchúdajů,volbadopravyaplatby, rekapitulaceobjednávkyaděkovnástránka.Znávrhuvy-plývá, že uživatelský košík je vlastně položka ve stejné databázové tabulce, jakojsouobjednávky,jelikožsejednáostejnéinformace,kteréselišíjenstavem.Tentostavurčí,zdasejednáouživatelskýkošík,případnějiždokončenýnákup,zekteré-hosestáváobjednávka.

Jakbylozmíněnovnávrhu,jednotlivékrokypřidokončenínákupuzpracová-vají formuláře, které postupně doplňují dílčí zákaznické údaje do databázekpříslušnému záznamu apodle těchto informací se následně dá iřídit přístupktěmto jednotlivých kroků objednávky. Pokud má uživatel prázdný košík, nebonevyplnilsvéosobníúdaje,nebonezvolilmožnostidopravyaplatby,nebudemocipřejítkrekapitulaciobjednávkyapokudnedokončilobjednávku,nezobrazísemuděkovnástránka.Vzobrazeníobsahukošíkujeformulářproeditacimnožstvíkusůjednotlivých produktů vkošíku (objednávce) apro přidání slevového kupónu doobjednávky.Nejdůležitějšíformulářjevšakvrekapitulaci,kdezákazníkmusísou-hlasit sobchodnímipodmínkamianavícsezdedoplnínejvíc informací, jako jsoukompletníúdajeprodejce,informaceopoužitéměněaúčetnímnastavení,nebosezdegenerujevariabilnísymbolprospárováníplatby.Přidokončeníobjednávkyjenastavenpříslušnýstav,kterýurčí,žejeobjednávkadokončena.Odtétochvílese

Page 70: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

70 Implementaceazavedenírozhraní

sdanýmzáznamemnebudepracovat jakoskošíkemvefrontendovéčásti,alený-bržjakosdokončenouobjednávkou,kteréjeevidovánavsystému.Fyzickysevšakstále jedná ojeden atentýž záznam. Stav objednávky je konfigurovatelnýaobjednávkamůžepřecházetmezijednotlivýmistavypřesnětak,jakbylonavrže-novpříslušnémdiagramunaObr.9,kdejsoutytozměnyzachycenyskrzestavovýdiagram.

Jednotlivýmkrokůmnákupníhoprocesuvšakpředcházíproces jiný,který jetohovšehodefactosoučástí. Jednáseoprocespřidáníproduktudokošíku. Jižbylovysvětleno, žekošíkseodobjednávky lišípouzestavem,vekterémsedanýzáznam nachází, ale ještě je potřeba uvést, kdy ajak se tento záznam vytváří.Vtentomoment je již jasné, že je využitmechanismus zapojení databáze a pro-blémpřipárování zákazníka svytvořenýmkošíkemdokáží vyřešit cookies, kteréuchovávajíidentifikátorpříslušnéhokošíkunaurčenoudobu,ježjenapříkladdelšínežu sessions, aproto je lepší jevyužítna jejichúkor. Jako identifikátordanéhokošíku,kterýsebudeuchovávatvcookies,sevyužijeidentifikačníčísloobjednávky(košíku)zdatabáze.Prozvýšeníbezpečnostisebudekidentifikátorukošíkutakéukládati48znakůdlouhýtextovýřetězec,kterýsenáhodněvygenerujeatakéseuložídodatabáze.Tatokombinacezajistí, žeuživatelnebudeschopný jednodušeovlivňovat objednávky jiných uživatelů, jelikož by bylo velmi obtížné uhádnoutnáhodněvygenerovanýtextovýřetězecavkombinacitěchtodvouhodnotsetojevíjakotakřkanemožné.

Scookies se manipule prostřednictvím HTTP požadavků, přicházejících odklienta. Server je dokáže zpracovat aposlat na ně odpověď, která také obsahujetentotyphodnot.ProprácistímtotypemdatpřipravilNetteframeworkspeciálnítyp objektů, nabízející uživatelům bezpečné API, zapouzdřující HTTP požadavekaodpověď do zmíněných objektů, čímž dokáže ošetřit nedostatky prostých PHPfunkcí pro práci scookies, jako je například ošetření neplatných znakůnebopo-skytnutízabezpečenípředkrádežískrzeJavaScript(NetteFoundation,2017e).

Objednávka, přesněji řečeno košík, se vytváří vmomentě prvního přidáníproduktudokošíku,tedyvmomentě,pokudsiuživatelpřejevložitproduktdoko-šíku a ještě žádný nemá. Avšak ani tento mechanismus nezabrání tomu, ževdatabázi bude zůstávatmnožství nevyužitých košíků, což je způsobeno tím, ženěkteří z návštěvníků nedokončí započatou objednávku. Vytvoření se provedevždy jen jednou azáznam vcookies je platný pro každého uživatele 1 rok. Tedypokud si nic neobjedná, čímž by dokončil objednávku, vtom případě se vytvářínový záznampři zmíněnémprvnímvložení produktu. Při přidávání jednotlivýchproduktůsetedykontroluje,zdamázákazníksvůjkošík,apokudjejnemá,vytvoříse mu nový. Jako nevýhoda se může jevit fakt, že pokud uživatel smažecache/cookies, nebo se přihlásí zjiného počítače, případně zanonymního oknaprohlížeče,nebudemítkdispozicisvůjkošík,avšakistímtonedostatkemsetotořešeníjevíjakodostatečné.

Kontrolaexistencekošíku jepostavenanazmíněnýchHTTPpožadavcích, je-jichž součástí jsou cookies, ve kterých je uloženo identifikační číslo položky

Page 71: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Implementaceazavedenírozhraní 71

vdatabáziaidentifikačnítextovýřetězec.Vytvořeníuživatelskéhokošíkujezachy-cenovnásledujícímukázkovémkódu.

1. private function createBasket() { 2. $token = Random::generate(48);

3.

4. $basketId = $this->database->table(self::TABLE)->insert(array( 5. self::TOKEN => $token

6. ))[self::ID];

7.

8. $this->response->setCookie(

9. self::NAME, http_build_query(

10. array( 11. self::ID => $basketId, 12. self::TOKEN => $token, 13. ) 14. ), time() + (self::VALIDITY) 15. ); 16. 17. return $basketId; 18. }

Je zde vidět idříve popsána práce sHTTP požadavky, kdy součástí odpovědi natentopožadavekjeiprávězmíněnápoložkacookies.HTTPodpověďjeobalenadoobjekturesponse,kterýsloužíprozmíněnouprácisodpovědí.Položcevodpovědijenastavenojméno,aobsahtvořípole,ježjepřevedenonařetězec,vekterémjsouhodnoty ve tvaru „klíč=hodnota“ ajednotlivépoložky jsouodděleny znakem „&“.Dálejetakéurčenaplatnosttěchtodat,kterájsounastavenanajižzmíněny1rok.Platnostmůžebýtlibovolná,klidněikratší,alezpreventivníchdůvodůjenastave-nazvolenádélka.

Téměřtotožnýmechanismusevyužíváipřiprácisměnovýmikurzy,ježjsoumodifikovatelnézadministrace.Mimojinésezdenastavujevýchozíměnovýkurz.Přidokončeníobjednávkyveveřejněpřístupnéčásti sedosazujeaktuálněvyuží-vanýměnovýkurz,který siuživatelmůžezvolit.Tatovolba sepři zmíněnímdo-končeníobjednávkykontrolujeazjišťujese,zdauživatelvyužívávýchozíměnovýkurz,neboprovedlzměnu.Volbaměnysezaznamenávátaktéždocookiesazdeseuchovává ipro následující uživatelovy návštěvy spřípadnými nákupy. Přesnějiřečenosetestujecookies,zdaobsahujezáznamyproměnovékurzy.Vpřípaděžeano,použijesetentozvolenýměnovýkurz,vopačnémpřípaděsevyužívávýchozíměnovýkurz,kterýmusíbýtvždynastaven.Jetozdůvodu,žepokuduživatelžád-nýměnovýkurznevybere,jednazměnsevybratmusíabereseprávěta,kterájenastavenajakovýchozí.Tutovýchozíměnutakévyužívácelýsystém,cenysepodlenípřepočítávajíavyužívásejednotkatétovýchozíměny.

8.2 Testování

Při vývoji jakéhokoliv systému je potřeba klást velký důraz také na správnostafunkčnostnavrhovanéhořešeníaktomusloužítestování.Otovícjsoutestypo-třeba vdaném případě plánovaného budoucího rozšiřování nebo pro případné

Page 72: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

72 Implementaceazavedenírozhraní

úpravydlepotřebzákazníka.Samotnývývojprobíhávněkolikafázíchaprotoexis-tujeivícedruhůtestů.Specifickéjsoupakprávěpřivývojiprojektu,fungujícímvewebovéprostředí.

Ještěneždojdeknasazenívytvořenéhořešenídoostrýchprovozníchpodmí-nek,musísevšeřádnězkontrolovat,kčemužpomohouprávětesty.Vjednotlivýchfázíchvývojebylyběhemimplementacepsánykromědanéfunkcionalitytakétytotesty.Prozákladnífunkce,napříkladprovýpočetcelkovésumyobjednávky(cenaapočetkusů),případněprovýpočetvýslednéceny,kterépatřídotřídmodelůdleMVCarchitektury,jsouvyužityzákladníUNITtesty.Pomocítěchtotestůsebudouověřovat výstupy daných funkcí pro rozdílné vstupy. Dané funkce pro rozdílnévstupymusívždyvrátitočekávanývýsledekavelmidůležitýmčinitelempřitomtoprocesujeuvědoměnísi,žetestysenepíšouproto,abyvždyvyšly,nýbržabyodha-lilypřípadnéchybyanedostatky,takžepokudnazačátkutestovánítestynevychá-zí,jetentoprocesnadobrécestě.ProtentodruhtestováníjevyužitNetteTester,kterýjevytvořenpřímopropotřebydanéhoframeworkuasloužínejenprotentotyptestů.Mimojinésevněmdajítestovatjednotlivépresentery,nebopomocívy-tvořenýchdoplňkusedajísnadnootestovattakékomponenty,databáze,případnězákladnínastaveníprostředí.Testy jsouzautomatizovanéaspouštějí sepřespří-kazovýřádek,kdesepospuštěnívšechnapsanýchtestůvypíševýsledektestová-ní–počet vykonaných testů, počet chybných testů, počet úspěšné provedenýchtestů atp. Testuje se pomocí speciálních testovacích, předem připravených třídAssert,kterévyhodnocujívstupsočekávanýmvýsledkem.

Dalším druhem testů, které jsou pro daný systém napsány jsouakceptačnítesty,konkrétněAcceptancetest.Správněbysemělojednatouživatelskétestová-ní, kterébymělprovádět sámzákazník, avšak toto chování sedápomocí jistýchknihoven simulovat apředejít budoucím chybám. Ukázka kódu, který slouží prosimulováníuživatelskéhochováníjeznázorněnnanásledujícíukázce:

1. public function contactForm(AcceptanceTester $I) { 2. $I->wantTo('try if contact form is working');

3. $I->amOnPage('/kontakty');

4. $I->fillField('#contactForm-name', 'Test');

5. $I->fillField('#contactForm-email', '[email protected]');

6. $I->fillField('#contactForm-phone', '12345678');

7. $I->fillField('#contactForm-message', 'Automaticke testovani.');

8. $I->click('input[type=submit]');

9. $I->wait(2);

10. $I->see('Email byl úspěšně odeslán.', '.alert-success'); 11. }

Vukázkovém kódu lze vidět testování kontaktního formuláře, který se vyplníapotésečeká,zdasezobrazízprávaoúspěchu,kterájeidentifikovánapomocíCSSselektoru.ProsimulováníchováníuživatelesevyužíváknihovnaCodeception,kterátotochovánísimulujevewebovémprohlížeči.Testujesecelkováfunkčnost–we-bováprezentacetakisystém,kterýsloužíprojejísprávu.Testováníneníomezenonajednotlivétřídy,nýbržsetestujíceléscénáře,jakomohoubýtregistrace,dokon-čeníobjednávky,přidáníproduktudokošíkuatd.Protestovánívplnohodnotném

Page 73: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Implementaceazavedenírozhraní 73

webovém prohlížeči je využit ovladač vdaném prohlížeči aserver Selenium. Přidanémtestováníneníanipotřebamítpřístupkezdrojovémukódu,nýbržstačíza-datadresu,kdesewebovéprezentace/aplikacenachází.Testy lzepsátobjektovězavyužitítřídyCestavýhodoujepotomléperozčleněnýkód.Toholzedosáhnout,žetřídyvesvémjménuobsahujíklíčovéslovoCestadědíodpříslušnétřídy.

8.3 Praktickévyužitísystému

Jednímzcílůtétoprácejekroměimplantaceináslednénasazeníaotestovánísys-tému na reálné problematice. Postupným vývojem se systém rozrůstalopožadovanou funkcionalitu apo dokončení určité části funkcionality byla tatočástzavedenadopraxe.Momentálně je systémvyužitvpraxina třechwebovýchstránkách, lépeřečenoudvou internetovýchobchodůajednézahraničníwebovéstránce,kteráprosprávuobsahuvyužívázákladnímodulyjakoCore,CMS,MediaaFrontmodul.Tytotřiwebovéstránkyjsounasoběplněnezávislé,nakaždéznichjenasazensystémsamostatně.Každýzetříklientůpožadovaljistáspecifika,kteráodlišujíjedenweboddruhého,avšakzákladzůstalvždystejný.Nejvíceodlišnostíse nachází samozřejmě ve veřejně přístupnémmodulu (frontend), který byl prokaždéhoklienta,cosetýkávzhleduapožadovanéfunkcionality,odlišný.Nanásle-dujícímobrázkujeukázkahlavičkydomovskéstránkyjednoze-shopů:

Obr.19 Ukázkavzhledufrontendovéhomodulu

Napředchozímobrázkujenapříkladmožnostvidět,žeprvkemmenusestalykro-měklasickýchpoložek takéodkazynaprodukt. Při tvorběvýsledných stránek je

Page 74: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

74 Implementaceazavedenírozhraní

tedypotřebamítmožnostvolbyodkazunapříkladnadanýprodukt.Otomtopro-blémubylopojednávánovpředchozípodkapitole7.1.2,kterásezabývalanávrhemCMSmodulu.Některépoložkymenunejsou,jakjižbylotakézmíněnovdanépod-kapitole,dynamické,nýbržodkazujínastatickyvytvořenéstránky.Taktopředemvytvořenou, statickou stránkou jsou například stránky pro kontakty, nebo blog,kdejsouvypsányvšechnypříspěvky.

Vpřípaděoboue-shopůsespecifikapřílišnelišila.Základyzmíněnýche-shopůjsou stejné, avšak vzhledemkrozdílnosti nabízených typů produktů se vyskytujíjistéodlišnosti.Jedenze-shopůnabízíkprodejioblečení,druhýnaopakprobiotic-kédoplňkystravy.Ujednohobylopotřebavyřešitvariantyproduktůprooblečeníahlavněpočtykusůnaskladě,doplňkystravynaopakvariantyproduktůnevyža-dovalyadokoncenebylopotřebařešitanistavskladů.Nepotřebnáfunkcionalitasevkódujednodušeskryla,avšakpořádzdezůstává,kdybybylopotřebavbudoucnuněkterou ztěchto funkcionalit dodělat. Tatometoda sneaktivnímmechanismem,kterýjejenskryt,seosvědčila,protoženapočátkutvorbyinternetovéhoobchodusdoplňky stravy například nebyl potřeba mechanismus hodnocení produktůadokonceanikompletnímechanismuspropráci suživateli smožností registracedosystému.Pozdějisiklientpožadavkyrozmysleladodatečná funkcionalitabyladoprojektujednodušedodána.Vbudoucnubyvšakbylovhodnésetomuvyvaro-vat anabízet řešení jako kompletní celek. Případné skrývání funkcionality by semělotýkatjenadministračnísekce,nikolivwebovéprezentace.

Vpřípadě čistého CMS, určeného pro zahraničního klienta, došlo kpoměrněvýraznémodifikaciCMSmodulu,jelikožsiklientnavrhnuluspořádáníobsahuve-řejněpřístupnéčástidojistýchlayoutů,kterésizadministracežádaleditovat.Tytolayoutyuspořádávalyobsahdoblokůavýslednývzhled stránek,které tvoří zmí-něnébloky,vytvářírůznorodýobsah.Zadministracelzepotomcelétytoblokypři-dávatdojednotlivýchstránekzavyužitítechnologieDragandDrop.Někdybylnajednom řádku sudý počet bloků, jindy zase lichý. Celý jejich návrh byl poměrněnesourodý,protobylopotřebavytvořit specifickýmechanismus tvorby taktopo-žadovanéhoobsahu.Natomtoprojektuvšakpracovalovícefiremníchprogramáto-růavzhledemkobtížnostivymezitčinnostijednotlivýchprogramátorůakvůlipo-žadavkůmklientazdenemůžebýttentoprojektvícerozebírán.

Vkaždémzetřípřípadůbylnavrženoriginálnívzhled,kterýbylnásledněpře-vedendoHTMLkóduapotébyltentokóddosazendonavrhovanéhořešenísysté-mu, jenž zabezpečuje kompletní funkcionalitu. Na rozdíl od administrační sekce,bylypropřevedenínávrhuvzhleduzgraficképodobydoHTMLkóduvyužitynavícněkteréznástrojů,kterébylyrozebírányvpodkapitole3.4ovývojářskýchnástro-jích.To jezapříčiněnépřevážnětím,žeadministracevyužívá jenminimumkódu,určenéhoproprácisevzhledem,spíšesevycházízknihovenframeworků,kteréjižobsahujívlastnístylyprodefinicivzhledustránky.Tovšakproveřejnoučástneby-lodostačující,jelikožzdejekladen,narozdílodadministračnísekce,požadaveknaupoutánípozornostinávštěvníkasesnahouoodlišeníseodkonkurence,jakvyplý-vá zObr.19, kde je vidět ukázka hlavičky frontendového modulu jednohozinternetovýchobchodů.

Page 75: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Implementaceazavedenírozhraní 75

Jižbylozmíněno,žeprokódovánífrontendovéšablonytěchtowebovýchstrá-nek je využit šablonovací systém Jade, pro zápis syntaxe CSS stylů byla pro tytoprojekty zvolena syntaxe SASS ajako preprocesor, který se postará opřevedenísyntaxenaklasickéCSSamnohemvíce,bylzvolennástrojGulp.Příkazgulpjeza-chycennanásledujícímobrázku:

Obr.20 ProcessestavenísouborůskrzenástrojGulpvkonzole

Naobrázkujevidět,žepříkazvyužívágulpfile,vekterémjsouzapsányjednotlivéúkoly, jež tentopříkazvykonává.Příkazpotédokonzolevypisuje jednotlivýprů-běhdanýchúkoly–kdybylyzapočatyakdybylydokončeny.MezitytoúkolymimojinépatřízmíněnézpracováníSASSsyntaxeneboJavaScriptovýchsouborů,pročiš-těnífontůaposlednířádkynaobrázkupatřízmenšeníobrázkunavelikostivhodnéprowebovéprostředí.Pod těmitořádky,kterébohužel jižnaobrázkunejsouza-chyceny,jetakéinformaceospuštěnírežimuproautomatickésledovánízměn,kte-ré poté sleduje změny vjednotlivých souborech, případně celých adresáříchapokuddojdekezměněněkterýchzesouborů,příkazautomatickyprovedepoža-dovanézpracováníkóduaznovunačtestránku,kdesezměnyihnedprojeví.Dálejezdetakéobsaženainformace,nakterémportujedanástránkakzobrazení.

8.4 Ekonomickézhodnoceníprojektuadobanávratnosti

Jednouzhrozeb,obsaženouvanalýzerizikvpodkapitole6.3, jenenávratnost im-plementovanéhořešení.Dálejednímzdílčíchcílůjeekonomickézhodnocenínověnavrhovanéhořešení,proto je tedypotřebapokusit seoekonomickézhodnocení

Page 76: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

76 Implementaceazavedenírozhraní

nověvytvořenéhořešení.Provýpočetziskulzevyužítzákladníekonomickývzorec,kterýsloužíprovýpočetzisku(Z)ztržeb(T)anákladů(N).Tentovzorecjezachy-cenvnásledujícírovnici:

Z = T - N (1)

Přiurčitémířeabstrakceadanémpředpokladu,ževtomtopřípaděspolečnostno-véřešenínekupuje,alenýbržjejvyvíjí,bysedalčistýziskvyjádřitztržebzaprodejsystémuzákazníkům.Nákladybyvtomtopřípadětvořilymzdyvyplacenézaměst-nancům,kteřísepodílelinavývoji.Lépeřečenobysevynásobilyčasyprogramáto-růstrávenýchpřivývojisjejichhodinovousazbou.Dotohotovýpočtubyvšakmu-selbýtbrándoúvahytakéfakt,žesystémnebylprodánjakohotovéřešení,alebylkněmuvytvářenoriginálnívzhledfrontendovéhomoduluanavícevkaždémpro-jektusevyskytovalyjistázákaznickáspecifika,kterábyladovýslednéčástkyzahr-nuta. Avšak hlavním vylučovacím faktem, který zamezuje tomuto jednoduchémuvýpočtuziskuje,žesystémbylprospolečnostvyvíjenvrámciakademickýchúčelůzdarma, aprotozdenení žádnýnáklad společnosti. Jediným,alepodstavnýmná-klademtedyzůstáváčaszhotovitele,kterýlzevyjádřitjakonákladušlépříležitosti.Tatohodnotabyodpovídalazisku,kterýbyzhotovitelmohlzískat,kdybysevěno-valodlišnýmčinnostemnežvývojidanéhořešení.

Vlivem těchto okolností tedy alespoň lze odhadnout, kolik prostředků bylospolečnostiušetřenotímtovývojem,apokusitsestanovit,pokolikapřípadechuži-tíbysetentopotenciálnínákladvrátil.Odhadovanýčas,strávenýpřivývojisysté-mu,činíasi500hodinčistépráce.Vpřípadě,žebytentosystémbylvyvíjenvrámcifiremníhoprojektu,byhodinovýnákladvpodoběmzdyPHPprogramátoranapo-zici juniormohlčinitasi210Kčnahodinu.Tatočástkazahrnujemzdu ivšechnypotřebnéčástky,kterézaměstnavatelmusízazaměstnanceskutečnězaplatit.Vy-násobenímtěchtodvoučíselvycházíčástka105000Kč,kteráodpovídáušetře-nýmnákladůmspolečnostipřidanémířeabstrakceaodhadů.Pokudbyspolečnostnabízela toto řešení za poplatek15 000 korun, který by tvořilmarži vkonečnésumězaposkytnutísystému,muselabyspolečnostvýslednéřešeníprodatalespoň7krát,abypokrylapotenciálnínáklady.Výslednácenabyseskládalakromědanémaržetakézpoložek,zahrnujícíchpřípadnoucenuoriginálníhovzhledu(grafickýnávrh anásledné kódování), nasazení kódu na systém, vícepráce aotestovánífunkčnosti.

Protožebylsystémvyužitjižvetřechfiremníchprojektech,lzeztohousoudit,ževývojtohotořešenínebylzbytečný.Navícmáspolečnostvplánutotořešenídálevyužívat. Zhlediska ekonomického hodnocení byl pro společnost projekt velicevýhodnýavytvořenýsystémnezůstanenevyužit,naopakjeplánovánojehobudou-cíhojnérozšiřováníavyužívání.Vpřípadě,žebyspolečnosttímtořešenímnedis-ponovala,muselabyvždy tenstejnýzákladvytvářetodnuly,případněkopírovatzjinýchprojektůamohlybysezdevyskytovatchybyplynoucízchybnéhoodstra-něnínepotřebnýchsouborůazákaznickýchspecifikací.Snarůstajícímpočtempro-jektůbuderůstiúsporačasuafinancí,kteráseještěnavýšívpřípaděprodejesys-témujakohotovéhořešení.

Page 77: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Závěr 77

9 ZávěrHlavnímcílemprácebylonavrhnutíkomplexníhowebovéhoadministračníhoroz-hraníprospolečnost IDEATECHs.r.o.apodle tohotonávrhu takénáslednénaim-plementování tohotosytému.Tytodvahlavnícílebylyúspěšněsplněnyasystémbylpoúspěšnéimplementacitakéotestovánvpraxinaněkolikastěžejníchpřípa-dech. Systém je zaměřen na univerzálnost použití napříč různými projekty, coždokazuje jehoužití vetřechodlišnýchprojektech atoto číslo budedálenarůstat,jelikož proces vývoje není u konce aposkytnuté řešení se bude dále rozvíjetavyužívat.

Největšípřínosnověvytvořenéhořešeníjesjednocenínejčastějisevyskytují-cíchzákaznickýchpožadavků,kterébylypospolečnostidoposudvyžadovány.Vy-cházísezezkušenostíodpovědnýchpracovníkůspolečnosti,kteřísepsalitytoopa-kujícísepožadavkydovýchozíhozadání.Mnohozfiremníchřešeníbylozaloženona komerčních, veřejně poskytovaných hotových řešeních, čímž se šetřil časaprostředkynavývoj.Jinářešeníbylavytvářenapřímonamírupodlepožadavkůzákazníků, avšak vmnoha případech se tyto požadavky opakovaly, aproto bylopotřeba vytvořit ucelené firemní řešení, čímž senavícmůže zvýšit prestiž firmy.Jinýmzdůvodůbylpřímozákaznickýpožadaveknavlastnířešení,kterébynebylovytvořenonazmíněnýchkomerčníchřešeních.Totobylyhlavnídůvodyprovývojnového firemního řešení anásledným využíváním tohoto řešení opět dojdekúspořeprostředkůačasupřivývoji.

Univerzálnost systému je založena na rozvržení dílčích částí systému do nasoběnezávislých funkčníchmodulůa tytomoduly lzepodlepotřebydeaktivovat,čímžsestávajívsystémuskrytéauživatelknimnemápřístup.Vpřípaděpotřebyse tytomoduly dají opět aktivovat. Vpřípadě nutnosti rozšíření systému odalšífunkcionalitu lze velmi jednoduše doplnit systém omoduly nové atyto modulytaké začlenit do funkcionality nastavení aktivnosti modulů. Nezávislost modulůvycházízdobřenavrženéadresářovéstruktury,kterájezaloženanavýchozíadre-sářové struktuřeNette frameworku.Každý zmodulůobsahuje všechnypotřebnésouboryprosvojifunkcionalitu,tudížtvoříkomplexnícelek.

Na úplném počátku byl proveden průzkum voblasti technologií pro tvorbuwebovýchadministračníchrozhraní.Výsledekprůzkumubylshrnutdosamostatnékapitolyazískanépoznatkybylypozději využitypři implementacinavrhovanéhosystému.Využitímsprávnýchvývojovýchnástrojůasprávnouvolbou technologiejezabezpečenamožnostpožadovanérozšiřitelnostiajeposkytnutstabilnízákladvyvíjenéhořešeníprojehobudoucípoužitelnost.

Návrhanáslednáimplementacesystémuvycházejízjižzmíněnéhoposkytnu-tého zadání společnosti, pro kterou je systém vyvíjen. Tyto požadavky byly dů-kladně prostudovány apoté ztéto studie byly vytvořeny formální aneformálníspecifikace požadavků. Následně byla provedena vlastní analýza požadavkůavpřípadějistýchnedostatků,kterébylyzjištěnyzezformulovanýchspecifiksys-tému,bylynavrženyipřípadnénávrhynazlepšení.Tytonávrhybylykonzultoványsodpovídajícímizástupcispolečnosti,kteříbylineustálezapojovánídovšechpro-

Page 78: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

78 Závěr

cesů od úplného počátku aměli nad těmito procesy dostatečný dohled. Vrámcivlastní analýzy byla také provedena analýza rizik spojených svývojem systému,která byla založena na analýze rizik RIPRAN. Rizika byla úspěšně zhodnocenaabylyproněnalezenyodpovídajícínávrhynaopatření,čímžsevýslednáhodnotarizikasnížila.

Bylo zmíněno, že nově poskytnuté řešení se bude neustále rozvíjet, jelikožtentovývojneníanizdalekaukonce.Vsystémuexistujíjistéprostoryprozlepšení,kterébysedosystémumělydoplnit.Jednásenapříkladomechanismuspřekladůjednotlivých částí frontendovéhomodulu, kdy stránky, produkty avšechny dalšípotřební prvky by měly mít opět více variant pro různé jazykové mutace, textvšablonáchbymělbýtpřevedendodatabázeaodtudbýtdáleuživatelskymodifi-kovatelný.Poté,podlezvolenéhojazykaveveřejnéčásti,bysezdatabázevybralydata prodaný jazyk ata byla dosazenado šablon.Nelze využít stejnýmechanis-mus, který byl použit pro překlad administrační sekce, jelikož takto překládanýobsahnelzejednodušeeditovatzadministrace.

Nejenkjednoduchémanipulacispřekladybynavícmohlpřispět iplánovanýpřechod zklasické Nette databáze na jeden zORM (Object Relational Mapping)framework, konkrétně na Doctrine. Tento přechod byl navržen anásledně takéischválenodpovědnýmiosobamizespolečnosti,kterésiodtohotopřechoduslibu-jízlepšenífunkcionalityazpřehledněnícelkovéčinnostiModelovévrstvyMVCar-chitektury.Tentopřechodsejižzačalpomalurealizovatspostupnýmrozšiřovánímfunkcionality.

Další zmožných rozšíření se týká účetního nastavení, protože se může vy-skytnoutsituace,ževněkterýchpřípadechjepotřebanastavitrozdílnésazbyDPHprovybranouskupinuproduktů,aprotomechanismuscentrálníhonastaveníprovšechnyproduktynemusíbýtdostačující.Ztohotodůvodubybylovhodnéstávajícímechanismusponechatarozšířitjejonovoufunkcionalitu,kdybyšlovytvářetvíceDPH hodnot, které by poté šly vdetailu jednotlivých produktů nastavovat.Vpřípadě,žebyseDPHuproduktunezvolilo,bylabynastavenavýchozícentrálníhodnota.

Mnohofiremvyužíváprosprávuúčetnictvíněkterýzvybranýchsoftwarů,ur-čených pro danou problematiku, aproto také požadují, aby data zprodeje bylapropojenanadanýúčetní software. Ztohotodůvodu jepotřebadoplnitnověvy-tvořenýsystémorozhraní,kterébytotopropojenídokázaloposkytnout.Totoroz-hraníbymělozaúkolnaformátovatpotřebnédatadopožadovanéhotvaruatatodatanásledněposlatdoúčetníhosoftwaru.Navícpokudbudezákazníkovinabíd-nutpřechodnanověvytvořenéřešení,jepotřebaošetřitpřitomtopřechodutakézachovánístávajícíhotvaruURLadres.Zákazníkmohlinvestovatnemaléfinančníprostředky do vytvoření stabilní pozice vinternetových vyhledávačích azajisténebudestátoto,abypřitomtopřechodudošlokeztrátě.Vněkterýchpřípadechsemůže jednat o velkémnožstvíURL adres, jejichž změnybynemuselo býtmožnéprovéstmanuálnímzpracováním.

Page 79: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Literatura 79

10 Literatura

10.1 KnižnízdrojeBRUCKNER,T.Tvorbainformačníchsystémů:principy,metodiky,architektury.Pra-

ha: Grada, 2012. Management vinformační společnosti. ISBN9788024741536.

CAMERON,D.ASoftwareEngineerLearnsHTML5,JavaScriptandjQuery:Aguidetostandards-basedwebapplications.U.S.:CisdalPublishing,2013.256s.

CHAFFER, J.,SWEDBERG, K. Mistrovství vjQuery: [kompletní průvodce vývojáře].Brno:ComputerPress,2013.Mistrovství.ISBN9788025141038.

DARIE,C.,BRINZAREA,B.,HENDRIX,A.AJAXandPHP:BuildingModernWebAppli-cations2ndEdition.Birmingham:PacktPublishing,2009.308s.

DRUSKA, P. CSS aXHTML: tvorba dokonalých webových stránek krok za krokem.Praha:Grada,2006.Průvodce(Grada).ISBN8024713829.

GAJDA,W. Git recipes. 2013.NewYork,NY:Apress, 2013. Expert's voice in opensource.ISBN9781430261032.

HOPKINS,C.PHPokamžitě.Brno:ComputerPress,2014.ISBN9788025141960.KRAUSE, J. Programming web applications with node, express and pug. Berlín.

Apres,2017.ISBN9781484225103.PEHLIVANIAN, A., NGUYEN, D. JavaScript okamžitě. Brno: Computer Press, 2014.

ISBN9788025141632.PÍSEK,S.HTML:začínámeprogramovat.4.,aktualiz.vyd.Praha:Grada,2014.Prů-

vodce(Grada).ISBN9788024750590.PRETTYMAN,S.LearnPHP7:ObjectOrientedModularProgrammingusingHTML5,

CSS3,JavaScript,XML,JSON,andMySQL.NewYork:ApressMedia,2016.308s.ISBN978-1-484217-29-0

ŘEZÁČ, J. Web ostrý jako břitva: návrh fungujícího webu pro webdesigneryazadavateleprojektů.Jihlava:BaroquePartners,2014.ISBN9788087923016.

SÁLOVÁ,A.,VESELÁ,Z.,ŠUPOLÍKOVÁ,J., JEBAVÁ,L.,VIKTORA,J. Copywriting:pištetexty,kteréprodávají.Brno:ComputerPress,2015.ISBN9788025145890.

SIROVICH,J.,DARIE,C.SEOvPHP:programujemeprofesionálně.1.vyd.Brno:Com-puter Press, 2008. 380s. Programmer to programmer. ISBN 978-80-251-2083-5.

VERENS,K.CMSDesignUsingPHPandjQuery.Birmingham:PacktPublishing,2010.340s.ISBN978-1-849512-52-7.

VERHOEFCH.,EVELEENS,J.,L.TheRiseandFalloftheChaosReportFigures, IEEESoftware,vol.27,s.30-36,2010,DOI:10.1109/MS.2009.154

VRÁNA, J. 1001 tipů a triků pro PHP. Brno: Computer Press, 2012. ISBN9788025129401.

Page 80: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

80 Literatura

ZAKAS,N.ThePrinciplesofobject-orientedJavaScript.SanFrancisco,CA:NoStarchPress,2014.97s.ISBN978-1-59327-540-2.

ŽÁRA,O.JavaScript:programátorskétechnikyawebovétechnologie.Brno:Comput-erPress,2015.ISBN9788025145739.

10.2 InternetovézdrojeAcceptanceTesting.CODECEPTION:ElegantandEfficientTesting forPHP[online].

2016 [cit. 2017-03-15]. Dostupné z: http://codeception.com/docs/03-AcceptanceTests

Chartist - API Ddocumentation.CHARTIST.JS: SIMPLE RESPONSIVECHARTS[online]. [cit. 2017-04-13]. Dostupné z:http://gionkunz.github.io/chartist-js/api-documentation.html

DebugováníazpracováníchybNETTEFOUNDATION[online].2017a[cit.2017-02-21].Dostupnéz:https://tracy.nette.org/cs/

DependencyManagerforPHP.COMPOSER[online].2016[cit.2017-02-23].Dostupnéz:https://getcomposer.org

DOBEŠ, V. Tvorba komponent svyužitím autowiringu. Planette [online]. 2014 [cit.2017-04-15]. Dostupné z: https://pla.nette.org/cs/create-components-with-autowiring

Documentation of Sass: (Syntactically Awesome StyleSheets). SASS [online]. 2016[cit. 2017-02-22]. Dostupné z: http://sass-lang.com/documentation/file.SASS_REFERENCE.html

Documentation of UBLABOO Datagrid. UBLABOO[online]. [cit. 2017-04-13].Dostupnéz:https://ublaboo.org/datagrid/

Formuláře. NETTE FOUNDATION [online]. 2017b [cit. 2017-02-21]. Dostupné z:https://doc.nette.org/cs/2.4/forms

Gulp documentation. NPM: Build amazing things [online]. [cit. 2017-04-13]. Do-stupnéz:https://www.npmjs.com/package/gulp

HTTP request& response. NETTEFOUNDATION[online].2017e [cit. 2017-04-18].Dostupnéz:https://doc.nette.org/cs/2.4/http-request-response

Latte. NETTE FOUNDATION [online]. 2017d [cit. 2017-02-21]. Dostupné z:https://latte.nette.org/cs/

MÁLEK, M. K čemu je dobrý Bootstrap afrontend frameworky? Zdroják: Zdroják,otvorběwebovýchstránekaaplikací [online].2013[cit.2017-04-24].Dostup-né z: https://www.zdrojak.cz/clanky/k-cemu-je-dobry-bootstrap-frontend-frameworky/

MONUS,A.10PHPFrameworksForDevelopers–Bestof.HONGKIAT [online].2015[cit. 2017-02-11]. Dostupné z: http://www.hongkiat.com/blog/best-php-frameworks/

Page 81: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Literatura 81

MVCaplikace&presentery.NETTEFOUNDATION[online].2017c[cit.2017-02-21].Dostupnéz:https://doc.nette.org/cs/2.4/presenters

NetteTester–pohodovétestování. NETTEFOUNDATION[online].2017f[cit.2017-03-15].Dostupnéz:https://tester.nette.org

OŽANA,R.Gulpvs.Grunt:soubojbezvítězeaporaženého. Zdroják:Zdroják,otvorběwebových stránek aaplikací [online]. 2014 [cit. 2017-03-23]. Dostupnéz:https://www.zdrojak.cz/clanky/gulp-vs-grunt-souboj-bez-viteze-a-porazeneho/

RIPRAN:Metodaproanalýzuprojektovýchrizik. RIPRAN[online].Brno:ACSA,2016[cit.2017-04-03].Dostupnéz:http://ripran.cz/

STANĚK,Z.Automatizacefrontendovýchúkonů-část2.Webováintegrace [online].2014 [cit. 2017-04-01]. Dostupné z: http://www.web-integration.info/cs/blog/automatizace-frontendovych-ukonu-cast-2/

TinyMCEDocumentation.TINYMCE: Full featuredweb editing[online]. [cit. 2017-04-13].Dostupnéz:https://www.tinymce.com/docs/

Page 82: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

82 Seznamobrázků

11 SeznamobrázkůObr.1 SchémaarchitekturyMVC 20

Obr.2 JednotlivédílčífázeživotníhocykluVodopádovéhomodeluZdroj:Tvorbainformačníchsystémů,2012 24

Obr.3 ZákladníUseCaseDiagramsystému 42

Obr.4 Eriksson-Penkerůvdiagramzákladníchprocesůsystému 43

Obr.5 Sekvenčnídiagrampropožadaveknazobrazenístránky 46

Obr.6 Diagramaktivitprokontroluautentizaceaautorizace 47

Obr.7 UseCaseDiagramprosprávuobsahuwebu 48

Obr.8 UseCaseDiagramprosprávuinternetovéhoobchodu 50

Obr.9 StavovýDiagramproobjednávku 51

Obr.10 UseCaseDiagramproveřejněpřístupnoučást 52

Obr.11 DiagramAktivitproprocesuživatelskéobjednávky 53

Obr.12 EERdiagrampronávrhproduktů 55

Obr.13 EERdiagramproobjednávku 57

Obr.14 Drátěnýmodelproadministračnísekci 59

Obr.15 Výslednérozvrženíadresářovéstruktury 60

Obr.16 Domovskástránkaadministrace–dashboard 63

Obr.17 Ukázkovýdatagridprosprávuuživatelů 65

Obr.18 Formulářpronastaveníoprávněníprovybranouuživatelskouroli 67

Obr.19 Ukázkavzhledufrontendovéhomodulu 73

Obr.20 ProcessestavenísouborůskrzenástrojGulpvkonzole 75

Page 83: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Seznamtabulek 83

12 SeznamtabulekTab.1 MetodaRIPRAN-převodnítabulkaprohodnotyrizika 39

Tab.2 MetodaRIPRAN-určeníhrozebakvantifikacerizikprojektu 39

Tab.3 MetodaRIPRAN–návrhynaopatření 40

Page 84: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

84

Přílohy

Page 85: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Kompletnízadánípožadavkůspolečnosti 85

A KompletnízadánípožadavkůspolečnostiPředmluvaJakékolivnávrhynazlepšeníjsouvítané.Jájižmohubýtzabředlývtěchadminis-tracích,kterépoužívámléta,atudížmůžumíttakzvanouprofesníslepotu.Nicmé-něsevšakstálerádvracímkténejstaršítabulkovéadministraci,sekteroujeprácenejvíceintuitivní,avšakprogramátoradministraciskaždýmwebemtrochuupraví,někdenapříkladpřidápoložku,niczásadního,alepostupemčasuseztohostalne-udržitelný nepořádek. Pro představu napříkladWordPress mi sám osobě přijdezbytečně dost složitý, ale líbí se mi, jak se tam jednoduše pracuje se souboryafotkami. Zbytek pro WordPress je zbytečně komplikovaný, ale jeho síla ležívdoplňcích-napříkladVisualEditorjeprolidi„neprogramátory“skvělý.

Přihlášenídoadministrace:www.xxxxx.yy/techlogin: webmaster pass: vygenerovaný (písmena velké, malá, čísla, 12 znaků)

Uživatelésadministracíneumí.Čímvícefunkcí,možnostía„klikátek“budemít,tímhoršítoproněbude.Poměrnědobřechápoutabulky,takženějakéjednoduchéUX.Pro jednoduchostnapříklad zmíněné tabulkybynebyly špatnouvolbou.OUX topak asi bude hodně zmé strany, nebo také ztvé? Případné návrhy zpracuje nášdesigner.

Odhlášení1. Uživatele toodhlásí zadministracenastránku,kdebudekontaktní formulář

smožností[email protected]ěněčehocobychtělnawe-budodělat, případně poradit. To však nemusí být pravidlem, stačí když zdebudepříslušnýodkaznakontaktníformulář.

2. Formulářbymělmítjen1input=textovépoleatlačítkoodeslat,nicvíce3. Pakbytamještěmělobýtněcojako"Přihlásitse"atímsedostanuzasezpětna

začátek.

Hlavnínabídka–menu–administrace1. Obsahstránek2. Aktuality(pokudwebbudemít)3. E-shop4. Partnerskélogaasociálnísítě5. Překlady(nepovinnápoložka)6. Uživateléapráva

Page 86: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

86 Kompletnízadánípožadavkůspolečnosti

7. NastaveníaSEO8. Sběruživatelskýche-mailovýchadres9. Videonávodykadministraci

Obsahstránek(Tohlebudecelé„grow“administracevzákladníverzi)1. Zařazeníazobrazenípoložek

1.1. Položky, které mají být na webu zařazené vhlavním menu, budouvadministracizvýrazněnéapodtytohlavní-menupoložkysebudouzařa-zovatpoložkyvsubmenu.

1.2. Pokudbude3.submenu,takprincipzobrazenízařazenívadministracizů-stávástejnýjakovpřípaděhlavníhomenuasubmenu.

2. Jedenřádek=1položka=>parametrypoložkyjsou:2.1. InputPořadí=>určovatsebudepodlehodnotyceléhočísla -čímvyšší

číslo, tímbudemítpoložkavyššípriorituaprotobudezařazenavmenunavyššímmístě.

2.2. Názevpoložky=>Podtímtonázvemsebudepoložkanawebuzobrazo-vat,vyplňujeseažpokliknutínaUpravit.

2.3. SekceGalerie=>každápodstránkamůžemítnasvémkoncizařaze-nou galerii -maticovou, či slider. Pro plnění těchto galerií bude vždysloužitsekcevadministraciprodanousprávumédií.(Výslednézobrazenínawebuachováníslideru/galerieseužbudeurčovatindividuálně,alepo-kud to naprogramuješ tak, že si budu moct zaškrtnout jestli chci slidervúvodupodstránky,nebogaleriimaticověnakonci,taktobudevýhoda.)2.3.1. Pokliknutíprovložení se zobrazí "Vyberte soubory", cožby také

mělo fungovat ipro nahrávání fotek zgaleriemobilu. NahrávánízPC/mobilu bymělo jít hromadně,množství položek by nemělobýt nijak omezeno. Limit velikosti fotky byměl být nastaven na5MB/fotka. Pokud však bude nahrávána fotka vyšší jak 800Kb,mělo by se zobrazit upozornění, aby uživatel fotky nahrávalvkvalitěprowebovéprohlížení.

2.3.2. Ažsezačnoufotkynahrávat,takuvidímprogresnahrávání–nenípovinné.

2.3.3. Ažsevšechnynahrají,atributu„alt“seautomatickypřiřadínázevfotky.

2.3.4. Bude existovatmožnost změnit název fotky, atribut alt apořadífotek.Pořadífotekopětpodlečísel.Anázevfotkymůžebýtpoužitnawebutřebapronadpis,zobrazenýnadkaždoufotkou.

2.3.5. Ukaždé fotkymusí být současně imožnost volbyprohromadnéodstranění.

Page 87: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Kompletnízadánípožadavkůspolečnosti 87

2.4. SekceSEO–prokaždoupoložkuexistujemožnostvyplnit:2.4.1. Title(přizaloženípoložkyseautomatickybudebráttitleznázvu

položky,alebudemožnostjejzměnitmanuálně).2.4.2. Description (při založení položky avyplnění obsahu vtextovém

editoru,sevezmeprvních150znakůautomaticky,aleopětbudeexistovat možnost pro manuální nastavení. Počet znaků budeomezena150znaků).

2.4.3. Případněsemzařaditdalšípoložky,cobySEOpomohly.2.4.4. Pokudbudemítwebjazykovémutace,pakbudesekceSEOrozdě-

lenánakarty/záložky:1. SEO CZ 2. SEO EN

3. SEO DE, atd., parametry budou stejné jako u CZ.

2.5. TlačítkoUpravit–sekcebuderozdělenánakarty/záložky:2.5.1. ZáložkaObecné:

1. Název položky 2. URL položky – vyplněno automaticky z názvu, možnost však

URL změnit 3. Obrázek – "Vyberte z PC"

4. Zařazení v menu – „Select“ seznam, jaká položka bude vybrána, tak pod ní se bude tato nově přidávaná položka zobrazovat. Budou tedy vždy vybírány nadřazené položky. Pokud nebude vybráno nic, tak nově přidávaná položka je ta nadřazená a až pod ní se budou přiřazovat další položky.

5. Pořadí – klasika - číslo

6. Perex popis - Textový editor – toto pole nebude často využívané, ale musí zde být z toho důvodu, že nějaká položka může na sebe odkazovat nejenom z menu, ale i odněkud z webu a může mít perex obsah, kterým se podle uživatele bude lišil od samotného obsahu, umístěného v druhé záložce.

2.6. ZáložkaObsahCZ2.6.1. Můžezdebýtpoložka„Popisek“=>jenprostýtext.Webodwebu

se to vždy liší anapříklad takovýchto položky zde může býtiklidněvíce.

2.6.2. Dálužpouzeeditor, ideálně tenCKeditor,kterýumožňujevložitdoobsahufotkuisouborpřímozPC.Nenímožnétodělattak,jaktomámvestarémadministraci,žesevšemusínahrávatpřespo-ložkuadministrace„data“azeditorůsenatopouzeodkazuje, to

Page 88: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

88 Kompletnízadánípožadavkůspolečnosti

by uživatele odradilo. Dále tento editormusí obsahovat nějakoufunkcionalitu,kterábudeumožňovatvkládáníHTMLelementů.

2.6.3. Uložittlačítkavždynakaždéstraněadministrace2,jednonahořeajednodole.

Pokudmáwebjazykovémutace,dalšízáložkybudouprojazykovémuta-ce-1záložka=1jazykovámutace,tedynapříklad:2.6.4. ZáložkaObsahEN–parametry:

• Název• URL(automaticky)• Můžezdebýtipopisek/neboi2popisky,jakoprostýtext.Webodwebusetoopětliší,hlavněpodletoho,jakjenavržený.

Potom jsou individuálnosti, které programátor řeší přidáním dalších záložekseditory.Nenítoúplněnejelegantnějšízpůsobřešení,aleuvětšinywebůtovyho-vujícíje.Potomvšakexistujíiwebydostpřeindividualizované,nakteréjepomalunutné navrhovat vlastní administraci. Setkal jsem již vněkterých řešeníchsproblémem,žejednotlivépodstránkyjsoupřílišdlouhéavyskytujesezdemnohorůznýchtextovýchblokůnakaždéstránce,cožz1editorunelzeposkládat.RozdělittonaXXzáložekpoXXeditorech,navícdoplněnéopevnéaneměnnéčástibytakénebylooptimálnířešení,takžejsmetodřívevyřešilitak,žejakmilesepřihlásíšdoadministrace, jdešnawebaaktualizuješ jej, takod této chvíle lzedo jakéhokolivblokutextukliknoutarovnouseobjevíCK-editorpřímozdenawebu.(tatoeditaceneplatínablokyaktualitajinýchbloků,okterýchjejasnéjakbudouvypadatamajísvépevnémísto,takžesepřidávajíběžněpřesadministraci)

AktualityPokudjsounawebuaktuality,zpravidlatobývá1typaktualitna1místě.Pokudbyawebubylovíceaktualitnavícemístech,řešilobysetorozřazenímaktualityvizparametryníže1. Datum

1.1. Automatickypředvyplněnézaktuálníhodata1.2. Možnostvybratkliknutímdokalendářejinédatum(nepsátmanuálně)1.3. Možnost zaškrtnoutcheckbox „Nezobrazovatdatum“ – tímpádemseda-

tumnezobrazínawebu2. Obrázek

2.1. Kliknutímna"VybratzPC"musífungovattakénamobil–vybratzgaleriefotekvmobilu

3. Název3.1. JenomčistýtextsmožnostíHTMLelementů-strongabr

4. Textovýeditor

Page 89: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Kompletnízadánípožadavkůspolečnosti 89

5. Možnost určitprioritnípořadí, protožepokud existuje jakákoliv dlouhodo-bějšíaktualitaajepotřeba,abysenadninezařadilinověvloženéaktuality,taktétoprioritnídlouhodobéaktualitěsepřiřadíopětnějakéčíslo,kterépřebijechronologické zařazení podle data. Jinak se aktuality řadí chronologicky takjakjimbylourčenodatemvložení.Pokudurčímdatumvloženívbudoucnosti,takseaktualitazobrazíažodtohodne.

E-shopVelmičastoseobjevujípožadavkyalespoňnajednoduchýe-shop,aprotobybylovelmivítanéjejmítjakosoučástkomplexníadministrace.Pokudbysejednaločistěoadministrativnísystém,částproobchodbymělajítzprojektujednodušeodstra-nit, nebodeaktivovat, čímžbyuživatel vůbecneměl tušení, že jeho administraceobsahujeičástsinternetovýmobchodem.Specificképožadavkyjenutnonastudo-vat,nebobudoudoladěnypředzačátkemtvorby.Jeponechánamožnostsebereali-zace, případně všechny detaily doladíme spolu, takže zde budou definovány jenzákladnípožadavky,kteréjsou:1. Správaproduktů

1.1. Jednoduchýavariabilníprodukt–produkt svariantami -napříkladveli-kostioblečeníS,M,Latd.1.1.1. Možnostvytvářetjakékolivatributyproduktů

1.2. Základnívlastnostiproduktů1.2.1. Název1.2.2. Cena1.2.3. Statusyproduktů–publikovaný,skrytý,koncept1.2.4. Editovatelnéinformaceoproduktu1.2.5. Jestlijemožnéjejpřidatdokošíku1.2.6. URLadresajednotlivýchproduktů1.2.7. Slevyproduktůaakce1.2.8. Obrázek

1.3. Kategorieproduktů–napříkladtričko,čepice,tílko1.3.1. Filtrováníproduktůpodlejehovlastností1.3.2. Vyhledáváníproduktůnawebuprousnadněnínákupu1.3.3. Víceúrovňovémenupodlekategoriíproduktů

2. Košík2.1. Možnostpřidáváníproduktůdokošíku2.2. Košíksebudeskládatze4částí–Košík,Údajezákazníka,Volbadopravy

aplatby,Rekapitulace.Můžezdebýtipátáčást–děkovnástránka.3. Správaobjednávek

Page 90: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

90 Kompletnízadánípožadavkůspolečnosti

3.1. Generováníčíslafaktury(variabilnísymbol)3.2. Stavyobjednávky–Vytvořená,Dokončená,Expedovaná,Doručená,Poza-

stavená,Zrušenáapřechodmezinimi3.3. Objednávkajespárovanásezákazníkem,účetnímadodavatelem

3.3.1. Znalostadresy+dodacíadresazákazníkaavšechpotřebných in-formacíooúčetnímadodavateli

3.4. Generovánísplatnostifaktury3.5. GenerovánífakturydoPDF

4. Víceměn–možnostvytváření,editace,mazáníměnanastavovánívlastníhokurzuprojednotlivéměny

5. Správazákazníků–přehledzákazníku,informacíonichapřehledjejichob-jednávek

6. Slevy6.1. Uživatelsképodlevelikostinákupu6.2. Kupóny

6.2.1. Limitpodlepočtupoužití6.2.2. Limitpodledataplatnosti

6.3. Velkoodběratelskéslevy7. Odesílánímailůoinformacích

7.1. Přidokončeníobjednávkyseodesíláinformačníemailzákazníkovi7.2. Přijakékolivzměněstavuobjednávkyseodesíláznovuemailzákazníkovi

7.2.1. OdesláníisPDFfakturou7.3. Přinovéobjednávceseodesíláinformativníemailpověřenéosobě

8. Obecnénastaveníe-shopu8.1. Účetnínastavení–zdaječineníprovozovatelplátceDPH

8.1.1. VýškaDPH+všechnyklíčovéinformaceoprovozovateli–IČO,ná-zev,kontakt,spisováznačkaatd.

9. Dashboardsestatistikamisezákladnímiinformacemiowebu

PartnerskálogaPokud má web někde před patičkou umístěný slider slogy, nebo případněikdekoliv jinde, takvadministracibudeexistovatmožnosttyto logaeditovat.Pa-rametryjsou:1. Kategorie-můžechtítnakaždépodstráncelogajiné,obvykletonechtějí,ale

užjsemsestímsetkal,takžebybylovhodné,kdyžbysestímvadministracipočítalo.Samostatnékategoriebynejspíšemělybýtvšechnymožnépodstrán-ky, které jsou nawebu vytvořené akde se dá něco zobrazit. Pokud uživatelnezvolížádnoukategorii,budousevšudezobrazovatlogastejná.

Page 91: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

Kompletnízadánípožadavkůspolečnosti 91

2. Jednotlivápoložkaobsahuje:2.1. Název(vevětšiněpřípadůsepaknikdestejněnezobrazuje)2.2. Obrázek–vybratsoubor2.3. URL(kambudelogoodkazovatpokliknutí,vždyotevíratvnovémokně)2.4. Pořadí–číslo–čímvyšší,tímvýšzařazené

PřekladyPokud bude vsystému možnost tvorby překladů, tak vpříslušené sekci budouvtabulceumístěnyvšechnyslova,kterésenawebunacházíakterénelzeupravitztextovýcheditorů.Takžetobudounadpisysekcí,popisytlačítek,nápovědy,pla-ceholdery,upozorňovacíhláškyajiné.Pokud bude mít web jazykovou mutaci, např. CZ, EN, DE, bude tabulka:

1. SloupecCZ2. SloupecEN3. SloupecDEnadpisysloupcůEditacebudefungovattak,žesebudoupouzedopisovatslovadotabulky,potésevšepotvrdíajehotovo.

Uživateléapráva1. Možnostzamezeníeditaceněkterých/všechsekcí2. Možnostvytvořituživatelskéskupiny3. Možnostvytvořituživateleazařaditjedouživatelskýchskupin4. Možnostuživatelivygenerovatheslo5. Logováníakcíprovedenýchuživateli

Pro lepšídohledatelnostapřehlednadsystémbybylovhodnévšechnyakcelogovat, čímžbybylzískánpřehledkdyakýmbylyakceprovedeny.Bylobyprotovhodnémítněkde sekci, kdebudevýpisprovedenýchakcí. Jdepotomjednoznačněurčit,kdojezaakcizodpovědnýazjistit,pročtasituacenastalavpřípaděpotřeby.

NastaveníaSEOZdebudouzařazenyvěci,kterésenawebuobjevujívícekrát,např.telefonníčíslovhlavičceapatičce,email,atd.1. Telefonníčíslo2. Kontaktníemail3. Email–natentosebudouodesílatvzkazy/poptávkyzformulářů4. Titulekstránky–homepage60znaků5. Popisekstránky–homepage150znaků

Page 92: Komplexní webové administrační rozhraní pro firmu IdeaTech · Prezentace firem, potažmo jednotlivců skrze internet, je de facto nikdy nekon-čící proces, který by se neměl

92 Kompletnízadánípožadavkůspolečnosti

6. Klíčováslova–homepage(vyhledávačeklíčováslovaignorují,klientivšakne,takžeproefekt)

7. Současněpokudbudewebmítnějakounezařaditelnouvěc, tak tabude takézde

Sběruživatelskýche-mailovýchadresProprácisuživatelibymělybýtuchováványveškerée-mailovéadresy,kteréná-vštěvnícistránkyzadajídosystému.Tytoadresybudoudálevyužíványprozasílánínewsletterůpřípadněprocíleníreklamyajinéúčely.Bylobyvhodnéjejednodušepomocí nějaké hromadné akce vyexportovat do soboru, například skoncovkouCSV, propozdější práci snimi.Kdyby šly odesílatmaily přímo ze systémuvšem,případně jen zvoleným uživatelům, byla by to zajisté velmi vítaná funkcionalita,avšakprozatímsejednájenodoplňkovoufunkcionalitpropozdějšírozšíření.

Videonávody1. Budezdeseznampopsanýchzákladníchúkonů,jaksadministracípracovat.2. Po kliknutí na nějakou položku se otevře stránka sYouTube skrze iframe

smožnostíjednoduše,třebaskrzeselectzeseznamu,vybratjinývideonávodatobeznutnostivracenísezpět.