Uživatelský portál METACentra

Technická zpráva CESNETu číslo 13/2004
k dispozici též ve formátech PDF, PostScript a XML.

Martin Kuba
10. 12. 2004

1   Abstrakt

Tato technická zpráva popisuje technologické řešení uživatelského portálu projektu METACentrum.

2   Motivace

Projekt METACentrum zajišťuje správu a provoz virtuálního distribuovaného superpočítače, který vznikl sjednocením prostředí výpočetních zdrojů významných akademických výpočetních center v ČR, jmenovitě Superpočítačového Centra Brno (Masarykova Univerzita Brno), Západočeského Superpočítačového Centra (Západočeská univerzita Plzeň) a Superpočítačového Centra UK (Karlova univerzita Praha). Uživatelé METACentra potřebují jednotné místo, kde zjistí aktuální stav výpočetních zdrojů, naleznou dokumentaci, dozví se o novinkách nebo plánovaných výpadcích, mohou komunikovat se systémem správy zdrojů METACentra, popřípadě noví uživatelé si podají přihlášku. V rámci propagace je také třeba veřejnost a potenciální zájemce seznámit vůbec s existencí METACentra a informacemi o něm.

Pro tyto účely se osvědčily webové portály, protože jejich ovládání je intuitivní a pro přístup k nim uživatelům stačí webový prohlížeč, nemusí si instalovat žádné programy ani si pamatovat komplikované příkazy zadávané na příkazovém řádku. Vše, co musí uživatelé pro úspěšné používání webového portálu udělat, je pamatovat si jeho adresu meta.cesnet.cz.

Portál METACentra byl kompletně přebudován během roku 2004 z prvotní verze tvořené nedokumentovanou spletí PHP a Perl skriptů, kterou již nešlo dále udržovat a rozšiřovat, a statickými stránkami s nejednotným vzhledem a navigací, na modernější platformu, kde statický obsah je spravován systémem pro správu obsahu (Content Management System) a interaktivní stránky jsou založeny na rodině technologií Java 2 Enterprise Edition. Všechny stránky pak získaly jednotný grafický vzhled, jednotnou navigaci pomocí přehledného menu a všechny jsou dostupné ve více jazykových verzích (češtině a angličtině).

[Obrázek]

Obrázek 1: Nový vzhled portálu METACentra

3   Členění portálu

3.1   Veřejná a chráněná část

Portál lze rozčlenit dvěma způsoby. Z hlediska uživatelů se skládá z veřejné části, která je přístupná bez jakékoliv autentizace, a z chráněné části, do které mají přístup pouze uživatelé METACentra.

Chráněná část vyžaduje autentizaci pomocí systému Kerberos, který je používán jako jednotný autentizační a autorizační systém pro přístup ke všem zdrojům v METACentru. Autentizace vůči portálu je tak stejná jako vůči všem ostatním zdrojům, čímž je portál začleněn do prostředí s "jednorázovým přihlášením" (anglicky single sign-on).

Pro přístup do chráněné části má uživatel dvě možnosti. Buď používá webový prohlížeč se schopností spolupracovat se systémem Kerberos, a pak pro přístup na portál nemusí podniknout žádnou speciální akci, jeho prohlížeč se autentizuje vůči portálu zcela sám. Nebo takový prohlížeč nemá, v tom případě se může autentizovat vůči portálu jménem a heslem, které jsou zabezpečeně pomocí protokolu SSL přeneseny na portál, a ten se vůči systému Kerberos autentizuje za uživatele. Takto je možné zároveň využívat výhod jednorázového přihlášení a zároveň udržovat kompatibilitu se všemi prohlížeči.

Technicky je autentizace řešena na straně prohlížeče upraveným prohlížečem Mozilla, a na straně portálu modulem mod_auth_kerb do webserveru Apache, vyvinutými v rámci projektu METACentrum.

3.2   Statická a interaktivní část

