Oficiální zadání práce Seznamte se s existujícími redakčními systémy využívanými pro firemní prezentace. Proveďte jejich srovnání a zaměřte se na výhody a nevýhody jednotlivých řešení. Navrhněte a v programovacím jazyce PHP implementujte CMS systém určený pro prezentaci firmy. Při návrhu zohledněte nedostatky současných řešení. Implementovaný systém otestujte a výsledky testů vyhodnoťte. Style Definition: Normal: Left, Line spacing: Multiple 1,3 li Style Definition: Heading 1 Style Definition: Heading 4 i
ii
České vysoké učení technické v Praze Fakulta elektrotechnická Formatted: Centered Bakalářská práce Modulární redakční systém (CMS), se zaměřením pro firemní prezentaci Petr Minařík Vedoucí práce: Ing. Martin Balík Studijní program: Softwarové technologie a management Obor: Web a multimedia Červen 2009
iv
Poděkování Chtěl bych tímto poděkovat všem, co přispěli, ať již aktivně či pasivně ke vzniku této práce, především pak svému vedoucímu Ing. Martinu Balíkovi. v
Prohlášení Prohlašuji, že jsem svou bakalářskou práci vypracoval samostatně a použil jsem pouze podklady uvedené v přiloženém seznamu. Nemám závažný důvod proti užití tohoto školního díla ve smyslu 60 Zákona č. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů (autorský zákon). V Praze 12.6. 2009 vi
Abstract The work is focused on available content management systems and its comparison. The result of the work is design and implementation of self-created system suitable for use in corporate sphere, including implementation description and future vision. It also describes selection of suitable framework. Formatted: Font: 14 pt, Bold, Czech Formatted: Czech Abstrakt Práce se zaměřuje na nabídku a srovnání redakčních systémů a jejich možností. Výsledkem práce je návrh a implementace vlastního modulárního systému vhodného pro využití ve firemní sféře, včetně popisu implementace a výhledu do budoucna. Současně také popisuje výběr vhodného frameworku pro vytvoření aplikace. vii
viii
Obsah Seznam obrázků... xixiv Seznam tabulek... xiiixvi 1 Úvod... 1 1.1 Předmluva... 1 1.2 Cíle práce... 1 2 Analýza... 43 2.1 Požadavky... 73 2.2 Analýza současných redakčních systémů... 73 2.2.1 Volně šiřitelné redakční systémy... 83 2.2.2 Volně šiřitelné redakční systémy - shrnutí... 127 2.2.3 Komerční redakční systémy... 127 2.2.4 Komerční redakční systémy shrnutí... 149 2.3 Přínos mnou navrhovaného systému... 149 3 Návrh řešení... 1611 3.1 Výběr technologie... 1611 3.1.1 PHP... 1611 3.1.2 MySQL... 1611 3.2 Aplikace... 1611 3.3 Moduly... 1712 3.3.1 Základní moduly nutné pro chod aplikace... 1712 3.3.2 Standardní moduly... 1813 3.3.3 Rozšiřující moduly... 1813 3.4 Bezpečnost... 1915 3.4.1 SQL injection... 1915 3.4.2 Session stealing (hijacking)... 2015 3.4.3 XSRF/XSRF (Cross-site request forgery)... 2015 3.5 Uživatelé... 2015 3.5.1 Superadministrator... 2015 3.5.2 Administrator... 2116 3.5.3 Moderátor... 2116 3.5.4 Přihlášený uživatel... 2116 3.5.5 Nepřihlášený uživatel... 2116 3.6 Use Case... 2116 3.7 Relační diagram... 2318 4 Realizace... 2419 ix
4.1 Technické řešení... 2419 4.2 Zend Framework... 2419 4.2.1 Komponenty Zend Frameworku... 2520 4.2.2 Obsluha požadavku v Zend Frameworku... 2723 4.3 Implementace (programátorská příručka)... 3025 4.3.1 Adresářová struktura... 3025 4.3.2 Systém... 3126 4.3.3 Jádro systému... 3126 4.3.4 Moduly... 3327 4.3.5 Implementace modulů... 3429 4.3.6 Lokalizace systému... 3731 5 Testování... 3933 5.1 Validita prezentačního kódu... 3933 5.1.1 XHTML... 3933 5.1.2 CSS... 4033 5.2 Testování použitelnosti... 4033 5.3 Kompatibilita prohlížečů... 4034 5.4 Serverová část... 4135 6 Závěr... 4437 A. Literatura... 1 B. Seznam použitých zkratek... 3 C. Uživatelská příručka... 5 a. Instalační příručka (pro MS Windows)... 5 i. Instalace PHP a MySQL... 5 ii. Instalace CMS... 65 b. Administrační příručka... 66 i. Správa modulů... 77 D. Obsah přiloženého CD... 9 x
Seznam obrázků Obrázek 1: Primary use caseobrázek 1: Primary use case 2215 Obrázek 2: Relační diagram systému a základních modulůobrázek 2: Relační diagram systému a základních modulů 2316 Obrázek 3: Schéma vyřízení požadavku v Zend Frameworku [7]Obrázek 3: Schéma vyřízení požadavku v Zend Frameworku [7] 2922 Obrázek 4: Rozložení administračního rozhraníobrázek 4: Rozložení administračního rozhraní 74 Formatted: Indent: First line: 0 cm Formatted: Czech xi
xii
Seznam tabulek Tabulka 1: Srovnání volně šiřitelných redakčních systémů [2]Tabulka 1: Srovnání volně šiřitelných redakčních systémů [2] 94 Tabulka 2: Srovnání komerčních redakčních systémůtabulka 2: Srovnání komerčních redakčních systémů 137 Formatted: Indent: First line: 0 cm xiii
xiv
1 Úvod 1.1 Předmluva Na trhu existuje velké množství redakčních systémů (CMS), ale pro účely firemní prezentace nejsou zdaleka vhodné všechny. Zároveň u takovýchto systémů bývají nutné úpravy pro případné nestandardní funkcionality, které bývají především v komerčním sektoru velmi často požadovány. Motivací pro tento projekt je pro mne správa již několika internetových prezentací právě v tomto sektoru. V současné době využívají vlastní redakční systém, se značně zjednodušenou administrací, kterou bych rád do budoucna rozšířil. Z tohoto hlediska je pro mě oblast redakčních systémů zajímavým tématem vhodným k bližšímu pohledu nejen z uživatelského hlediska. Zároveň již při prvním bližším seznámení s open-source redakčními systémy, jejich strukturou a kódem, mi ve většině případů připadalo použité řešení a struktura zbytečně složitá. I z tohoto důvodu mne nejednou napadla myšlenka, vytvořit vlastní redakční systém, který by byl v tomto ohledu přívětivější. Na trhu existuje velké množství redakčních systémů (CMS), ale jen méně takových, které by se dali použít pro firemní prezentaci. Mojí prací bych se chtěl zaměřit právě na sektor menších až středních firem, které potřebují snadno upravovatelný a do budoucna rozšiřitelný portál.mojí prací bych se chtěl zaměřit právě na sektor menších až středních firem, které potřebují snadno upravovatelný a do budoucna rozšiřitelný portál. Mojí motivací je správa již několika webových prezentacích právě v tomto sektoru. Prezentace mají prozatím pouze značně zjednodušenou administraci, kterou bych tímto projektem chtěl rozšířit. 1.2 Cíle práce Za cíl své práce jsem si tedy zvolil vytvořit vlastní redakční systém. V rámci návrhu CMS je součástí teoretické části analýza v současnosti dostupných redakčních systémů. Dále bude práce obsahovat návrh samotného systému, popis realizace a příručky. Svou prací bych se chtěl zaměřit právě na sektor menších až středních firem, které potřebují snadno upravitelný a do budoucna rozšiřitelný portál, zanalyzovat dostupné možnosti a v neposlední řadě navrhnout a realizovat vlastní řešení problému. Na samotný redakční systém, vzhledem k tomu, že požadavky ve firemní sféře bývají odlišné od požadavků pro běžné osobní použití, budou kladeny lehce odlišné nároky 1
oproti využití pro osobní potřebu. Prioritami budou snadná rozšiřitelnost a editace aplikace a podpora vícejazyčné prezentace již v základu. Důležitou součástí bude také možnost nasazení tohoto systému vzhledem k tomu, že malé/střední firmy většinou nedisponují vlastním web-serverem a potřebnou konektivitou, předpokládá se nasazení podobné tomu v osobní sféře a to především s využitím webhostingových služeb. Navrhovaný systém tedy musí mít nízké nároky, jak softwarové, tak hardwarové, aby bylo možné vybírat z široké nabídky hostingů. Cílem mojí práce je tedy vytvořit redakční systém. Hlavním problémem většiny současných redakčních systémů je špatná nebo žádná podpora vícejazyčné prezentace, která hraje v dnešní době stále větší roli, především pak pro firmy. Proto bude mojí prioritou právě podpora vícejazyčné prezentace. Vzhledem k tomu, že každá firma má trochu rozdílné požadavky, co do funkčnosti, musí být stránky přizpůsobeny co nejvíce možnostem modifikace a rozšíření, pokud možno bez zásahu do funkčního kódu. V případě nutnosti takovýchto úprav, by měli být co nejjednodušší a intuitivní. K tomu bude přispívat dostatečná dokumentace celého kódu a struktura celé aplikace. Formatted: Czech Důležitou částí je také možnost nasazení tohoto systému vzhledem k tomu, že malé/střední firmy většinou nedisponují vlastním web-serverem a budou tedy povětšinou využívat služeb různých hostingových služeb, musí redakční systém mít nízké nároky, jak softwarové, tak hardwarové. Formatted: Line spacing: 1,5 lines 2
3
2 Analýza Pro vytvoření firemní prezentace se nabízí mnoho alternativ. Od statických stránek, u kterých je pro běžného člověka téměř nemožná editace, přes jednoduché databázové aplikace s limitovanými možnostmi editace stránek až po komplexní systémy umožňující uživateli kompletní správu všech aspektů aplikace. V mé práci bych se pochopitelně chtěl zaměřit především na komplexnější CMS. Formatted: Czech 2.1 Požadavky 2.1.1 Obecné požadavky na aplikaci: Univerzálnost - měl by být schopen uspokojit potřeby zákazníků z širokého spektra firem zabývajících se různorodými činnostmi. Aplikace tedy musí být snadno upravitelná. Možnost širokého nasazení vzhledem k cílenému nasazení aplikace na dostupné hostingové služby nesmí být výběr značně omezen samotnou aplikací. 2.1.2 Nefunkční požadavky Modularita - systém bude modulární v nejvyšší možné míře jednotlivé moduly budou využívat vlastní konfigurační soubory, vlastní jazykové zdroje i vlastní databázové tabulky. Zároveň však budou moci využívat (bude-li třeba) zdroje jiných modulů případně globální zdroje. Využití frameworku pro aplikaci jsem se rozhodl využít některého z dostupných frameworků, což je z mého pohledu jedna z věcí která může značně ulehčit vývoj a rozvoj aplikace. Adresářová a souborová struktura aplikace musí mít logickou jednotnou adresářovou a souborovou strukturu pro snadnou orientaci. Toho bude dosaženo také díky modulárnosti systému a využití některého frameworku, který určitou strukturu doporučuje nebo přímo předepisuje. 2.1.3 Funkční požadavky Rozlišení uživatelů - přihlášení/nepřihlášení. Přihlášení uživatelé můžou mít různé role. Správa aplikace - možnost změnit nastavení portálu z prostředí administračního rozhraní. Správa uživatelských rolí a oprávnění - práva jednotlivých uživatelských skupin budou snadno přiřaditelná. Správa jazykových verzí aplikace Správa uživatelů Správa navigace portálu - tvorba navigace portálu dle dostupných modulů Formatted: Heading 3 Formatted: List Paragraph, Bulleted + Level: 1 + Aligned at: 0,63 cm + Indent at: 1,27 cm Formatted: Heading 3 Formatted: List Paragraph, Bulleted + Level: 1 + Aligned at: 0,63 cm + Indent at: 1,27 cm Formatted: Heading 3 Formatted: Font: Bold Formatted: List Paragraph, Bulleted + Level: 1 + Aligned at: 0,63 cm + Indent at: 1,27 cm Formatted: Font: Bold Formatted: Font: Not Bold Formatted: Font: Bold Formatted: Font: Bold Formatted: Font: Bold Formatted: Font: Bold 4
Vícejazyčná podpora obsahu a rozhraní vícejazyčná podpora internetové prezentace je především v dnešní domě velmi důležitou součástí moderních firemních webů. Toto musíme zohlednit především při návrhu databázové struktury. Systém musí podporovat jak vícejazyčnou prezentaci, tak vícejazyčné uživatelské rozhraní. Správa dostupných jazykových verzí nesmí být složitá a musí být realizována na úrovni uživatele. 2.2 Výběr technologie V prvé řadě je nutné vybrat technologii, kterou budu využívat v celé práci. Výběr technologie je omezen především požadavkem na co nejširší možnost nasazení. Od vzniku internetu vzniklo mnoho webových technologií umožňujících vývoj aplikací. Mezi nejrozšířenější patří ASP.NET (Microsoft), JSP (SUN, dnes již spadající pod spol. Oracle) a PHP (open-source). Mezi databázovými systémy jsou nejrozšířenějšími MySQL a PostgreSQL. Jak je zřejmé již ze zadání práce, jako technologie projektu byl zvolen právě jazyk PHP, který je především díky své jednoduchosti a neustávajícímu vývoji jednoznačně nejrozšířenější. Bohužel podporu pro jazyky JSP a ASP.NET nabízí jen malé procento společností poskytujících webhostingové služby. Za databázové řešení bylo zvoleno MySQL ze stejného důvodu. V případě databázové technologie se však předpokládá snadná změna na jiný typ databáze, vzhledem k tomu, že většina frameworků poskytuje abstraktní vrstvu pro snadné propojení s většinou databází. 2.2.1 PHP Serverový open-source skriptovací jazyk, který se poprvé objevil v roce 1995 a byl přímo vytvořen za účelem tvorby dynamických webových stránek. Jazyk byl vytvářen s důrazem na rychlost a jednoduchost, díky čemuž rychle získal na oblibě. Během dlouhého vývoje se jazyk vyvinul z jednoduchého skriptovacího jazyka určeného především pro vývoj osobních stránek (PHP zkratka původně znamenající Personal Home Page Osobní domácí stránka), na velmi komplexní objektově orientovaný programovací jazyk vhodný pro využití i pro náročnější aplikace. V současné době je PHP jednoznačně nejrozšířenější technologií pro malé až střední projekty 2.2.2 MySQL MySQL je nejrozšířenější open-source relační databázový systém (RDBMS) opět optimalizovaný především na vysokou rychlost, bohužel za cenu některých 5
zjednodušení, která jsou ale v posledních letech doplňována. MySQL podporuje také cizí klíče (foreign keys) pro tabulky typu InnoDB, které budu využívat, což zajišťuje další ochranu konzistence dat. 2.3 Výběr frameworku Pro svůj projekt jsem se rozhodl využít některého z dostupných PHP frameworků, od čehož si především do budoucna slibuji značné ulehčení práce, jednodušší rozšiřitelnost a hlavně nutné užití MVC architektury pro celou aplikaci. Pro potřeby mé práce jsem zvažoval jsem užití několika běžně rozšířených frameworků. Vzhledem k minimu praktických zkušeností s prací s PHP frameworky jsem mohl volit framework zcela svobodně na základě potřeb mé aplikace. Z tohoto důvodu jsem prověřil několika diskuzí a portálů jednotlivých frameworků, de mě zaujaly především frameworky Cake PHP, CodeIgniter, Nette a Zend Framework. 2.3.1 Cake php Rychlý framework Dobrá dokumentace Rozsáhlá komunita 2.3.2 Code Igniter: Nejrychlejší framework ze srovnávaných Jednoduchý Přizpůsobitelný 2.3.3 Nette: Mladý projekt Horší dokumentace Jednoduchý Rychlý framework 2.3.4 Zend Framework: Pravděpodobně nejrozšířenější Rozsáhlé použití i ve firemní sféře Nejkomplexnější ze srovnávaných FW Velmi podrobná dokumentace, včetně příkladů užití,... Jednotný vývoj Horší podpora relačních databází Velmi dobře konfigurovatelný Rozsáhlá komunita Formatted: Heading 3 Formatted: Heading 3 Formatted: Heading 3 Formatted: Heading 3 6
Horší podpora javascriptu Po pečlivé úvaze jsem jako framework pro svoji aplikaci zvolil Zend Framework (dále jen ZF ), který se mi jeví jako nejvhodnější, především díky jeho rozšířenosti a komplexnosti. Důležitým prvkem byla vzhledem k absenci zkušeností také podrobná dokumentace. Srovnání rychlostí frameworků zdroj: http://www.root.cz/clanky/velky-test-phpframeworku-zend-nette-php-a-ror/ 2.1 Požadavky Mezi hlavní požadavky systému patří jeho univerzálnost. Měl by být schopen uspokojit potřeby zákazníků z širokého spektra firem zabývajících se různorodými činnostmi. To bude zajištěno modularitou celého systému. Systém bude modulární v nejvyšší možné míře jednotlivé moduly budou využívat vlastní konfigurační soubory, vlastní jazykové zdroje i vlastní databázové tabulky. Zároveň však budou moci využívat (bude-li třeba) zdroje jiných modulů případně globální zdroje. Systém musí obsahovat základní moduly nutné pro správu jak samotného systému tak pro správu prezentace. Musí být také jednoduše rozšiřitelný o další moduly poskytující další funkce. Samotné moduly musí být jednoduše přizpůsobitelné individuálním potřebám. Dalším velmi důležitým požadavkem je vícejazyčnost systému a to jak obsahu, tak rozhraní. Toto musíme zohlednit především při návrhu databáze. Systém musí podporovat jak vícejazyčnou prezentaci, tak vícejazyčné uživatelské rozhraní. Správa jazykových verzí nesmí být složitá a musí být realizována na úrovni uživatele. 2.22.4 Analýza současných redakčních systémů Pro potřeby vývoje vlastního systému jsem se rozhodl srovnat některé současné redakční systémy, abych zjistil, co nabízejí, jaké jsou jejich nedostatky a mohl se tak vyvarovat chyb nebo se naopak inspirovat zajímavými nápady. Zaměřím se především na volně dostupné open-source CMS, ale pokusím se ohlédnout i za uzavřenými systémy. Kritéria vyplývající z mých požadavků která budu u systémů sledovat především pro mne budou: Struktura aplikace, jak z hlediska kódu, tak z hlediska souborového uspořádání 7 Formatted: List Paragraph, Bulleted + Level: 1 + Aligned at: 0,63 cm + Indent at: 1,27 cm
Možnosti přizpůsobení a rozšíření Podpora vícejazyčné prezentace Zohledňovat budu také další parametry, jako například dostupnou dokumentaci a podporu pro daný redakční systém. 2.2.12.4.1 Volně šiřitelné redakční systémy V této kapitole bych chtěl provést srovnání nejznámějších volně šiřitelných CMS. Pro srovnání dostupných systémů jsem vybíral podle obecného povědomí o těchto systémech, jejich rozšíření a uživatelské komunity. Systémy, které jsem zvolil pro srovnání, jsou: Drupal, Joomla, Mambo, OpenCMS, WordPress a Xoops. V následující tabulce bych chtěl nastínit prezetovat základní možnosti těchto vybraných redakčních systémů. Uživatelská část redakčních systémů byla testována pomocí portálu http://www.opensourcecms.com/ [1]. Formatted: Default Paragraph Font, English (U.S.) 8
Drupal Joomla Mambo OpenCMS WordPress Xoops Systém Jazyk PHP PHP PHP Java PHP PHP Databáze MySQ L, Postgre SQL MySQ L MySQL Oracle, MySQL, PostgreSQL, MS SQL Server, DB2, AS400 a HSQL MySQL MySQL Cena Zdarma Zdarma Zdarma Zdarma Zdarma Zdarma Modulární Ano Ano Ano Ano Ano Ano Bezpečnost SSL login Ne Ano Ano Ano Add-on Ano SSL prohlížení Ne Ano Add-on Ano Limitovaná Ano Potvrzení emailu Ano Ano Ano Ne Add-on Ano Ověřovací kódy (anti-spam) Add-on Add-on Ano Ano Ne Add-on Podpora Dokumentace Ano Ano Ano Ano Ano Ano Komunitní portál Ano Ano Ano Ano Ano Ano Jednoduchost užití WYSIWYG editor Add-on Ano Ano Ano Ano Add-on Změna velikosti obrázků Add-on Ano Ne Ano Limitovaná Add-on Správa souborů Add-on Add-on Add-on Ne Add-on Add-on Zip archivy Ne Ne Ne Limitovaná Add-on Ne Vícejazyčné rozhraní Ano Ano Ano Ano Ano Ano Flexibility Vícejazyčný obsah Ano Add-on Add-on Ano Add-on Add-on URL rewrite Ano Add-on Ano Ano Ano Add-on Moduly Ankety Ano Ano Ano Add-on Add-on Ano Katalog produktů Add-on Ano Add-on Placený Ne Add-on Fórum Ano Add-on Add-on Add-on Add-on Ano Foto galerie Add-on Add-on Add-on Ano Add-on Add-on Interoperabilita RSS Add-on Add-on Add-on Placený Add-on Add-on XHTML validita Ano Ne Ano Ano Ano Ne Tabulka 1: Srovnání volně šiřitelných redakčních systémů [2] 9
2.2.1.12.4.1.1 Drupal http://www.drupal.org/ Výhody: Objektově orientovaná struktura aplikace Kód vhodný k editaci Jednoduchá tvorba šablon Nevýhody: Složitější instalace Samotný kód není objektově orientovaný Drupal se jeví jako velmi schopný redakční systém, který je možné použít pro firemní prezentaci také je ze všech výše zmíněných systémů pro tyto účely nejpoužívanější. Drupal také disponuje velkou uživatelskou komunitou, což je značnou výhodou při řešení problémů a úprav systému. Za zásadní nevýhodu považuji, že systém není objektově orientován. 2.2.1.22.4.1.2 Joomla http://www.joomla.org/ Výhody: Velmi populární systém, Široká komunitní podpora Mnoho uživatelských rozšíření Jednoduchá instalace Nevýhody: Složitá architektura Limitovaná možnost správy uživatelských práv Vyšší systémová náročnost Joomla je velmi rozšířený redakční systém, především ale pro osobní stránky a prezentace. Pro použití v rámci firemních prezentací je využíván podstatně méně. Předpokládám, že je to především díky složité architektuře celého systému, která značně znesnadňuje případné úpravy, které jsou pro firmy důležité.. 2.2.1.32.4.1.3 Mambo http:// mambo-foundation.org/ Formatted: No underline, Font color: Auto, Czech 10
Výhody: Systémově nenáročný Nevýhody: Méně rozšíření Menší komunita Mambo bych označil za zjednodušenou verzi CMS Joomla jednodušší architektura, méně rozšíření a menší komunita. Mambo je také velmi často používáno pro firemní účely, z mého pohledu je jeho nejslabším článkem podpora vícejazyčných prezentací. 2.2.1.42.4.1.4 OpenCMS http://www.opencms.org/ Nevýhody: Platforma Java OpenCMS je založeno na platformě Java, která je bohužel minimálně rozšířená v rámci běžných hostingových programů. Tudíž je nevhodná pro toto využití. 2.2.1.52.4.1.5 WordPress http://wordpress.org/ Nevýhody: Nejedná se o plnohodnotné CMS, ale spíše o blogovací systém Velmi rozšířený systém, bohužel vzhledem k jeho zaměření je taktéž nevhodný. 2.2.1.62.4.1.6 Xoops http://www.xoops.org/ Výhody: Důraz na bezpečnost a stabilitu Integrace Frameworku PHP Pear Nevýhody: Špatná podpora hezkých URL (mod rewrite) Xoops se jeví jako velmi zajímavé řešení. Z výše zmíněných systémů je pravděpodobně nejméně používaný. Jeho Nnevýhodou Xoops je opět horší podpora vícejazyčných 11
prezentací. Xoops také často využívá přesměrování, která mohou mást roboty internetových vyhledávačů. 2.2.22.4.2 Volně šiřitelné redakční systémy - shrnutí Z volně šiřitelných systémů se jako nejvhodnější jeví CMS Drupal, který nabízí relativně jednoduché přizpůsobení, rozsáhlou komunitu a množství rozšíření. Za společnou nevýhodu, kterou považuji za celkem zásadní u představených CMS vidím nevyužití některého z hlavních, komplexnějších PHP frameworků, který by značně ulehčil další rozšiřování aplikace. Formatted: No underline, Font color: Auto, Czech 2.2.32.4.3 Komerční redakční systémy Jak je zřejmé, Uu komerčních systémů není běžně dostupný zdrojový kód, budu tedy vycházet z jejich demoverzí uvedených na oficiálních stránkách vývojáře. Ze stejného důvodu se nebudu nijak věnovat programové struktuře. Pro srovnání jsem volil systémy dle stránek, na kterých byly nasazeny a dle pozic, v jakých byli nalezeny internetovým vyhledávačem Google. Bohužel většina komerčně nabízených systémů nenabízí veřejně dostupnou testovací verzi. Většinou je dostupné pouze omezená demo verze nebo je nutné zažádat o povolení přístupu. Z tohoto důvodu jsem Pproto zvolil byly vybírány pouze 2 systémy, které umožňující přímé vyzkoušení zdarma. 12
Systém Aitom InstantWeb Jazyk PHP PHP Databáze MySQL - Cena Na dotaz 9990,- Modulární Ano Ano Bezpečnost SSL login Ano Ano SSL prohlížení Ano Ano Potvrzení emailu - - Ověřovací kódy (anti-spam) - Ne Podpora Dokumentace Ano Ano Komunitní portál Ne Ne Jednoduchost užití WYSIWYG editor Ano Ano Změna velikosti obrázků - Ano Správa souborů Ano Ne Zip archivy - - Vícejazyčné rozhraní Ano Ne Flexibility Vícejazyčný obsah Ano Ne URL rewrite Ano Ano Moduly Ankety Ano Placený Katalog produktů Ne Placený Fórum Ne Ne Novinky Ano Ano Foto galerie Ano Ne Interoperabilita RSS Ne Ne XHTML validita Ne Ne Tabulka 2: Srovnání komerčních redakčních systémů 2.2.3.12.4.3.1 Aitom http://www.aitom.cz/ 13
Výhody: Ucelené řešení Propracované Nevýhody: Nepřehledná administrace Ukázková prezentace působí velmi solidním dojmem, bohužel administrační rozhraní systému mi přišlo nepříliš zdařilé. 2.2.3.22.4.3.2 InstantWeb http://www.instantweb.cz Nevýhody: Chybí podpora vícejazyčných stránek Málo možností administrace Vzhled prezentace nepůsobí profesionálním dojmem, avšak administrace a její struktura vypadá zdařile. Bohužel během testování administračního rozhraní se vyskytovali neošetřené chyby v PHP. 2.2.42.4.4 Komerční redakční systémy shrnutí 2.3 Komerčních redakčních systémů je na trhu obrovské množství lišící se zaměřením, složitostí a v neposlední řadě uživatelskou podporou. Z mnou testovaných systémů bych si pravděpodobně pro své účely nezvolil ani jeden, neboť nedisponují kvalitami, které hledám. Formatted: Normal 2.42.5 Přínos mnou navrhovaného systému Mnou navrhovaný systém bude dbát jak především na programovou část, kde bude využívat logické MVC struktury, vhodné k pozdějším úpravám, tak i adresářové struktury pro větší přehlednost. takbudu dbát také na část uživatelskou, kde se vynasnažímbudu snažit o co největšíyšší uživatelskou přívětivost, jednoduchost a logiku a smysluplnost navigace, kteréá nebudoue na úkoromezovat funkčnost celéhoi systému. Systém musí být bude zaměřen na vícejazyčnou prezentaci a bude tak také navrhnut,. Toto řešení umožní unadněníaby byla práce s jednotlivými jazykovými verzemi. co nejjednodušší. Dalším Hlavním přínosem mého systému bude využití některého ze známých a používaných frameworků, což značně ulehčí jeho další rozšiřovaní a úpravy. 14
15
3 Návrh řešení 3.1 Výběr technologie Od vzniku internetu vzniklo mnoho webových technologií umožňujících vývoj aplikací. Mezi nejrozšířenější patří ASP.NET (Microsoft), JSP (SUN, dnes již spadající pod spol. Oracle) a PHP (open-source). Především pak jazyk PHP je díky své jednoduchosti a neustávajícím vývoji jednoznačně nejrozšířenější. Mezi databázovými systémy jsou nejrozšířenějšími MySQL a PostgreSQL. Jako technologii pro svůj systém jsem vzhledem k rozšířenosti zvolil právě jazyk PHP a databázi MySQL. Zároveň však systém bude připraven na využití i jiného databázového systému. Dbáno bude na také na bezpečnost systému. 3.1.1 PHP Serverový open-source skriptovací jazyk, který se poprvé objevil v roce 1995 a byl přímo vytvořen za účelem tvorby dynamických webových stránek. Jazyk byl vytvářen s důrazem na rychlost a jednoduchost, díky čemuž rychle získal na oblibě. Během dlouhého vývoje se jazyk vyvinul z jednoduchého skriptovacího jazyka určeného především pro vývoj osobních stránek (PHP zkratka původně znamenající Personal Home Page Osobní domácí stránka), na velmi komplexní objektově orientovaný programovací jazyk vhodný pro využití i pro náročnější aplikace. 3.1.2 MySQL MySQL je nejrozšířenější open-source relační databázový systém (RDBMS) opět optimalizovaný především na vysokou rychlost, bohužel za cenu některých zjednodušení, která jsou ale v posledních letech doplňována. MySQL podporuje také cizí klíče (foreign keys) pro tabulky typu InnoDB, které bud využívat, což zajišťuje další ochranu konzistence dat. 3.23.1 Aplikace Systém bude vyvíjen modulárně, tj. bude obsahovat společné jádro zajišťující základní společné funkce a především pak interakci jednotlivých modulů. a moduly, zajišťující samotnou funkčnost aplikace. Společné jádro aplikace bude zajišťovat umožňovat práci jednotlivých modulů, načítání překladů a lokále aplikace, URL routování, cachování, zobrazení a v neposlední řadě nastavení aplikace. Veškerou ostatní funkčnost budou zajišťovat jednotlivé moduly. 16
Klientská část bude realizována pomocí XHTML, CSS, JAVASCRIPTu a případně AJAXu, bude dodržovat standardy a bude podporovat zobrazení ve všech moderních majoritních v současnosti používaných prohlížečích Internet Explorer (verze 6 a vyšší), Mozzila Firefox (verze 3 a vyšší), Opera (verze 9 a vyšší), Google Chrome a Safari. 3.33.2 Moduly V základní verzi mnou navrhovaného CMS bych chtěl realizovat následující moduly, které jsou pro činnost aplikace nezbytné a dále prezentační modul pro publikaci obsahu.z mého pohledu a průzkumu nejčastěji vyžadovány. Všechny moduly budou podporovat vícejazyčné zobrazení. Každý modul bude mít zvlášť prezentační a administrační část. Zároveň může modul umožňovat využití jen částečných zobrazení v rámci celé aplikace. 3.3.13.2.1 Základní moduly nutné pro chod aplikace Moduly poskytující základní funkčnost redakčního systému. 3.3.1.13.2.1.1 Uživatelé Modul pro správu uživatelů aplikace, v základní verzi pouze uživatelé s přístupem do administrace. Možnost rozšíření o registraci uživatelů v případě, že to aplikace bude vyžadovat. Administrace: přidání uživatele, editace, možnost dočasné deaktivace účtu, zamezení přístupu 3.3.1.23.2.1.2 Oprávnění Modul pro správu oprávnění. Bude definovat přístup k jednotlivým částem systému a oprávnění k jednotlivým akcím. Jednotlivá oprávnění budou přiřazována uživatelským skupinám. Administrace: vytvoření skupiny, přiřazení/odebrání práv skupině 3.3.1.33.2.1.3 Jazyky Modul pro správu jazyků aplikace. Možnost přidání/odebrání jazyka, ve kterém bude možné CMS využívat a pro který budeme moci v jiných modulech vytvářet jazykové mutace. Administrace: přidání jazykau, odstranění 3.3.1.43.2.1.4 Navigace Modul pro správu navigace webové prezentace, umožňující víceúrovňové menu odkazující na různé moduly aplikace. 17
Administrace: přidání položky do menu, změna pořadí, odstranění položky Zobrazení: jednoúrovňové menu se zobrazením sub-menu nebo víceúrovňové DHTML menu 3.3.23.2.2 Standardní moduly 3.3.2.13.2.2.1 Stránky Hlavní modul pro zobrazování aplikace, umožňující vytvářet jednotlivé informační stránky. Součástí bude WYSISWYG editor pro formátování stránky. Administrace: přidání stránky, editace, správa jazykových verzí, možnost skrytí stránky z obsahu viditelného pro uživatele Zobrazení: standardní HTML zobrazení 3.3.33.2.3 Rozšiřující moduly Následující moduly by mohli rozšiřovat funkčnost a možnosti mnou navrhovaného systému v blízké budoucnosti. 3.3.3.13.2.3.1 Správa souborů Modul umožňující nahrávat a organizovat soubory pro využití v prezentaci. Administrace: nahrání souboru do složky, přesun, smazání 3.3.3.23.2.3.2 Foto galerie Modul zajišťující správu fotografií. Jednotlivé fotografie budou organizovány do galerií. Ty pak budou představovat jednotlivé prezentační části. Uživatel bude moci provádět základní úpravy obrázku (změna rozlišení). Administrace: přidání galerie, přidání obrázku, úprava obrázku, možnost skrytí galerie/obrázku z obsahu viditelného uživateli Zobrazení: standardní HTML zobrazení, využití javascript 3.3.3.33.2.3.3 Novinky a akce Upozorňování na probíhající akce a novinky. Administrace: přidání novinky, editace, správa jazykových verzí, možnost skrytí novinky z obsahu viditelného pro uživatele Zobrazení: standardní HTML zobrazení 3.3.3.43.2.3.4 Newsletter 18
Modul pro správu hromadného rozesílání reklamních a promočních akcí, upozornění uživatelům. Umožňuje přidání a odebrání jak registrovaných tak neregistrovaných uživatelů. Administrace: tvorba newsletteru, rozesílání všem/vybraným uživatelů (například na základě preferované jazykové verze) Zobrazení: možnost zařadit/odhlásit se do newsletteru vyžaduje autorizaci emailem 3.3.3.53.2.3.5 Ankety Modul pro výzkum názoru návštěvníků stránek. Administrace: tvorba anket, editace, archivace Zobrazení: možnost hlasovat v anketách 3.3.3.63.2.3.6 Katalog produktů Modul umožňující představit zákazníkovi firmou nabízené produkty, případně vytvořit poptávku na tyto produkty. Bude umožňovat správu jednotlivých kategorií a podkategorií a produktů. Modul bude navrhován tak, aby bylo jednoduché přidání parametrů ke každému produktu. Jako moduly rozšiřující tento by se dal uvažovat elektronický obchod, případně skladový modul. Administrace: přidávání, editace produktů, správa kategorií 3.3.3.73.2.3.7 Diskusní fórum Využití tohoto modulu by mohlo být například pro podporu jednotlivých výrobků, diskuzi o nich. Umožňuje spravovat kategorie, příspěvky a uživatele. V rámci fóra budou mít uživatelé přiřazeny role (například moderátor diskuze). 3.3.3.83.2.3.8 Reklamace/technická podpora pro zákazníky Modul umožňující zákazníkům zadávat reklamace/jiné technické problémy. Umožňuje zákazníkům kontaktovat uživatelskou podporu, sledovat vývoj řešení problému. 3.43.3 Bezpečnost Bezpečnost je důležitou součástí každé aplikace. Samozřejmostí je bude tedy ochrana před běžnými útoky jako SQL injection, session stealing a XSRF/CSRF (Cross-site request forgery). 3.4.13.3.1 SQL injection 19