Systém pro podporu výuky

Transkript

Systém pro podporu výuky
Č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 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...

Více

informační a komunikační technologie pro vzdělávání osob s

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é čá...

Více

Instalace certifikátu AddTrust External CA Root ve Windows 8 08.02

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 ...

Více

Návod na konfiguraci Windows 10 a EDUROAM 04.11.2015

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.

Více

LDAP/SSO

LDAP/SSO http://dokis.vsb.cz/xwiki/wiki/infra/view/uzivatel/idm-usage

Více

Jak nastavit přeposílání pošty na e

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...

Více