Z technologického hlediska se portál dělí na část se statickými stránkami, které jsou stejné pro všechny uživatele a v čase se mění pouze málokdy (typicky stránky s dokumentací), a na část interaktivní, kdy stránky jsou generovány na základě akcí uživatele. Interaktivní stránky jsou jak veřejně přístupné, např. aktuální stav vytížení výpočetních zdrojů, tak v chráněné části, např. stránky na kterých může uživatel měnit své osobní údaje.

Zcela rozdílné požadavky na statické a interaktivní stránky si vyžádaly dvě různá řešení. Interaktivní stránky jsou vlastně rozhraním aplikace, jsou vždy generovány znovu, neměly by se nikdy kešovat v prohlížeči ani v mezilehlých proxy. I když jsou interaktivní stránky pro každého uživatele jiné, aplikace samotná se příliš často nemění, má několik málo autorů, a celkový počet stránek v aplikaci je relativně malý.

Oproti tomu statické stránky mají autorů relativně mnoho, takže je nutné řešit přístupová práva autorů k dokumentům. Je dobré statické stránky kešovat v prohlížeči i v proxy kvůli efektivnější distribuci, a i na serveru lze ušetřit výkon pokud jsou uloženy ve statických souborech na disku. Jejich URL by měla být stabilní, protože si je uživatelé přidávají do seznamů "oblíbených" adres, a drobné změny obsahu nebo přidávání nových stránek je relativně častou činností.

Tyto protichůdné požadavky statických a interaktivních stránek se zatím žádnému systému nedaří splnit zároveň. Systémy propagované jako "portálová řešení" jsou obvykle nakloněny ve prospěch interaktivních stránek, a stránky se statickým obsahem generují dynamicky. URL těchto stránek bývají dlouhá, proměnlivá a s parametry, čímž zabraňují jejich efektivnímu kešování. Naopak systémy pro publikování statických dokumentů, což jsou obvykle redakční systémy vyvinuté pro publikace novin na webu, nejsou dobře připraveny na integraci s dalšími aplikacemi, a neumožňují vytvořit snadno udržovatelnou strukturu interaktivní části.

Z těchto důvodů bylo rozhodnuto řešit interaktivní část nejlepšími dostupnými nástroji pro tvorbu interkativních webových aplikací, pro statickou část nalézt efektivní nástroj pro správu statického obsahu, a do jednoho portálu je integrovat sjednocením grafického vzhledu a navigace.

4   Řešení interaktivní části portálu

4.1   Třívrstvá architektura a Model-View-Controller architektura

Pro interaktivní webové aplikace jsou nástroje vyvíjeny již řadu let, a panuje shoda, že udržovatelné a rozšiřovatelné aplikace mají mít třívrstvou architekturu, kde vrstvy jsou:

Oddělení aplikační logiky od prezentace má tu výhodu, že pokud se změní požadavky na prezentaci, např. kromě přístupu přes web je požadována i desktopová aplikace, nebo přístup z mobilního telefonu přes WAP, není nutné aplikační logiku měnit. Ukládání dat se obvykle svěřuje specializovaným systémům, relačním databázím, které jsou pro tento účel optimalizované.

Způsob spojení aplikační logiky s prezentací se řeší achitekturou zvanou MVC (Model-View-Controller), převzatou z desktopových aplikací s bohatým grafickým rozhraním. Zásadou MVC je, že Model představuje část pracující s daty, tj. aplikační logiku, a je zcela nezávislý na View, což je část prezentující data uživateli a přebírající vstupy od uživatele. Dohromady je pak propojuje Controller, který jako jediný z těchto tří částí je závislý na zbývajících dvou částech.

4.2   Nahrazené řešení pomocí PHP a Perl

