PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITY PALACKÉHO KATEDRA INFORMATIKY
BAKALÁŘSKÁ PRÁCE
Aplikace pro jednoduchou tvorbu webových stránek mezinárodních konferencí
2011
Petr Sommer
Anotace Mezinárodní konference potřebují pro svou organizaci a propagaci webové stránky. Webová aplikace, výstup této bakalářské práce, dává organizátorům konference jednoduché prostředí, ve kterém lze vytvářet a aktualizovat webové stránky, evidovat příspěvky a sestavovat z nich program konference. Informace je možné prezentovat ve více jazykových verzích. Aplikace je modulární a lze ji v případě potřeby rozšiřovat o další funkce. Pro vývoj byl použit programovací jazyk PHP a databázový systém MySQL.
Velice děkuji vedoucímu práce panu RNDr. Miroslavu Kolaříkovi, Ph.D. za jeho odborné rady, trpělivost a připomínky při tvorbě této bakalářské práce.
Obsah 1. Úvod 1.1. Zadání bakalářské práce . . . . . . . . . . . . . . . . . . . . . . .
8 8
2. Požadavky
9
3. Uživatelská příručka 3.1. Instalace . . . . . . . . . . . . . . . . . 3.1.1. Úprava konfiguračních souborů 3.1.2. Vytvoření FTP připojení . . . . 3.1.3. Kopírování aplikace na server . 3.1.4. Nastavení práv k adresářům . . 3.1.5. Import databáze . . . . . . . . 3.2. Registrace . . . . . . . . . . . . . . . . 3.2.1. Účet administrátora . . . . . . 3.3. Přihlášení . . . . . . . . . . . . . . . . 3.4. Moduly . . . . . . . . . . . . . . . . . 3.4.1. Rozcestník . . . . . . . . . . . . 3.4.2. Uživatelé . . . . . . . . . . . . . 3.4.3. Skupiny . . . . . . . . . . . . . 3.4.4. E-maily . . . . . . . . . . . . . 3.4.5. Šablony e-mailů . . . . . . . . . 3.4.6. Organizátoři . . . . . . . . . . . 3.4.7. Organizační pozice . . . . . . . 3.4.8. Pozvaní přednášející . . . . . . 3.4.9. Program konference . . . . . . . 3.4.10. Mezičasy . . . . . . . . . . . . . 3.4.11. Příspěvky . . . . . . . . . . . . 3.4.12. Pořadatelské organizace . . . . 3.4.13. Budovy . . . . . . . . . . . . . 3.4.14. Místnosti . . . . . . . . . . . . 3.4.15. Termíny . . . . . . . . . . . . . 3.4.16. Ceník . . . . . . . . . . . . . . 3.4.17. Dokumenty . . . . . . . . . . . 3.4.18. Novinky . . . . . . . . . . . . . 3.4.19. Galerie . . . . . . . . . . . . . . 3.4.20. Stránky . . . . . . . . . . . . . 3.4.21. Šablony . . . . . . . . . . . . . 3.4.22. Jazyky . . . . . . . . . . . . . . 3.4.23. Slovník . . . . . . . . . . . . . . 3.4.24. Správce souborů . . . . . . . . . 3.4.25. Záznamník událostí . . . . . . . 4
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10 10 10 11 12 12 12 14 14 14 14 15 15 16 16 17 17 18 18 19 19 20 21 21 22 22 23 23 24 24 25 27 27 28 29 29
3.4.26. Konfigurace . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.27. Správa databáze . . . . . . . . . . . . . . . . . . . . . . . 4. Programátorská příručka 4.1. Adresářová struktura . . . . . . . . 4.2. Architektura aplikace . . . . . . . . 4.2.1. Třídy . . . . . . . . . . . . 4.3. Databáze . . . . . . . . . . . . . . 4.4. Šablony . . . . . . . . . . . . . . . 4.4.1. Výstupy aplikace do šablony 4.4.2. Kaskádové styly – CSS . . . 4.5. Použité technologie a aplikace . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
29 30 31 31 32 32 33 36 36 37 40
Závěr
42
Conclusions
43
Reference
44
A. Ukázky šablon vzhledu
46
B. Obsah přiloženého DVD
48
5
Seznam obrázků 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Přepnutí do FTP módu . . . . . . . . . Vyplnění přístupových údajů a připojení Nastavení práv k adresáři . . . . . . . . Přihlášení do aplikace Adminer . . . . . Import tabulek a záznamů . . . . . . . . Strom adresářové struktury . . . . . . . Diagram tříd . . . . . . . . . . . . . . . Schéma databáze . . . . . . . . . . . . . Šablona Light Purple . . . . . . . . . . . Šablona Dark Gray . . . . . . . . . . . .
6
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
11 11 12 13 13 31 34 35 46 47
Seznam tabulek 1. 2. 3. 4. 5. 6. 7.
Výstupy z modulů . . . . . . . . . . . . . . . . . . . . . Formátování datumů a časů . . . . . . . . . . . . . . . . Data o uživateli dostupná v šabloně . . . . . . . . . . . . URL dostupné v šabloně . . . . . . . . . . . . . . . . . . Funkce aplikace dostupné v šabloně . . . . . . . . . . . . Ostatní výstupy aplikace dostupné v šabloně . . . . . . . CSS identifikátory použité v aplikaci a výstupech modulů
7
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
26 28 37 37 37 38 39
1.
Úvod
Vedení mezinárodní konference se musí zabývat vedle řešení běžných organizačních záležitostí také formou komunikace s potencionálními účastníky své připravované akce. Klíčovou roli v propagaci hrají v dnešní době informačních technologií zejména webové stránky. Vytvoření a následné spravování stránek však není jednoduchá záležitost a jsou k tomu potřeba mezi organizátory odborníci z oblasti tvorby webových prezentací. Další možností je nechat si prezentaci vytvořit externí firmou. Cena takových řešení však bývá v některých případech poměrně vysoká. Webová aplikace, která vznikla na základě této práce, přináší organizátorům konference možnost, jak spravovat své webové stránky bez potřeby speciálních znalostí. Její název je eConf. Kromě zveřejňování informací aplikace zjednodušuje organizátorům práci ve více oblastech. Do aplikace se mohou např. registrovat jednotliví zájemci o přednesení příspěvku a sami do ní svůj příspěvek přidat. Organizátoři poté rozhodnou, které příspěvky přijmou a které ne. Příspěvky lze dále rozdělovat do jednotlivých časových bloků a postupně tak tvořit a zveřejňovat program konference. Vše probíhá v přehledném rozhraní, kam se registrovaní uživatelé přihlašují. Aplikace obsahuje mnoho dalších funkcí pro určování výsledné podoby a obsahu webových stránek. K dispozici jsou dva připravené vzhledy stránek, ze kterých si mohou organizátoři vybrat. Aplikace však umožňuje přidávání dalších vzhledů. Protože konference bývají často mezinárodní, další výhodou je vícejazyčnost webových stránek i celého aplikačního rozhraní.
1.1.
Zadání bakalářské práce
Téma česky: Aplikace pro jednoduchou tvorbu webových stránek mezinárodních konferencí Téma anglicky: Application for simple creation of web sites for international conferences Zásady pro vypracování: Diplomant vytvoří aplikaci pro jednoduché vytváření webových stránek mezinárodních konferencí. Uživatel si bude moci nejrůznějším způsobem určit výslednou podobu a obsáhlost webu mezinárodní konference, který bude fungovat na základě této aplikace.
8
2.
Požadavky
Pro běh aplikace je nutný webový a databázový server s několika základními požadavky: • PHP, verze 5.2. • MySQL, verze 5. • Vytváření vlastních konfiguračních souborů .htaccess a povolený přepisovací modul mod_rewrite. • Vypnuté konfigurační direktivy safe_mode, magic_quotes_gpc a session.auto_start.
register_globals,
• Aktivovaná rozšíření GD, ICONV, SESSIONS a pro odesílání e-mailů řádně nastavený SMTP server. • Povolené funkce ini_set a error_reporting.
9
3.
Uživatelská příručka
3.1.
Instalace
Pro instalaci je nutné získat od administrátora webového serveru přístupové údaje k FTP účtu (URL serveru, uživatelské jméno a heslo) a přístupové údaje k databázovému serveru (systém, název serveru, uživatelské jméno a heslo). Aplikace potřebuje pro svou instalaci 1 prázdnou databázi, která musí být od administrátora serveru předem vytvořena. 3.1.1.
Úprava konfiguračních souborů
Soubory aplikace určené ke zkopírování jsou umístěny na přiloženém DVD v adresáři bin/app/. Ty si nejprve zkopírujeme do nějaké lokální složky, protože musíme upravit konfigurační soubory config.php a .htaccess (oba jsou umístěné v kořenové složce aplikace a uložené v kódování UTF-8). V souboru config.php nastavíme přístupové údaje k databázi, e-mail administrátora a časovou zónu [3] serveru. Položka DRIVER zůstane nezměněná. Příklad: // Připojení k databázi define("DRIVER", "mysql"); define("HOST", "mysql5"); define("USERNAME", "konference"); define("PASSWORD", "heslo"); define("DATABASE", "konference"); // Kontakt na administrátora define("ADMIN_EMAIL", "
[email protected]"); // Časová zóna define("TIMEZONE", "Europe/Prague"); Soubor .htaccess je třeba upravovat pouze v případě, že aplikace nebude přímo v kořenové složce přiděleného serveru, ale v podadresáři. Pokud je URL webových stránek konference např. http://www.server.cz/adresar/, musíme upravit 3. řádek souboru: RewriteBase / do tvaru RewriteBase /adresar
10
3.1.2.
Vytvoření FTP připojení
Postup připojení k FTP je ukázán pomocí programu FreeCommander [1], verze 2009.02b. Je možné použít jakýkoli jiný podobný souborový manažer s přístupem k FTP a nastavováním práv k adresářům. U některých serverů může být připojení k FTP díky šifrovacím protokolům poměrně složité a je třeba se v případě neúspěchu informovat u administrátora serveru, jaké další detailnější údaje je třeba nastavit. Po spuštění FreeCommanderu přepneme jednu ze stran okna do FTP módu (viz obrázek 1.).
Obrázek 1. Přepnutí do FTP módu Dále pak klikneme na řádek Přidat FTP připojení a vyplníme přihlašovací údaje (viz obrázek 2.). Po kliknutí na Připojit se v manažeru zobrazí v levé či pravé polovině okna adresářová struktura serveru.
Obrázek 2. Vyplnění přístupových údajů a připojení
11
3.1.3.
Kopírování aplikace na server
V jedné straně okna manažera si zobrazíme lokální složku s aplikací, v druhé aktivní FTP připojení k serveru. Všechny soubory a adresáře aplikace pomocí klávesy F5 na server nakopírujeme. 3.1.4.
Nastavení práv k adresářům
U některých adresářů, které již nyní máme na serveru, musíme zvýšit práva přístupu. Jedná se o adresáře files/ (a všechny jeho podadresáře) a temp/ (a všechny jeho podadresáře). U každého z nich po stisknutí kláves ALT+ENTER nastavíme všechna práva (viz obrázek 3.).
Obrázek 3. Nastavení práv k adresáři
3.1.5.
Import databáze
Instalaci dokončíme vytvořením tabulek v přidělené databázi. To provedeme importem souboru s příslušnými příkazy. Webovou aplikaci Adminer [5], kterou pro import použijeme, nalezneme v adresářové struktuře aplikace. V prohlížeči si zobrazíme URL (použitá doména je uvedena pouze jako příklad): http://www.server.cz/library/adminer/ Po spuštění Admineru vyplníme přihlašovací údaje k databázovému serveru (viz obrázek 4.). Systém (často MySQL nebo MySQL 5 ), název serveru (často localhost), uživatelské jméno a heslo.
12
Obrázek 4. Přihlášení do aplikace Adminer Jakmile dojde k přihlášení, tak vybereme v úvodní tabulce přidělenou databázi. Kliknutím na odkaz SQL příkaz lze následně ve spodní části stránky vybrat k importu soubor s příkazy (viz obrázek 5.). Soubor import.sql.gz je umístěn na přiloženém DVD v adresáři bin/dtb/. Import provedeme stisknutím tlačítka Provést.
Obrázek 5. Import tabulek a záznamů Naplněním databáze je instalace aplikace dokončena. Po zadání webové adresy konference do prohlížeče se zobrazí webové stránky, které je možné následně aplikací upravovat, viz dále.
13
3.2.
Registrace
Všichni lidé, kteří budou aplikaci obsluhovat, se musí nejprve registrovat. Po vyplnění všech potřebných údajů dojde k vytvoření nového uživatelského účtu. Vytvoření účtu je podmíněno tím, že zvolené přihlašovací jméno nepoužívá jiný registrovaný uživatel. Po vytvoření není účet ihned aktivní. Je třeba, aby registraci schválili a účet aktivovali k tomu oprávnění uživatelé. 3.2.1.
Účet administrátora
Aplikace má jeden skrytý administrátorský účet, který slouží k prvotnímu přihlášení. Účet není uveden v žádném výpisu uživatelů a lze jej pouze editovat. • Uživatelské jméno: administrator • Heslo: admin (nutné po prvním přihlášení změnit)
3.3.
Přihlášení
Pokud má uživatel úspěšně vytvořený a aktivovaný účet, může se po zadání svého uživatelského jména a hesla přihlásit. Uživatelské jméno i heslo jsou při přihlašování citlivé na velikosti písmen, proto je nutné v případě neúspěchu zkontrolovat, jestli nemá uživatel omylem aktivní klávesu CAPS LOCK. Jestli uživatel zapomněl ke svému účtu heslo, může si nechat vygenerovat nové přes odkaz Zapomenuté heslo. Tam vyplní své uživatelské jméno a nové heslo mu bude zasláno na e-mail uvedený u jeho účtu. Přihlášení uživatele je aplikací uchováváno po dobu 8 hodin. Pokud se během té doby uživatel sám neodhlásí přes odkaz Odhlásit, nebo nezavře prohlížeč, dojde k odhlášení z bezpečnostích důvodů automaticky. V takovém případě však bude uživatel po novém přihlášení přesměrován na původní část aplikace, ve které byl před odhlášením. Po přihlášení se aplikace přepne do jazyka, který má uživatel nastaven ve svém účtu.
3.4.
Moduly
Celá aplikace se dělí na jednotlivé menší části – moduly. Každý z modulů se týká jedné určité oblasti správy aplikace. Moduly dále uživateli zpřístupňují své elementární akce, např. přehledy záznamů, přidávání a odebírání záznamů atd. Následující popis jednotlivých modulů zahrnuje všechny definované akce, některé z nich však nemusí být jednotlivým uživatelům kvůli omezeným oprávněním přístupné.
14
3.4.1.
Rozcestník
Rozcestník slouží jako přehled všech hlavních modulů. Dělí se do tří oblastí – Lidé, Konference a Aplikace. Rozcestník je hlavní modul, na který je uživatel přesměrován po přihlášení a je přístupný odkazem ze všech částí aplikace. 3.4.2.
Uživatelé
Modul Uživatelé tvoří jeden ze základů celé aplikace. Můžeme zde provádět kompletní správu uživatelských účtů. Aby se mohl uživatel po registraci přihlásit, je nutné jeho účet aktivovat. Informační e-mail o registraci nového uživatele je organizátorům zaslán na defaultní e-mail nastavený v modulu Konfigurace. U každého účtu je evidováno, jestli uživatel za svou účast na konferenci zaplatil. Tuto položku lze měnit příslušným odkazem u každého účtu. Akce modulu: • Přehled uživatelů Uživatele je možné filtrovat podle jména, příjmení, aktivovaného účtu a zaplacené platby. • Můj účet Přesměrování na detail aktuálního přihlášeného uživatele. • Detail uživatele Bližší informace o účtu. Dále je možné uživateli přímo z detailu poslat e-mail. • Oprávnění Nastavení oprávnění uživateli. Dochází ke sjednocení s oprávněními skupin, kterých je uživatel členem. Při nastavování oprávnění je třeba brát zřetel na to, že některé moduly jsou podřízené jiným a že modul je vždy přístupný z rozcestníku pouze skrz svou hlavní akci, např. přehled záznamů. • Aktivace/Deaktivace účtu • Zaplatil/Nezaplatil • Nový uživatel Po vytvoření nového uživatele nedochází k odeslání registračního e-mailu. Účet je také ihned aktivován. • Smazání uživatele Smazání uživatele nemá za následek smazání jeho příspěvků. Dojde k odebrání uživatele z autorů příspěvku, organizátorů, pozvaných přednášejících a členů skupin. 15
3.4.3.
Skupiny
Z důvodu efektivní správy celé aplikace je nutné, aby bylo možné uživatele rozdělit do více skupin. Zjednoduší se tak nastavování společných oprávnění přístupu k jednotlivým částem aplikace a umožní to posílání hromadných e-mailů členům skupiny. Modul obsahuje dvě defaultní skupiny, které nelze odstranit. Lze jim však změnit jejich název. První defaultní skupinou je Administrators. Její členové mají veškerá možná oprávnění. Oprávnění této skupiny nelze měnit. Druhou defaultní skupinou je Everyone. Jejími členy jsou vždy všichni uživatelé a nelze je tedy odebírat či přidávat. Akce modulu: • Přehled skupin • Přidání člena Pokud byl použit odkaz u konkrétní skupiny, je příslušná skupina předvyplněna. Při držení klávesy CTRL je možný výběr více uživatelů naráz. • Detail skupiny Detail skupiny obsahuje výpis jejích členů. Ty je možné vybírat a hromadně je ze skupiny odebírat nebo jim poslat hromadný e-mail. • Oprávnění Nastavení oprávnění k jednotlivým modulům a jejich akcím. Oprávnění přebírají všichni členové skupiny. Dochází ke sjednocení s oprávněními, která mají nastavena přímo jednotliví uživatelé. • Nová skupina • Editace skupiny • Smazání skupiny Smazání skupiny nemá za následek smazání jednotlivých uživatelů. 3.4.4.
E-maily
Modul umožňuje poslání e-mailu jednomu uživateli i více uživatelům naráz. Odesílatel e-mailu je vždy předvyplněn e-mailem aktuálně přihlášeného uživatele a nelze jej z bezpečnostních důvodů měnit. Při odeslání dochází k překladu předmětu zprávy do příslušného jazyka každého adresáta. Způsob a průběh překladu je popsán dále v textu u modulu Slovník. E-mail obsahuje více druhů zpráv. Defaultní zprávu a zprávy pro každou jazykovou verzi. Pokud není některá z jazykových verzí zprávy vyplněna, je nutné, aby byla vyplněna zpráva defaultní. Ta je odeslána uživatelům, kteří by měli svou 16
jazykovou verzi zprávy prázdnou. Pokud je vyplněna pouze defaultní zpráva, bude odeslána všem vybraným adresátům. Akce modulu: • Poslat e-mail 3.4.5.
Šablony e-mailů
Některé e-maily se často opakují. Aby se odesílateli tato činnost usnadnila, je možné si zde texty e-mailů zaznamenat pro pozdější použití. Také se zde vytváří šablony e-mailů, které se odesílají uživateli po registraci a po aktivaci jeho účtu. Při vybrání šablony k odeslání dojde k přesměrování do modulu E-maily a předvyplnění předmětu a příslušných jazykových verzí zpráv. Tento modul náleží pod modul E-maily a není pro uživatele přístupný přímo z Rozcestníku. Přístup je tak podmíněn držením oprávnění k akci Poslat e-mail rodičovského modulu. Akce modulu: • Přehled šablon e-mailů Je zobrazena vždy pouze jazyková verze zprávy odpovídající aktuálnímu zvolenému jazyku aplikace. • Detail šablony e-mailu • Nová šablona e-mailu • Editace šablony e-mailu • Smazání šablony e-mailu 3.4.6.
Organizátoři
Organizátoři konference se ve většině případů dělí do více pozic podle oblastí, které mají ve své kompetenci. Souhrnně jsou v aplikaci označení jako Organizátoři. Dělí se na jednotlivé pozice, např. programový výbor, technické zabezpečení atd. Každé pozici zde lze přiřadit uživatele, který pozici vykonává. Jednu pozici může vykonávat více uživatelů. U každého lze dále jeho pozici specifikovat, např. pokud zastává funkci předsedy, místopředsedy atp. Organizátory lze pomocí klíčového slova zveřejnit na webové stránce konference (viz tabulka 1.). Členové jsou ve výstupu na webovou stránku vypisováni u příslušné pozice abecedně dle příjmení vzestupně. Akce modulu: • Přehled organizátorů 17
• Přidání člena Je možné přidat stejného uživatele vícekrát, nikoli však na stejnou pozici. • Editace člena • Odebrání člena Odebrání člena nemá za následek smazání daného uživatele. 3.4.7.
Organizační pozice
Organizátoři se dělí na jednotlivé pozice zastávané uživateli. Tento modul náleží pod modul Organizátoři a není pro uživatele přístupný přímo z Rozcestníku. Přístup je tak podmíněn držením oprávnění k akci Přehled organizátorů rodičovského modulu. Akce modulu: • Přehled organizačních pozic Ikonami šipek lze měnit pořadí výpisu pozic ve výstupu modulu Organizátoři na webovou stránku. • Nová pozice Dochází k překladu názvu pozice při výstupu na webové stránky. • Editace pozice • Smazání pozice 3.4.8.
Pozvaní přednášející
Vedle přednášejících, kteří se na konferenci přihlašují sami, bývají někteří na konferenci na pozvání organizátorů. I tito přednášející musí mít v aplikaci vytvořený účet – buď se sami registrují anebo jim účet organizátoři vytvoří. Tito uživatelé mohou vytvářet své příspěvky stejným způsobem jako běžní uživatelé. Pozvané přednášející lze pomocí klíčového slova zveřejnit na webové stránce konference (viz tabulka 1.). Zveřejňují se informace o zaměstnavateli, zemi původu, o autorovi a výpis příspěvků autora. Akce modulu: • Přehled pozvaných přednášejících Ikonami šipek lze měnit pořadí výpisu pozvaných přednášejících ve výstupu modulu na webovou stránku. • Přidání přednášejícího Nelze přidat uživatele, který je již jako pozvaný přednášející evidován. • Odebrání přednášejícího Smazání záznamu nemá za následek smazání daného uživatele. 18
3.4.9.
Program konference
Program konference se skládá z časových bloků, do kterých jsou přiřazeny jednotlivé příspěvky nebo jiné události, tzv. mezičasy. Program konference lze pomocí klíčového slova zveřejnit na webové stránce konference (viz tabulka 1.). Příspěvky se statusem Zrušeno mají tento svůj status v programu konference zobrazen. Sloty jsou ve výpisu řazeny podle datumu a času vzestupně. Je vypsán datum a pod ním všechny bloky daného dne s uvedením času konání. Akce modulu: • Program konference • Detail slotu • Nový slot Datum slotu musí být v uvedeném tvaru. Při výběru datumu pomáhá po kliknutí na položku názorný kalendář. Čas od musí předcházet nebo být roven času do. Výběr místnosti konání není povinný. Jako obsah slotu je třeba vybrat některý z příspěvků nebo mezičasů. Nelze vybrat oboje. Pokud je vyplněná poznámka, tak se zobrazuje v programu konference u příslušného slotu. Organizátoři mohou skrz ní informovat o důležitých změnách týkající se daného příspěvku či mezičasu. • Editace slotu • Smazání slotu Smazání slotu nemá za následek smazání přiřazeného příspěvku nebo mezičasu. 3.4.10.
Mezičasy
Vedle příspěvků se v programu konference objevují i jiné události, zde souhrnně nazvané mezičasy. Jedná se např. o přestávky, snídaně, obědy, přivítání atp. Tento modul náleží pod modul Program konference a není pro uživatele přístupný přímo z Rozcestníku. Přístup je tak podmíněn držením oprávnění k akci Přehled slotů rodičovského modulu. Akce modulu: • Přehled mezičasů • Nový mezičas Dochází k překladu popisu mezičasu při výstupu na webové stránky. 19
• Editace mezičasu • Smazání mezičasu 3.4.11.
Příspěvky
Příspěvky jsou klíčovou oblastí celé konference. Registrovaní uživatelé mohou vytvářet své příspěvky, o kterých následně organizátoři rozhodnou, jestli je pro svou konferenci přijmou či je odmítnou. K tomu slouží položka Status. Vytváření nových příspěvků a jejich editace je omezena nastavením příslušných termínů v modulu Konfigurace. Uživatel, který příspěvek vytvořil, je u něj automaticky uveden jako jeho autor. K příspěvku mohou jeho autoři z ostatních registrovaných uživatelů přidávat další autory. Všichni autoři mají k příspěvku úplný přístup a mohou jej editovat – měnit název, abstract, přidávat a odebírat ostatní autory, přidávat a odebírat dokumenty. Pro dané akce není potřeba účtům uživatelů nastavovat žádná další speciální oprávnění. Autoři příspěvku nemají defaultně právo ke smazání svých příspěvků. Autory lze hromadně odebírat nebo jim hromadně poslat e-mail. Jak přesně chápat termín Autoři záleží na organizátorech konference a na tom, jak to v pokynech pro vytváření nových příspěvků vysvětlí. Ve většině případů se však bude jednat pouze o přednášející autory. Pro další autory příspěvku, kteří však nejsou registrovaní nebo se konference nebudou účastnit, slouží při vytváření nebo editaci textová položka Spoluautoři. U dokumentů přidaných k příspěvku je možné rozhodnout, jestli budou zveřejněny ve výpisech na webové stránce. To je však podmíněno nadřazeným povolením Zveřejnění dokumentů příspěvku v modulu Konfigurace. Různé přehledy příspěvků lze pomocí klíčových slov zveřejnit na webové stránce konference (viz tabulka 1.). V detailech uživatelů ve všech výstupech se zveřejňují pouze jejich přijaté příspěvky. Akce modulu: • Přehled příspěvků Příspěvky je možné filtrovat podle názvu, statusu a autorů. • Moje příspěvky Výpis příspěvků, u kterých je přihlášený uživatel uvedený jako autor. • Detail příspěvku • Přidání autora • Přidání dokumentu • Nový příspěvek 20
• Editace příspěvku • Změna statusu U příspěvků je možné nastavit status Nerozhodnutý (defaultní po vytvoření příspěvku), Přijatý, Odmítnutý nebo Zrušený. • Smazání příspěvku Při smazání příspěvku dojde ke smazání všech jeho dokumentů. 3.4.12.
Pořadatelské organizace
Modul eviduje pořadatelské organizace konference včetně bližších kontaktních informací. Přehled organizací lze pomocí klíčového slova zveřejnit na webové stránce konference (viz tabulka 1.). Akce modulu: • Přehled pořadatelských organizací Ikonami šipek lze měnit pořadí výpisu organizací ve výstupu modulu na webovou stránku. • Detail organizace • Nová organizace • Editace organizace • Smazání organizace 3.4.13.
Budovy
O budově nebo budovách, ve kterých se konference koná, aplikace eviduje jejich adresu, ale také místnosti, které jsou pro konferenci určeny. Budovy lze pomocí klíčového slova zveřejnit na webové stránce konference (viz tabulka 1.). Akce modulu: • Přehled budov Ikonami šipek lze měnit pořadí výpisu budov ve výstupu modulu na webovou stránku. • Detail budovy Detail obsahuje výpis místností budovy. • Nová budova
21
• Zobrazení na mapě Zobrazení adresy budovy na mapě. • Editace budovy • Smazání budovy Při smazání budovy dojde ke smazání také všech místností budovy. 3.4.14.
Místnosti
Každá z místností se nachází v určité budově, kterou specifikujeme při vytváření. U místnosti můžeme zaznamenat také její vybavení a kapacitu. Organizátoři pak budou moci při sestavování programu konference vybrat dle odhadované návštěvnosti a potřeb autora přednášky přiměřeně velkou a vybavenou místnost. Tento modul náleží pod modul Budovy a není pro uživatele přístupný přímo z Rozcestníku. Přístup je tak podmíněn držením oprávnění k akci Přehled budov rodičovského modulu. Akce modulu: • Přehled místností • Detail místnosti • Nová místnost • Editace místnosti • Smazání místnosti 3.4.15.
Termíny
Při organizaci konference je nutné splnění jisté posloupnosti kroků. Od registrace účastníků, přes ukončení přijímání nových příspěvků až po samotné konání konference. Každý termín je dán svým popisem a datem vypršení. Záznamy v tomto modulu nemají nic společného s několika klíčovými termíny v modulu Konfigurace. Tam se jedná o skutečné provedení omezení spojených s danými termíny, zde pouze o evidenci a výpis termínů. Termíny lze pomocí klíčového slova zveřejnit na webové stránce konference (viz tabulka 1.). Prošlé termíny jsou značeny přeškrtnutím. Termíny jsou ve výpisu řazeny podle datumu vzestupně. Akce modulu: • Přehled termínů
22
• Nový termín Dochází k překladu popisu termínu při výstupu na webové stránky. Datum vypršení termínu musí být v uvedeném tvaru. Při výběru datumu pomáhá po kliknutí na položku názorný kalendář. • Editace termínu • Smazání termínu 3.4.16.
Ceník
Zájemci o účast na konferenci musí zaplatit různé poplatky. Poplatek je dán svým popisem a částkou. Měna poplatku musí být uvedena spolu s částkou, protože různé měny mají různé způsoby zápisu. Ceník lze pomocí klíčového slova zveřejnit na webové stránce konference (viz tabulka 1.). Akce modulu: • Ceník Ikonami šipek lze měnit pořadí výpisu položek ceníku ve výstupu modulu na webovou stránku. • Nová cena Dochází k překladu popisu ceny při výstupu na webové stránky. • Editace ceny • Smazání ceny 3.4.17.
Dokumenty
Dokumenty se vybírají z adresářové struktury, která je přístupná z modulu Správce souborů. Při vytváření nového dokumentu se po kliknutí na položku Vyberte soubor v novém okně zobrazí tento modul a je možné vybrat existující soubor nebo do některého z adresářů nahrát nový. Dvojklikem na soubor dojde k zavření okna a vyplnění cesty k vybranému souboru. Pokud dojde v modulu Správce souborů ke smazání souboru, který je zde vybrán ke zveřejnění, bude záznam modulu Dokumenty odkazující na tento soubor odstraněn. Dokumenty lze pomocí klíčového slova zveřejnit na webové stránce konference (viz tabulka 1.). Akce modulu: • Přehled dokumentů Ikonami šipek lze měnit pořadí výpisu dokumentů ve výstupu modulu na webovou stránku. 23
• Nový dokument Dochází k překladu názvu dokumentu při výstupu na webové stránky. • Editace dokumentu • Smazání dokumentu Při smazání záznamu nedojde k fyzickému odstranění dokumentu z adresářové struktury. 3.4.18.
Novinky
Novinky slouží ke zveřejňování aktuálních zpráv o konferenci pro návštěvníky. Jsou zpřístupněny ve více jazykových verzích. Pokud nějaká novinka nemá pro některou jazykovou verzi určen žádný text, není ve výpisu dané verze vůbec zobrazena. Novinky jsou návštěvníkům dostupné i ve formě RSS kanálu. Ten je opět odlišný pro každý z jazyků – verze je dána zkratkou jazyka v URL adrese RSS kanálu. Novinky lze pomocí klíčového slova zveřejnit na webové stránce konference (viz tabulka 1.). Novinky jsou ve výstupu řazeny podle datumu sestupně. Akce modulu: • Přehled novinek Ve výpisu je zobrazena vždy pouze jazyková verze odpovídající aktuálnímu zvolenému jazyku aplikace. • RSS • Detail novinky • Nová novinka Datum novinky musí být v uvedeném tvaru. Při výběru datumu pomáhá po kliknutí na položku názorný kalendář. • Editace novinky • Smazání novinky 3.4.19.
Galerie
Webové stránky mají možnost zpřístupnit fotografie z konference nebo místa konání. V modulu se fotografie dělí na jednotlivá alba a do nich je možné přidávat fotografie ve formátu *.jpg. Max. velikost 1 fotografie je 2 MB. Při ukládání fotografií dochází automaticky při zachování poměru stran ke zmenšení rozměrů. U širokých fotografií bude max. šířka 640 px, u vysokých výška max. 500 px. Alba galerie lze pomocí klíčového slova zveřejnit na webové stránce konference (viz tabulka 1.). 24
U alb lze nastavit, jestli jsou veřejná nebo ne. Pouze veřejná alba se zobrazují ve výstupu na webové stránce. Akce modulu: • Přehled alb Ikonami šipek lze měnit pořadí výpisu alb ve výstupu modulu na webovou stránku. • Detail alba Jednotlivé fotografie je možné smazat malým křížkem umístěným vedle náhledu fotografie. • Přidat fotografie Při vybírání fotografií k nahrání je možné vybrat více fotografií naráz při držení klávesy CTRL. • Nové album Dochází k překladu názvu alba při výstupu na webové stránky. • Editace alba • Smazání alba Při smazání alba dojde ke smazání všech jeho fotografií. 3.4.20.
Stránky
Webové stránky konference jsou tvořeny jednotlivými stránkami – záznamy tohoto modulu. Jsou uvedené v hlavním menu, jejich obsah lze editovat, přidávat na ně obrázky, odkazy i výstupy z jednotlivých modulů. Obsah stránek je evidován ve více jazykových verzích. Při editaci konkrétní stránky je třeba nejprve vybrat, která jazyková verze se má zobrazit pro editaci. Editace obsahu stránky probíhá jednoduše přes editor, který je velmi podobný běžným aplikacím na tvorbu dokumentů. Podporuje známé funkce jako jsou změna velikosti a barvy písma, vracení provedených změn atp. Zdrojem souborů pro vkládání obrázků je modul Správce souborů, který se zobrazí v novém okně. Vkládaným obrázkům je možné nastavovat atributy, např. měnit velikost obrázku nebo určit způsob obtékání textem. Pro vložení výstupu některého z modulů slouží nabídka Výstup modulu umístěná pod editorem. Po vybrání příslušného výstupu je do editoru za aktuální místo kurzoru vloženo klíčové slovo (viz tabulka 1.), které daný výstup reprezentuje. Klíčové slovo je možné obklopit jiným obsahem. Skutečný výstup bude na stránce zobrazen až při běžném načtení stránky. U stránek lze určit, jestli má být odkaz na ně uveden v hlavním menu. Dále pak, jestli má být název stránky zobrazen automaticky jako hlavní nadpis stránky nebo jestli se o uvedení nadpisu postará autor stránky při editaci sám. 25
Akce modulu: • Přehled stránek Ikonami šipek lze měnit pořadí výpisu stránek v menu na webové stránce. • Detail stránky • Nová stránka Dochází k překladu názvu stránky při zobrazení v menu. Pro URL je původní název automaticky upraven – místo mezer budou použity pomlčky a bude odstraněna diakritika. • Editace obsahu stránky • Editace nastavení stránky • Smazání stránky Klíčové slovo !-authors-! !-committee-! !-invitedspeakers-! !-conferenceprogram-! !-rejectedpapers-! !-acceptedpapers-! !-undecidedpapers-! !-cancelledpapers-! !-organizations-! !-buildings-! !-deadlines-! !-pricelist-! !-documents-! !-news-! !-gallery-! !-bank-! !-contactform-!
Výstup Autoři příspěvků (přijatých) Organizátoři Pozvaní přednášející Program konference Odmítnuté příspěvky Přijaté příspěvky Nerozhodnuté příspěvky Zrušené příspěvky Pořadatelské organizace Budovy Termíny Ceník Dokumenty (veřejné) Novinky Galerie (veřejná alba) Informace o bance a platbě Kontaktní formulář (odesílá se na defaultní e-mail)
Tabulka 1. Výstupy z modulů
26
3.4.21.
Šablony
Design aplikace a webových stránek je dán šablonou vzhledu. Ty musí být předem připraveny a umístěny do podsložek v adresáři templates/ nacházejícím se v hlavním adresáři aplikace na serveru. V tomto modulu se při přidání nové šablony zadává vedle názvu pouze příslušná cesta k adresáři se šablonou. Aplikace v adresáři očekává soubor index.tpl, který musí být hlavním souborem šablony. Výběr aktivní šablony vzhledu se provádí v modulu Konfigurace. Šablony musí být vytvořeny pomocí šablonovacího systému Smarty [6], verze 3. Po instalaci aplikace jsou k dispozici na výběr dvě připravené šablony (viz příloha A.). Akce modulu: • Přehled šablon • Nová šablona Je prováděna kontrola, jestli příslušná podsložka se šablonou na serveru existuje. • Editace šablony • Smazání šablony Při smazání nedojde k fyzickému odstranění souborů šablony. 3.4.22.
Jazyky
Aplikace umožňuje prezentovat informace ve více jazykových verzích. Jazyky lze přidávat a odebírat. Vícejazyčný obsah se projevuje zejména v modulech Stránky, E-maily, Novinky a Slovník. Akce modulu: • Přehled jazyků • Nový jazyk Při vytváření nového jazyka je nutné mimo jiné specifikovat také formát různých datumů a časů v daném jazyce. Různé formáty lze sestavovat z jednotlivých zástupných znaků (viz tabulka 2.). Jedná se o běžné zástupné znaky jazyka PHP používané funkcí date [2] pro formátování. • Editace jazyka • Smazání jazyka Smazání jazyka má za následek smazání všech příslušných překladů z modulu Slovník a dalších modulů s vícejazyčným obsahem. Po smazání jazyka je všem uživatelům, kteří měli tento jazyk nastaven ve svém účtu, změněn jazyk na defaultní systémový. Aktuální defaultní jazyk systému nelze smazat. Nelze také smazat jazyk, pokud již modul žádný další jazyk neobsahuje. 27
Značka d D j l N w z F m M n Y y a A g G h H i s
Popis Číslo dne v měsíci s poč. nulou Den v týdnu, 3 znaky Číslo dne v měsíci bez poč. nuly Den v týdnu Číslo dne v týdnu (ISO-8601) Číslo dne v týdnu Den roku Měsíc v roce Číslo měsíce v roce s poč. nulou Měsíc v roce, 3 znaky Číslo měsíce v roce bez poč. nuly Rok, 4 čísla Rok, 2 čísla Odpoledne/dopoledne, malá písmena Odpoledne/dopoledne, velká písmena Hodiny bez poč. nuly (12 hodin) Hodiny bez poč. nuly (24 hodin) Hodiny s poč. nulou (12 hodin) Hodiny s poč. nulou (24 hodin) Minuty s poč. nulou Sekundy s poč. nulou
Příklad 01 až 31 „Monÿ až „Sunÿ 1 až 31 „Sundayÿ až „Saturdayÿ 1 (pondělí) až 7 (neděle) 0 (neděle) až 6 (sobota) 0 až 365 „Januaryÿ až „Decemberÿ 01 až 12 „Janÿ až „Decÿ 1 až 12 „2011ÿ „11ÿ „amÿ nebo „pmÿ „AMÿ nebo „PMÿ 1 až 12 0 až 23 01 až 12 00 až 23 00 až 59 00 až 59
Tabulka 2. Formátování datumů a časů
3.4.23.
Slovník
Slovník obsahuje klíčová slova a jejich překlady do jednotlivých jazyků. Pokud je za klíčové slovo brána celá věta, překládá se jako celek, nikoli její jednolivá slova. Když aplikace provádí překlad a ve slovníku příslušný překlad chybí, je zobrazeno původní hledané slovo. Hledané slovo musí pro úspěšný překlad přesně odpovídat evidovanému slovu. Nelze vytvořit klíčové slovo, které již slovník obsahuje. Všechny texty použité v uživatelském rozhraní aplikace jsou klíčová slova a jejich překlad je tedy možné ve slovníku ovlivnit. Tento modul náleží pod modul Jazyky a není pro uživatele přístupný přímo z Rozcestníku. Přístup je tak podmíněn držením oprávnění k akci Přehled jazyků rodičovského modulu. 28
Akce modulu: • Slovník • Nové klíčové slovo • Editace klíčového slova • Smazání klíčového slova 3.4.24.
Správce souborů
Aby bylo možné na webové stránce zveřejňovat obrázky a různé dokumenty, je třeba je nejprve na server umístit. Modul umožnuje přidávání nových souborů, mazání souborů, vytváření a mazání podadresářů. Soubory z těchto adresářů využívá při editaci obsahu modul Stránky. Vybírá z nich např. při vkládání obrázků nebo vytváření textových odkazů na soubory. Dále se odtud vybírají soubory pro modul Dokumenty. Moduly Galerie, Příspěvky a Šablony používají na serveru pro své soubory jinou část adresářové struktury, která není z tohoto modulu přístupná. 3.4.25.
Záznamník událostí
Každá dokončená akce v aplikaci je zaznamenána. Eviduje se popis provedené akce, modul, ve kterém k akci došlo, uživatel, který ji provedl a čas provedení. 3.4.26.
Konfigurace
Konfigurace obsahuje všechny klíčové údaje o konferenci. Název, ročník, místo konání, datum konání, bankovní informace atd. Dále se zde nastavují údaje o aplikaci jako je např. výchozí jazyk, limit počtu záznamů na stránku, defaultní stránka, šablona webové stránky nebo šablony e-mailů zasílaných po registraci nového uživatele a po aktivaci uživatelského účtu. Vybrání šablon e-mailů není povinné. Pokud nejsou vybrány, žádný e-mail se uživateli po daných událostech nepošle. Termíny konce registrace, přidávání příspěvků a změny příspěvků slouží pouze k provedení těchto omezení a nejsou zveřejněny ve výstupu modulu Termíny. Je nutné je tam tedy v případě potřeby uvést znovu. Bankovní informace lze pomocí klíčového slova zveřejnit na webové stránce konference (viz tabulka 1.). Akce modulu: • Konfigurace
29
• Editace konfigurace Dochází k překladu názvu konference a místa konání při výstupu na webové stránky. 3.4.27.
Správa databáze
Správa databáze by měla být přístupná pouze pro administrátory aplikace. Neodbornými zásahy lze nevratně odstranit důležité záznamy pro chod aplikace a webové stránky konference. Pro správu je využívána webová aplikace Adminer [5], kterou tento modul v novém okně spouští.
30
4. 4.1.
Programátorská příručka Adresářová struktura
Soubory a adresáře jsou členěny do hierarchické struktury. Třídy jsou jako samostatné podadresáře umístěny v adresáři classes/. Pomocná data aplikace jako CSS, javascript a ikony se nacházejí v adresáři data/. Adresáře částečně přístupné přímo z aplikace, např. pro moduly Galerie, Správce souborů a Přísvěvky, jsou umístěny pod files/. Externí frameworky a pluginy využívané aplikací se nachází v adresáři library/. Pomocné session, cache a kompilace šablon si aplikace dočasně ukládá do temp/. Šablony vzhledu jsou v templates/. Adresáře files/, temp/ a všechny jejich podadresáře musí mít nastavena úplná práva přístupu (chmod 777).
Obrázek 6. Strom adresářové struktury
31
4.2.
Architektura aplikace
Základem architektury jsou třídy, databáze a šablonovací systém. Instance tříd mezi sebou vzájemně komunikují, reagují na vstupy uživatele a dotazují se databáze o záznamy, případně je vytváří nebo aktualizují. Výsledek je následně sestaven a zobrazen v prohlížeči pomocí šablonovacího systému. 4.2.1.
Třídy
Aplikace je rozdělena do 7 základních a dalších 25 pomocných tříd, které reprezentují jednotlivé moduly. Některé třídy jsou vzájemně propojeny agregací nebo generalizací (viz obrázek 7.). Diagram tříd je zjednodušen a méně důležité metody a atributy nejsou kvůli přehlednosti uvedeny. • econf Hlavní třída, jádro celé aplikace. Její instance spravuje připojení k databázi, zpracovává URL do formy jednotlivých parametrů, načítá základní konfiguraci z databáze, určuje podle parametrů URL jazykovou verzi a vytváří ve svých slotech instanci třídy module nebo page. Po zpracování modulu nebo stránky vytvoří instanci třídy structure, jejíž zpracování má za následek zobrazení příslušného obsahu v prohlížeči. Třída econf je statická a její metody lze používat i v jiných třídách, např. metody vracející požadovanou URL. • module Společná třída pro všech 25 modulů aplikace. Jednotlivé třídy modulů jsou jejími potomky. Metoda process v každém z modulů vybere podle parametrů v URL požadovanou akci, kterou následně zpracuje. Třídy modulů se od sebe liší pouze v metodách na zpracování svých akcí. Všechny ostatní společné metody jsou v rodičovské třídě module. • page Běžná webová stránka z modulu Stránky. Metody instance třídy umožňují nalezení požadované stránky v databázi. Tedy název a také obsah v požadované jazykové verzi. V obsahu stránky provede substituci klíčových slov za příslušné výstupy modulů. • translator Slovník naplněný klíčovými slovy a překlady aktivního jazyka. Ke slovníku přistupují ostatní, pokud chtějí přeložit klíčové slovo metodou translate. Instance třídy je uchovávána v session. Načtení a naplnění slovníku se provádí pro aktivní jazyk z důvodu úspory systémových zdrojů pouze jednou a je udržován dokud není vybrán odlišný jazyk.
32
• message Zpráva zobrazovaná uživateli po provedení akce – potvrzující nebo chybová. Ve slotech se také zaznamenává informace, jestli byla zpráva již zobrazena. Poté je zpráva vymazána. Instance třídy je uchovávána v session, aby byla přístupná i po znovunačtení stránky. • user Aktuální přihlášený uživatel a jeho atributy. Instance třídy je uchovávána v session, aby byla přístupná po celou dobu přihlášení uživatele. • structure Vytvoření instance šablonovacího systému Smarty a souhrn všech dat určených k zobrazení, včetně položek menu, nadpisu, titulku stránky atp. Data jsou do šablon zpřístupněna ve formě proměnných. Dále je zpřístupněna funkce na úpravu formátu datumu a funkce na překlad slova. Po zpracování a naplnění všech proměnných je určená šablona zpracována šablonovacím systémem a výsledek zobrazen v prohlížeči.
4.3.
Databáze
Aplikace pro svůj chod potřebuje 1 databázi typu MySQL. Při instalaci je do ní přes soubor příkazů importováno 29 tabulek. Některé z nich jsou ve vzájemném vztahu. Vztahy jsou typu 1:1, 1:N a přes pomocné tabulky také M:N (např. u členů skupin nebo autorů příspěvků). Část tabulek stojí samostatně. Schéma databáze (viz obrázek 8.) je zjednodušeným přehledem všech tabulek. Tabulky zde obsahují pouze primární a cizí klíče, zbytek atributů (u některých tabulek je jich velké množství) není kvůli přehlednosti uveden. Databázi a tabulky lze spravovat v modulu Správa databáze. Neodborné zásahy mohou způsobit nefunkčnost celé aplikace.
33
econf
Moduly
module
-parameters -language -givenLanguage -saveReferrerUrl -isSystem -module -page -...
users templates rooms recordedevents pricelist permissions papers pages organizations news languages invitedspeakers interludes groups gallery filemanager emails documents deadlines dashboard conferenceprogram committeepositions committee buildings about
-name -shortName -actionName -actionShortName -actionContent -permissions: array() -keywords: array() -moduleMenu -actionMenu
+setSession(key,value) +getSession(key) +getUser() +setUser() +getMessage() +setMessage() +getTranslator() +setTranslator() +getHostUrl() +getThisUrl() +getAbsoluteRootUrl() +getAbsoluteUrlWithoutRoot() +getRootUrl() +getThisUrlWithoutPage() +getThisUrlWithPage() +getRootDirectory() +getRootUrlWithLanguage() +isUserLogin() +processUrl() +getModules() +selectModule(shortName) +run() +...()
+recordEvent(description) +conclusion(...) +redirect(url) +getThisUrlWithModule() +getThisUrlWithAction() +getThisUrlWithoutModule() +checkAnonymouse(message=true) +checkPermission(...) +formatDateTime(dateTime,format) +...()
page +... +process(urlName) +load(idPage,language=false) +keywordsToModules(content) +getAllKeywords() +...()
structure
Session
message
translator -languageShortName -languageName -dictionary -formatDateTime -formatDate -formatYear -formatDay -formatDayMonth -formatTime
-type -text -displayed
user -... +load(idUser)
+wasDisplayed() +...()
-title -copyright -keywords -menu -moduleMenu -moduleName -actionMenu -actionName -userMenu -languagesMenu -heading -messageText -messageType -content +process() +show() +...()
-loadDictionary() +translate(keyword) +...()
Obrázek 7. Diagram tříd
34
committee recordedEvents
n
idRecord user ...
n
idMember position user ...
1
idSpeakers user
n
group user
int(11) int(11)
int(11) int(11) int(11)
n
committeePositions
1
idPosition ...
int(11)
invitedSpeakers users
1 idUser ...
1
int(11)
int(11) int(11)
membersOfGroup interludes
idInterlude ...
1
int(11)
n
photos
n
idPhoto album
groups
1
idGroup ...
int(11)
authors
user paper
int(11) int(11)
n
int(11) int(11)
int(11) int(11)
n
papers
1
idPaper ...
n
int(11)
conferenceProgram albums
1
idAlbum ...
int(11)
pages
idPage ...
n
1
idSlot paper interlude room ...
int(11) int(11) int(11) int(11)
emailTemplates
idBuilding ...
1
idRoom building ...
int(11) int(11)
contents
1
int(11)
idContent source idSource ...
idNews ...
int(11)
deadlines
int(11)
idDeadline ...
files
organizations
idOrganization ...
int(11) varchar(100) int(11)
news
dictionary
int(11)
languages
idLanguage ...
int(11)
1
int(11)
prices
idKeyword ...
n
int(11) int(11)
rooms
1 buildings
idPrice ...
idDocument paper ...
n
int(11)
idTemplate ...
paperDocuments
n
int(11)
idFile ...
templates
int(11)
documents
idDocument ...
int(11)
Obrázek 8. Schéma databáze
35
int(11)
idTemplate
configuration
...
int(11)
1
4.4.
Šablony
Šablony vzhledu jsou založeny na šablonovacím systému Smarty [6], verze 3. Jednotlivé šablony musí být umístěny v adresáři templates/ a hlavní soubor šablony musí mít název index.tpl. O přidání šablon do aplikace se stará modul Šablony a aktuální šablonu lze nastavit v modulu Konfigurace. Šablona je běžný HTML soubor, který však obsahuje na určitých místech příkazy jazyka šablonovacího systému, které před zobrazením systém nejprve zpracuje. Jedním z důležitých prvků jazyka jsou např. proměnné, které jsou následně nahrazovány požadovaným obsahem. Smarty umožňuje zapisovat i další běžné konstrukce jako u ostatních jazyků, např. podmínky a cykly. Ukázka zápisu: • Proměnné {$promenna} • Podmínky {if $count == 0} text {else} nebo jiný text {/if} • Cykly {foreach $array as $index => $key} opakující se kód {/foreach} Kompletní tutoriál tvorby šablon ve Smarty lze nalézt na oficiálních webových stránkách [6]. 4.4.1.
Výstupy aplikace do šablony
Aby šly v šablonách využívat zdroje aplikace, dochází v instanci třídy structure k naplnění proměnných jistými výstupy, které jsou nutné pro zobrazení webové stránky konference. Tyto proměnné se použijí na různých místech šablony, kde se má zobrazit příslušný obsah, např. název konference, datum konání, menu, hlavní obsah atd. Dále jsou v šabloně dostupné i funkce na překlad slova a úpravu formátu datumu. Výstupy aplikace do šablony jsou rozdělené do několika oblastí – data o uživateli (viz tabulka 3.), URL dostupné v šabloně (viz tabulka 4.), funkce aplikace (viz tabulka 5.) a ostatní výstupy (viz tabulka 6.). Při odkazování na data umístěná v adresáři šablony, tedy např. obrázky, je třeba používat pouze relativní URL k danému souboru vzhledem ke kořenovému adresáři šablony. Před takovou adresu je pak nutné uvést proměnnou {$templateUrl} obsahující URL vedoucí k adresáři dané šablony. Příklad:
![]({$templateUrl}images/image.jpg)
.
36
4.4.2.
Kaskádové styly – CSS
Autor webové šablony při její tvorbě určuje pomocí jazyka HTML a kaskádových stylů celkové rozložení prvků stránky. Na určená místa pak budou pomocí proměnných šablonovacím systémem vloženy požadované výstupy aplikace. Výstupy aplikace a modulů jsou ve formě běžných struktur značkovacího jazyka HTML – tabulky, seznamy, obrázky a odkazy. Všechny tyto prvky mají definovány své jedinečné identifikátory (viz tabulka 7.), které může autor šablony ovlivnit doplněním svých atributů a vzhled těchto prvků tak přizpůsobit záměru a designu své šablony. Proměnná {$isUserLogin} {$userName} {$userFullName}
Datový typ Popis boolean Je uživatel přihlášen? string Uživatelské jméno string Jméno a příjmení uživatele
Tabulka 3. Data o uživateli dostupná v šabloně
Proměnná {$rootUrl} {$templateUrl} {$thisUrlWithPage} {$thisUrlWithoutPage} {$thisUrl}
Datový typ Popis string URL kořenové složky aplikace string URL kořenové složky šablony string URL včetně aktuální stránky string URL bez aktuální stránky (s jazykem, pokud byl zadán) string Kompletní aktuální URL
Tabulka 4. URL dostupné v šabloně
Funkce Popis {translate language="jazyk "}slovo{/translate} Překlad slova (Atribut language je nepovinný, použije se aktivní jazyk) {date format="formát"}datum{/date} Formát datumu Formát: dateTime, date, year, day, dayMonth, time Tabulka 5. Funkce aplikace dostupné v šabloně
37
Proměnná {$conferenceTitle} {$year} {$venue} {$dateFrom} {$dateTo} {$languageShortName} {$languageName} {$systemHead}
Datový typ string string string date date string string string
{$title} {$keywords} {$copyright} {$headline} {$content} {$menu} {$moduleMenu} {$moduleName} {$actionMenu} {$actionName} {$userMenu} {$languagesMenu} {$messageText} {$messageType}
string string string string string array(url → name) array(url → name) boolean array(url → name) boolean array(url → name) array(url → name) string string (error nebo confirm)
Popis Název konference Ročník konference Místo konání Datum konání (od) Datum konání (do) Aktivní jazyk (zkratka) Aktivní jazyk Načtení CSS a javascriptu nutných pro aplikaci Titulek stránky Klíčová slova Copyright Hlavní nadpis Obsah stránky Hlavní menu Menu aktivního modulu Název aktivního modulu Menu aktivních akcí Název aktivní akce Menu administrace Menu jazykových verzí Zpráva uživateli Typ zprávy uživateli
Tabulka 6. Ostatní výstupy aplikace dostupné v šabloně
38
Identifikátor div.output div.keyword h1, h2, h3 div.heading table.detail table.list a.hiddenlink div.hidden div.paper-detail div.interlude-detail div.user-detail div.pagenation-links div.photo-list, div.photo-preview span.size div.unknown div.note, div.notice div.cancelled div.authors, div.co-authors div.name div.abstract div.document-list, div.slot-list div.employer-country, div.about div.email-link, div.external-link div.date, div.time
Popis Celý výstup modulu Výstupy modulu (např. div.bank) Nadpisy v aplikaci Nadpisy ve výstupech Tabulka detailu Tabulka výpisu Spouštěč skrývání/odkrývání Skrývaná oblast Detail příspěvku Detail mezičasu Detail uživatele Odkazy stránkování Detail alba, Náhled alba Velikost souboru Neznámý údaj Poznámky Status příspěvku: zrušeno Autoři a spoluautoři příspěvku Název příspěvku Abstract příspěvku Seznam dokumentů Zaměstnavatel, O autorovi Odkazy na e-mail a www Datum a čas
Tabulka 7. CSS identifikátory použité v aplikaci a výstupech modulů
39
4.5.
Použité technologie a aplikace
• PHP, verze 5.2 Objektový skriptovací programovací jazyk pro tvorbu webových stránek s dynamickým obsahem. Zdrojové soubory jsou vykonávány na straně serveru. • MySQL, verze 5 Databázový systém založený na jazyku SQL. • xHTML, verze 1.0 Značkovací jazyk pro tvorbu webových stránek. • PSPad editor [4], verze 4.5.4 Textový editor použitý při vytváření aplikace. • jQuery [7], verze 1.6.2 Knihovna jazyka javascript, která je základem několika dalších knihoven a pluginů, které aplikace využívá. • Nette Framework [8], verze 0.9 Webový framework od českého autora Davida Grudla. Aplikace z něj využívá generování formulářů s automatickou kontrolou dat javascriptem. • Dibi [9], verze 1.2 Databázový layer opět od Davida Grudla. Velmi zjednodušuje zápis SQL příkazů a automaticky formátuje a escapuje přenášená data. • Adminer [5], verze 3.3.1 Webová aplikace pro správu databáze od českého autora Jakuba Vrány. Na rozdíl od obdobných administračních systémů se vyznačuje tím, že se jedná pouze o jeden PHP soubor. • Smarty [6], verze 3 Jeden z nejrozšířenějších šablonovacích systémů pro jazyk PHP. • CKEditor [10], verze 3.5.3 Editor pro úpravu textu využitý v několika modulech. Je vytvořený pouze pomocí HTML a javascriptu. • KCFinder [11], verze 2.21 Webový souborový manažer. Dá se použít samostatně nebo ve spojení s CKEditorem. Manažer je využitý v modulech Správce souborů, Dokumenty a Stránky.
40
• Uploadify [12], verze 2.1.4 Plugin pro javascriptovou knihovnu jQuery sloužící pro nahrávání souborů na server využitý v modulu Galerie. • Slimbox [13], verze 2 Plugin pro javascriptovou knihovnu jQuery sloužící k zobrazování obrázků při ztmaveném zbytku okna. • Cufón [14], verze 1.09i Javascriptový nástroj pro nahrazování fontů na stránce. • Swazz Javascript Calendar [15], verze 1.0 Kalendář pro výběr datumu vytvořený v javascriptu. • Dream Template [16] Webové šablony vzhledu. Design jedné ze šablon byl inspirací pro vytvoření šablony Dark gray. • User Interface Icons [17] Ikony pro grafické rozhraní aplikace. Všechny využívané aplikace, šablony a ikony od externích autorů jsou volně dostupné pro nekomerční použití. Detaily práv pro jiné druhy použití jsou zveřejněny jednotlivými autory na webových stránkách aplikací.
41
Závěr Cílem práce bylo vytvořit aplikaci, která umožní organizátorům mezinárodní konference jednoduše vytvářet a měnit webové stránky konference. Kromě organizátorů je aplikace určena i přednášejícím, kteří do ní sami přidávají své příspěvky. Kvůli možnému mezinárodnímu charakteru konference je podporován i vícejazyčný obsah webových stránek. Pro vytváření a změnu webových stránek nejsou potřeba žádné speciální znalosti a aplikace tak své cíle splnila. Dalším rozšířením aplikace by se v budoucnu mohly stát moduly, které ji více posunou od tvorby webových stránek ke kompletní organizaci konference, např. účetní modul nebo rezervační systém pro ubytování účastníků.
42
Conclusions The aim of this thesis was to create an application that allows International conference organizers to easily create and modify their websites. The application is also determit to speakers who are adding into it their own papers. Due to the potential for international character, the conference is also supported by multilingual web content pages. There is no need special knowledge for creating or changing websites and thesis has accomplished its aim. Further expanding of the application could become in modules which can move them from making websites to complete organization conference, eg. accounting module or booking system for accommodation participants.
43
Reference [1] Marek Jasinski. FreeCommander [online] [cit. 2011-08-07]. http://www.freecommander.com/ [2] The PHP Documentation Group. Date – Format a local time/date [online] Publikováno 2011-05-03 [cit. 2011-08-07]. http://php.net/manual/en/function.date.php [3] The PHP Documentation Group. List of Supported Timezones [online] Publikováno 2011-05-05 [cit. 2011-08-07]. http://www.php.net/manual/en/timezones.php [4] Jan Fiala. PSPad editor [online] [cit. 2011-08-07]. http://www.pspad.com/ [5] Jakub Vrána. Adminer – Správa databáze v jednom PHP souboru [online] [cit. 2011-08-07]. http://www.adminer.org/ [6] New Digital Group, Inc. Smarty [online] [cit. 2011-08-07]. http://www.smarty.net [7] The jQuery Project. jQuery [online] [cit. 2011-08-07]. http://jquery.com/ [8] Nette Foundation. Nette Framework [online] [cit. 2011-08-07]. http://nette.org/ [9] Nette Foundation. Dibi – database layer [online] [cit. 2011-08-07]. http://dibiphp.com/ [10] CKSource – Frederico Knabben. CKEditor [online] [cit. 2011-08-07]. http://ckeditor.com/ [11] Pavel Tzonkov. KCFinder [online] [cit. 2011-08-07]. http://kcfinder.sunhater.com/ [12] Reactive Apps. Uploadify [online] [cit. 2011-08-07]. http://www.uploadify.com/ [13] Christophe Beyls. Slimbox [online] [cit. 2011-08-07]. http://www.digitalia.be/software/slimbox2 [14] Simo Kinnunen. Cufón [online] [cit. 2011-08-07]. http://cufon.shoqolate.com/generate/ 44
[15] Oliver Bryant. Swazz Javascript Calendar [online] [cit. 2011-08-07]. http://www.ajaxdaddy.com/swazzcalendar-javascript.html [16] Dream Template. Dream Template [online] [cit. 2011-08-07]. http://www.dreamtemplate.com/ [17] User Interface Icons [online] [cit. 2011-08-07]. http://www.userinterfaceicons.com/
45
A.
Ukázky šablon vzhledu
Obrázek 9. Šablona Light Purple
46
Obrázek 10. Šablona Dark Gray
47
B.
Obsah přiloženého DVD
bin/app/ Kompletní adresářová struktura webové aplikace pro zkopírování na webový server. Aplikace byla vytvořena v programu PSPad a soubory v tomto adresáři jsou tak i zdrojovými soubory. Nejsou proto uvedeny v samostatném adresáři src/. bin/dtb/ Soubor s příkazy pro import do databáze MySQL. doc/ Tato dokumentace práce ve formátu PDF a ZIP. readme.txt Instrukce pro nasazení webové aplikace na server, včetně požadavků pro její provoz, a URL, na které je aplikace nasazena pro testovací účely.
48