Systém pro podporu výuky
Transkript
České vysoké učení technické v Praze Fakulta elektrotechnická Katedra počítačové grafiky a interakce Bakalářská práce Publikace – komponenta systému ED (systém pro podporu výuky) Vladimír Říha Vedoucí práce: Ing. Tomáš Kadlec Studijní program: Softwarové technologie a management bakalářský Obor: Web a multimedia červen 2009 Poděkování Děkuji vedoucímu bakalářské práce Ing. Tomáši Kadlecovi za jeho rady a trpělivost, se kterou vedl moji práci. iii iv Prohlášení Prohlašuji, že jsem svou bakalářskou práci vypracoval samostatně a použil jsem 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 dne ............................. v vii Abstract In the thesis I deal with development of components for a web-based education support system. The system is intended especially for courses taught at FEE CTU. Many systems that co-exist at the faculty currently have several drawbacks that are addresses in the thesis. Firstly, the thesis focuses on design and implementation of WCAG 2.0 interface which prevents users from confusion and enables them to use it productively. Secondly, extension for course management are provided based on XML export from KOS (information system used at CTU). Lastly, extensions for course data import and export are provided to ease import of subjects that use DokuWiki currently and allow export of outstanding student's essays to e.g. DokuWiki. Keywords: learning management system, XWiki, Java Abstrakt Práce se zabývá vývojem komponent pro internetový systém pro podporu výuky, který je určen zejména pro předměty vyučované na Fakultě elektrotechnické ČVUT v Praze s cílem nahradit a sjednotit existující systémy. Část práce je věnována analýze vzhledu a struktury stránek dle metodiky WCAG 2.0. Dodržování pravidel této metodiky umožňuje efektivní a komfortní práci se systémem. Zdrojová data pro systém, jsou získána v podobě XML souboru z informačního systému KOS. Součástí práce jsou také doplňky, které umožňují import existujících systémů založených na DokuWiki a export stránek do dalších formátů. Klíčová slova: systém pro podporu výuky, XWiki, Java viii Obsah Obsah ................................................................................................................................................ ix Seznam obrázků ............................................................................................................................... xii Seznam tabulek ............................................................................................................................... xiii 1. Úvod ...........................................................................................................................................1 2. Požadavky na systém..................................................................................................................2 2.1. Uživatelské role ........................................................................................................................2 2.2. Funkční požadavky ...................................................................................................................2 2.3. Obecné požadavky ...................................................................................................................6 2.4. Katalog požadavků ...................................................................................................................6 3. Výběr základu publikačního systému .........................................................................................8 3.1. Základní kritéria .......................................................................................................................8 3.2. Srovnání XWiki a JSPWiki ..........................................................................................................9 4. Použité technologie ..................................................................................................................10 4.1. XWiki...................................................................................................................................... 10 4.1.1. Architektura .................................................................................................................... 10 4.1.2. Správa XWiki.................................................................................................................... 11 4.1.3. Editace stránek ................................................................................................................ 12 4.1.4. XWiki Classes a XWiki Objects .......................................................................................... 14 4.2. Ostatní technologie ................................................................................................................ 14 5. Analýza a návrh řešení..............................................................................................................15 5.1. Struktura stránek v systému ................................................................................................... 15 5.2. Modul plug-in pro offline editaci ............................................................................................ 16 5.3. Modul plug-in pro konverzi do DokuWiki syntaxe ................................................................... 17 5.4. Modul plug-in pro import DokuWiki ....................................................................................... 19 5.5. Modul plug-in pro vytvoření a administraci předmětu ............................................................ 21 5.5.1. Import předmětu ............................................................................................................. 21 5.5.2. Administrace předmětu ................................................................................................... 23 5.6. Modul plug-in pro seřazený výpis stránek ............................................................................... 25 5.7. Modul plug-in pro tvorbu administrátorů ............................................................................... 26 6. Implementace ..........................................................................................................................27 6.1. Princip tvorby modulů plug-in ................................................................................................ 27 6.1.1. Třída MujPlugin ............................................................................................................... 27 6.1.2. Třída MujPluginApi .......................................................................................................... 28 6.1.3. Použití modulu plug-in v XWiki ........................................................................................ 28 6.2. Publikační část........................................................................................................................ 29 6.2.1. Třída AdministraceClass ................................................................................................... 29 6.2.2. Třída CviceniSeznamClass ................................................................................................ 29 6.2.3. Třída ParalelkaClass ......................................................................................................... 30 6.2.4. Třída PredmetClass .......................................................................................................... 30 6.2.5. Třída UživatelInfoClass..................................................................................................... 30 6.2.6. Třída VyucujiciClass ......................................................................................................... 31 6.3. Modul plug-in pro konverzi do DokuWiki syntaxe ................................................................... 31 6.4. Modul plug-in pro import DokuWiki ....................................................................................... 32 ix 6.5. Modul plug-in pro offline editaci ............................................................................................ 33 6.6. Modul plug-in pro seřazený výpis stránek............................................................................... 34 6.7. Modul plug-in pro tvorbu administrátorů ............................................................................... 34 7. Testování .................................................................................................................................. 36 8. Přístupnost a metodiky k jejímu posouzení .............................................................................. 38 8.1. Pojem Přístupnost .................................................................................................................. 38 8.2. Web Content Accessibility Guidelines 2.0 ............................................................................... 38 9. Analýza přístupnosti XWiki ....................................................................................................... 40 9.1. Vnímatelnost.......................................................................................................................... 40 9.1.1. Pravidlo 1.1: Textové alternativy...................................................................................... 40 9.1.2. Pravidlo 1.2: Multimediální prvky závisející na čase ......................................................... 41 9.1.3. Pravidlo 1.3: Přizpůsobitelné ........................................................................................... 41 9.1.4. Pravidlo 1.4: Rozlišitelné .................................................................................................. 41 9.2. Ovladatelnost ......................................................................................................................... 42 9.2.1. Pravidlo 2.1: Přístupnost z klávesnice .............................................................................. 42 9.2.2. Pravidlo 2.2: Dostatek času .............................................................................................. 42 9.2.3. Pravidlo 2.3 Záchvaty ....................................................................................................... 43 9.2.4. Pravidlo 2.4: Snadná navigace.......................................................................................... 43 9.3. Srozumitelnost ....................................................................................................................... 43 9.3.1. Pravidlo 3.1: Čitelné......................................................................................................... 44 9.3.2. Pravidlo 3.2: Intuitivní...................................................................................................... 44 9.3.3. Pravidlo 3.3: Pomoc při zadávání ..................................................................................... 44 9.4. Robustnost ............................................................................................................................. 45 9.4.1. Pravidlo 4.1: Kompatibilní ................................................................................................ 45 9.5. Shrnutí ................................................................................................................................... 45 10. Závěr..................................................................................................................................... 46 11. Použité zdroje ....................................................................................................................... 47 12. Příloha A Instalační dokumentace ........................................................................................ 49 12.1. Instalace Java ....................................................................................................................... 49 12.2. Instalace servlet kontejneru ................................................................................................. 49 12.3. Instalace XWiki ..................................................................................................................... 49 12.4. Instalace a konfigurace databáze .......................................................................................... 50 12.5. Instalace modulů plug-in ...................................................................................................... 50 12.6. Instalace modifikovaného stylu ............................................................................................ 52 12.6.1. Instalace potřebných souborů ....................................................................................... 52 12.6.2. Nastavení skinu v XWiki ................................................................................................. 52 13. Příloha B Uživatelská příručka .............................................................................................. 53 13.1. Podrobná struktura stránek .................................................................................................. 53 13.1.1. Stránky vytvářené za chodu systému ............................................................................. 53 13.1.2. Stránky vytvořené při nasazení systému ........................................................................ 53 13.2. Modul plug-in Administrace ................................................................................................. 55 13.3. Modul plug-in Administrator ................................................................................................ 56 13.4. Modul plug-in ToXWikiKonvertor ......................................................................................... 57 13.5. Modul plug-in DokuWikiKonvertor ....................................................................................... 57 13.6. Modul plug-in OfflineEditor .................................................................................................. 58 x 13.7. Modul plug-in SortedIndex ................................................................................................... 58 13.8. Obecný návod pro uživatele ................................................................................................. 59 14. Příloha C Obsah přiloženého CD ...........................................................................................60 15. Příloha D Překlad WCAG 2.0 .................................................................................................61 xi Seznam obrázků Obrázek 2.1 Případ užití pro role Student a Bývalý student ................................................................. 3 Obrázek 2.2 Případ užití pro role Cvičící, Přednášející a Garant ............................................................ 4 Obrázek 2.3 Případ užití pro roli Administrátor ................................................................................... 5 Obrázek 4.1 Zpracování HTTP požadavku (obrázek pochází z *23+) .................................................... 10 Obrázek 4.2 Příklad exportované XWiki stránky ................................................................................ 13 Obrázek 5.1 Základní schéma rozdělení stránek systému .................................................................. 15 Obrázek 5.2 Případ užití modulu pro offline editaci ........................................................................... 16 Obrázek 5.3 Diagram aktivit pro Offline editor .................................................................................. 17 Obrázek 5.4 Sekvenční diagram pro DokuWiki konvertor .................................................................. 18 Obrázek 5.5 Diagram aktivit pro import DokuWiki ............................................................................ 20 Obrázek 5.6 Detail aktivity Zpracovat stránku ................................................................................... 21 Obrázek 5.7 Diagram aktivit pro import předmětů ............................................................................ 22 Obrázek 5.8 Detailní diagram případu užití pro administraci předmětu ............................................. 24 Obrázek 5.9 Diagram aktivit pro tvorbu administrátorů .................................................................... 26 Obrázek 6.1 XWiki třída AdminstraceClass ........................................................................................ 29 Obrázek 6.2 XWiki třída CviceniSeznamClass ..................................................................................... 30 Obrázek 6.3 XWiki třída ParalelkaClass.............................................................................................. 30 Obrázek 6.4 XWiki třída PredmetClass .............................................................................................. 30 Obrázek 6.5 Úvodní stránka předmětu .............................................................................................. 31 Obrázek 6.6 Třída Obrazek a Odkaz ................................................................................................... 32 Obrázek 6.7 Třída Odkaz reprezentující HTML odkaz ......................................................................... 32 Obrázek 6.8 Třída Spojeni a SpravceSouboru .................................................................................... 33 Obrázek 6.9 Struktura tabulky offlineeditor ...................................................................................... 33 Obrázek 6.10 Rozhraní pro dokončení offline editace........................................................................ 34 Obrázek 6.11 Rozhraní pro tvorbu administrátorů ............................................................................ 35 Obrázek 12.1 Nastavení skinu ........................................................................................................... 52 Obrázek 13.1 Formulář pro import DokuWiki .................................................................................... 57 xii Seznam tabulek Tabulka 1.1 Rozdělení úkolů................................................................................................................1 Tabulka 3.1 Srovnání wiki systémů ......................................................................................................8 Tabulka 4.1 Možnosti nastavení práv na jednotlivých úrovních ......................................................... 12 Tabulka 5.1 Standardní nastavení práv pro předmět ......................................................................... 23 Tabulka 9.1 Splnění kritérií pro pravidlo 1.1 ...................................................................................... 40 Tabulka 9.2 Splnění kritérií pro pravidlo 1.3 ...................................................................................... 41 Tabulka 9.3 Splnění kritérií pro pravidlo 1.4 ...................................................................................... 41 Tabulka 9.4 Splnění kritérií pro pravidlo 2.1 ...................................................................................... 42 Tabulka 9.5 Splnění kritérií pro pravidlo 2.2 ...................................................................................... 42 Tabulka 9.6 Splnění kritérií pro pravidlo 2.3 ...................................................................................... 43 Tabulka 9.7 Splnění kritérií pro pravidlo 2.4 ...................................................................................... 43 Tabulka 9.8 Splnění kritérií pro pravidlo 3.1 ...................................................................................... 44 Tabulka 9.9 Splnění kritérií pro pravidlo 3.2 ...................................................................................... 44 Tabulka 9.10 Splnění kritérií pro pravidlo 3.3 .................................................................................... 44 Tabulka 9.11 Splnění kritérií pro pravidlo 4.1 .................................................................................... 45 xiii 1. Úvod V současnosti má většina předmětů webové stránky, kde jsou poskytovány studentům materiály a informace související s předmětem. Protože ale tyto stránky často vznikaly ve stejné době jako předmět, jsou mezi nimi rozdíly jak ve formě a struktuře obsahu, tak v použitých technologiích. Stránky jsou pak většinou z hlediska technologií a vzhledu stejné i několik let, pouze se aktualizuje obsah a někdy ani to ne. Právě postupy, technologie ale i vnímání webu prochází neustálým vývojem. Nejde přitom jen o změnu pohledu na účel webových stránek obecně, ale jedná se i o vývoj objektivních kritérií webu. Mezi ty patří zejména přístupnost stránek, která řeší, jak jsou stránky vhodné pro například zdravotně postižené. Je tudíž samozřejmé, že je třeba inovovat i zmíněné stránky. Pro vyšší komfort a efektivitu při této práci je pak lepší jeden systém, který sjednotí webové prezentace předmětů a usnadní jejich správu. Cílem této práce je navrhnout, implementovat a otestovat nový systém, který umožní efektivní správu větší skupiny předmětů. Platforma, na které bude systém postaven, by měla umožňovat přidávat novou funkcionalitu pomocí doplňků. To je poměrně důležitá vlastnost, protože systém tak lze snadno a rychle přizpůsobit požadavkům uživatele. V neposlední řadě je třeba kriticky zhodnotit stránky z hlediska pravidel přístupnosti. Na práci jsem spolupracoval s kolegou Milanem Kocourkem. Oba jsme měli rozdílné úkoly a vyvíjeli nové komponenty pro systém. Přesné rozdělení práce ukazuje Tabulka 1.1. Autentizace uživatelů oproti systému Shibboleth Parsování a import xml dat do databáze Tvorba podpůrných stránek, šablon pro předměty a úprava vzhledu systému Komponenta pro vytváření předmětů a jejich administraci Komponenta pro import existujících systémů a export stránek Komponenta pro editaci mimo systém Já Milan Kocourek NE ANO NE ANO ANO NE ANO ANO NE (s výjimkou funkce pro přesun studentů mezi paralelkami) NE ANO NE Tabulka 1.1 Rozdělení úkolů 1 2. Požadavky na systém Požadavky na systém vycházejí zejména z potřeb předmětů vyučovaných na Fakultě elektrotechnické ČVUT v Praze, nicméně lze předpokládat, že se u většiny jiných fakult nebo vysokých škol nebudou tyto požadavky výrazně lišit. Na ostatních fakultách ČVUT se dá systém bez obtíží také, jelikož je integrován s dalšími IS (inf. systémy) ČVUT. Všechny požadavky lze rozdělit do dvou základních skupin. První skupina jsou funkční, které definují, co všechno má systém dělat a poskytovat. Druhá skupina jsou pak požadavky obecné, které systém nějakým způsobem omezují. 2.1. Uživatelské role Nepřihlášený uživatel Přihlášený uživatel o Garant předmětu – administrátor předmětu o Přednášející o Cvičící / Vedoucí laboratoře / Vedoucí jednorázové akce nebo prosemináře (dále označen jako „Cvičící“) o Student – student daného předmětu o Bývalý student předmětu – student, který si předmět někdy v průběhu studia zapsal a má do konce studia zpřístupněné materiály o Administrátor – správce celého systému 2.2. Funkční požadavky Obsah by měl být verzován. Je celkem běžné, že stránky se několikrát upravují, často to dělají různí uživatelé, přičemž se jedná jen o malou úpravu. Verzování zajistí možnost sledovat rozdíly mezi jednotlivými verzemi včetně informace, kdo změnu provedl. Současně umožňuje vrátit se k libovolné předchozí verzi dokumentu v případě, že je to nutné. Nepřihlášený uživatel nemůže jakkoliv měnit obsah kterékoli stránky. Nesmí psát žádné komentáře, stahovat si například podklady pro předmět a jiné materiály. Právo pro čtení u daného předmětu pro nepřihlášeného uživatele určuje garant předmětu, nicméně například přístup k hodnocení mu neměl být přístup povolen, protože se může jednat o osobní údaje studentů. Student může (není-li určeno jinak) procházet a číst veškerý obsah předmětu, na který je zapsán. Může přidávat komentáře ke stránkám, psát referáty nebo své vlastní poznámky a upravovat je, může měnit svou stránku s profilem. Na svém profilu může měnit 2 kontaktní údaje, případně přidávat textové poznámky a svou fotografii či avatara. Dále je mu umožněno zadávat téma semestrální práce, pokud ji předmět vyžaduje a odevzdávat semestrální práci a jiné úkoly. Zvláštním případem uživatele je pak bývalý student předmětu. Jedná se o studenta, který měl někdy v průběhu svého studia zapsán daný předmět. Tato uživatelská role je zavedena proto, že jedním z požadavků je umožnit studentům přístup k materiálům předmětu i po jeho absolvování. Obrázek 2.1 Případ užití pro role Student a Bývalý student Cvičící může hodnotit studenty svého cvičení, může zadávat nové úkoly a přidávat materiály ke svému cvičení. Materiály se rozumí jednak nové wiki stránky, ale i jejich přílohy - např. prezentace, projekty pro různá IDE, manuály. Pokud předmět vyžaduje semestrální práci, může schválit studentovo zadání práce a poté ji ohodnotit. Cvičícímu je umožněno upravovat stránky, které se týkají jeho cvičení. Běžně je mu umožněno upravovat všechny stránky předmětu. Má také právo exportovat libovolnou stránku do DokuWiki syntaxe. Přednášející předmětu má právo přidávat materiály ke svým přednáškám (tj. přidávat stránky nebo dokumenty), dále může psát na úvodní stránku předmětu aktuální 3 informace týkající se předmětu, upravovat veškeré další stránky týkající se jeho přednášek a exportovat libovolnou stránku do DokuWiki syntaxe. Garant předmětu může měnit libovolné stránky předmětu a přidávat nové. Může exportovat stránky předmětu do DokuWiki syntaxe. Protože garant předmětu je zároveň administrátorem prostoru pro předmět, má také právo označit předmět jako „neviditelný“. Tato funkce zajistí, že nikde vyjma jeho a administrátora nemůže nijak pracovat s předmětem. Garant předmětu má k dispozici administrační stránku předmětu. uc v yucuj ici Předmět Sprav ov at předmět Hodnotit studenty Pracov at s w iki Cv ičící Garant Exportov at do DokuWiki Editov at Offline Přednášej ící Obrázek 2.2 Případ užití pro role Cvičící, Přednášející a Garant Cvičící a přednášející mají také možnost použít stránku s administrací předmětu, ale nemohou využít všechny dostupné možnosti jako garant předmětu. Protože administrační stránka obsahuje i prvky ulehčující práci s XWiki, jsou tyto funkce zpřístupněny všem vyučujícím, nejen garantovi předmětu. 4 Administrátor zakládá nové předměty. Má plná práva na všechny stránky systému (tj. číst, mazat, upravovat), může je konvertovat do DokuWiki syntaxe. Je mu k dispozici také modul plug-in pro import existujících stránek předmětů ze systému DokuWiki na serveru Obrázek 2.3 Případ užití pro roli Administrátor http://webdev.felk.cvut.cz, pokud zde má uživatelský učet. Podmínka uživatelského účtu je nezbytná v případě, že DokuWiki stránky nabízí jiný obsah pro přihlášeného a nepřihlášeného uživatele. Pokud z nějakého důvodu nedojde k úspěšnému přihlášení, bude na tento fakt administrátor upozorněn. Protože stránky se importují jako text, bez nastavení přístupových práv, má administrátor možnost nastavit jim práva pro libovolného uživatele. Každému registrovanému uživateli bude možněno vytvářet a modifikovat své vlastní stránky. Díky tomu bude moci psát referáty, úkoly nebo další poznámky k výuce (např. zápisky ze cvičení). 5 2.3. Obecné požadavky Obecné požadavky na systém vyplývají zčásti ze zadání práce a zčásti z její povahy. Prvním požadavkem je použití technologie Java Enterprise Edition (JavaEE). JavaEE je ve své podstatě rozšíření Java Standard Edition Platform, které přidává balíky knihoven pro programování aplikací na straně serveru. Jednou z výhod JavaEE aplikací je nezávislost na platformě, lze je tedy spustit na serverech s různým operačním systémem. Nezbytnou podmínkou pro řešení je pokročilá správa práv uživatelů pro čtení, úpravu a mazání nebo vytváření obsahu. Bez této funkce by se dnes neobešel žádný moderní systém. Je třeba mít k dispozici několik různých rolí (typicky garant předmětu, přednášející, cvičící, student) a mít možnost sdružovat uživatele do skupin právě podle jejich práv. Dále je nutné, aby tato práva bylo možno aplikovat jak na jednotlivé stránky, tak na skupinu stránek (například na všechny stránky typu „cvičení“). Přestože to není nutné, bylo by vhodné, aby byl systém nezávislý na zvolené databázi. Splnění tohoto požadavku pak ulehčí případný přechod na jiný databázový server. Platforma, na které je systém založen, by měla umožňovat rozšíření pomocí zásuvných modulů plug-in. Využití modulů má velkou výhodu nejen v možnosti rozšiřování, ale také udržování aplikace. Pokud například vyjde nová verze platformy, pak pro aktualizaci systému bude postačovat pouze instalace jeho jádra a poté dodání jednotlivých modulů zpět do příslušných adresářů. 2.4. Katalog požadavků Požadavky na systém o Poskytovat funkce a stránky nezbytné pro podporu výuky předmětu Služby dostupné pro nepřihlášeného uživatele o Přihlášení do systému Služby dostupné pro přihlášeného uživatele – stejné jako pro nepřihlášeného a navíc: o Odhlášení ze systému o Úprava stránky s profilem o Tvorba stránek pro vlastní potřeby Služby dostupné pro studenta předmětu – stejné jako pro přihlášeného a navíc: o Procházení a ukládání materiálů předmětu o Přidávání komentářů ke stránkám předmětů o Odevzdávání vlastních prací Služby dostupné pro vyučující předmětu – stejné jako pro přihlášeného a navíc: 6 o o o o o o Tvorba, úprava a mazání materiálů a stránek předmětu Přidávání komentářů ke stránkám předmětu Schvalování zadání semestrálních prací Export stránek do jiných syntaxí Offline editace stránek předmětu Změna menu pro navigaci pro předmět Služby dostupné pro garanta předmětu – stejné jako pro vyučujícího a navíc: o Správa předmětu (správa práv na úrovni sekcí, přesun studentů do skupiny bývalých studentů, úprava základních údajů předmětu) Služby dostupné pro bývalé studenty předmětu – stejné jako pro přihlášeného a navíc: o Procházet stránky a materiály Služby dostupné pro administrátora systému – stejné jako pro všechny uživatelské role uvedené výše a navíc: o Správa systému o Tvorba stránek pro předměty na základě dat ze zdrojového souboru o Import existujících instancí DokuWiki o Přidávání administrátorů 7 3. Výběr základu publikačního systému 3.1. Základní kritéria Základem je systém pracující na wiki principu. Důvodem pro použití wiki je fakt, že zpravidla poskytuje funkce, které splňují základní požadavky na řešení. Wiki systémy jsou postaveny na filozofii, že není-li určeno jinak, pak může každý přidávat a měnit existující obsah. Protože může takto pracovat se stránkami velké množství uživatelů, podporují wiki verzování, které zpřehledňuje jednotlivé úpravy a zajišťuje možnost vrátit obsah dokumentu do některé z předešlých verzí. Samozřejmě také podporují správu uživatelských práv pro omezení uživatelských akcí. Wiki se pro správu webových prezentací předmětu používají na několika vysokých školách, lze je ale najít i na veřejně přístupných webech (např. Wikipedia.org, stránky pro technickou podporu programů atd.), díky čemuž je řada uživatelů alespoň minimálně seznámena s užíváním takového systému. Vhodná wiki platforma pro systém musí splňovat několik základních kritérií: Musí být napsána v jazyku Java Musí být šířena pod open-source licencí (např. GNU General Public License nebo GNU Lesser General Public License) Podpora zásuvných modulů Při srovnávání existujících wiki systémů jsem vycházel ze dvou zdrojů. Prvním byl článek na Wikipedia.org [1], který obsahoval detailně porovnané wiki systémy. Druhým zdrojem pak byla internetová stránka wikimatrix.org [2], kde lze pomocí parametrů vyhledávat jednotlivé systémy. Výše zmíněným kritériím vyhovovalo pouze 7 systémů: Daisy, IkeWiki, JAMWiki, JSPWiki, VQWiki, XWiki a yaWiki. Pokud bychom přidali jako další parametr podporu více databází, pak by podmínky nesplňovala Daisy s podporou pouze MySQL a IkeWiki, kterou lze provozovat pouze na PostgreSQL. JAMWiki JSPWiki VQWiki XWiki yaWik i Ano Ne Ne Ano Ano Ne Ne Ne Ano Ne Ano Ano Ne Ano Ne Export stránek Ne Ano (plug-in) Ne Ano HTML výstup XHTML 1.0 Transitional XHTML 1.0 Transitional XHTML 1.0 Transitional XHTML 1.0 Strict Podpora jmenných prostor Česká lokalizace Editace částí stránek Tabulka 3.1 Srovnání wiki systémů 8 Nezná mý XHTML 1.1 Tabulka 3.1 přehledně srovnává parametry vybraných produktů. Pod pojmem „Export stránek“ se rozumí možnost exportovat stránky do jiného formátu (PDF, XML, DOC apod.). Jmenné prostory umožňují rozčlenit stránky do skupin tak, že stránky musí mít v rámci jednoho prostoru unikátní název, ale pokud se stránky nacházejí navzájem v různých prostorech, mohou se jmenovat shodně. Toto členění je velmi výhodné pro přehlednost obsahu. Tato funkce je v případě JSPWiki částečně nahrazena možnosti označit rodiče stránky, což opět umožňuje vytvořit hierarchickou strukturu stránek. VQWiki bohužel zatím nic podobného nenabízí. Nakonec jsem zvolil do užšího výběru JSPWiki a XWiki, na které jsem se podrobněji zaměřil a otestoval. 3.2. Srovnání XWiki a JSPWiki Obě wiki mají svým pojetím odlišné cíle. JSPWiki je jednoduchá na instalaci, nemusí se téměř nic nastavovat a je hned připravena k základnímu použití. Základní práce s ní je intuitivní a snadná. Tato wiki používá jako výchozí úložiště pro stránky a přílohy souborový systém. Pomocí dodatečného modulu plug-in, který vytvořili sami uživatelé, lze JSPWiki připojit k databázi. Bohužel ale napojení JSPWiki na databázi bylo nakonec velmi pracné a nebylo funkční s nejnovější verzí systému. Problém funkčnosti modulů s novou verzí wiki se bohužel opakoval u několika různých doplňků. Zdroje informací, které jsou k této wiki k dispozici, sestávají prakticky pouze z oficiálních stránek a mailing listu, často jsou ale nepřesné či nelogicky uspořádané. Naproti tomu XWiki má instalaci poněkud složitější, protože je nastavit spojení s databází a správné kódování znaků. XWiki neumožňuje ukládat stránky a dokumenty na souborový systém, umí pracovat pouze s databází. Zpočátku působí trochu složitě, ale po přečtení několika článků a návodů na oficiálních stránkách je práce s ní poměrně jednoduchá. Oficiální stránky jsou dobře členěny a obsahují velké množství informací, které si udržují přehlednou strukturu. K dispozici je také mailing list (viz [3]), který, protože má XWiki více uživatelů než JSPWiki, obsahuje velmi mnoho popsaných a vyřešených problémů z pohledu uživatele i vývojáře. Závěrem tohoto srovnání lze říci, že JSPWiki se hodí lépe pro méně náročné projekty, kterým budou dostačovat základní funkce této wiki. Další rozšíření funkčnosti se dá moduly plug-in, ale díky poměrně úzké uživatelské komunitě jich není příliš k dispozici a ani nejsou udržovány. XWiki poskytuje již v základu mnohem více možností, dá se použít nejen jako wiki, ale také jako redakční systém. Z toho důvodu jsem se rozhodl zvolit XWiki jako základ vytvářeného systému. 9 4. Použité technologie 4.1. XWiki Samotné jádro systému je tvořeno aplikací XWiki Enterprise. Lze ji získat buď ve formě již zkompilovaného souboru typu war, nebo je možné stáhnout zdrojové kódy a zkompilovat je. 4.1.1. Architektura XWiki je postavena na MVC 1 frameworku Struts. Framework usnadňuje její rozdělení do 3 základních vrstev model-view-controller umožňujících mj. oddělení aplikační logiky od prezentační. O zachycení HTTP požadavku se stará Struts servlet, který na základě analýzy URL deleguje obsluhu na další objekty (tzv. Action objekty). Výsledná stránka se renderuje pomocí šablonovacího systému Velocity. Obrázek 4.1 Zpracování HTTP požadavku (obrázek pochází z [23]) Velocity šablony se zapisují pomocí Velocity Template Language (VTL, bližší informace o Velocity na [4]). Ten umožňuje mj. přístup k Java objektům systému a použití základních logických konstrukcí (větvení kódu na základě podmínek, cykly). V XWiki je možné napsat si vlastní Velocity šablony a použít je buď k vytvoření nového vzhledu systému, nebo je vkládat do těla stránky. Výhodou je, že direktivy a odkazy na objekty ve VTL lze použít přímo při úpravě stránky a vkládat tak jednoduchou logiku do jejího těla. Druhou možností, jak vkládat kód do stránky, je použít jazyk Groovy (viz [5]). Některé objekty přístupné v XWiki pomocí Velocity: $doc – aktuální dokument $context – aktuální kontext 1 MVC – Model-View-Controller, architektonický vzor používaný pro návrh softwaru 10 $request, $response – HTTP požadavek a odpověď $xwiki – objekt XWiki Pro práci s databází používá XWiki framework Hibernate. Jedná se o objektově relační nástroj pro mapování, díky kterému lze k údajům z databáze přistupovat jako k objektům. Hibernate dává k dispozici také vlastní dotazovací jazyk pro získávání těchto objektů, Hibernate Query Language. Jednou z výhod použití frameworku je jeho podpora velkého množství databází, díky čemuž je XWiki možné provozovat na několika různých databázích. Mapování objektů lze měnit pomocí úpravy konfiguračních souborů. Lze tak přidávat mapování pro případné další databázové tabulky. XWiki se dá rozdělit do tzv. prostorů (namespaces). Každá stránka má pak plný název ve tvaru NázevProstoru.JménoStránky. URL adresa vždy obsahuje označení prostoru a jméno stránky ve tvaru NázevProstoru/JménoStránky. Stránky musí mít v rámci jedné namespace unikátní názvy, ale mohou mít stejné, pokud se nachází v různých namespaces. Prostory se nedají do sebe vnořovat, nelze tedy mít plný název stránky typu Prostor1.Prostor2.JménoStránky. Toto omezení částečně odstraňuje možnost označit u stránky její rodičovskou stránku a tím obsah dále strukturovat. Stránky je také možné taggovat a rozdělovat je tak do dalších kategorií (např. Foto, Různé apod.). Každý prostor má domovskou stránku nazvanou WebHome. Vytváření vlastních modulů plug-in do XWiki vyžaduje povinné vytvoření dvou tříd, které implementují potřebná rozhraní. Doplněk pak lze použít jeho zavoláním, které je součástí obsahu nějaké XWiki stránky. Nové zásuvné moduly vyžadují při svém prvním spuštění z bezpečnostních důvodů administrátorská práva. Je-li například na stránce volání nějakého modulu plug-in, pak se toto volání začne provádět až tehdy, když je stránka opětovně uložená administrátorem. Dokud ji administrátor neuloží, pak se volání neprovede. 4.1.2. Správa XWiki Správu celé XWiki lze provádět přes hlavní administrační rozhraní. Takto provedená nastavení ovlivní všechny stránky ve všech prostorech. Správce může mj. vytvářet skupiny a uživatele, povolovat registraci do systému, importovat stránky, měnit styl a rozložení stránek, nastavovat uživatelská práva na úrovni celé wiki. Část správy systému lze ale také přenechat na jednotlivých prostorech, které mají administrační prostředí. Na úrovni prostoru jde nastavovat práva a vzhled stránek. V omezené míře lze pak nastavit práva i na úrovni stránky (viz Tabulka 4.1). Při vyhodnocování práv se nejprve zjistí práva stránky. Pokud nemá žádná práva nastavena, zjišťují se práva prostoru, ve kterém se stránka nachází. Pokud ani zde nejsou žádná práva, bere se v potaz nastavení práv celé XWiki. Práva lze přiřadit jednotlivým uživatelům zvlášť, nebo je možné uživatele sdružovat do skupin a nastavit práva dané skupině. 11 Právo View Comment Edit Delete Admin Program Register XWiki Ano Ano Ano Ano Ano Ano Ano Prostor Ano Ano Ano Ano Ano Ne Ne Stránka Ano Ano Ano Ano Ne Ne Ne Tabulka 4.1 Možnosti nastavení práv na jednotlivých úrovních Na úrovni celé XWiki lze nastavit, jaký skin se použije pro zobrazování. Na úrovni prostoru lze pak nastavit, jaké rozložení stránky se použije (jedno, dvou nebo tří sloupcové rozložení). 4.1.3. Editace stránek Vytvoření nové stránky je obdobné jako v jakémkoliv jiném wiki systému. Stačí v prohlížeči přejít na URL adresy neexistující stránky a systém nabídne její vytvoření. Tímto způsobem lze vytvářet i nové prostory. Stránky lze samozřejmě také smazat, ale u prostorů žádná taková funkce není k dispozici. XWiki prostor sama odstraní ve chvíli, kdy je z něho smazána poslední stránka. Pokud do těla stránky vložíme odkaz na neexistující stránku a poté se pokusíme pomocí odkazu na stránku přejít, bude mít takto vytvořená stránka jako rodiče nastavenu tu stránky, do jaké jsme vložili odkaz. Ke stránkám lze vkládat přílohy (obrázky, dokumenty apod.), které se ukládají do databáze. XWiki bohužel neumožňuje, aby jedna příloha náležela k více stránkám (tj. byla ve výpisu příloh u dané stránky), je tedy nezbytné v případě potřeby duplikovat přílohy nebo použít přímý odkaz na přílohu. Pokud je ke stránce opakovaně přiložena příloha se stejným jménem, pak dojde k nahrazení novým souborem a úpravy verze přílohy. Pomocí verzování lze zpětně prohlížet nebo vracet starší verze příloh. Standardně je název přílohy omezen na délku nejvýše 25 znaků. XWiki řeší i situaci, kdy chce více uživatelů editovat jednu stránku současně. V případě, že jeden uživatel začne upravovat stránku, umístí se na ni zámek (lock). Pokud v této době bude chtít upravit tuto stránku jiný uživatel, zobrazí se varovné hlášení, že je stránka již editována. Zpráva má ale pouze informační charakter, protože uživatel si může editaci potvrzením tohoto hlášení vynutit. Tuto možnost z hlediska kódu není snadné odstranit, ale je možné odstranit z hlášení možnost pokračovat k úpravě stránky. Jedná se tedy pouze o skrytí z pohledu uživatelského rozhraní, ale samotná funkce bude dostupná stále (podrobněji i s návodem zde [6]). Stránky lze exportovat do formátů PDF, HTML, RTF a XAR. Součástí XAR archivu jsou xml soubory, které se jmenují shodně jako exportované stránky. XML soubory (viz Obrázek 4.2) obsahují informace o vlastnostech stránky (autor, datum vytvoření apod.) a samotný obsah stránky. 12 Obrázek 4.2 Příklad exportované XWiki stránky Editace stránky lze provádět několika různými způsoby. První možností je použít WYSIWYG 1 editor. Editor nabízí poměrně široké možnosti formátování textu, ale jeho používáním se může bohužel přijít i o část obsahu stránky. Často se to děje, pokud stránka obsahuje VTL nebo Groovy kód. Tento problém byl zejména u starších verzí XWiki, při delším používání jsem s aktuální verzí tento problém nezaznamenal. V současné době ho lze použít v prohlížečích Internet Explorer (7 a 8) a Mozilla Firefox (2.x, 3.0.x). Protože se ale na jeho vývoji stále pracuje, lze očekávat, že se postupně všechny tyto nedostatky odstraní. Druhou možností je použít tzv. wiki editor, ve kterém se stránka upravuje v textovém módu. XWiki podporuje několik možných syntaxí, které lze použít. Z vlastních syntaxí XWiki lze použít XWiki Syntax 1.0 a 2.0. Verze 2.0 je nová a ne všechny možnosti ze starší verze 1.0 jsou v ní implementovány. K dispozici jsou i syntaxe jiných wiki systému, např. MediaWiki, JSPWiki a TWiki. Obsah stránek je ale možné psát i přímo v HTML (verze 4.01) nebo XHTML 1.0. Sadu dostupných syntaxí lze definovat v konfiguračním souboru XWiki. Poslední možností, jak upravit obsah stránky, je pomocí inline editoru nebo editoru objektů. Inline editor umožňuje pomocí formulářových polí měnit hodnoty atributů objektů, 1 WYSIWYG – What You See Is What You Get. Označení editoru, který umožňuje formátovat bez znalosti formátovacího jazyka 13 tzv. XWiki Objects. Editor objektů pak přímo nabízí měnit tyto atributy skrze standardní unifikované prostředí systému. 4.1.4. XWiki Classes a XWiki Objects XWiki Classes jsou základním prvkem XWiki. XWiki Class je šablona (předpis), podle které se s konkrétními údaji vytvoří XWiki Object. Třída definuje, jaké atributy má objekt mít a jakého jsou typu. Ve své podstatě je pak objekt instancí třídy. Definice tříd se pomocí speciálního editoru přikládají ke stránkám, které se obvykle jmenují stejně jako k nim přiložená třída. Každá stránka může obsahovat definici nejvýše jedné třídy. Každá třída může mít několik atributů. Každý atribut má definován název, „pěkný“ název (pro formátovaný výpis), datový typ a dále několik příznaků, které určují vlastnosti atributu. Mezi podporované datové typy patří např. string, number, date, boolean nebo password. Příznaky atributu pak mohou určovat, zda se jedná o povinný atribut nebo jestli ho lze měnit. Pokud je atribut povinný, lze zadat i validační pravidlo pro jeho obsah. Třídy nemají žádné metody, ale lze pomocí jejich šablon definovat, jak zacházet s jejich atributy a jakým způsobem je vypisovat. Stránka může mít několik objektů, ale objekty nelze žádným způsobem sdílet mezi stránkami. Proto musí každý náležet právě jedné stránce. Ke každému objektu lze napsat šablonu, jak se má na stránce zobrazovat. K objektům stránky lze přistupovat také pomocí čísla, které určuje, v jakém pořadí byly ke stránce přidány. Na rozdíl od instancí tříd v OOP 1 (např. v jazyce Java nebo C#), XWiki objekty nelze pojmenovávat. Jejich identifikace na stránce je založena na znalosti XWiki třídy a případně jejich pořadového čísla. Příkladem tříd jsou XWikiRights (instance třídy obsahuje definice práv a uživatele, na které se práva vztahují), XWikiGroups (člen uživatelské skupina), XWikiUsers (uživatel), XWikiComments (komentář na stránce). Pokud uživatel například přidá ke stránce komentář, tak se ve skutečnosti vytvoří instance třídy XWikiComments a přiloží se ke stránce. 4.2. Ostatní technologie K provozu systému je potřeba databáze. Protože v XWiki je použit Java framework Hibernate, je možné zvolit z několika databází, které tento framework podporuje. Relační MySQL databáze byla zvolena proto, že se jedná o jednu z nejpoužívanějších databází. Byla použita verze 5.0.51a. JSP/Servlet Container je nezbytný pro chod Java EE aplikací. Apache Tomcat je open-source kontejner, který dostačuje pro běh systému. Byla použita verze 6.0.18. Dále byl použit balík tříd org.apache.commons.httpclient, který usnadňuje komunikaci pomocí HTTP(S) protokolu. Byla použita verze 3.1 (k dispozici na [7]). Pro parsování HTML stránek byl zvolen balík org.htmlparser. Byla použita verze 1.6 (k dispozici na [8]). 1 OOP – objektově orientované programování 14 5. Analýza a návrh řešení Celý systém pro podporu výuky se skládá ze samotné XWiki a modulů plug-in, které pomohou XWiki přizpůsobit pro potřeby výsledného řešení. 5.1. Struktura stránek v systému Celá XWiki je rozdělena do prostorů. Každý předmět má svůj prostor s názvem shodným s kódem předmětu. V tomto prostoru jsou všechny stránky, které se týkají daného předmětu. Stránky předmětu lze rozdělit do dvou základních skupin na povinné a nepovinné. Povinné stránky vznikají při počátečním importu předmětu a jejich existence je nezbytná pro práci se systémem. Nepovinné stránky jsou pak ty, které vznikají z vlastní iniciativy uživatelů. Každý uživatel wiki má profilovou stránku, které zároveň obsahuje speciální XWiki objekt, bez kterého uživatel nemůže v systému existovat. Stránka se nachází v prostoru Uzivatel a její název je shodný s přihlašovacím jménem uživatele (nebo s jeho variantou platnou pro celé ČVUT). Dále pak má uživatel vlastní prostor se stejným názvem jako je jeho přihlašovací jméno. V systému jsou dále vyhrazené prostory, které jsou vyžadovány jednotlivými zásuvnými moduly. Klíčové pro běh systému jsou prostory Predmet a Predmety a jejich stránky. Stránky z prostoru Predmet slouží jako šablony pro stránky předmětů (úvodní stránky, administrační stránky apod.). Prostor Predmety obsahuje XWiki třídy, jejichž instance jsou připojeny ke stránkám z prostoru Predmet. Některé doplňky pak používají stránky z prostoru Plugin. Seznam všech uživatelů XWiki rozdělený na studenty a vyučující se nachází v prostoru Seznam, konkrétně se jedná o stránky SeznamStudentu a SeznamVyucujicich. Obrázek 5.1 Základní schéma rozdělení stránek systému 15 5.2. Modul plug-in pro offline editaci Tento doplněk slouží k offline editaci stránky. Uživatel si může stránku stáhnout do souboru v textovém formátu. Soubor obsahuje tělo stránky v syntaxi, ve které byla stránka původně vytvořena. Uživatel může tento soubor upravovat na svém lokálním disku za pomoci textového editoru. Po skončení editace pak nahraje pomocí rozhraní soubor do XWiki a nahradí tak původní obsah stránky. Každá offline editace stránky začíná uložením jejího obsahu na disk. Poté má uživatel dvě možnosti, jak úpravu dokončit. Může nahrát nový textový soubor, jehož obsah se nahradí aktuální obsah stránky. V takovém případě je poté uživatel přesměrován na stránku, kde vidí porovnanou jeho aktuální verzi a verzi, která byla v systému před vložením jeho souboru. Obrázek 5.2 Případ užití modulu pro offline editaci 16 V průběhu editace je na stránku umístěn tzv. zámek. Jedná se o funkci XWiki, která stránku označí jako právě upravovanou. Pokud by pak chtěl jiný uživatel upravovat stránku, bude upozorněn na již probíhající úpravu. Toto varování lze ale potvrdit a vynutit si editaci. Obrázek 5.3 Diagram aktivit pro Offline editor 5.3. Modul plug-in pro konverzi do DokuWiki syntaxe Tento doplněk umožňuje konvertovat každou stránku v XWiki syntaxi XWiki Syntax 1.0 do DokuWiki syntaxe. Výstupem této operace může být několik souborů, které jsou přiloženy k speciální wiki stránce, která je určena pouze pro tento doplněk. Výstupem konverze je vždy textový soubor, který obsahuje stránku v nové syntaxi. Pokud při převodu došlo k chybám, je ke stránce přiložen další textový soubor, který obsahuje chybová hlášení. Jestliže se na stránce nachází obrázky, pak jsou staženy a přiloženy do zip archivu. 17 Obrázek 5.4 Sekvenční diagram pro DokuWiki konvertor Nejprve je text (tělo stránky) rozdělen na menší části podle výskytu tzv. escape značek, které zabraňují XWiki renderovat danou část textu a text mezi nimi je zobrazen tak, je jak napsán. Konvertor v případě, že se na stránce vyskytuje lichý počet těchto značek, nebere v potaz poslední značku. Poté začne samotná konverze, která se provádí po jednotlivých řádkách. Pokud je v textu odkaz, zkontroluje se, zda je externí nebo interní (v rámci XWiki). Interní odkazy se upraví tak, aby byly přístupné z jakéhokoliv webu. Nachází-li se na stránce obrázek, parsuje se text nejprve tak, aby se zjistily veškeré údaje o něm (šířka, výška, adresa). XWiki umožňuje zadat rozměry obrázků i v procentech, což ale nepodporuje DokuWiki. Rozměry v procentech se tedy přepočítávají do absolutních jednotek (pixel). Protože na stránce může být jeden obrázek vícekrát, je zbytečné ho pokaždé umisťovat do výsledného zip archivu. Každý obrázek se stáhne do dočasného adresáře a spočítá se jeho hash. Ten se porovná s hash kódy již stažených obrázků a tím se zabrání jejich duplikaci v archivu. Pokud 18 se na stránce nachází nadpis nejnižší úrovně (tj. úroveň 6), je konvertován do DokuWiki nadpisu úrovně 5, protože DokuWiki nepodporuje 6 stupňů nadpisů. Výsledné soubory jsou přiloženy k XWiki stránce a jejich název začíná názvem konvertované stránky. Stránka je společná pro celý doplněk, je tedy možné, že se na ni bude nacházet více souborů. 5.4. Modul plug-in pro import DokuWiki Modul slouží pro import již existujících DokuWiki (primárně určen a testován pro server webdev.felk.cvut.cz), které slouží pro účely podpory výuky. Pro úspěšný import je potřeba mít uživatelský účet na cílové wiki a administrátorský účet na XWiki. Doplněk podporuje dva různé módy URL na zpracovávané DokuWiki. Jedním z módu jsou tzv. pěkná URL a druhým módem jsou URL v nativním tvaru DokuWiki. Tento nativní formát podporuje každá DokuWiki bez potřeby dalších doplňků nebo nastavení. Příklad módů URL: a) Nativní formát - XYKOD/doku.php?id=cviceni:navod:image b) „Pěkný“ formát - XYKOD/cviceni/image/navod Import vždy začíná pokusem HTTP klienta o přihlášení se na cílové stránky. V případě úspěšného přihlášení se uloží cookies s údaji, které bezpečně identifikují klienta při komunikaci se serverem. Pro každý importovaný předmět je vytvořen prostor s názvem shodným s kódem předmětu. Pokud již v systému existuje prostor s takovým názvem, jako název se použije řetězec ve tvaru XYKOD_X, kde X je první číslo, které dosud není pro název prostoru použito. V následujícím kroku se získá obsah tzv. index stránky, která obsahuje výpis všech stránek na dané DokuWiki. Pomocí html parseru se z této html stránky získají všechny odkazy a následně se zpracují. Protože DokuWiki podporuje na rozdíl od XWiki vnořování prostorů do sebe, je třeba odkazy a názvy stránek upravit tak, aby byla zachována logická struktura stránek. Toho je docíleno pomocí označování rodičovských stránek, které je v XWiki podporováno. Je-li např. odkaz na stránku v podobě XYKOD/cviceni/image/navod, pak pro předmět se vytvoří prostor XYKOD. Pro stránku „návod“ je určen rodič stránka „image“ a pro ni je pak rodičem stránka „cviceni“. Stránky, které se v URL adrese nachází ihned za kódem předmětu (jako např. „cviceni“) mají jako rodičovskou stránku zvolenu domovskou stránku prostoru. Původní odkaz je pak změněn na XYKOD.cviceni_image_navod. Odkaz pak prochází ještě další kontrolou, která zabezpečuje jeho správnost. Protože se v průběhu importu zpracovávají všechny odkazy stejným způsobem, je zajištěna jejich použitelnost i v XWiki. 19 Obrázek 5.5 Diagram aktivit pro import DokuWiki Po zpracování index stránky se prochází všechny v ní nalezené odkazy a postupně se pomocí HTTP klienta stahují stránky na těchto odkazech. Pokud se na stránce nachází obrázek, soubor (např. pdf, doc apod.) nebo java applet, provede se kontrola, zda se tyto objekty nachází přímo na cílové DokuWiki nebo se jedná o externí soubory. Soubory z DokuWiki se stahují do XWiki, přikládají se ke stránkám a příslušné HTML tagy jsou opět opraveny na funkční. Aby se zabránilo několikanásobnému přiložení jednoho souboru ke stránce, je vždy v rámci stránky prováděna kontrola hash kódu. Velikost stahovaného souboru je omezena na 10MB. Všechny importované stránky je možné upravovat pomocí standardních wiki a WYSIWYG editorů XWiki. 20 Obrázek 5.6 Detail aktivity Zpracovat stránku 5.5. Modul plug-in pro vytvoření a administraci předmětu Tento administrační modul obstarává jak vytváření nových předmětů, tak i jejich pozdější správu. 5.5.1. Import předmětu Pro každý předmět, který se ze zdrojového xml dokumentu vytvoří, se provede řada kroků (tento modul plug-in používá data, jejichž zpracování a uložení do databáze navrhl a implementoval kolega Milan Kocourek). Každý předmět má v systému vlastní prostor, který obsahuje všechny stránky předmětu. Název prostoru je shodný s kódem předmětu. Nejprve se zkontroluje, zda jsou studenti a vyučující předmětu již v systému. Pokud v systému ještě nejsou, vytvoří se pro každého z nich nový uživatelský účet (na základě získaných dat ze zdrojového soboru). Protože je každý uživatel zastoupen XWiki objektem třídy XWikiUsers, je pro každého uživatele vytvořena stránka Uzivatel.login, kde login je uživatelovo přihlašovací jméno získané při importu. K této stránce je pak přiložena instance třídy XWikiUsers s vyplněnými údaji a instance třídy Predmety.UzivatelInfoClass, která slouží k vypsání všech předmětů, s jakými je uživatel v systému aktuálně spojen (spolu s rolí k danému předmětu). 21 Úplný seznam uživatelů je rozdělen do dvou skupin, Seznam.SeznamStudentu a Seznam.SeznamVyucujicich. Každý uživatel má v systému vlastní prostor (s návem „login“ z Uzivatel.login), kde má plná práva pro editace, ale kde nemá administrační práva. Účastníci předmětu se dále přidají do uživatelských skupin, které odpovídají jejich roli v předmětu. Rozdělení do těchto skupin ulehčuje správu uživatelských práv. Seznam uživatelských skupin pro předmět s kódem XYKOD: XYKOD.XYKODStudenti - studenti XYKOD.XYKODPrednasejici - přednášející XYKOD.XYKODCvicici – vedoucí cvičení XYKOD.XYKODVedouciLab – vedoucí laboratoří (proseminářů), z výstupu z informačního systému KOS nelze odlišit laboratoř a proseminář XYKOD.XYKODVedouciJedno – vedoucí jednorázových akcí XYKOD.XYKODEx – bývalí studenti předmětu Obrázek 5.7 Diagram aktivit pro import předmětů 22 Při importu dochází ke kontrole zapsaných studentů v předmětu. Pokud při prvním importu dat byl zapsán uživatel A, ale při druhém importu již předmět zapsán neměl, pak je uživatel A přesunut ze skupiny XYKOD.XYKODStudenti do XYKOD.XYKODEx a je tak evidován jako bývalý student předmětu. Tento přesun je prováděn z toho důvodu, že všichni správci předmětu nemusí na konci semestru provést přesun studentů do skupiny bývalých studentů. Pokud by na to například zapomněli a přesun při importu by neproběhl, pak by studenti přišli o možnost přístupu k materiálům. Protože ze zdrojového xml souboru nelze zjistit garant předmětu, který by měl mít administrátorská práva, jsou tato práva přiřazena skupině přednášejících, kteří jsou ve většině případů také garanty předmětů. Pokud předmět nemá přednášky, pak se postupně zjistí v tomto pořadí počet cvičících, vedoucích laboratoří a proseminářů a vedoucích jednorázových akcí. První skupině s počtem členů větším jak jeden jsou přidělena administrační práva. Není-li k dispozici žádná skupina vyučujících, pak není určen uživatel s administračními právy. Podrobné rozložení práv ukazuje Tabulka 5.1. Do skupiny Cvičící spadají cvičící, vedoucí laboratoří, proseminářů a jednorázových akcí. Právo / Skupina Přednášející Studenti Cvičící Bývalí stud. Nepřihlášený View ANO ANO ANO ANO NE Comment ANO ANO ANO NE NE Edit ANO NE ANO NE NE Delete ANO NE ANO NE NE Admin ANO NE NE NE NE Tabulka 5.1 Standardní nastavení práv pro předmět Pro každý předmět je vytvořeno několik stránek (domovská stránka předmětu a administrační stránky pro předmět). Stránky jsou vytvořeny dle existujících stránek z prostoru jménem Predmet. 5.5.2. Administrace předmětu Administrace předmětu se skládá celkem ze tří stránek: XYKOD.Administrace, XYKOD.AdministracePresun a XYKOD.WebPreferences. Poslední stránka je standardní stránka XWiki pro administraci prostoru a přístup k ní mají pouze administrátoři prostoru (tj. garanti předmětu). K ostatním stránkám mají přístup pouze vyučující předmětu, a pokud nejsou garanti, pak mají na stránkách omezené možnosti. Administrační část modulu plug-in nabízí několik funkcí, které jsou potřebné pro správu předmětu nebo které působí jako zprostředkovatelé mezi správou předmětu a vlastní XWiki a usnadňují složité operace. Mezi základní administrační funkce patří správa sekcí uvnitř předmětu. Každá sekce má jednu hlavní stránku a skupinu dalších stránek, jejichž předkem (nebo prapředkem, protože sekce se dají vnořovat) je hlavní stránka sekce. Uživatel může pomocí jednoduchých formulářů vytvářet nové sekce podle šablony nebo prázdné. Sekce podle šablony vycházejí opět ze stránek v prostoru Predmet a vytvoří několik vzájemně provázaných stránek s požadovaným obsahem. Pokud uživatel vytvoří prázdnou sekci, pak vznikne nová prázdná stránka, která bude mít jako rodiče tu stránku, kterou zvolil uživatel. 23 Výčet sekcí, které lze vytvořit dle šablony: Cvičení Přednášky Laboratoře / prosemináře Jednorázové akce Seznam vyučujících Obrázek 5.8 Detailní diagram případu užití pro administraci předmětu 24 První čtyři možnosti jsou si velmi podobné. Vždy se vytvoří úvodní stránka sekce, kde se podle vlastností předmětu (počet cvičení, přednášek apod.) vygenerují odkazy pro každé jedno cvičení nebo přednášku. Dále se vytvoří stránka se seznamem všech cvičení, přednášek, laboratoří/proseminářů a jednorázových akcí spolu se základními informacemi o nich. Pro každé cvičení (přednášku apod.) se vytvoří stránka s podrobnějšími detaily a stránka s hodnocením (hodnocení není implementováno, jen se pro něj připraví stránka). Tyto sekce jsou při každém prohlížení generované z databáze a jejich obsah tak ovlivní volba semestru, který lze nastavit v administraci. Možnost Seznam vyučujících vytvoří stránku s výpisem všech vyučujících a odkazem na jejich profily. K dispozici je také možnost rychlého smazání sekce, které odstraní zvolenou rodičovskou stránku a všechny její přímé potomky. Další možností administrace je nastavení práv na úrovni sekce. Protože XWiki umí hromadně spravovat práva jen na úrovni celého systému a prostorů, bylo třeba implementovat správu práv na úrovni sekcí. Pokud se tedy nastaví práva pro sekci, ovlivní toto nastavení i všechny její stránky (a stránky vnořených sekcí). V XWiki ale nelze přesně jednoduše zjistit počet vnořených sekcí a stránek v sekci, je nastavení práv omezeno pouze na 8 úrovní zanoření. Celé nastavení práv spočívá v tom, že se pro každou jednu stránku nastaví zvolená práva. Poslední možností správy předmětu je přesun studentů mezi cvičeními. Tuto funkci implementoval kolega Milan Kocourek. 5.6. Modul plug-in pro seřazený výpis stránek Každý předmět potřebuje navigaci, pomocí které se bude uživatel orientovat. Tento modul zajišťuje generování hierarchického seznamu odkazů tak, aby jeho struktura korespondovala se strukturou stránek předmětu. Ve výpisu jsou pouze ty stránky, které má uživatel právo vidět. Každý předmět může vyžadovat jiný styl řazení stránek (např. chce mít cvičení před přednáškami a naopak). Každé stránce je přiřazena váha, která určuje její umístění ve výpisu. Pokud se váhu nepodaří zjistit, použije se výchozí hodnota. Předmět může mít velké množství např. cvičení, které by výpis učinily nepřehledným. Proto lze nastavit, zda se budou stránky s informacemi o paralelkách a jejich hodnocením vypisovat. Je také možné nastavit hloubku výpisu. Pro zadání váhy se používá XWiki objekt třídy XWiki.TagClass. Tato třída slouží k označování stránek štítky, které ale z charakteru účelu systému nejsou potřeba nebo je lze nahradit určením rodičovské stránky. Výhodou použití této třídy je fakt, že XWiki přidává její instanci automaticky ke každé nové stránce. Uživatel tak nemusí provádět složité úkony a stačí upravit vlastnost tohoto objektu. 25 5.7. Modul plug-in pro tvorbu administrátorů Uživatelé systému jsou importováni z exportovaného xml souboru z informačního systému KOS. Tímto způsobem je zajištěno, že každý student a každý vyučující budou mít uživatelské účty. Může se ale stát, že správce XWiki bude uživatel, který není svázán s žádným předmětem. Tím pádem se jeho uživatelský účet při importu dat nevytvoří. Z povahy systému je pak velmi pravděpodobné, že bude zakázána také registrace nových uživatelů. Díky tomu nastane problém, jak efektivně přidat více uživatelů jako administrátorů. Tuto situaci řeší tento modul. Pomocí jednoduchého formuláře na stránce doplňku lze přidávat uživatelská jména a modul po odeslání formuláře vytvoří nové uživatele s administrátorskými právy. Pokud již uživatel v systému existuje, jsou mu pouze přidána práva. Používat modul mohou pouze administrátoři XWiki. Prvním administrátorem systému je typicky ten, kdo ho instaluje na server. Výchozí přihlašovací jméno tohoto uživatele je admin a heslo také admin. Obrázek 5.9 Diagram aktivit pro tvorbu administrátorů 26 6. Implementace Implementaci lze pro přehlednost rozdělit do několika kategorií. První kategorií je publikační část, která se týká pouze tvorbou stránek potřebných pro předmět a jejich strukturou. Ostatní části implementace popisují jednotlivé moduly plug-in. U diagramů tříd jsem nevypisoval klasické get a set metody, které vrací nebo nastavují proměnné třídy, a některé méně důležité metody a proměnné. 6.1. Princip tvorby modulů plug-in Pro vytvoření vlastního modulu je třeba implementovat dvě Java třídy. Postup vysvětlím na příkladu modulu s názvem MujPlugin, jehož hlavní funkcí je vrácení textového řetězce „Ahoj“. Nejprve se musí vytvořit třída MujPlugin, která rozšiřuje existující třídu XWikiDefaultPlugin. V této třídě se musí implementovat několik povinných metod: konstruktor – má dva textové parametry a jeden parametr typu XWikiContext getName() - vrací jméno modulu plug-in getPluginApi() – vrací API 1 tohoto modulu, má dva parametry typu XWikiPluginInterface a XWikiContext init() – inicializuje modul, má jeden parametr typu XWikiContext Druhou povinnou třídou je pak vlastní API, které by mělo rozšiřovat třídu Api. Je zvykem, aby název této třídy končil řetězcem „Api“. V této třídě je třeba deklarovat proměnnou (v tomto případě typu MujPlugin) s modifikátorem private. Jedinou povinnou metodou je konstruktor, který obsahuje dva parametry (jeden je typu MujPlugin a druhý XWikiContext). Tato třída pak dále obsahuje jakékoliv další metody, které má modul poskytovat. V tomto případě jsem jako jedinou další metodu použil getPozdrav. 6.1.1. Třída MujPlugin package com.xpn.xwiki.plugin.example; import import import import com.xpn.xwiki.XWikiContext; com.xpn.xwiki.api.Api; com.xpn.xwiki.plugin.XWikiDefaultPlugin; com.xpn.xwiki.plugin.XWikiPluginInterface; public class MujPlugin extends XWikiDefaultPlugin { public MujPlugin(String name, String classname, XWikiContext context) { super(name, classname, context); 1 API – Application programming interface, obsahuje soubor metod, které poskytuje nebo používá modul 27 } public String getName() { return "mujPlugin"; } public Api getPluginApi(XWikiPluginInterface plugin, XWikiContext context) { return new MujPluginApi((MujPlugin) plugin, context); } public void init(XWikiContext context) { super.init(context); } } 6.1.2. Třída MujPluginApi package com.xpn.xwiki.plugin.example; import com.xpn.xwiki.XWikiContext; import com.xpn.xwiki.api.Api; public class MujPluginApi extends Api { private MujPlugin plugin; public MujPluginApi(MujPlugin plugin, XWikiContext context) { super(context); setPlugin(plugin); } public void setPlugin(MujPlugin plugin) { this.plugin = plugin; } public MujPlugin getPlugin() { if (hasProgrammingRights()) { return this.plugin; } else { return null; } } public String getPozdrav(){ return "Ahoj"; } } 6.1.3. Použití modulu plug-in v XWiki Nejprve je třeba v konfiguračním souboru xwiki.cfg modul registrovat. Do seznamu použitých modulů se musí na začátek doplnit řetězec com.xpn.xwiki.plugin.example.MujPlugin,\. Do stránky, kde se bude tento doplněk používat, se vloží tento řetězec: $xwiki.mujPlugin.getPozdrav() 28 Tento příkaz volá metodu getPozdrav modulu s názvem mujPlugin (tento název je definován v třídě MujPlugin v metodě getName). Po uložení stránky se na místě volání vypíše pozdrav „Ahoj“. 6.2. Publikační část Každý předmět má sadu povinných a nepovinných stránek. Povinné stránky vznikají dle šablon již existujících stránek z prostoru nazvaném Predmet. Tento prostor obsahuje šablony i pro nepovinné stránky. Informace na stránkách jsou získávány z databáze na základě atributů XWiki tříd, jejichž instance jsou ke stránkám připojeny. XWiki třídy jsou použity, protože k nim lze napsat vlastní šablonu s kódem pro získávání dat z databáze a do výsledné stránky předmětu se pak vloží pouze odkaz na tuto šablonu. Díky tomu stránka předmětu neobsahuje téměř žádný programovací kód. Správa předmětu pomocí stránky Administrace ovlivňuje níže vypsané třídy a další objekty XWiki (např. pro přístupová práva je použit objekt XWikiRights a XWikiGlobalRights). 6.2.1. Třída AdministraceClass Tato třída slouží pro účely administrace předmětu. Obsahuje atributy, které ovlivní vypisování seznamů studentů nebo tvorbu pomocných odkazů na podklady k jednotlivým cvičením, přednáškám, laboratořím nebo jednorázovým akcím. Instance třídy jsou připojeny k většině stránek z prostoru šablon Predmet. Je to z toho důvodu, že to usnadňuje aktualizaci údajů. Pokud se přes administrační stránku předmětu změní jeho základní údaje, pak jsou nalezeny všechny instance třídy a jejich atributy jsou aktualizovány. Obrázek 6.1 XWiki třída AdminstraceClass Atributy třídy: id_predmetu – obsahuje identifikační číslo předmětu pocet_tydnu – určuje počet týdnů v semestru pocet_cviceni – počet týdnů, kdy se konají cvičení pocet_laboratori – počet týdnů, kdy se konají laboratoře pocet_prednasek – počet týdnů, kdy se konají přednášky semestr – aktuálně zvolený semestr, pro který se mají zobrazovat údaje 6.2.2. Třída CviceniSeznamClass Třída se používá pro vypsání seznamu paralelek pro položku v rozvrhu předmětu (cvičení, přednáška, laboratoř atd.). Pro určení typu této položky se používá atribut typ_paralelky. Šablona této třídy vypíše seznam všech paralelek, jejich základní údaje a odkazy na podrobnější informace o nich. 29 Atributy třídy: id_predmetu – obsahuje identifikační číslo předmětu typ_paralelky – určuje, zda se jedná o cvičení, přednášku, laboratoř nebo jednorázovou akci Obrázek 6.2 XWiki třída CviceniSeznamClass 6.2.3. Třída ParalelkaClass ParalelkaClass je třída sloužící pro detailní výpis informací o jednom konkrétním cvičení (přednášce, laboratoři apod.). Šablona třídy vypíše vyučujícího paralelky, čas a místo kde se koná a seznam studentů, kteří jsou zapsáni do této skupiny. Ve výpisu studentů je jejich ročník, číslo studijní skupiny a odkaz na jejich profily. Obrázek 6.3 XWiki třída ParalelkaClass Atributy třídy: id_predmetu – obsahuje identifikační číslo předmětu id_cviceni – identifikační číslo konkrétní paralelky typ_paralelky – typ paralelky (C je cvičení, P přednáška, L laboratoř, J jednorázová akce) id_listku – identifikační číslo lístku 6.2.4. Třída PredmetClass Tato třída je použita na úvodní stránce předmětu, kde vypisuje jeho název, katedru a rozsah. Atributy třídy: Id – obsahuje identifikační číslo předmětu kod – kód předmětu predmet – název předmětu katedra – identifikační číslo katedry rozsah – rozsah předmětu Obrázek 6.4 XWiki třída PredmetClass 6.2.5. Třída UživatelInfoClass Instance této třídy se přikládá ke stránce uživatelova profilu. Jejím úkolem je vypsat všechny předměty, kde se uživatel vyskytuje jako student a kde jako vyučující. K této činnosti nepotřebuje žádný atribut, ale protože XWiki požaduje, aby každá třída měla minimálně jeden, tak je ke třídě přidán atribut s názvem foo. 30 6.2.6. Třída VyucujiciClass Šablona třídy VyucujiciClass vypíše seznam všech vyučujících pro daný předmět. U každého vyučujícího je odkaz na jeho profil. Tato třída má pouze jeden atribut id_predmetu pro identifikaci předmětu. Obrázek 6.5 Úvodní stránka předmětu 6.3. Modul plug-in pro konverzi do DokuWiki syntaxe Konvertor do DokuWiki syntaxe se skládá ze 2 aplikačních tříd a 2 tříd, které reprezentují obrázky a odkazy. Hlavní třída modulu je DokuWikiKonvertorApi, která rozšiřuje třídu com.xpn.xwiki.api.Api. Tato třída je povinná pro všechny doplňky v XWiki a musí přepisovat některé metody původní třídy, bez kterých by nebylo možné doplněk použít. Pokud se na stránce nacházejí obrazové soubory, pak je vytvořena instance třídy Archiv. Třída Archiv má na starosti správu zip archivu a stahování obrázku z vlastní XWiki nebo z externí URL adresy a případně jejich následné archivu. Pro každý obrázek je vytvořena instance třídy Obrazek, která nese všechny potřebné údaje o obrázku (název, adresa, velikost, hash apod.). Pro výpočet kontrolní informace se používá hashovací funkce SHA-256. 31 Obrázek 6.6 Třída Obrazek a Odkaz Pro každý odkaz na stránce se vytvoří objekt třídy Odkaz, který má proměnné nastaveny na hodnoty korespondující s odkazem na stránce. Jedná-li se o interní odkaz (tj. v rámci XWiki), pak se odkaz doplní na tvar, který je přístupný nejen ze systému. Obrázek 6.6 ukazuje všechny proměnné tříd Obrazek a Odkaz. 6.4. Modul plug-in pro import DokuWiki Pro chod tohoto modulu jsou nezbytné externí třídy z balíku org.htmlparser a org.apache.commons.httpclient. První balíček obsahuje třídy pro parsování html kódu. Tento kód je rozdělen na strom uzlů, které reprezentují jednotlivé html elementy. Každý uzel obsahuje vnořené další uzly, podobně jako html element obsahuje další elementy. Kvůli této vlastnosti je třeba rekurzivně volat funkci, která zpracovává jednotlivé uzly. Jediné prvky stránky, které se mění, jsou interní odkazy DokuWiki a odkazy na soubory na původní DokuWiki (obrázky, dokumenty atd.). Odkazy a obrázky na stránce jsou při konverzi reprezentovány instancemi tříd Odkaz a Soubor. Odkazy na soubor jsou rozeznány pomocí html atributů. Stahování souborů má na starosti třída SpravceSouboru. Celé spojení obstarává třída Spojeni, která také stahuje jednotlivé soubory. Protože DokuWiki na serveru webdev.felk.cvut.cz používají HTTPS spojení, bylo třeba Obrázek 6.7 Třída Odkaz implementovat tvz. Trust Manager. Trust Manager na základě reprezentující HTML odkaz poskytnutých bezpečnostních certifikátů ověřuje důvěryhodnost webové stránky. Použitý trust manager považuje všechny certifikáty za důvěryhodné, protože použitý certifikát na serveru webdev.felk.cvut.cz není standardně rozeznán jako důvěryhodný. 32 Obrázek 6.8 Třída Spojeni a SpravceSouboru Na začátku každého spojení se provede pokus o přihlášení. Protože každá DokuWiki má stejný přihlašovací formulář, odešle se HTTP požadavek obsahující přihlašovací údaje na stránku, která zpracovává přihlašovací formulář. Pokud bylo přihlášení úspěšné, vytvoří se cookies a není třeba již dále posílat přihlašovací údaje. Všechny třídy obstarávající spojení využívají balíku org.apache.commons.httpclient. 6.5. Modul plug-in pro offline editaci Tato komponenta vyžaduje vlastní databázovou tabulku (nazvanou offlineeditor), do které ukládá záznamy o offline editacích. Protože XWiki používá pro přístup k databázi Hibernate, bylo třeba vytvořit mapovací soubor, který mapuje atributy třídy OfflineStrana na sloupce v tabulce offlineeditor. Tabulku není potřeba nijak vytvářet, Hibernate ji při prvním použití editoru sám vytvoří. Pokud uživatel chce editovat stránku v režimu offline, tak se provede kontrola, zda ji již neupravuje některý jiný uživatel. Při kontrole se prochází záznamy v již zmíněné tabulce a zároveň se prochází záznamy o klasické úpravě online, které si ukládá samotná XWiki. Pokud není nalezen záznam o žádné editaci, je k dispozici odkaz na stažení těla stránky. Nabídka ke stažení souboru je pak vyvolána prohlížečem, který tak reaguje na změněnou hlavičku HTTP odpovědi tak, aby představovala textový soubor. Pro nahrání nového obsahu stránky je použita Obrázek 6.9 Struktura komponenta XWiki, která se používá např. pro přidávání příloh. tabulky offlineeditor Zásuvný doplněk změní obsah stránky a zvýší číslo označující její aktuální verzi. Poté je uživatel přesměrován na stránku, kde vidí srovnání mezi tím, co nahrál a tím, co bylo v době nahrání obsahu na stránce. Pro toto zobrazení je opět mechanismus XWiki. 33 Obrázek 6.10 Rozhraní pro dokončení offline editace 6.6. Modul plug-in pro seřazený výpis stránek Výpis stránek je založen na hierarchické struktuře stránek, kdy jedna stránka má několik potomků. Každý z těchto potomků může být rodičem dalších stránek. Tato struktura může mít „nekonečné“ množství stupňů. Modul plug-in nejprve začne vyhledávat stránky, jejichž rodičem je hlavní stránka předmětu. Pro každou z takto nalezených stránek hledá další stránky, kterým je tato stránka rodičem. Toto hledání se provádí rekurzivním voláním. Jak již bylo zmíněno, množství takovýchto zanoření může být „nekonečné“, proto je třeba specifikovat maximální hloubku, do které se mají stránky prohledávat. Jméno rodičovské stránky může být ve tvaru Prostor.JmenoStranky i pouze JmenoStranky. Pro každou nalezenou stránku je vytvořena instance třídy SortedStranka, která implementuje rozhraní Comparable pro porovnání dvou objektů této třídy. Všechny stránky jsou umístěny do pole a vzestupně seřazeny podle jejich vah. Váha stránky se zadává pomocí objektu XWiki třídy TagClass. Pokud se váhu nepodaří zjistit, je stránce přiřazena výchozí hodnota 50. Do výpisu se zařazují jen ty stránky, které má uživatel právo prohlížet. 6.7. Modul plug-in pro tvorbu administrátorů Tento jednoduchý modul zpracovává textový řetězec, který obsahuje uživatelská jména. Pro každé jméno je vytvořen (pokud neexistuje) nový wiki uživatel. Uživatele systému reprezentuje objekt XWiki třídy XWikiUsers. Tento objekt je přiložen ke stránce v prostoru Uzivatel, která se jmenuje shodně s uživatelským jménem. Administrátorská práva pro celý systém se nastavují pomocí objektu XWikiGlobalRights, který musí být přiložen u stránky XWiki.XWikiPreferences. Objekt obsahuje specifikaci uživatelů, kterých se týká, a práv, jaká nastavuje. 34 Obrázek 6.11 Rozhraní pro tvorbu administrátorů 35 7. Testování Pro testování systému jsem provedl akceptační testy. Účelem těchto testů je zjistit, zda a do jaké míry vyhovuje systém zadaným požadavkům. Výsledky a zhodnocení testování jsem rozdělil dle struktury katalogu požadavků. Požadavky na systém o Poskytovat funkce a stránky nezbytné pro podporu výuky předmětu Splněno Služby dostupné pro nepřihlášeného uživatele o Přihlášení do systému Splněno Služby dostupné pro přihlášeného uživatele – stejné jako pro nepřihlášeného a navíc: o Odhlášení ze systému Splněno o Úprava stránky s profilem Splněno o Tvorba stránek pro vlastní potřeby Splněno Služby dostupné pro studenta předmětu – stejné jako pro přihlášeného a navíc: o Procházení a ukládání materiálů předmětu Splněno o Přidávání komentářů ke stránkám předmětů Splněno o Odevzdávání vlastních prací Částečně splněno – není vytvořeno rozhraní pro odevzdávání prací, ale lze použít nástroje XWiki (přidávání příloh ke stránkám). Pro odevzdávání textových prací může každý uživatel vytvářet vlastní stránky Služby dostupné pro vyučující předmětu – stejné jako pro přihlášeného a navíc: o Tvorba, úprava a mazání materiálů a stránek předmětu Splněno o Přidávání komentářů ke stránkám předmětu Splněno o Schvalování zadání semestrálních prací Částečně splněno – není k dispozici rozhraní pro schvalování, ale lze použít standardní editaci stránek ke schválení práce 36 o Export stránek do jiných syntaxí Splněno – vytvořen modul pro export do DokuWiki syntaxe o Offline editace stránek předmětu Splněno o Změna menu pro navigaci pro předmět Splněno – pomocí modulu pro seřazený výpis stránek Služby dostupné pro garanta předmětu – stejné jako pro vyučujícího a navíc: o Správa předmětu (správa práv na úrovni sekcí, přesun studentů do skupiny bývalých studentů, úprava základních údajů předmětu) Splněno Služby dostupné pro bývalé studenty předmětu – stejné jako pro přihlášeného a navíc: o Procházet stránky a materiály Splněno Služby dostupné pro administrátora systému – stejné jako pro všechny uživatelské role uvedené výše a navíc: o Správa systému Splněno o Tvorba stránek pro předměty na základě dat ze zdrojového souboru Splněno o Import existujících instancí DokuWiki Splněno o Přidávání administrátorů Splněno 37 8. Přístupnost a metodiky k jejímu posouzení 8.1. Pojem Přístupnost Přístupnost internetové stránky je pojem, který označuje, nakolik je stránka navržena s ohledem na její uživatele. Uživateli stránek mohou být různí lidé s různým omezením. Pravidla přístupnosti si pak kladou za cíl optimalizaci stránky tak, aby ji mohlo pohodlně používat co nejvíce uživatelů, ať už těch, kteří nejsou nijak limitování, ale také těch, kterým jejich fyzický nebo psychický stav nebo omezení např. typem hardwaru klade překážky v prohlížení stránek. 8.2. Web Content Accessibility Guidelines 2.0 Web Content Accessibility Guidelines 2.0 (WCAG 2.0, k dispozici na [9]) je metodika, pomocí které lze posoudit přístupnost internetové stránky. Tato metodika je dílem mezinárodní organizace World Wide Web Consorcium (W3C), která navrhuje a vytváří standardy a doporučení pro web. WCAG 2.0 byly schváleny v listopadu 2008 a nahrazují starší verzi z roku 1999. Cílem W3C bylo zpřehlednit tento soubor pravidel a uzpůsobit současným technologickým možnostem. Metodika WCAG 2.0 obsahuje čtyři základní principy. Tyto principy jsou dále členěny na pravidla. Každé pravidlo obsahuje několik kritérií se třemi různými úrovněmi (nejnižší A, AA, nejvyšší AAA). Splnění těchto kritérií určuje úroveň přístupnosti stránek. Základní principy jsou: Vnímatelnost Ovladatelnost Srozumitelnost Robustnost Vnímatelnost znamená, že uživatel musí být schopen získat informaci, která je na dané stránce. To například znamená nutnost zajistit obrazovému obsahu textové varianty, u zvukových informací pak dodat titulky, ale také uzpůsobit strukturu stránky pro tzv. asistivní technologie. Mezi ně patří např. screen reader, které používají nevidomí pří čtení internetových stránek. Výstup screen readeru je nejčastěji hlasový, může být doplněn o braillské řádky. Ovladatelnost si obecně klade za cíl umožnit uživateli ovládat stránku (její uživatelské rozhraní nebo aplikace na ní). V praxi to znamená, že by mělo být umožněno ovládat stránky např. jen pomocí klávesnice, nespoléhat se na polohovací zařízení (myš, touchpad apod.). Důležité je poskytnout uživateli dostatečný čas na obsluhu, nabídnout mu 38 pomůcky, které mu usnadní splnění cíle a nepoužívat prvky, které mohou např. vyvolat epileptické nebo jiné záchvaty. Srozumitelnost se soustředí na úroveň čitelnosti a srozumitelnosti textu na stránce. Uživatel by měl snadno pochopit smysl a rozmístění prvků na stránce, kontroluje se i kontrast barvy textu a jeho pozadí tak, aby byl text čitelný i pro např. barvoslepé uživatele. Definuje také, jak upozornit uživatele na nesprávně vyplněná formulářová pole. Robustnost se zaměřuje na kompatibilitu stránek a současných i budoucích zobrazovacích zařízení (včetně již zmíněných asistivních technologií). 39 9. Analýza přístupnosti XWiki V této části provedu analýzu přístupnosti XWiki dle Web Content Accessibility Guidelines 2.0. Zaměřím se zejména na typy stránek, se kterými přichází uživatel do styku nejčastěji. Analýzu provedu dle kritérií nejnižší úrovně A. Celá studie bude rozdělena do kroků podle principů WCAG 2.0. Každý krok obsahuje tabulku, která ukazuje, zda daná stránka splnila nebo nesplnila konkrétní kritérium. Pokud nebude některý požadavek splněn, navrhnu možnosti jeho splnění. Ověřování jednotlivých kritérií se ukázalo velmi obtížné, protože XWiki obsahuje množství kódu, který je generován ze souborů šablon Velocity frameworku a obsahuje Javascript, který vykonává další funkce. Použiji překlad kritérií od Zdeňka Rybáka a Radka Pavlíčka (k dispozici na [10] a jako příloha této práce). K dispozici je také tzv. checklist, tedy jakýsi kontrolní seznam, podle kterého lze ověřit splnění kritérií přístupnosti (originální text na [11] a český překlad na [12]). Jako prohlížeč, ve kterém test probíhal, byl zvolen Mozilla Firefox (ke stažení na [13]). Pro testování kontrastu a barev jsem použil doplněk do internetového prohlížeče Mozilla Firefox (doplněk k dispozici na [14]). Analyzované stránky: Úvodní stránka předmětu – označena zkratkou US Administrační rozhraní XWiki – označena zkratkou AR Editační rozhraní XWiki (jednoduchý wiki editor) – označena zkratkou JE Editační rozhraní XWiki (WYSIWYG editor) – označena zkratkou WE Přihlašovací stránka – označena zkratkou PS 9.1. Vnímatelnost 9.1.1. Pravidlo 1.1: Textové alternativy „Opatřete každý netextový obsah textovými alternativami, které je možné podle potřeby převést do jiných formátů jako například zvětšené písmo, bodové písmo, fonetický přepis či zjednodušený jazyk.“ Kritérium 1.1.1 Stránka US ANO Stránka AR ANO Stránka JE ANO Stránka WE NE Stránka PS ANO Tabulka 9.1 Splnění kritérií pro pravidlo 1.1 WYSIWYG editor je bez obrázků nepoužitelný, protože obrázky zde slouží jako tlačítka pro javascript a neobsahují žádný alternativní text, takže bez nich nelze editor použít jinak než ke vkládání prostého textu bez formátování (do WYSIWYG editoru nelze psát v žádné wiki ani html syntaxi). Naproti tomu základní wiki editor nabízí jen minimum obrázků 40 pro formátování textu. Každý obrázek nabízí textovou alternativu a tlačítku si zachovává svou funkcionalitu. Na všech stránkách jsou obrázková formulářová tlačítka (vyhledávací formulář), která nemají textový popisek (např. pomocí atributu ALT). Protože je ale umístění vyhledávacího panelu volitelné, nezohlednil jsem tento nedostatek při hodnocení. 9.1.2. Pravidlo 1.2: Multimediální prvky závisející na čase XWiki neobsahuje žádné multimediální prvky závisející na čase. 9.1.3. Pravidlo 1.3: Přizpůsobitelné „Vytvořte obsah, který lze prezentovat více způsoby (např. zjednodušený vzhled), aniž by přitom došlo ke ztrátě informací či narušení struktury.“ Kritérium 1.3.1 1.3.2 1.3.3 Stránka US NE ANO ANO Stránka AR ANO ANO ANO Stránka JE NE ANO ANO Stránka WE NE ANO ANO Stránka PS ANO ANO ANO Tabulka 9.2 Splnění kritérií pro pravidlo 1.3 Častým porušením kritéria 1.3.1 se ukázala absence popisků pro formulářová pole (pro přidávání komentářů, wiki editor, vkládání obrázků apod.). Pokud se položky nachází ve skupinách (fieldset), mají ve většině případů správně uveden popis pomocí tagu LEGEND. Jednotlivé položky ale nemají popisky často vůbec. Design XWiki také velmi často používá tabulky pro účely úpravy vzhledu stránky (např. zarovnání formulářů). Tyto tabulky ale neobsahují žádný popis. Stránka s administračním rozhraním přestože obsahovala množství tabulek, tak všechny měly pomocí atributu SUMMARY správně popis. 9.1.4. Pravidlo 1.4: Rozlišitelné „Usnadněte uživatelům slyšet a vidět obsah včetně odlišení popředí od pozadí.“ Kritérium 1.4.1 1.4.2 Stránka US NE Stránka AR Stránka JE Stránka WE NE NE NE XWiki neobsahuje audio obsah Stránka PS NE Tabulka 9.3 Splnění kritérií pro pravidlo 1.4 Důvodem, proč všechny stránky nesplnily kritérium 1.4.1, je formátování odkazů v horní části stránek, které vyjadřují hierarchické umístění stránky (tzv. breadcrumb menu). Kontrast šedého textu je vzhledem k bílému pozadí v poměru pouze 1,61:1. Dle kritéria je u odkazů, které jsou rozlišitelné pouze barvou, minimální poměr kontrastů 3:1 a je nezbytné použít další způsob odlišení odkazu (např. podtržení). Tyto odkazy jsou ale odlišeny pouze barvou. Vyjma tohoto nedostatku ale všechny stránky splňují požadovaná kritéria. 41 9.2. Ovladatelnost 9.2.1. Pravidlo 2.1: Přístupnost z klávesnice „Zajistěte, aby všechny funkce byly dostupné z klávesnice.“ Kritérium 2.1.1 2.1.2 Stránka US NE ANO Stránka AR NE ANO Stránka JE NE ANO Stránka WE NE ANO Stránka PS NE ANO Tabulka 9.4 Splnění kritérií pro pravidlo 2.1 Kritérium 2.1.1 vyžaduje, aby veškerá funkcionalita byla proveditelná pomocí klávesnice. XWiki má standardně nadefinováno několik klávesových zkratek pro většinu základních funkcí (editace, smazání stránky, přejmenování stránky). Na některé funkce, které nemají klávesové zkratky, se lze postupně dostat pomocí opětovného tisknutí klávesy Tab, což je sice neefektivní, ale funkční způsob. Bohužel zdaleka ne všechno lze provádět pouze pomocí klávesnice. Tisk stránek (pomocí XWiki), jejich kopírování, sledování stránek se mi nepodařilo provést. Nové zkratky lze přidat např. pomocí javascriptu, návod je k dispozici na oficiálních stránkách XWiki (přesněji zde [15]). 9.2.2. Pravidlo 2.2: Dostatek času „Poskytněte uživateli dostatek času k přečtení a k práci s obsahem.“ Kritérium 2.2.1 2.2.2 Stránka US Stránka AR Stránka JE Stránka WE Stránka PS ANO ANO NE NE ANO XWiki neobsahuje žádné prvky, na které se kritérium vztahuje Tabulka 9.5 Splnění kritérií pro pravidlo 2.2 Samotná XWiki nepoužívá žádný obsah, jehož prohlížení by bylo nějak limitované časem. Jediný časový limit, kterým je uživatel omezen, je čas pro editaci stránek. Pokud uživatel A začne upravovat stránku, pak na ni XWiki automaticky umístí tzv. zámek, pomocí kterého pak varuje další uživatele, kteří by chtěli provést úpravu, že stránka je editována uživatelem A. Bohužel ale čas, po který tento zámek existuje, je pouhých 30 minut (přibližně změřeno). Po této době může dojít k souběžným úpravám stránky více uživateli. Tuto lhůtu nemůže uživatel nijak změnit a ani není na její vypršení nijak upozorněn. Z vlastní zkušenosti vím, že 30 minut není dostatečná doba ani pro uživatele, který netrpí žádným fyzickým omezením. Řešením tohoto problému může být změna časového limitu nebo několikrát během práce použít volbu „Uložit a pokračovat“, která uloží provedené změny a obnoví zámek stránky na aktuální čas. Výhodou této možnosti je také průběžné ukládání a tedy i zálohování textu (např. kvůli možnosti pádu prohlížeče). Změnit tento časový limit může administrátor systému pomocí úpravy XWiki třídy. Celý postup je popsán zde [16]. Časový limit je takto možné nastavit na prakticky jakoukoliv hodnotu. Pokud se nastaví na více než 20 hodin, pak by se na něj nevztahovalo kritérium 2.2.1. 42 9.2.3. Pravidlo 2.3 Záchvaty „Vynechejte z prezentace takové prvky, u nichž je známo, že mohou vyvolat záchvat.“ Kritérium 2.3.1 Stránka US Stránka AR Stránka JE Stránka WE XWiki neobsahuje žádné blikající prvky. Stránka PS Tabulka 9.6 Splnění kritérií pro pravidlo 2.3 9.2.4. Pravidlo 2.4: Snadná navigace „Usnadněte uživatelům navigaci, hledání konkrétního obsahu a určování aktuální pozice.“ Kritérium 2.4.1 2.4.2 2.4.3 2.4.4 Stránka US NE ANO ANO ANO Stránka AR NE ANO ANO ANO Stránka JE NE ANO ANO ANO Stránka WE NE ANO ANO ANO Stránka PS NE ANO ANO ANO Tabulka 9.7 Splnění kritérií pro pravidlo 2.4 Kritérium 2.4.1 říká, že je nezbytné poskytnout mechanismy, které uživateli umožní přeskočit při procházení stránky ty bloky textu (stránky), které se na všech (nebo větším množství) stránek opakují. V případě XWiki a systému pro podporu výuky lze za opakující se obsah považovat postranní panely s menu a odkazy. Pokud uživatel bude používat asistivní technologie, pak bude muset nejprve projít skrz obsah levého panelu, poté samotným obsahem a nakonec obsahem pravého panelu. Toto kritérium dává tvůrcům povinnost vytvořit alespoň odkaz, který vede na hlavní text stránky. Uživatelé, kteří využívají například čtečky stránek, nebudou muset procházet panely, ale rovnou budou mít možnost přejít na text. Aby takový odkaz měl význam, musí se i v kódu nacházet dříve než ostatní prvky stránky. XWiki ale standardně nic takového nenabízí. Jako jedno z možných řešení se nabízí vytvoření speciálního panelu s obsahem stránky (např. použití „Table of Content“, což je souhrn sekcí v textu), který se umístí na levou stranu stránky před ostatní panely. Tímto způsobem bude čtečka začínat čtení u tohoto panelu a uživatel bude moci přejít k hlavní části stránky. Kritérium 2.4.2 požaduje, aby každá stránka měla dostatečně popisný titulek. Splnění tohoto požadavku je spíše na správci každé XWiki, protože lze přes administrační rozhraní definovat, co bude v titulku stránky. Standardní nastavení zobrazuje název stránky a plný název stránky (tj. jméno stránky a jejího prostoru). 9.3. Srozumitelnost Pravidla a kritéria principu srozumitelnosti obsahu si kladou za cíl, aby byl obsah programově čitelný, čili aby různé technologie (prohlížeče, asistivní technologie) dokázaly 43 správně interpretovat obsah. Tato kritéria lze vyhodnotit na základě kódu stránky, ale lepším způsobem by bylo provést testy použitelnosti s reálnými uživateli. 9.3.1. Pravidlo 3.1: Čitelné „Ujistěte se, že textový obsah je čitelný a srozumitelný.“ Kritérium 3.1.1 Stránka US ANO Stránka AR ANO Stránka JE ANO Stránka WE ANO Stránka PS ANO Tabulka 9.8 Splnění kritérií pro pravidlo 3.1 9.3.2. Pravidlo 3.2: Intuitivní „Ujistěte se, že vzhled a ovládání vašich stránek je intuitivní.“ Kritérium 3.2.1 3.2.2 Stránka US ANO ANO Stránka AR ANO ANO Stránka JE ANO ANO Stránka WE ANO ANO Stránka PS ANO ANO Tabulka 9.9 Splnění kritérií pro pravidlo 3.2 9.3.3. Pravidlo 3.3: Pomoc při zadávání „Pomozte uživatelům vyvarovat se chyb nebo chyby opravit.“ Kritérium 3.3.1 3.3.2 Stránka US NE ANO Stránka AR NE ANO Stránka JE ANO ANO Stránka WE NE ANO Stránka PS NE ANO Tabulka 9.10 Splnění kritérií pro pravidlo 3.3 Kritérium 3.3.1 vyžaduje, aby byl uživatel upozorněn na chybu při validaci uživatelova vstupu (např. odeslání formuláře). Přihlašovací stránka obsahuje formulář pro zadání přihlašovacích údajů, který ale neobsahuje údaje o povinnosti vyplnit uživatelské jméno a heslo. Tento nedostatek by bylo možné omluvit tím, že je asi každému uživateli, který se chce přihlásit, jasné, že musí zadat přihlašovací údaje. Pokud je formulář odeslán se špatnými hodnotami, je na to uživatel viditelně upozorněn. Menší problém ale nastává, když se odešle prázdný formulář. Validující mechanismus v tomto případě neoznačí obě položky jako špatně vyplněné, ale označí pouze tu první. Přímo na stránce pro administrace se nevyskytují žádné formuláře. Ty jsou uživateli ukázány až po zvolení další položky administrace. Přesto jsem se podíval namátkou na dvě položky, General a Import. U stránky pro import souborů neprobíhá žádná validace, zda uživatel opravdu připojil k formuláři soubor. Výsledkem odeslání formuláře s nezadaným souborem je pak totožná stránka bez jakékoliv upomínky na chybu. V položce General je možné měnit jazyk XWiki, formát data a další základní nastavení. Pokud se zadáte jako jazyk nesmyslná kombinace znaků, systém na to nijak neupozorní a jazyk jednoduše nezmění. Při zadání prázdné hodnoty se pak nastaví jako jazyk angličtina. Stejné je to pak i u již zmíněného formátu data. Na úvodní stránce 44 předmětu může uživatele přidávat komentáře nebo soubory jako přílohy. Ani jeden z těchto vstupů ale opět není validován. Lze vložit prázdný komentář, ale dokonce i prázdnou přílohu. Ta se pak opravdu ukáže jako příloha u stránky. Takový soubor má velikost 0 bajtů, název odpovídá jeho verzi. WYSIWYG editor umožňuje vkládat prázdné obrázky, protože jeho formulář pro jejich vkládání také není validovaný. 9.4. Robustnost 9.4.1. Pravidlo 4.1: Kompatibilní „Snažte se o maximální kompatibilitu se současnými i budoucími přístupovými zařízeními včetně asistivních technologií.“ Kritérium 4.1.1 4.1.2 Stránka US ANO NE Stránka AR ANO ANO Stránka JE ANO NE Stránka WE ANO NE Stránka PS ANO ANO Tabulka 9.11 Splnění kritérií pro pravidlo 4.1 Kritérium 4.1.2 požaduje, aby byly formulářové prvky, odkazy apod. možno programově vyplnit nebo použít. Toho ale nelze dosáhnout, když nejsou prvky dle specifikací HTML popsány. Protože již v kritériu 1.3.1 byla provedena kontrola popisků formulářových polí, tak stránky s nesplňující 1.3.1 nemohou splnit ani kritérium 4.1.2. Ostatní prvky se zdají být dostatečně dobře zapsané, aby byly použitelné. 9.5. Shrnutí XWiki splňuje z velké části kritéria WCAG 2.0 priority A. Nalezené chyby jsou z větší míry relativně snadno opravitelné pomocí zásahu do HTML kódu. Problémem je ale rozdělení HTML kódu do několika souborů Velocity šablon nebo jeho generování v Javascriptu. Díky tomu je obtížné určit, kde opravit i jednoduchou chybu. Poněkud nepochopitelné je pro mne nesplnění nároků na kontrolu uživatelských vstupů. XWiki využívá frameworku Struts, do kterého lze dodat modul pro validaci formulářů. Autoři XWiki bohužel použili tento plug-in jen na některých místech a nechali tak několik formulářů bez kontroly. Pravidla WCAG 2.0 jsou poměrně nová, proto lze předpokládat, že časem autoři většinu chyb odstraní tak, aby byla XWiki co nejvíce v souladu s těmito pravidly. 45 10. Závěr Publikační komponentu pro systém pro podporu výuky se mi podařilo vytvořit kombinací šablon a doplňkových modulů, které usnadňují práci se systémem. Vzorové šablony jsem vytvořil pro nejdůležitější stránky, bez kterých se asi většina předmětů neobejde. Všechny šablony jsem se snažil udělat přehledné a srozumitelné, aby uživatelé neměli žádné potíže s procházením stránek a snadno se v jejich struktuře orientovali. Hlavní cíl práce se tak podařilo splnit. Přestože se XWiki ze začátku zdála být příliš složitá a nepřehledná, v průběhu jejího používání se ukázal spíše opak. Jako klíčové pro využívání schopností XWiki je pochopení, jak se používají XWiki třídy a objekty. Právě tyto vlastnosti poskytují další možnosti strukturizace dat a jejich prezentace. Nedostatečná dokumentace zdrojového kódu je nahrazena návody na oficiálních stránkách a ochotou uživatelů a vývojářů radit a pomáhat ostatním. Časté vydávání nových verzí značí, že tvůrci XWiki ji chtějí stále zlepšovat a opravovat chyby hlášené uživateli. Zpracování analýzy přístupnosti ukázalo, že XWiki porušuje některá závažná kritéria. Jejich splnění by ale pro autory nemělo být příliš obtížné, protože se často jedná o stylistické nedostatky. V průběhu analýzy jsem si osvojil principy přístupnosti a více si uvědomil důležitost jejich dodržování. Obecně bych metodiku WCAG 2.0 zhodnotil jako přehlednou a srozumitelnou i pro ty, kteří se s pojmem přístupnost setkávají poprvé. Všechny pravidla a kritéria jsou dostatečně podrobně popsána, je k nim přiloženo několik vzorových příkladů i návodů, jak jim vyhovět. Nezbytná je ale znalost anglického jazyka, protože celkový český překlad dosud neexistuje. V budoucím vývoji tohoto systému by bylo vhodné implementovat plnohodnotné odevzdávání a zadávání prací a hodnocení studentů. Tyto funkce lze v omezené míře vykonávat i nyní, ale pouze pomocí vlastních nástrojů XWiki, což není uživatelsky nejpříjemnější a nejefektivnější. Osobním přínosem této práce je pro mne fakt, že systém vychází z již existujícího základu a rozšiřuje jej. Tento přístup je obdobný praxi, kde se ve většině případů také pracuje na hotových řešeních, které se upravují pro cílového klienta. Vyvíjet v dnešní době úplně nový systém podobného zaměření pro každého klienta by se žádné společnosti nemohlo vyplatit. 46 11. Použité zdroje 1. Wikimedia Foundation. Comparison of wiki software. Wikipedia. [Online] Wikimedia Foundation, 2000. [Citace: 7. Listopad 2008.] http://en.wikipedia.org/wiki/Comparison_of_wiki_software. 2. CosmoCode. Wikimatrix - compare them all. [Online] CosmoCode, 2000. [Citace: 1. Listopad 2008.] http://www.wikimatrix.org. 3. Massol, Vincent. XWiki forum. XWiki forum. [Online] http://n2.nabble.com/XWiki-f475771.html. 4. Apache Software Foundation. Apache Velocity Site. Apache Velocity Project. [Online] Apache Software Foundation, 26. Duben 2009. [Citace: 30. Duben 2009.] http://velocity.apache.org/. 5. Codehaus Foundation. Groovy. Groovy. [Online] Codehaus Foundation, 24. Duben 2009. [Citace: 9. Květen 2009.+ http://groovy.codehaus.org/. 6. Dumitriu, Sergiu. HowTo Enforce Page Locks. XWiki.org. *Online+ 9. Květen 2009. *Citace: 9. Květen 2009.] http://www.xwiki.org/xwiki/bin/view/FAQ/HowToEnforcePageLocks. 7. Apache Software Foundation. HTTP Client. HTTP Client. *Online+ 08. Únor 2008. *Citace: 21. Leden 2009.] http://hc.apache.org/httpclient-3.x. 8. HTML Parser. HTML Parser. *Online+ 9. Září 2006. *Citace: 22. Leden 2009.+ http://htmlparser.sourceforge.net/. 9. World Wide Web Consorcium. Web Content Accessibility Guidelines (WCAG) 2.0. W3C Recommendation. [Online] 11. Prosinec 2008. [Citace: 14. Duben 2009.] http://www.w3.org/TR/WCAG20/. 10. Zdeněk Rybák, Radek Pavlíček. Český překlad části metodiky WCAG 2.0. Blind Friendly Web. *Online+ 9. Únor 2009. *Citace: 28. Duben 2009.+ http://www.blindfriendly.cz/wcag20/. 11. Smith, Jared. WebAIM's WCAG 2.0 Checklist. WebAIM. [Online] 1. Leden 2009. [Citace: 28. Duben 2009.] http://webaim.org/standards/wcag/checklist. 12. Radek Pavlíček, Roman Koudelka. Kontrolní seznam pro WCAG 2.0. Blind Friendly Web. [Online] Březen 2009. *Citace: 28. Duben 2009.] http://www.blindfriendly.cz/wcag20checklist/. 13. Mozilla Corporation. It's Time to Get Personal. Mozilla. [Online] Mozilla Corporation, 2009. [Citace: 1. Duben 2009.] http://www.mozilla.com/en-US/firefox/personal.html. 14. Rumoroso. WCAG Contrast checker 1.0.9. Firefox Add-ons. [Online] Mozilla Corporation, 15. Duben 2009. [Citace: 30. Duben 2009.] https://addons.mozilla.org/en-US/firefox/addon/7391. 15. jvdrean. XWiki Keyboard Shortcuts. XWiki. *Online+ 12. Březen 2008. *Citace: 1. Květen 2009.+ http://platform.xwiki.org/xwiki/bin/view/Features/KeyboardShortcuts. 16. Dumitriu, Sergiu. How To Increase The Lock Duration. XWiki.org. *Online+ 9. Květen 2009. *Citace: 9. Květen 2009.+ http://www.xwiki.org/xwiki/bin/view/FAQ/HowToIncreaseTheLockDuration. 17. Java SE Downloads. [Online] Sun Microsystems. http://java.sun.com/javase/downloads/index.jsp. 47 18. Apache Tomcat. [Online] The Apache Software Foundation. http://tomcat.apache.org/. 19. XWiki. [Online] http://www.xwiki.org. 20. Supported Databases. Hibernate.org. [Online] Red Hat. http://www.hibernate.org/80.html. 21. MySQL. [Online] Sun Microsystems, Inc. http://www.mysql.com. 22. MySQL® Connector/J. MySQL.com. [Online] Sun Microsystems. http://www.mysql.com/products/connector/j/. 23. Massol, Vincent. XWiki Technical Architecture. Platform.XWiki.org. [Online] 28. Prosinec 2008. *Citace: 1. Březen 2009.+ http://platform.xwiki.org/xwiki/bin/view/DevGuide/Architecture. 48 12. Příloha A Instalační dokumentace Pro chod XWiki je třeba nainstalovat následující součásti: o Java 5 a vyšší o Databáze o Servlet kontejner o XWiki 12.1. Instalace Java Nejnovější verze je k dispozici např. na [17] 12.2. Instalace servlet kontejneru Jako servlet kontejner byl zvolen Apache Tomcat dostupný na [18]. Stáhněte a nainstalujte Apache Tomcat do Vámi zvoleného adresáře. V dalších krocích instalace bude tento adresář označen jako *TOMCAT_HOME+. 12.3. Instalace XWiki XWiki Enterprise je přiložena na CD, online je k dispozici na oficiálních stránkách [19]. Jedná se o soubor typu war. 1. Extrahujte war soubor do adresáře [TOMCAT_HOME]/webapps/xwiki. 2. Nyní je potřeba upravit několik souborů pro podporu UTF-8 kódování: a. V souboru [TOMCAT_HOME]/webapps/xwiki/WEB-INF/xwiki.cfg zaměňte řádek: xwiki.encoding=ISO-8859-1 za xwiki.encoding=UTF-8 b. V souboru [TOMCAT_HOME]/webapps/xwiki/WEB-INF/web.xml nahraďte u filtru Set Character Encoding řádek: <param-value>ISO-8859-1</param-value> za <param-value>UTF-8</param-value> 49 12.4. Instalace a konfigurace databáze Je třeba vybrat takovou databázi, která je podporována frameworkem Hibernate. Seznam těchto databází je k dispozici na [20]. Protože při vývoji tohoto systému byla použita MySQL databáze, bude popsána její instalace pod operačním systémem Windows Xp. Nejprve je třeba nainstalovat MySQL databázi verze 5.X, kterou lze stáhnout na oficiálních stránkách [21]. 1. Spusťte MySQL server pomocí příkazové řádky mysqld --console 2. Vytvořte novou databázi nazvanou xwiki. 3. Vytvořte nového uživatele databáze xwiki a přidělte mu dostatečná oprávnění. 4. Je třeba upravit konfigurační soubor Hibernate. V adresáři [TOMCAT_HOME]/xwiki/WEB-INF je soubor hibernate.cfg.xml. Zde jsou uzavřeny v komentářích jednotlivé konfigurace pro různé databáze. Odkomentujte konfiguraci pro MySQL databázi a přidejte k ní tento řádek kódu pro podporu UTF-8: <property name="connection.characterEncoding">UTF-8</property> 5. Je nezbytné, aby v adresáři [TOMCAT_HOME]/xwiki/WEB-INF/lib byl takzvaný konektor pro MySQL databázi. Obvyklý název je mysql-connector-java*.jar. Pokud se zde tento soubor nenachází, je třeba ho stáhnout z [22] a do adresáře dokopírovat (aktuální verze v době psaní práce je i na přiloženém CD). 12.5. Instalace modulů plug-in Seznam názvu modulů a jejich funkcí: Administrace – administrace předmětu a jeho import Administrator – tvorba administrátorů XWiki ToXWikiKonvertor – import DokuWiki do XWiki DokuWikiKonvertor – konverze stránek do DokuWiki syntaxe OfflineEditor – offline editace stránek SortedIndex – výpis stránek v prostoru s ohledem na jejich váhy a rodičovské stránky Všechny dostupné moduly plug-in jsou v adresáři plugins na přiloženém CD. Zde jsou dále další adresáře pro každý jeden doplněk. V každém adresáři doplňku jsou čtyři 50 adresáře: src (obsahuje zip archiv z projektu v Eclipse), jar (obsahuje jar archiv), xar (obsahuje xar archiv, ve kterém jsou potřebné stránky pro modul) a doc obsahující Java dokumentaci. Protože moduly se instalují stejným způsobem, je instalace popsána obecně pro všechny moduly. Pokud se kroky pro nějaký doplněk liší, pak je to v návodu popsáno. 1. Nejprve je potřeba zkopírovat jar soubor z adresáře plugins/<<konkrétní plugin>>/jar do adresáře [TOMCAT_HOME]/xwiki/WEB-INF/lib 2. Je třeba provést úpravu konfiguračního souboru [TOMCAT_HOME]/xwiki/WEB-INF/xwiki.cfg a do seznamu modulů plug-in přidat na začátek: a. com.xpn.xwiki.plugin.Administrace.Administrace,\, pro plug-in Administrace (tento plugin vyžaduje také instalaci RozvrhParserPlugin od Milana Kocourka) b. com.xpn.xwiki.plugin.administratorPlugin.AdministratorPlugin,\, plug-in Administrator pro c. com.xpn.xwiki.plugin.toXWiki.Konvertor,\, pro plug-in s názvem ToXWikiKonvertor d. com.xpn.xwiki.plugin.toDokuWiki.DokuWikiKonvertor,\, pro plug-in DokuWikiKonvertor e. com.xpn.xwiki.plugin.offlineEditor.OfflineEditor,\, OfflineEditor pro plug-in i. Pro OfflineEditor je nutné upravit konfigurační soubor [TOMCAT_HOME]/xwiki/WEB-INF/hibernate.cfg.xml a přidat k používané databázi mapování <mapping resource="OfflineStrana.hbm.xml"/> ii. Dále je třeba zkopírovat šablonovací plugins/offlineEditir/template do [TOMCAT_HOME]/xwiki/templates soubor z adresáře f. com.xpn.xwiki.plugin.Razeni.SortedIndex,\, pro plugin SortedIndex 3. Importovat archiv xar se stránkami z adresáře plugins/<<konkrétní plugin>>/xar. Stránky se importují pomocí administračního rozhraní XWiki. 4. Restartovat aplikační server 51 12.6. Instalace modifikovaného stylu K dispozici je upravený styl XWiki vycházející z existujícího stylu Toucan, který je standardní součástí XWiki. Pro použití vzhledu je nejprve nutné dodat potřebné soubory a poté pomocí administračního rozhraní tento vzhled nastavit. 12.6.1. Instalace potřebných souborů Všechny nezbytné soubory jsou na přiloženém CD v adresáři Skin. 1. Z adresáře skin/ zkopírujte soubor style-ed.css do adresáře [TOMCAT_HOME]/xwiki/skins/toucan/. Do stejného adresáře vložte i soubor skin/logo.png (přepíšete tak existující logo) 2. Soubor skin/ed.css vložte do [TOMCAT_HOME]/xwiki/skins/toucan/css/colours/ 3. Celý adresář (včetně jeho obsahu) Skin/ed [TOMCAT_HOME]/xwiki/skins/toucan/images/colours/ vložte do adresáře 4. Je třeba smazat některé soubory, které XWiki neustále z neznámých důvodů používá. Z adresáře [TOMCAT_HOME]/xwiki/skins/toucan/images/colours/gray odstraňte: bgxleft-GRAY.png bgx-GRAY.png 12.6.2. Nastavení skinu v XWiki Nastavení vzhledů se v XWiki provádí v administrační sekci. Zde zvolte možnost Presentation (Prezentace). V ní je dále sekce s názvem Vzhled, kde je potřeba do položky „Výchozí stylesheet“ napsat „style-ed.css“ (viz Obrázek 12.1). Obrázek 12.1 Nastavení skinu 52 13. Příloha B Uživatelská příručka Tato příručka předpokládá již nainstalované potřebné soubory z předchozí kapitoly. 13.1. Podrobná struktura stránek 13.1.1. Stránky vytvářené za chodu systému Seznam stránek a prostorů pro každého uživatele s přihlašovacím jménem LOGIN: Prostor LOGIN – prostor pro uživatele Uzivatel.LOGIN – stránka s uživatelovým profilem a účtem, obsahuje také informace o předmětech, kterých se uživatel účastní (spolu s jeho rolí v nich) Výpis povinných stránek pro předmět s kódem XYKOD, které jsou vytvořeny nebo upraveny pro každý předmět: Prostor XYKOD XYKOD.WebHome – úvodní stránka předmětu XYKOD.Administrace – administrační stránka předmětu XYKOD.AdministracePresun – administrační stránka předmětu pro přesun studentů mezi cvičeními nebo laboratořemi XYKOD.XYKODPrednasejici – stránka pro skupinu uživatelů s rolí Přednášející XYKOD.XYKODCvicici – stránka pro skupinu uživatelů s rolí Cvičící XYKOD.XYKODVedouciLab – stránka pro skupinu uživatelů s rolí Vedoucí laboratoře (prosemináře) XYKOD.XYKODVedouciJedno – stránka pro skupinu uživatelů s rolí Vedoucí jednorázové akce XYKOD.XYKODStudenti – stránka pro skupinu uživatelů s rolí Student XYKOD.XYKODEx – stránka pro skupinu uživatelů s rolí Bývalý student 13.1.2. Stránky vytvořené při nasazení systému Seznam vyhrazených prostorů a jejich stránek, které jsou určené pro provoz systému (odsazení ilustruje rodičovské vztahy mezi stránkami). Prostor Predmet a jeho stránky jsou používány jako šablony pro stránky konkrétních předmětů. Prostor Predmet – stránky prostoru slouží jako vzor pro konkrétní předmět o WebHome – domovská stránka o Administrace – administrační stránka o AdministracePresun – administrační stránka o Cviceni – stránka pro výpis odkazů na stránky pro jednotlivá cvičení 53 o o o o CviceniSeznam – seznam paralelek pro cvičení SkupinaC – konkrétní informace o paralelce o SkupinaCHodnoceni – hodnocení paralelky (není implementováno) Laboratore – stránky týkající se laboratoří mají stejný obsah jako stránky pro cvičení LaboratoreSeznam SkupinaL o SkupinaLHodnoceni Prednasky – stránky týkající se přednášek mají stejný obsah jako stránky pro cvičení PrednaskySeznam SkupinaP o SkupinaPHodnoceni JAkce – stránky týkající se jednorázových akcí mají stejný obsah jako stránky pro cvičení JAkceSeznam o SkupinaJ SkupinaJHodnoceni Vyucujici – seznam vyučujících předmětu s odkazem na jejich profily Prostor Predmety obsahuje XWiki třídy. Název třídy je stejný jako název stránky, které je připojena a končí řetězcem „Class“. Každá taková třída má ještě dvě další stránky (jejich název končí na „Template“ a „ClassSheet“), které jsou určeny pro formátování výpisu třídy. Tyto dvě stránky nezahrnuji ve výpisu. Prostor Predmety o AdministraceClass – třída se základními atributy předmětu o CviceniSeznamClass – slouží pro výpis paralelek cvičení, laboratoří, proseminářů nebo jednorázových akcí o ParalelkaClass – slouží pro výpis detailů konkrétní paralelky o PredmetClass – slouží pro výpis detailů předmětu na úvodní stránce o VyucujiciClass – slouží pro výpis vyučujících předmětu o UzivatelInfoClass – slouží pro výpis předmětů a rolí, ve kterých se uživatel v systému vyskytuje (používá se výhradně na stránce s uživatelovým profilem). Prostor Seznam je určen pro stránky, jejichž obsah se týká celého systému Prostor Seznam o SeznamStudentu – ke stránce je připojena uživatelská skupina, která obsahuje seznam všech studentů v systému 54 o SeznamVyucujicich – ke stránce je připojena uživatelská skupina, která obsahuje seznam všech vyučujících v systému o Katedry – vypisuje seznam předmětů dané katedry Prostor Uzivatel obsahuje stránky s názvem shodným s přihlašovacím jménem každého uživatele v systému. Ke každé stránce je připojen objekt XWikiUsers, který reprezentuje uživatele XWiki. Prostor Uzivatel Prostor Plugin je využit pro jednotlivé moduly plug-in, které zde mají stránky nezbytné pro jejich funkčnost. Prostor Plugin o DokuWikiKonverze – k této stránce jsou připojeny výstupy konverze do DokuWiki syntaxe o Administrator – slouží pro tvorbu administrátoru celé XWiki o OfflineEditor – spravuje pro konkrétního uživatele jeho offline editace o OfflineEditorUpload – stránka pro nahrání obsahu offline editovaných stránek o DokuWikiImport – stránka pro import existujících DokuWiki Poslední složkou jsou stránky, které slouží jako postranní panely systému. Všechny takové stránky jsou v prostoru Panels, který je standardním prostorem XWiki pro postranní panely. Panels o Sekce – obsahuje formulář pro vytvoření nové podsekce v dané sekci o SeznamPredmetu – obsahuje seznam s odkazy na všechny předměty v systému o Predmet – obsahuje navigační menu pro aktuální předmět o OfflineEditor – slouží pro vstup do sekce pro offline editaci, je nezbytný pro začatí nové offline editace o XWiki2DokuWiki – obsahuje odkaz, který spustí konverzi stránky do DokuWiki syntaxe a přesměruje na stránku s výsledkem konverze 13.2. Modul plug-in Administrace Každý předmět má administrační stránky Administrace a AdministracePresun. Přesun studentů mezi paralelkami na stránce AdministracePresun implementoval Milan Kocourek. 55 Každý předmět má několik uživatelských skupin, jejichž názvy vždy začínají kódem předmětu. Uživatelské skupiny jsou nezbytné pro efektivní správu uživatelů (skupiny jsou již popsány v kapitole 5). Na stránce Administrace lze kopírovat studenty do uživatelské skupiny bývalých studentů. Pokud tak učiníte, budou všichni studenti z předmětu zároveň bývalými. Tato akce je jako pojistka, kdyby přesun studentů selhal při importu (provádí ho administrátor), a lze ji provádět kdykoliv během semestru. Doporučuje se ale ji vykonat spíše na konci semestru, jinak by mohl nastat problém s uživatelskými právy (uživatele by byly ve dvou skupinách s různými právy). Důležitá je možnost nastavit semestr. Tato volba ovlivní seznamy studentů a paralelek v sekcích jako je Cvičení apod. Změna semestru ale neovlivní uživatelské skupiny ani jakékoliv jiné stránky vyjma stránek zmíněných výše. Sekce Cvičení a jiné, které se vytvářejí dle šablony, je na úvodní stránce generován seznam odkazů pro stránky cvičení pro jednotlivé týdny. Počet odkazů v tomto výpisu ovlivní nastavení základních údajů v administraci. Protože stránky lze dělit do sekcí a podsekcí, nabízí administrační rozhraní efektivní možnost nastavení jejich práv. Jako sekce je zde označena každá stránka (a stránky v ní), která je u nějaké stránky označena jako rodičovská. Práva můžete nastavit pro přidávání komentářů, zobrazení stránky, úpravu stránky a pro mazání stránek. Formulářové prvky neodpovídají aktuálnímu nastavení práv, ale zobrazují doporučené nastavení. Pokud chcete vytvořit novou sekci, máte na výběr ze 2 možností. Buď vytvořit prázdnou sekci a označit ji jejího rodiče, nebo vytvořit sekci dle šablony. Sekce dle šablony může vytvořit seznam vyučujících nebo sekci pro cvičení, laboratoř, jednorázovou akci nebo přednášku. Druhá možnost vytvoří množství dalších stránek. Například pokud zvolíte Cvičení, vytvoří se stránka Cviceni (jako rodič ji bude domovská stránka předmětu). Dále se vytvoří stránka se seznamem všech paralelek, kde bude jejich základní přehled a odkaz na další vytvořené stránky nesoucí informace o konkrétních paralelkách. Rodičem těchto stránek je stránka se seznamem paralelek. Pro každou paralelku se vytvoří stránka pro hodnocení (není funkční, pouze je pro ni připravena stránka). Obdobně se vytvoří sekce pro přednášky, laboratoře a jednorázové akce. Pro smazání sekce slouží další část administrační stránky. Pokud zvolíte smazat sekci A, pak tato volba nesmaže všechny stránky v sekci, ale pouze ty, které mají jako rodiče určenu sekci A. 13.3. Modul plug-in Administrator Na stránce Plugin.Administrator se nachází jednoduchý formulář, který má jediný vstupní prvek. Do tohoto textového pole se zadávají přihlašovací jména oddělená čárkou a mezerou (např. login1, login2). Těmto uživatelům bude vytvořen administrátorský účet pro 56 celou XWiki. Pokud uživatelé v systému dosud nejsou, budou vytvořeni. K použití tohoto doplňku je třeba mít administrátorský účet. 13.4. Modul plug-in ToXWikiKonvertor Tento doplněk potřebuje ke svému účelu stránku Plugin.DokuWikiImport. Na této stránce se nachází základní instrukce a formulář, po jehož odeslání se spustí import stránek a jejich konverze do XWiki. Uživatel musí zadat přihlašovací jméno a heslo na server http://webdev.felk.cvut.cz, adresu cílového předmětu (např. http://webdev.felk.cvut.cz/XYKOD/), typ používaných URL adres na cílové DokuWiki a volitelně pak kódování stránek. Pokud se nezadá kódování nebo se zadá neplatná hodnota, pak se použije jako výchozí UTF-8. Obrázek 13.1 Formulář pro import DokuWiki Modul plug-in se pokusí importovat DokuWiki do prostoru, jehož název je shodný s kódem předmětu. Pokud je tento prostor již obsazen, bude se snažit najít jiný ve tvaru KOD_X, kde X bude číslo prvního volného prostoru (počínaje 1). Nově vytvořený prostor nemá nijak nastavena přístupová práva. 13.5. Modul plug-in DokuWikiKonvertor DokuWikiKonvertor převede stránku do DokuWiki syntaxe. Nejsnadnějším způsobem jak jej použít je pomocí postranního panelu Panels.XWiki2DokuWiki, který lze umístit na stránky pomocí Panel Wizardu (v administraci XWiki). Na panelu se nachází odkaz na stránku Plugin.DokuWikiKonverze, kde je v sekci příloh k dispozici výsledek konverze. Stránka je sdílená pro všechny, proto jsou všechny soubory pojmenovány ve stylu PlnyNazevKonvertovaneStranky_typVystupu. Část typVystupu je nahrazena třemi možnostmi: DokuWiki.txt – vlastní tělo stránky v nové syntaxi 57 DokuWiki_chyby.txt – výpis chyb při konverzi DokuWiki.zip – archiv obrázku na původní stránce 13.6. Modul plug-in OfflineEditor Práce s OfflineEditorem začíná pomocí jeho postranního panelu Panels.OfflineEditor a je tedy nutné ho umístit do stránky. Panel obsahuje jediný odkaz, po jehož použití jste přesměrováni na stránky Plugin.OfflineEditor. V první části stránky se nachází buď odkaz na stažení těla původní stránky pro editaci, nebo oznámení, že daná stránka je již editována a nelze proto začít offline editaci. Pokud stáhnete textový soubor s tělem původní stránky, doplněk tuto stránku označí jako upravovanou a nedovolí jinému uživateli ji upravit offline. Pokud chcete dokončit editaci, musíte opět použít odkaz z panelu (z libovolné stránky). Ve spodní části stránky naleznete seznam Vámi upravovaných stránek. U každé položky je k dispozici volba, zda zrušit editaci nebo nahrát nový obsah stránky. Zvolíte-li nahrát soubor, jste přesměrováni na stránku s formulářem, pomocí kterého zvolíte a odešlete Váš soubor. Po úspěšném nahrání obsahu máte k dispozici přehled rozdílů mezi Vaší a aktuální verzí. 13.7. Modul plug-in SortedIndex Modul plug-in lze použít na jakékoliv stránce, ale primárně je určen pro vytvoření menu pro předmět nebo k výpisu všech stránek. Pro menu je vytvořena stránka Panels.Sekce, která zastupuje postranní panel. Ten lze do rozložení stránky umístit pomocí Správce panelů (Panel Wizard), který je umístěn v administrační stránce XWiki. V panelu je takto volán plug-in : $xwiki.sortedIndex.index($doc.space, $context.user,4,0) První parametr určuje prostor, ze kterého se budou stránky vypisovat. Následující parametr pak označuje aktuálního uživatele. Tento atribut slouží k tomu, že uživatel vždy uvidí pouze ty stránky, ke kterým má právo přístupu. Poslední dva číselné parametry označují hloubku, do které lze hledat (v tomto případě 4), a zda se mají do výpisu stránek zařadit i stránky s hodnocením a detaily paralelek (0 znamená, že se nezařadí). Toto volání vrací formátovaný seznam. XWiki připojuje ke každé stránce objekt Tags s jediným možným parametrem tags. Pokud do tohoto parametru zadáte číslo, pak se toto číslo zohlední při výpisu stránek. Čím nižší hodnota, tím výše ve výpisu bude tato stránka. Pokud stránka nemá tento atribut vyplněn nebo je vyplněn špatně, použije se jako výchozí hodnota 50. 58 13.8. Obecný návod pro uživatele Každý uživatel má profil na stránce Uzivatel.login, kde login je přihlašovací jméno uživatele. Uživatel má dále k dispozici vlastní prostor s názvem LOGIN, kde má plná editační práva, ale kde mu není umožněno spravovat prostor. Editaci každé stránky lze provést pomocí volby Upravit. K dispozici je několik editorů, ale nejpoužívanější budou wiki a wysiwyg editor. V pravé části stránky lze nastavit rodičovskou stránku a použitou syntaxi pro psaní obsahu. Stránku lze vytvořit umístěním odkazu na ni na nějaké stránce (pak je tato zdrojová stránka označena jako rodičovská) nebo pomocí zadání URL na neexistující stránku. U každé stránky lze nastavit přístupová práva pro čtení, psaní komentářů, editaci a smazání stránky. Editor práv je dostupný pomocí volby Upravit a dále Přístupová práva stránky. Práva lze také spravovat pomocí stránky WebPreferences, kde lze určovat obecná nastavení prostoru. Pro přístup na tuto stránky je nutné mít administrační práva. 59 14. Příloha C Obsah přiloženého CD Na přiloženém CD jsou následující adresáře: doc – Bakalářská práce ve formátu PDF plugins – adresář modulů plug-in o administrace – administrace předmětu a jeho import doc - JavaDoc jar – jar soubor src – zip archiv zdrojového projekt z Eclipse xar – potřebné stránky pro XWiki o administrator – tvorba administrátorů XWiki doc - JavaDoc jar – jar soubor src – zip archiv zdrojového projekt z Eclipse xar – potřebné stránky pro XWiki o toXWikiKonvertor – import DokuWiki do XWiki doc - JavaDoc jar – jar soubor src – zip archiv zdrojového projekt z Eclipse xar – potřebné stránky pro XWiki o dokuWikiKonvertor – konverze stránek do DokuWiki syntaxe doc - JavaDoc jar – jar soubor src – zip archiv zdrojového projekt z Eclipse xar – potřebné stránky pro XWiki o offlineEditor – offline editace stránek doc - JavaDoc jar – jar soubor src – zip archiv zdrojového projekt z Eclipse template – soubor šablony Velocity xar – potřebné stránky pro XWiki o sortedIndex – výpis stránek v prostoru s ohledem na jejich váhy a rodičovské stránky doc - JavaDoc jar – jar soubor src – zip archiv zdrojového projekt z Eclipse xar – potřebné stránky pro XWiki lib – konektor pro MySQL databázi skin – adresář se soubory pro nastavení vzhledu xwiki – vlastní XWiki (war soubor) a sada standardních stránek (XAR soubor) 60 15. Příloha D Překlad WCAG 2.0 Tento přiložený překlad části metodiky WCAG 2.0 a je dílem autorů Radka Pavlíčka a Zdeňka Rybáka. Text je přiložen k práci se souhlasem Radka Pavlíčka. Originál dokumentu je k dispozici na[10]. 15.1. Princip 1 Vnímatelnost: Informace a součásti uživatelských rozhraní musí být prezentovány tak, aby je uživatelé byli schopni vnímat. 15.1.1. Pravidlo 1.1 Textové alternativy: Opatřete každý netextový obsah textovými alternativami, které je možné podle potřeby převést do jiných formátů jako například zvětšené písmo, bodové písmo, fonetický přepis či zjednodušený jazyk. 1.1.1 Netextový obsah: Každý netextový obsah, který je uživateli prezentován, má svou textovou alternativu, sloužící stejnému účelu. Výjimku tvoří případy uvedené níže. (Úroveň A) Ovládací prvky a prvky reagující na vstup uživatele: Jestliže netextovým obsahem je ovládací prvek či prvek reagující na vstup uživatele, pak má tento prvek název popisující jeho účel. (Další požadavky týkající se ovládacích prvků a prvků reagujících na vstup uživatele viz pravidlo 4.1.) Multimediální prvek závisející na čase: Jestliže je netextový obsah multimediální prvek závisející na čase, pak jeho textová alternativa alespoň popisuje jeho účel a charakter. (viz pravidlo 1.2) Test: Jestliže je netextový obsah test nebo cvičení, které nelze převést do textové podoby tak, aby zůstala zachována jeho funkčnost, pak textová alternativa alespoň popisuje jeho charakter a účel. Vjem: Jestliže primárním účelem netextového obsahu je zprostředkování určitého smyslového zážitku, pak textová alternativa netextového obsahu alespoň popisuje jeho charakter a účel. CAPTCHA: Jestliže účelem netextového obsahu je ověření, že s obsahem pracuje skutečný uživatel a nikoli robot, pak textová alternativa tohoto netextového obsahu alespoň popisuje jeho účel a charakter. Poskytněte rovněž jiné alternativy kódu CAPTCHA, které využívají různé smysly, abyste pokryli různá postižení. Dekorace, formátování, neviditelnost: Jestliže je netextový obsah pouhá dekorace nebo je použit jako vizuální formátovací prvek, případně není uživateli prezentován vůbec, je použit tak, aby asistivní technologie mohly tento obsah bez potíží ignorovat. 61 15.1.2. Pravidlo 1.2 Multimediální prvky závisející na čase: Opatřete multimediální prvky závisející na čase alternativami. 1.2.1 Pouze audio a pouze video (předtočené): Pro případ, že multimediální prvek je tvořen pouze předtočeným audiem či pouze předtočeným videem, platí následující (výjimku tvoří případ, kdy je audio či video multimediální alternativou textu a jako takové je řádně označeno: (Úroveň A) Pouze předtočené audio: Obsah prezentovaný pouze prostřednictvím předtočeného audia je opatřen alternativou pro multimediální prvek závisející na čase, která poskytuje ekvivalentní informaci pro obsah pouze v předtočeném audiu. Pouze předtočené video: Obsah prezentovaný pouze prostřednictvím předtočeného videa je opatřen buď alternativou pro multimediální prvek závisející na čase, nebo zvukovou stopou poskytující ekvivalentní informaci pro obsah pouze v předtočeném videu. 1.2.2 Titulky (předtočené): Každý předtočený audio obsah, který je součástí synchronizovaného multimediálního prvku, je opatřen titulky. Výjimku tvoří případ, kdy je tento multimediální prvek multimediální alternativou textu a jako takový je také řádně označen. (Úroveň A) 1.2.3 Audio popis či alternativa pro multimediální prvek (předtočené): Synchronizovaný multimediální prvek je opatřen alternativou pro multimediální prvek závisející na čase nebo audio popisem obsahu prezentovaného pomocí videa. Výjimku tvoří případ, kdy je tento multimediální prvek multimediální alternativou textu a jako takový je také řádně označen. (Úroveň A). 1.2.4 Titulky (živě): Každé živě přenášené audio, které je součástí synchronizovaného multimediálního prvku, je opatřeno titulky. (Úroveň AA) 1.2.5 Audio popis (předtočený): Každé předtočené video, které je součástí synchronizovaného multimediálního prvku, je opatřeno audio popisem. (Úroveň AA) 1.2.6 Znakový jazyk (předtočené): Každý audio záznam, který je součástí synchronizovaného multimediálního prvku, je opatřen překladem do znakového jazyka. (Úroveň AAA) 1.2.7 Rozšířený audio popis (předtočené): Tam, kde nejsou pauzy na původní zvukové stopě videa dostatečné, aby bylo možné pomocí audio popisu video náležitě okomentovat, používá se rozšířený audio popis. V takovém případě se rozšířeným audio popisem opatřuje každý předtočený video obsah, který je součástí synchronizovaného multimediálního prvku. (Úroveň AAA) 62 1.2.8 Alternativa pro multimediální prvky (předtočené): Všechny předtočené synchronizované multimediální prvky a všechna předtočená videa jsou opatřena alternativou pro multimediální prvek závisející na čase. (Úroveň AAA) 1.2.9 Pouze audio (živě): Každé živě přenášené audio je opatřeno alternativou pro multimediální prvek závisející na čase, která poskytne ekvivalentní informaci pro živě přenášené audio. (Úroveň AAA) 15.1.3. Pravidlo 1.3 Přizpůsobitelné: Vytvořte obsah, který lze prezentovat více způsoby (např. zjednodušený vzhled), aniž by přitom došlo ke ztrátě informací či narušení struktury. 1.3.1 Informace a vzájemné vztahy: Informace, strukturu a vzájemné vztahy obsažené v prezentaci je možné programově určit nebo jsou dostupné ve formě textu. (Úroveň A) 1.3.2 Srozumitelné pořadí: Jestliže má pořadí informací, v němž jsou prezentovány, vliv na jejich srozumitelnost, může být správné pořadí, v němž mají být informace čteny, programově určeno. (Úroveň A) 1.3.3 Vlastnosti na základě smyslového vjemu: Pokyny, jak správně vnímat obsah a jak s ním správně zacházet nezávisí výhradně na vlastnostech založených na smyslovém vnímání, které jednotlivé komponenty mají jako např. tvar, velikost, optické umístění orientace či zvuk. (Úroveň A) Poznámka: Pro informace o kritériích týkajících se barev viz pravidlo 1.4. 15.1.4. Pravidlo 1.4 Rozlišitelné: Usnadněte uživatelům slyšet a vidět obsah a odlište popředí od pozadí. 1.4.1 Používání barev: Barva není používána jako jediný vizuální prostředek, sloužící k poskytnutí určité informace, k indikování určité akce, k vyjádření požadavku na odezvu či k odlišení určitého vizuálního prvku. (Úroveň A) Poznámka: Toto kritérium přístupnosti se týká speciálně vnímání barev. Ostatními formami vnímání se zabývá Pravidlo 1.3 včetně programového přístupu k barvám a ostatním vizuálním formám prezentace. 1.4.2 Ovládání zvuku: Jestliže se na webové stránce automaticky spustí přehrávání audia na delší dobu než tři sekundy, je k dispozici mechanismus, který umožní audio pozastavit či zastavit zcela nebo je k dispozici mechanismus, který umožní ovládat hlasitost nezávisle na globálním ovládání hlasitosti systému. (Úroveň A) Poznámka: Jelikož jakýkoliv obsah, který nesplňuje toto kritérium přístupnosti, může narušit schopnost uživatele pracovat s celou webovou stránkou, musí toto kritérium splňovat každý obsah, nehledě na to, zda je zároveň používán pro splnění nějakého jiného kritéria přístupnosti. Více informací v části "Vyhovující obsah", bod 5 "Soulad v interakci prvků" 63 1.4.3 Minimální kontrast: Text či text ve formě obrázku má vůči svému pozadí kontrast minimálně 4,5:1. Výjimku tvoří následující případy: (Úroveň A) Texty psané velkým fontem: Texty psané velkým fontem či texty tohoto typu prezentované ve formě obrázku mají kontrast minimálně 3:1. Texty, které se náhodou staly součástí prezentace a nejsou pro ni relevantní: text nebo text v obrázku, které jsou součástí neaktivního prvku uživatelského rozhraní, texty sloužící čistě dekorativním účelům, texty, které nejsou viditelné žádnému uživateli nebo texty, které jsou součástí obrázku, s nímž významově nesouvisí, nemusí splňovat žádné požadavky týkající se kontrastu. Logotypy: Text, který je součástí loga nebo názvu firmy či produktu, nepodléhá žádným požadavkům na minimální kontrast. 1.4.4 Změna velikosti textu: S výjimkou titulků a textů ve formě obrázků může být text zvětšen až o 200% bez pomoci asistivních technologií, aniž dojde ke ztrátě obsahu či porušení funkčnosti. (Úroveň AA) 1.4.5 Text ve formě obrázku: Jestliže technologie, která byla použita, umožňuje vizuální znázornění, doporučuje se raději použít textový formát než text ve formátu obrázku. Výjimku tvoří následující případy: (Úroveň AA) Přizpůsobitelné: Jestliže si uživatel může text v obrázkovém formátu přizpůsobit svým potřebám. Zásadní: Jestliže způsob, jakým je určitý text prezentován, má zásadní vliv na sdělovanou informaci. Poznámka: Logotypy. U textů, které jsou součástí loga nebo názvu firmy či produktu, se způsob prezentace považuje za zásadní. 1.4.6 Zvýšený kontrast: Graficky znázorněný text či text prezentovaný ve formě obrázku má vůči svému pozadí kontrast minimálně 7:1. Výjimku tvoří následující případy: (Úroveň AAA) Texty psané velkým fontem: Texty psané velkým fontem či texty tohoto typu prezentované ve formě obrázku mají kontrast minimálně 4,5:1. Texty, které se náhodou staly součástí prezentace a nejsou pro ni relevantní: text nebo text v obrázku, které jsou součástí neaktivního prvku uživatelského rozhraní, texty sloužící čistě dekorativním účelům, texty, které nejsou viditelné žádnému uživateli nebo texty, které jsou součástí obrázku, s nímž významově nesouvisí, nemusí splňovat žádné požadavky týkající se kontrastu. Logotypy: Text, který je součástí loga nebo názvu firmy či produktu, nepodléhá žádným požadavkům na minimální kontrast. 64 1.4.7 Tlumený nebo žádný podkresový zvuk: Pro případ, že obsah tvoří pouze předtočené audio, které obsahuje mluvené slovo jako hlavní složku, není zvukovou variantou kódu CAPTCHA či zvukovým logem, není hlasovou složkou hudebního projevu jako například zpěv nebo rap, platí alespoň jeden bod z následujícího: (Úroveň AAA) Bez podkresu: Audio neobsahuje žádné podkresové zvuky. Možnost vypnutí: Podkresové zvuky mohou být vypnuty. 20 dB: Podkresové zvuky jsou alespoň o 20 decibelů tišší než mluvená informace v popředí. Výjimku tvoří občasné zvuky netrvající déle než dvě sekundy. Poznámka: Z definice jednoho decibelu vyplývá, že podkresový zvuk bude zhruba čtyřikrát tišší než mluvená informace v popředí. 1.4.8 Vizuální znázornění: Pro vizuální znázornění textových bloků je dostupný mechanismus, který umožňuje následující: (Úroveň AA) 1. Barvu popředí a barvu pozadí si může zvolit uživatel. 2. Řádek není delší než 80 znaků, v případě obrázkového písma (čínština, japonština, korejština) neobsahuje víc než 40 glyfů. 3. Text není zarovnaný do bloku. 4. Řádkování uvnitř odstavců je alespoň 1,5, mezery mezi odstavci jsou pak alespoň 1,5krát větší než použité řádkování uvnitř odstavců. 5. Velikost textu může být změněna bez pomoci asistivních technologií až o 200 % tak, aby uživatel nemusel posouvat text do stran, chce-li přečíst celý řádek v maximalizovaném okně. 1.4.9 Text ve formě obrázku (bez výjimek): Text ve formě obrázku se používá jen v případě, že slouží jako pouhá dekorace nebo tehdy, jestliže způsob, jakým je určitý text prezentován, má zásadní vliv na sdělovanou informaci. (Úroveň AAA) Poznámka: Logotypy. U textů, které jsou součástí loga nebo názvu firmy či produktu, se způsob prezentace považuje za zásadní. 65 15.2. Princip 2 Ovladatelnost: Všechny součásti uživatelského rozhraní a všechny navigační prvky musí být ovladatelné. 15.2.1. Pravidlo 2.1 Přístupnost z klávesnice: Ujistěte se, že všechny funkce jsou dostupné z klávesnice. 2.1.1 Klávesnice: Všechny funkce obsahu lze obsluhovat přes rozhraní klávesnice, aniž by bylo nutné jednotlivé úhozy zvláště časovat, výjimku tvoří případ, kdy vstup dané funkce reaguje na způsob pohybu při zadávání a jeho průběh. (Úroveň A) Poznámka 1: Tato výjimka se vztahuje na danou funkci, nikoli na techniku zadávání. Například jestliže je pro vkládání textu použito písma psaného rukou, pak způsob zadávání "psaní rukou" reaguje na pohyb při zadávání, nikoli samotná funkce vkládání textu. Poznámka 2: Toto doporučení nezakazuje a nemá odrazovat od poskytování možnosti používání myši jako vstupního zařízení či jiných způsobů vstupu, je-li zachována možnost obsluhy z klávesnice. 2.1.2 Žádná past na klávesy: Jestliže je možné přesunout fokus na určitý prvek na stránce prostřednictvím klávesnice, pak je také možné pouze prostřednictvím klávesnice fokus opět z prvku přesunout pryč. Je-li k tomu zapotřebí použít jiných kláves než šipek, tabulátoru s nezměněnou funkcí či jiných kláves standardně používaných pro návrat, je uživatel poučen o způsobu, jímž lze fokus z prvku odstranit. (Úroveň A) Poznámka: Jelikož jakýkoliv obsah, který nesplňuje toto kritérium přístupnosti, může narušit schopnost uživatele pracovat s celou webovou stránkou, musí toto kritérium splňovat každý obsah, nehledě na to, zda je zároveň používán pro splnění nějakého jiného kritéria přístupnosti. Více informací v části "Vyhovující obsah", bod 5 "Soulad v interakci prvků" 2.1.3 Klávesnice (bez výjimek): Všechny funkce obsahu lze obsluhovat přes rozhraní klávesnice, aniž by bylo nutné jednotlivé úhozy zvláště časovat. (Úroveň AAA) 15.2.2. Pravidlo 2.2 Dostatek času: Poskytněte uživateli dostatek času k přečtení a k práci s obsahem. 2.2.1 Nastavitelné časování: Pro každý časový limit, který je nastaven obsahem, platí alespoň jeden z následujících bodů: (Úroveň A) Možnost vypnutí: Uživatel má možnost vypnout časové omezení dříve, než s ním přijde do styku; nebo Možnost nastavení: Uživatel má možnost časový limit nastavit dříve, než s ním přijde do styku, v rozmezí alespoň desetkrát větším než je standardní nastavení limitu; nebo Možnost prodloužení: Uživatel obdrží varování dříve, než časový limit vyprší, a dostane alespoň 20 sekund na prodloužení časového limitu jednoduchým úkonem 66 (např. stisknutím mezerníku). Uživateli je dána možnost prodloužit časový limit alespoň desetkrát; nebo Výjimka pro reálný čas: Časové omezení je nutnou součástí události probíhající v reálném čase (např. aukce) a není možné poskytnout jinou alternativu pro časové omezení; nebo Výjimka, kdy má časové omezení zásadní význam: Daný časový limit má zásadní význam pro danou činnost a jeho prodloužením by byl význam činnosti znehodnocen; nebo Výjimka pro limit delší než 20 hodin: Daný časový limit je delší než dvacet hodin. Poznámka: Toto kritérium přístupnosti pomáhá zaručit, že uživatel bude mít dostatek času na dokončení úkolů, aniž by se obsah či kontext neočekávaně změnil v důsledku časového omezení. Toto kritérium přístupnosti je třeba brát do úvahy ve spojení s kritériem 3.2.1, které klade omezení na změny v obsahu či kontextu způsobené akcí uživatele. 2.2.2 Pauza, Stop, Skrýt: Pro všechny informace, které se pohybují, blikají, rolují nebo se automaticky aktualizují, platí všechny následující body: (Úroveň A) Pohybující se, blikající, rolující: Pro každý pohybující se, blikající či rolující obsah, který se 1. spouští automaticky, 2. objevuje na delší dobu než 5 sekund, 3. objevuje souběžně s ostatním obsahem, je dostupný mechanismus, který uživateli umožní pozastavení, úplné zastavení nebo skrytí tohoto obsahu. Výjimku tvoří případ, kdy má pohyb, blikání nebo rolování zásadní význam pro činnost, jejíž je součástí; Automatické aktualizování: Pro každý automaticky se aktualizující obsah, který se 1. spouští automaticky, 2. objevuje souběžně s ostatním obsahem, je dostupný mechanismus, který uživateli umožňuje pozastavení, úplné zastavení, skrytí obsahu nebo regulování frekvence, s níž se obsah aktualizuje. Výjimku tvoří případ, kdy má automatické aktualizování zásadní význam pro činnost, jejíž je součástí; Poznámka 1: Informace o blikajícím a kmitajícím obsahu naleznete v pravidle 2.3. 67 Poznámka 2. Jelikož jakýkoliv obsah, který nesplňuje toto kritérium přístupnosti, může narušit schopnost uživatele pracovat s celou webovou stránkou, musí toto kritérium splňovat každý obsah, nehledě na to, zda je zároveň používán pro splnění nějakého jiného kritéria přístupnosti. Více informací v části "Vyhovující obsah", bod 5 "Soulad v interakci prvků" Poznámka 3: Jestliže software aktualizuje obsah pravidelně nebo jestliže je obsah přenášen formou streamingu, nepožaduje se, aby klient byl schopen uchovávat a zobrazovat informace přenesené v době mezi pozastavením a opětovným spuštěním prezentace. Jednak je takový postup technicky patrně nemožný a jednak by mohl být v mnoha situacích zavádějící. Poznámka 4: O animaci, která se zobrazuje během fáze načítání obsahu či v podobných situacích lze říci, že má zásadní význam, jestliže v té době nemá žádný uživatel možnost interakce a absence jakéhokoli ukazatele průběhu by mohla v uživatelích vyvolat zmatek či dojem, že proces zamrzl nebo se zhroutil. 2.2.3 Žádné časování: Časování není nezbytnou součástí prezentované činnosti či události s výjimkou neinteraktivních synchronizovaných multimediálních prvků a událostí probíhajících v reálném čase. (Úroveň AA) 2.2.4 Přerušení: Přerušení, jako například aktualizace obsahu, může být uživatelem oddáleno či potlačeno, s výjimkou přerušení, které si vyžádala naléhavá situace. (Úroveň AA) 2.2.5 Aktualizace zabezpečeného obsahu: Jestliže doba pro práci se zabezpečeným obsahem vyprší, může uživatel po opětovném přihlášení se pokračovat v práci bez ztráty dat. (Úroveň AA) 15.2.3. Pravidlo 2.3 Záchvaty: Vynechejte z prezentace takové prvky, u nichž je známo, že mohou vyvolat záchvat. 2.3.1 Tři záblesky nebo podprahové blikání: Webové stránky neobsahují žádné prvky, blikající více jak třikrát za sekundu nebo je toto blikání pod prahem stanoveným obecně pro blikání a pod prahem stanoveným pro červené blikání. (Úroveň A) Poznámka: Jelikož jakýkoliv obsah, který nesplňuje toto kritérium přístupnosti, může narušit schopnost uživatele pracovat s celou webovou stránkou, musí toto kritérium splňovat každý obsah, nehledě na to, zda je zároveň používán pro splnění nějakého jiného kritéria přístupnosti. Více informací v části "Vyhovující obsah", bod 5 "Soulad v interakci prvků" 2.3.2 Tři záblesky: Webové stránky neobsahují žádné prvky, blikající víc jak třikrát za sekundu.(Úroveň AAA) 68 15.2.4. Pravidlo 2.4 Snadná navigace: Usnadněte uživatelům navigaci, hledání konkrétního obsahu a určování aktuální pozice. 2.4.1 Přeskoč bloky: Uživatel má k dispozici mechanismus, umožňující mu přeskakovat bloky informací, které se opakovaně objevují na více stránkách prezentace. (Úroveň A) 2.4.2 Každá stránka má titulek: Každá webová stránka má název popisující její téma či účel. (Úroveň A) 2.4.3 Pořadí procházení prvku: Je-li možné webovou stránku procházet v určitém pořadí, majícím vliv na smysl a funkčnost, získávají prvky focus v pořadí, které smysl a funkčnost zachovává. (Úroveň A) 2.4.4 Účel odkazu (v kontextu): Účel každého odkazu může být určen pouze z textového označení nebo z textového označení v kombinaci s jeho programově určeným kontextem. Výjimku tvoří případ, kdy je účel odkazu nejednoznačný pro všechny uživatele. (Úroveň A) 2.4.5 Více způsobů: Uživatel má k dispozici více než jeden způsob, jak mezi ostatními stránkami nalézt konkrétní požadovanou webovou stránku. Výjimku tvoří případ, kdy je tato stránka výsledkem určitého procesu nebo slouží k jeho vykonání. (např. proces vyhledávání). (Úroveň AA) 2.4.6 Nadpisy a popisky: Nadpisy a popisky odpovídají svému účelu nebo tématu. (Úroveň AA) 2.4.7 Viditelný focus: Každé uživatelské rozhraní ovladatelné z klávesnice nabízí režim, v němž je viditelný ukazatel focusu relevantního pro ovládání z klávesnice. (Úroveň AA) 2.4.8 Aktuální pozice: Uživatel má k dispozici informaci o tom, na které stránce se v rámci webové prezentace právě nachází. (Úroveň AAA) 2.4.9 Účel odkazu (pouze z textu odkazu): Je k dispozici mechanismus, který umožňuje určit účel odkazu pouze z jeho textové popisky, Výjimku tvoří případ, kdy není účel odkazu jednoznačně zřejmý pro všechny uživatele. (Úroveň AAA) 2.4.10 Záhlaví jednotlivých částí: Záhlaví jednotlivých částí slouží k uspořádání obsahu. Poznámka 1: Pojem záhlaví je chápán v obecném smyslu a zahrnuje veškeré prostředky sloužící k logickému strukturování obsahu jako např. nadpisy apod. Poznámka 2: Toto kritérium přístupnosti se týká strukturování textů na webu, nikoliv strukturování jednotlivých prvků uživatelského rozhraní. Prvky uživatelského rozhraní se zabývá kritérium přístupnosti 4.1.2. 69 15.3. Princip 3 Srozumitelnost: Informace a ovládání uživatelského rozhraní musí být srozumitelné. 15.3.1. Pravidlo 3.1 Čitelné: Ujistěte se, že textový obsah je čitelný a srozumitelný. 3.1.1 Jazyk stránky: Výchozí jazyk (=řeč, nikoli programovací) každé stránky lze programově určit. (Úroveň A) 3.1.2 Jazyk jednotlivých částí: Jazyk (=řeč, nikoli programovací) každé pasáže či fráze lze programově určit. Výjimku tvoří vlastní jména, odborné termíny, slova neurčitého jazykového původu a zavedené fráze nebo slova mající význam v rámci svého nejbližšího kontextu. (Úroveň AA) 3.1.3 Neobvyklá slova: Je dostupný mechanismus umožňující nalezení definic neobvyklých frází a slov nebo frází a slov použitých v určitém specifickém kontextu. To platí rovněž pro idiomy a žargon. (Úroveň AAA) 3.1.4 Zkratky: Je dostupný mechanismus umožňující nalezení rozepsané formy zkratek nebo jejich definice.(Úroveň AAA) 3.1.5 Úroveň čtení: Jestliže pochopení textu vyžaduje vyšší než nižší stupeň středoškolského vzdělání, je poskytnut doplňující text s vynechanými vlastními jmény a názvy nebo verze nevyžadující vyšší vzdělání než nižší stupeň středoškolského vzdělání. (Úroveň AAA) 3.1.6 Výslovnost: Je dostupný mechanismus k určení specifické výslovnosti u slov, jejichž význam by v kontextu bez znalosti jejich výslovnosti byl nejednoznačný. (Úroveň AAA) 15.3.2. Pravidlo 3.2 Intuitivní: Ujistěte se, že vzhled a ovládání vašich stránek je intuitivní. 3.2.1 Focus: Jestliže prvek získá focus, nezpůsobí to změnu kontextu. (Úroveň A) 3.2.2 Při akci uživatele: Jestliže uživatel provede změnu v nastavení určité položky uživatelského rozhraní, nevyvolá to automaticky změnu kontextu nebo je na změnu předem upozorněn. (Úroveň A) 3.2.3 Konzistentní navigace: Navigační mechanismy, které se opakují na více stránkách v rámci webu, jsou pokaždé zobrazeny ve stejném relativním pořadí, pokud změnu zobrazení pořadí neprovede uživatel. (Úroveň AA) 3.2.4 Konzistentní identifikace: U prvků se stejnou funkcí je použito jednotného způsobu jejich identifikace. (Úroveň AA) 3.2.5 Vyžádané změny: Změny kontextu se provádějí pouze v důsledku akce uživatele nebo je k dispozici mechanismus umožňující potlačení těchto změn. (Úroveň AA) 70 15.3.3. Pravidlo 3.3 Pomoc při zadávání: Pomozte uživatelům vyvarovat se chyb nebo chyby opravit. 3.3.1 Identifikace chyby: Jestliže je při zadávání automaticky zjištěna chyba, je chybná položka označena a chyba je uživateli popsána ve formě textu. (Úroveň A) 3.3.2 Popisky nebo pokyny: Je-li vyžadován vstup uživatele, má uživatel k dispozici popisky nebo pokyny. (Úroveň A) 3.3.3 Návrhy pro opravení chyby: Je-li při zadávání automaticky zjištěna chyba a jsou známy návrhy na její opravení, jsou návrhy prezentovány uživateli. Výjimku tvoří případ, kdy je takový postup v rozporu s bezpečností nebo účelem obsahu. (Úroveň AA) 3.3.4 Předcházení chybám – právní, finanční, data: Pro webové stránky, z nichž vyplývají právní důsledky, stránky, umožňující provádět finanční transakce, stránky umožňující modifikaci nebo mazání uživatelských dat uložených v systémech pro uchovávání dat nebo pro stránky, pomocí nichž se odesílají odpovědi na testové otázky, platí alespoň jeden z následujících bodů: (Úroveň AA) Zrušitelnost: Akce uživatele lze vrátit zpět. Kontrola dat: Data zadaná uživatelem jsou zkontrolována na chyby a uživatel má možnost chyby opravit. Potvrzení: Je dostupný mechanismus umožňující zkontrolování, potvrzení a opravení informací před dokončením zadávání. 3.3.5 Nápověda: K dispozici je kontextová nápověda. (Úroveň AAA) 3.3.6 Prevence chyb (celková): Pro webové stránky vyžadující po uživateli, aby vložil informace, platí alespoň jeden z následujících bodů. (Úroveň AAA) Zrušitelnost: Akce uživatele lze vrátit zpět. Kontrola dat: Data zadaná uživatelem jsou zkontrolována na chyby a uživatel má možnost chyby opravit. Potvrzení: Je dostupný mechanismus umožňující zkontrolování, potvrzení a opravení informací před dokončením zadávání. 71 15.4. Princip 4 Robustnost: Obsah musí být dostatečně robustní, aby mohl být spolehlivě interpretován širokou škálou přístupových zařízení včetně asistivních technologií. 15.4.1. Pravidlo 4.1 Kompatibilní: Snažte se o maximální kompatibilitu se současnými i budoucími přístupovými zařízeními včetně asistivních technologií. 4.1.1 Syntaktická analýza: Prvky, které jsou součástí obsahu, mají při použití značkovacího jazyka definovány značky pro začátek a konec, nedochází ke křížení značek, prvky neobsahují zdvojené atributy, všechny identifikátory jsou jedinečné, s výjimkou, kdy tyto vlastnosti povoluje jejich specifikace. (Úroveň A) Poznámka: Počáteční a koncové značky, u nichž chybí nějaký kritický znak jako pravá hranatá závorka či uvozovky při definování hodnot atributů, nejsou kompletní. 4.1.2 Název, funkce, hodnota: U všech prvků uživatelského rozhraní zahrnující, (avšak neomezující se pouze na) prvky formátu a vzhledu, odkazy a prvky generované skriptem, mohou být název a funkce programově určeny. Statusy, hodnoty nebo vlastnosti, které může nastavovat uživatel, mohou být programově nastaveny a oznámení o změnách u těchto položek je dostupné uživatelským klientům včetně asistivních technologií. (Úroveň A) Poznámka: Toto kritérium přístupnosti se týká hlavně těch autorů webu, kteří vyvíjejí nebo skriptují vlastní prvky uživatelského rozhraní. Například ovládací prvky ve standardním HTML toto kritérium již splňují, pokud se používají v souladu s jejich specifikací. 72
Podobné dokumenty
Konfigurace mobilního telefonu s OS Google Android pro přístup do
Konfigurace mobilního telefonu s OS Google Android pro přístup do sítě eduroam
1. Stáhněte si certifikát AddTrust External CA Root zde (formát DER) a nainstalujte jej ve svém zařízení. Pozor! U
někt...
informační a komunikační technologie pro vzdělávání osob s
technologie využívané pro tvorbu webových prezentací. Dále jsou popsány metodiky
zabývající se přístupností webového obsahu a identifikovány potřeby uživatelů
s mentálním handicapem. V praktické čá...
Instalace certifikátu AddTrust External CA Root ve Windows 8 08.02
Kontrola zda se certifikát AddTrust External CA Root nainstaloval do správného umístění
Zkontrolujte, zda je certifikát nainstalován správně:
• Spusťte Internet Explorer a jděte v pravém horním rohu ...
Návod na konfiguraci Windows 10 a EDUROAM 04.11.2015
2. Nastavení tzv. WiFi hesla
• Aby uživatel VŠB-TUO mohl využívat služeb sítě EDUROAM, musí mít nastaveno tzv. wifi heslo.
Jak nastavit přeposílání pošty na e
Principem je rozesílání e-mailových zpráv, které se tváří jako oficiální žádost správců poštovních serverů, banky apod. a
vyzývají adresáta k zadání jeho přístupových údajů na odkazovanou stránku, n...