Před rokem 2004 mělo METACentrum interaktivní část portálu řešenu pomocí PHP a Perl skriptů, jejichž vrozenou vlastností je, že se sice rychle napíší, ale následně jsou těžko čitelné, a to i pro autora po uplynutí určité doby. Dále jsou v nich smíchané dohromady HTML značky určující vzhled a příkazy skriptovacího jazyka poskytující funkčnost takovým způsobem, že měnit nebo rozšiřovat jedny nebo druhé lze jen velice obtížně. Navíc tyto skriptovací jazyky nevedou autory k rozdělování kódu na logické části a k jejich znovupoužívání, což vede k tomu, že stejný nebo velice podobný kód není lokalizován na jednom místě, ale je rozkopírován do mnoha souborů. Tyto vlastnosti vedou obvykle ke stejnému stavu, totiž k nepřehledné množině skriptů, v nichž se málokdo vyzná, a jejichž změny jsou natolik obtížné, že se do nich raději nikdo nepouští.

4.3   Nové řešení pomocí J2EE

Proto byla interaktivní část portálu METACentra zcela nově vytvořena za použití technologií rodiny Java 2 Enterprise Edition (J2EE). I při použití J2EE technologií je možné vytvořit jinou než třívrstvou architekturu a nepoužívat rozdělení rolí v MVC architektuře, bylo by to však kontraproduktivní. Proto je interaktivní část portálu METACentra důsledně třívrstvá a aplikační logika a prezentace spolu spolupracují podle zásad architektury Model-View-Controller.

Každá z těchto tří částí může být implementována jinou technologií, v případě portálu METACentra byl pro Controller použit osvědčený framework Apache Struts, pro View použity JSP/JSTL, a Model byl implementován vlastním kódem v jazyce Java s využitím rozhraní JDBC pro přístup k databázi.

Oddělení kódu pro práci s databází a kódu pro interakci s uživatelem umožnilo jejich správu různými autory, zpřehlednilo celkovou strukturu aplikace a předchází duplikování stejného kódu na více místech, což následně vedlo ke zvýšení kvality obou částí.

Pro implementaci naopak nebyly použity technologie založené na specifikaci JSR-168 (Java Portlet Specification 1.0), protože dostupné systémy jsou zatím v příliš časné fázi vývoje, a jako takové trpí nestabilitou a nízkým výkonem, což bylo pro produkční portál METACentra vyhodnoceno jako nedostatečné.

4.4   Použité technologie

4.4.1   Apache, mod_jk, TomCat

Interaktivní část portálu METACentra sestává ze dvou webových aplikací (jedna pro sledování stavu zdrojů METACentra, druhá pro osobní administrativu uživatelů), které běží uvnitř servletového kontejneru Apache Jakarta TomCat verze 5.0. Před TomCat je předřazen webserver Apache, který zajišťuje šifrované spojení pomocí protokolu SSL, a pro chráněnou část i autentizaci systémem Kerberos. Dále Apache sám obsluhuje požadavky na statické soubory, stránky a obrázky.

Spojení mezi webserverem Apache a servletovým kontejnerem TomCat je zajištěno pomocí modulu mod_jk, který předává speciálním binárním protokolem všechna data o HTTP požadavku z Apache do TomCatu a přebírá zpět vygenerované HTML stránky. Spojení je tak efektivní a TomCat má k dispozici všechna data, která měl k dispozici Apache, včetně např. SSL certifikátů prohlížeče. Tohoto by nebylo dosaženo např. při spojení použitím modulu mod_proxy, a při použití samotného TomCatu bez Apache by šifrování komunikace a zobrazování statických souborů nebylo tak efektivní, navíc TomCat by měl potíže s přístupem na privilegovaný port 80, protože TomCat z bezpečnostních důvodů neběží s právy uživatele root.

4.4.2   JSP 2.0

Pro implementaci View části architektury byla použita technologie JSP stránek (Java Server Pages), verze 2.0, kde HTML značky jsou izolovány do textových souborů s příponou .jsp, takže se snadno editují, a jsou proloženy speciálními tagy, které mezi ně doplňují dynamicky generovaná data pro zobrazení. Tyto JSP soubory jsou při prvním vyžádání přeloženy do spustitelného kódu, proto jsou velice rychlé při zobrazování. Texty nejsou vepsány přímo mezi HTML značkami, ale z důvodu snadné vícejazyčnosti jsou soustředěny do speciálních textových souborů (v technologii Java nazývaných ResourceBundle), vždy jeden soubor na jeden jazyk. V JSP souboru jsou texty odkazovány pomocí identifikátorů, všechny jazykové verze jsou tedy generovány z jednoho JSP souboru, čímž se zamezuje možným rozdílům mezi nimi. Soustředěním textů do jednoho souboru je zároveň usnadněna kontrola jednotných výrazů apod.

4.4.3   JSTL 1.1

Pro sloučení HTML značek s daty a texty v JSP stránkách byla použita knihovna tagů zvaná JSTL (JSP Standard Tag Library) verze 1.1, která umožňuje snadno vytahovat data ze strukturovaných datových objektů, vytvářet cykly, provádět větvení podle podmínek, zobrazovat texty ve správném jazyce z příslušného ResourceBundle, formátovat čísla a čas podle zvykostí daného jazyka atd.

4.4.4   Apache Struts 1.2

Systém Apache Struts hraje v architektuře MVC úlohu Controlleru, konkrétně převádí URL požadovaná webovým prohlížečem na spuštění kódu ve třídách zvaných akce, kde je lokalizována obsluha akcí uživatele (kliknutí na link, odeslání formuláře). Výsledkem provedení akce je identifikátor, který Struts mapují na konkrétní JSP stránku. Akce může vrátit různé identifikátory, takže zobrazená stránka nezávisí na URL (jako u PHP a Perlu), ale na rozhodutí akce. To je výhodné např. při zpracování formulářů, kdy akce může rozhodnout, zda uživatel vyplnil formulář správně, a zobrazí následující stránku, nebo špatně, a zobrazí znovu formulář.

Celá konfigurace Struts je umístěna v jednom XML souboru WEB-INF/struts-config.xml, lze tedy z něj získat přehled o celé aplikaci, o všech URL která může prohlížeč požadovat, o všech kusech kódu, které je tak možné vyvolat, i o všech JSP stránkách, které je možné zobrazit. To je oproti PHP a Perlu znatelná výhoda.

4.4.5   Struts Tiles

Systém Struts obsahuje volitelnou část Tiles, která umožňuje skládání stránek z částí. Nedělá to však obvyklým způsobem, tj. vkládáním hlaviček a patiček v každé stránce, ale mnohem výhodnějším způsobem, který umožňuje provést změnu všech stránek změnou pouze jednoho souboru. Tiles využívají konfigurační XML soubor, který asociuje každou JSP stránku (s vlastním obsahem stránky) se šablonou, což je speciální JSP stránka, která stránku s obsahem volá. Při zobrazení se nejdříve volá šablona, která dostává jako parametr, kterou JSP stránku s obsahem má zavolat. Tak je možné změnou šablony naráz změnit vzhled všech stránek, např. přidat hlavičku, menu, cokoliv, do všech stránek najednou. Šablona může být pro celou aplikaci jen jedna, ale může jich být i více.

Portál METACentra využívá Tiles k obalení obsahu stránek jednotným vzhledem a navigačním menu. Tím je dosaženo konzistentního vzhledu stránek a jednotné navigace.

4.4.6   JDBC, Oracle OCI ovladače a Kerberos

Akce volané ze Struts volají implementaci Modelu, což jsou Java třídy pracující s daty. Data jsou trvale uložena v relační datázi, ke které je přistupováno přes standardní rozhraní JDBC, k němuž výrobci databází dodávají ovladače pro svoji databázi. Data o uživatelích a zdrojích METACentra jsou uložena v systému Perun, který je postaven na databázi Oracle. Firma Oracle poskytuje dva druhy ovladačů, jeden zvaný Thin, který je celý implementován v jazyce Java, a druhý zvaný OCI, který všechna volání předává nativním ovladačům napsaným v jazyce C. Je obecně snadnější použít Thin ovladač, protože však systém Perun pro autentizaci a autorizaci přístupu k databázi využívá systém Kerberos, jehož podpora je pouze v OCI ovladači, ne však v Thin ovladači, bylo nutné použít OCI ovladač. Tímto je zajištěno, že i autentizace a autorizace přístupu portálu k databázi je zajištěna stejným jednotným mechanismem jako u všech ostatních prostředků METACentra, systémem Kerberos.

4.4.7   Javadoc

Vedlejším, ale důležitým efektem použití jazyka Java pro implementaci portálu je vznik dokumentace. Standardně přímo ve zdrojových textech Java tříd je každá třída, metoda i proměnná okomentována formalizovaným způsobem, ze kterého pak nástroj zvaný Javadoc vygeneruje dokumentaci.

4.4.8   PBSPro a JNI

Webová aplikace zobrazující stav zdrojů METACentra čerpá své informace přímo z plánovacího systému PBSPro, který integruje jednotlivé počítače do jednoho velikého metapočítače. Pro přístup k datům PBSPro poskytuje pouze API v jazyce C, bylo tedy nutné využít JNI (Java Native Interface) a napsat třídu, částečně v jazyce Java, částečně v jazyce C, která tvoří most mezi portálem implementovaným v jazyce Java a nativní PBSPro knihovnou pro přístup k datům. Tedy v okamžiku, kdy portál čte data z plánovacího systému, se část kódu provádí mimo virtuální stroj JVM.

[Obrázek]

Obrázek 2: Ukázka interaktivní stránky se stavem zdrojů z PBSPro

5   Řešení statické části portálu

5.1   Systém pro správu obsahu

Zatímco správné řešení pro interaktivní část portálu v podobě J2EE technologií a MVC architektury je víceméně v komunitě vývojářů webových aplikací známo a všeobecně akceptováno, se správou statických informací je tomu naopak. Proto byl proveden průzkum dostupných systémů pro správu obsahu (CMS - Content Management System). Požadovanými vlastnostmi byly podpora češtiny i angličtiny, řízení práv přístupu, pokud možno open source a free, a implementace na platformě Java. Vyhodnoceny byly následující systémy, u nevybraných jsou uvedeny jejich nedostatky:

OpenCMS
vyhodnocen jako nejlepší a vybrán
Apache Forrest
Používaný pro publikování webů rodiny Apache XML. Není však CMS, generuje stránky z XML souborů, nepodporuje řízení přístupových práv
Jahia
licence vyžaduje přispění ke kódu nebo poplatek
IBM Web Sphere 5
Komerční aplikační server. Nepodporuje jiné distribuce Linuxu než RedHat. Na ZČÚ se nepodařilo zprovoznit část pro správu statického obsahu ani po několika měsících úsilí.
Nukes on JBoss 1.0
Slibně vypadající, nicméně v době vyhodnocení zcela nový systém, založený na proprietárních rysech aplikačního serveru JBoss.
Magnolia 1.1
Implementace nové specifikace Java Content Repositories (JCR). Systém v rané fázi vývoje s minimální funkcionalitou, autentizace pouze heslem vůči seznamu v XML souboru.
Javalobby Community Platform (JLCP)
Stránky projektu byly neaktualizované již delší čas.
Apache Lenya
Dříve znám pod názvem Wyona CMS. Založen na mnoha XML technologiích, křivka učení velice strmá, nutné zvládnout mnoho technologií i pro publikování jednoduchého obsahu. Demo v době vyhodnocení už pár měsícu nefungovalo.
Red Hat Content Management Solution 5.0
Dříve znám pod názvem Ars Digita. Svázán s proprietárními rysy aplikačního serveru Red Hat Web Application Framework 5.0.
Cofax
Vyvinut pro publikaci novin. Nemá podporu kontroly přístupu. Poslední verze je z 16.6.2002, vývoj zřejmě zastaven.
JNuke
Vývoj zřejmě zastaven, stránky projektu neaktualizovány.
Typo3
Založeno na PHP.
PHP-Nuke
Založeno na PHP.
Post-Nuke
Založeno na PHP.
Zope
Založeno na Pythonu.

5.2   OpenCMS

Z vyhodnocovaných systémů pro správu obsahu byl vybrán systém OpenCMS pro jeho unikátní soubor vlastností.

vícejazyčnost
každý dokument má více jazykových verzí, v našem případě českou a anglickou
více virtuálních webserverů
jednou instalací OpenCMS je možné spravovat více nezávislých webů najednou. V METACentru jsou jedním OpenCMS spravovány meta.cesnet.cz a egee.cesnet.cz
kontrola změn před zveřejněním
změny dokumentů si je možné prohlédnout před tím, než jsou zveřejněny. Každý dokument má dvě verze - online a offline. Verze online je viditelná návštěvníkům portálu, verze offline je viditelná pouze lidem s oprávněním činit změny dokumentů. Verze offline je opublikována, tj. zkopírována do verze online až po schválení změn někým s právy zveřejňovat.
správa přístupových zpráv
uživatelé s právem měnit dokumenty se dělí do skupin. Některé skupiny mohou dokumenty měnit, ale nemohou změny publikovat. Tím je např. umožněna dělba práce mezi autory dokumentů a kontrolory kvality, kdy autoři mohou dokumenty měnit, ale změny jsou publikovány až po schválení kontrolory. Dále je možné nastavit práva uživatelům k jednotlivým dokumentům, tedy ne všichni uživatelé mohou měnit všechny dokumenty.
udržování verzí
systém udržuje od každého dokumentu historické verze, je tedy možné se kdykoliv vrátit k předešlé verzi dokumentu, standardně až o deset verzí zpátky.
správa přes webový prohlížeč
k práci se systémem stačí webový prohlížeč. V prohlížeči Microsoft Internet Explorer je možné měnit dokumenty pomocí WYSIWYG editoru, v ostatních prohlížečích se edituje přímo zdrojový kód dokumentů. V případě potřeby je možné obsah systému v databázi synchronizovat se souborovým systémem a použít tak libovolný editor místo editoru ve webovém prohlížeči.
možnost statického exportu
standardně jsou webové stránky generovány z obsahu dokumentů a šablon stránek v okamžiku, kdy je někdo chce vidět. Požadavkem na portál METACentra ale bylo, že statické dokumenty musí být uloženy ve statické formě, proto jsou statické stránky portálu vyexportovány do statických souborů na disku, odkud je zasílá webserver Apache.
hlídání odkazů
systém hlídá, zda všechny odkazy na dokumenty v rámci něj odkazují na existující dokumenty, a pokud ne, při pokusu o zveřejnění varuje.

Systém je opensource, jeho vývojáři založili komerční firmu Alkalon, která poskytuje zájemcům komerční podporu. Systém je aktivně vyvíjen, nyní dostupný ve stabilní verzi 5.0 a ve vývojové verzi 6.0. Bohužel, vícejazyčnost a podpora virtuálních webserverů je dostupná pouze ve vývojové verzi, ke které zatím nebyla napsána dokumentace, při potížích je tedy nutné studovat zdrojový kód nebo se obrátit na emailovou konferenci.

Systém OpenCMS je implementován jako servletová aplikace, běžící v servletovém kontejneru Apache TomCat, a pro ukládání dat používá relační databázi MySQL. V relační databázi ukládá jak obsah dokumentů, tak šablony pro generování stránek, i virtuální souborový systém. Pro každý soubor lze určit, zda má být zobrazen v navigačním menu, pokud ano, pod jakým nápisem, a na kterém místě mezi soubory ve stejném adresáři.

5.3   Nasazení na portálu

Statická část portálu METACentra je zložena na OpenCMS. Byla vytvořena šablona, použitá pro všechny stránky portálu, která generuje víceúrovňové rozbalovací menu přímo z virtuálního souborového systému OpenCMS. Z této šablony se generují i dekorace stránek v interaktivní části portálu, takže všechny stránky portálu mají jednotný vzhled a stejné navigační menu. Při přístupu na stránky v nižších úrovních menu jsou rozbaleny pouze přímo nadřízené položky menu, čímž se šetří místo na stránkách.

Vícejazyčnost je v OpenCMS implementována tak, že jeden virtuální soubor obsahuje všechny své jazykové verze zároveň, a při editaci lze mezi nimi snadno přepínat přímo v editoru. Virtuální soubory mají přiřazeny tzv. properties, což jsou dvojice identifikátor-řetězec, jejichž nastavení se dědí od nadřízených adresářů. Při zobrazení vícejazyčného souboru pak závisí na nastavení property locale, která jazyková verze se zobrazí. Proto má portál dva hlavní virtuální adresáře /cs a /en s nastavenou property locale na češtinu respektive angličtinu, a každý soubor je přítomen v obou adresářích pomocí funkce zvané sibling, která odpovídá symbolickému linku v souborových systémech. Výběr jazyka je pak proveden tím, přes kterou kopii daného souboru se k němu přistoupí.

Při přechodu mezi statickou a interaktivní částí portálu je třeba zachovat jazykovou verzi, odkazy ze statické části do interaktivní proto obsahují parametr, která jazyková verze se má používat, a odkazy z interaktivní do statické části dynamicky volí jeden z adresářů /cs a /en.

5.3.1   Problémy

Nasazení OpenCMS nebylo bez problémů. Hlavním se ukázalo použití vývojové verze, která obsahovala implementační chyby (např. s volbou jazyka při statickém exportu), které byly odstraněny až koncem roku 2004. Hlavní výhradou autorů statických stránek pak bylo, že správa přes prohlížeč efektivně znemožňuje editaci dokumentů v jejich oblíbených textových editorech, a zvlášť při použití prohlížeče Mozilla je editorem textové pole HTML formuláře, které má velmi omezené možnosti jako editor. Je sice možné synchronizovat obsah databáze se soubory na disku, ale pak je právo editovat tyto soubory na disku omezeno na jednoho uživatele, s jehož právy celé OpenCMS běží, a to vylučuje více autorů.

5.4   Grafické styly

K webovému portálu mohou přistupovat uživatelé z různých zařízení, od desktopových PC s barevnými monitory s rozlišením 1600x1200 až po mobilní telefony s malými displayi a omezeným množstvím barev. Abychom obsloužili celé toto spektrum uživatelů, stránky portálu METACentra jsou psány ve značkovacím jazyku XHTML 1.0, a jejich grafický vzhled není specifikován přímo ve stránce, ale ve vnějším stylovém souboru v jazyce CSS. Byly vytvořeny celkem tři grafické styly:

meta
plný grafický styl s využitím rysů CSS2 pro veliké monitory
simple
omezený grafický styl s použitím CSS1, s málo obrázky a úsporou místa, pro jednodušší zařízení
plain
styl prakticky bez formátování, obrázků a barev, pro nejjednodušší zobrazovací zařízení

Přepínání CSS stylů lze činit pomocí menu prohlížeče (podporuje-li tuto funkci) nebo pomocí odkazů v hlavičce každé stránky navázané na JavaScript funkce.

Kromě výše uvedených stylů je připraven ještě jeden styl, který se uplatní při tisku dokumentu - dojde k odstranění menu a veškeré "dekorativní" grafiky. Technicky je potřeba základní podpora CSS1 včetně tzv. médií.

[Obrázek]

Obrázek 3: Ukázka plného stylu meta

[Obrázek]

Obrázek 4: Ukázka omezeného stylu simple

[Obrázek]

Obrázek 5: Ukázka minimalistického stylu plain

[Obrázek]

Obrázek 6: Ukázka stylu pro tisk

6   Shrnutí

Uživatelský portál METACentra byl v průběhu roku 2004 od základů znovu vytvořen. Statické informace jsou spravovány systémem OpenCMS přes webový prohlížeč, interaktivní stránky jsou generovány webovými J2EE aplikacemi postavenými na Apache Struts, Tiles, JSP/JSTL, JDBC přístupu do databáze Oracle a přístupu k plánovacímu systému PBSPro přes nativní knihovnu. Všechny stránky mají jednotný grafický vzhled a navigační menu pro snadnou orientaci. Podle zobrazovacího zařízení lze volit mezi třemi grafickými styly.

další weby:fond rozvojemetacentrumCzechLightpřenosyvideoservereduroameduID.cz