České vysoké učení technické v Praze Fakulta elektrotechnická
Diplomová práce
Biologický server BioLib Ondřej Zicha
Vedoucí práce: Ing. Jaroslav Hrb
Studijní program: Elektrotechnika a informatika strukturovaný magisterský Obor: Informatika a výpočetní technika leden 2007
Poděkování Rád bych poděkoval Ing. Jaroslavu Hrbovi za zprostředkování a financování technického pozadí projektu, dále všem správcům i uživatelům BioLibu za jejich zájem a snahu podílet se na rozšiřování tohoto projektu. ii
Prohlášení Prohlašuji, že jsem svou diplomovou práci vypracoval samostatně a použil jsem pouze podklady uvedené v přiloženém seznamu. Nemám závažný důvod proti užití tohoto školního díla ve smyslu §60 Zákona č. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů (autorský zákon).
V Praze dne 14. ledna 2007
.............................................................
iii
Abstract The work describes the design and the realisation of a tool for collecting and presenting the data of biological character in order to popularize natural sciences and coordinate exchange of information and media between specialists and wide public. It is an open, but supervised encyclopedia of biology with the emphasis on accessibility for users of various technical background, language and education.
Abstrakt Práce popisuje návrh a realizaci nástroje pro sběr a prezentaci dat biologického charakteru, jehož účelem je popularizovat přírodovědu a koordinovat výměnu informací a médií mezi odborníky a veřejností. Jedná se o otevřenou a ověřovanou specializovanou encyklopedii biologie s důrazem na přístupnost pro uživatele s různými technickými a jazykovými znalostmi a vzděláním.
iv
Obsah Seznam obrázků
viii
1 Úvod
1
2 Úvodní studie 2.1 Deklarace záměru . . . . . . . . 2.2 Definice pojmů . . . . . . . . . 2.3 Odborný článek . . . . . . . . . 2.4 Programové řešení . . . . . . . 2.4.1 Skripty na straně serveru 2.4.2 Databáze . . . . . . . .
2 2 2 3 4 5 5
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
3 Diskuse alternativních projektů
6
4 Analýza 4.1 Uživatelské role . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Případy užití . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Datový model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8 8 9 12
5 Implementace 5.1 Použité technologie . . . . . . . . . . . . . . 5.2 Základní koncept stránek . . . . . . . . . . . 5.3 Bezpečnost . . . . . . . . . . . . . . . . . . 5.4 Systém potvrzování záznamů . . . . . . . . . 5.5 Systém práv . . . . . . . . . . . . . . . . . . 5.6 Ochrana před duplicitami a jejich řešení . . 5.7 Importování záznamů . . . . . . . . . . . . . 5.8 Databáze . . . . . . . . . . . . . . . . . . . 5.8.1 Systémová a speciální pole . . . . . . 5.8.2 Tabulka kategorií . . . . . . . . . . . 5.8.3 Obecná struktura textových bloků . . 5.8.4 Struktura vazeb s odkazy . . . . . . 5.8.5 Tabulka zpráv . . . . . . . . . . . . . 5.8.6 Struktura vazeb s obrázky . . . . . . 5.8.7 Obecná struktura tabulek manažerů 5.8.8 Řešení struktur pro nepotvrzená data 5.8.9 Taxonomický systém . . . . . . . . . 5.8.10 Check-listy . . . . . . . . . . . . . . 5.8.11 Mapy . . . . . . . . . . . . . . . . . 5.8.12 Mapování výskytu druhů . . . . . . . 5.8.13 Systémy biotopů . . . . . . . . . . . 5.8.14 Databáze lokalit . . . . . . . . . . . . 5.8.15 Encyklopedie . . . . . . . . . . . . . 5.8.16 Databáze odkazů a literatury . . . . 5.8.17 Články . . . . . . . . . . . . . . . . .
14 14 14 15 16 16 17 17 18 19 20 20 20 21 21 21 21 21 23 23 24 24 25 25 26 26
v
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
5.8.18 Galerie . . . . . . . . . . . . . . . . . . . . 5.8.19 Diskusní fórum . . . . . . . . . . . . . . . 5.8.20 Témata nápovědy . . . . . . . . . . . . . . 5.8.21 Uživatelé . . . . . . . . . . . . . . . . . . . 5.8.22 Systémové tabulky . . . . . . . . . . . . . 5.9 Soubory a struktura adresářů . . . . . . . . . . . 5.10 Návrh uživatelského rozhraní . . . . . . . . . . . . 5.10.1 Základní koncept . . . . . . . . . . . . . . 5.10.2 Dostupnost . . . . . . . . . . . . . . . . . 5.10.3 Jazyky . . . . . . . . . . . . . . . . . . . . 5.10.4 Odkazy na BioLib . . . . . . . . . . . . . . 5.10.5 Podsystém odkazových funkcí . . . . . . . 5.10.6 Podsystém textových bloků . . . . . . . . 5.10.7 Podsystém kategorií . . . . . . . . . . . . 5.10.8 Podsystém zpráv . . . . . . . . . . . . . . 5.10.9 Provázání s nápovědou . . . . . . . . . . . 5.10.10 Funkce zobrazení podrobných systémových 5.10.11 Formuláře . . . . . . . . . . . . . . . . . . 6 Funkce 6.1 Taxonomický systém . . . . . 6.2 Check-listy . . . . . . . . . . . 6.3 Mapy . . . . . . . . . . . . . . 6.4 Mapování výskytu druhů . . . 6.5 Systémy biotopů . . . . . . . 6.6 Databáze lokalit . . . . . . . . 6.7 Encyklopedie . . . . . . . . . 6.8 Databáze odkazů a literatury 6.9 Články . . . . . . . . . . . . . 6.10 Galerie . . . . . . . . . . . . . 6.11 Diskusní fórum . . . . . . . . 6.12 Nápověda . . . . . . . . . . . 6.13 Uživatelé . . . . . . . . . . . . 6.14 Systém . . . . . . . . . . . . . 6.15 Administrace . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . informací . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
26 27 27 28 28 29 30 30 31 32 33 34 35 36 36 36 37 37
. . . . . . . . . . . . . . .
39 39 40 41 42 42 42 43 43 44 44 46 46 46 48 49
7 Testování, spuštění a provoz
51
8 Plány do budoucna
53
9 Závěr
54
10 Literatura
55
A Seznam použitých zkratek
57
B Diagram funkce enginu stránek
58
C ER model databáze
59 vi
D Mapa stránek
60
E Obrazové přílohy
61
F Instalace aplikace
69
G Obsah přiloženého CD
70
vii
Seznam obrázků 4.1 4.2 4.3 4.4 4.5
Kontextový diagram: uživatelé dle přístupových práv k jednotlivým vrstvám dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Případy užití: akce nad daty . . . . . . . . . . . . . . . . . . . . . . . . . Případy užití: schéma modulu galerie . . . . . . . . . . . . . . . . . . . . Případy užití: schéma modulu mapování druhů . . . . . . . . . . . . . . . Datový model BioLibu . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8 10 10 11 12
5.1 5.2
Režimy generování stránky . . . . . . . . . . . . . . . . . . . . . . . . . . Základní prvky stránky . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14 30
7.1 7.2
Růst počtu záznamů v tabulce taxonů . . . . . . . . . . . . . . . . . . . Růst počtu obrázků v galerii . . . . . . . . . . . . . . . . . . . . . . . . .
51 51
B.1 Diagram funkce enginu stránek . . . . . . . . . . . . . . . . . . . . . . .
58
E.1 E.2 E.3 E.4 E.5 E.6 E.7 E.8 E.9 E.10 E.11 E.12
61 61 62 63 63 64 65 66 67 67 68 68
Ukázka použití odkazových funkcí . . . . . . . . . . . . . Ukázka zprávy z novinek . . . . . . . . . . . . . . . . . . Ukázka designu stránek - rozcestník . . . . . . . . . . . . Zobrazení podrobných informací . . . . . . . . . . . . . . Část stránky z funkce Galerie . . . . . . . . . . . . . . . Interaktivní obrázek v galerii . . . . . . . . . . . . . . . . Profil taxonu . . . . . . . . . . . . . . . . . . . . . . . . Kvadrátová mapa rozšíření a mapa získaných pozorování Formulář s chybovým hlášením . . . . . . . . . . . . . . Formulář s varováním . . . . . . . . . . . . . . . . . . . . Náhled příspěvku v diskusním fóru . . . . . . . . . . . . Výběr záznamu ve formuláři . . . . . . . . . . . . . . . .
viii
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
KAPITOLA 1. ÚVOD
1
1 Úvod Biologie je věda velice složitá, s řadou podoborů zaměřených jak na jednotlivé složky přírody, tak na interakci mezi nimi. Základním oborem pro klasifikaci života na Zemi je taxonomie. Ani přes 250 let snažení biologů však nejsou dosud popsány všechny organismy světa. Dokonce se ani neví, kolik by jich mohlo být, odhaduje se mezi čtyřmi a dvaceti milióny druhů, přičemž popsaných druhů je zhruba jeden milion (a podrobně prozkoumáno je ještě méně). Ovšem ani tento zlomek celkového života na Zemi není doposud nikde celkově obsáhnutý a existují pouze roztroušené informace v nepřeberném množství knih a článků v řadě jazyků, jejichž autoři ovšem často jeden druh zmiňují pod mnoha různými názvy nebo naopak více druhů pod jedním, mění jejich taxonomickou kategorii z druhů na poddruhy a varianty či naopak. S nástupem molekulární biologie se přesouvají celé skupiny organismů do jiných částí systému. Názory na uspořádání se mění nejen rok od roku, ale i autor od autora. Příroda se nedá „zaškatulkovatÿ a něco jako „univerzální systémÿ neexistuje, dají se dělat pouze kompromisy. Není proto divu, že orientace v této oblasti není vůbec jednoduchá, zejména pro lidi bez příslušného odborného vzdělání. Základní myšlenkou bylo proto vytvořit nástroj, který by umožnil jednoduše vytvářet a přehledně zobrazovat nejen taxonomické informace, ale i články, obrázky, slovník pojmů a mnoho dalších částí, a koncipovat ho tak, aby byl použitelný uživateli celého světa bez ohledu na jazyk a odborné vzdělání. Vývoj tohoto nástroje probíhá již několik let a BioLib (http://www.biolib.cz) dnes denně využívají tisíce uživatelů. Jeho obsah se neustále rozrůstá. Tato diplomová práce prezentuje základní principy a řešení některých klíčových funkcí projektu.
KAPITOLA 2. ÚVODNÍ STUDIE
2
2 Úvodní studie Tato kapitola je poměrně stručná, nemělo by smysl zde popisovat rozsáhlou problematiku biologických encyklopedií. Jejím úkolem je spíše nastínit rozsah řešené oblasti a popsat možnosti realizace projektu.
2.1
Deklarace záměru
Cílem je vytvořit komplexní vícejazyčný soubor nástrojů a funkcí pro administraci elektronického systému sběru, editaci a autorizaci získaných dat, včetně systému pro řízení práce a výměnu dokumentů mezi účastníky projektu. Systém bude zaměřen na odborně-popularizační prezentaci biologie a projekt bude formou internetových stránek zdarma dostupný všem zájemcům jak z řad odborníků, tak studentů či laiků, a to nejen pro prohlížení, ale i pro aktivní účast při rozšiřování dat v něm obsažených.
2.2
Definice pojmů
taxon – taxonomická jednotka, např. nějaký druh, rod, čeleď atp., zkrátka nějaká skupina rostlin, hub či živočichů. Příkladem může být třída savci (Mammalia), čeleď lasicovití (Mustelidae) nebo druh vydra říční (Lutra lutra). taxonomický systém – hierarchicky uspořádaný systém taxonů, v předchozím příkladu je třída savci hierarchicky nadřazená čeledi a druhu. druh – základní taxonomická kategorie v biologické klasifikaci označující skupinu organismů víceméně stejné stavby těla a ekologie, která je reprodukčně izolovaná od ostatních skupin (ovšem existuje řada výjimek). Druh je v latině označen dvouslovným názvem (tzv. binomická nomenklatura) např. Homo sapiens – člověk moudrý, kde Homo je tzv. rodové jméno a sapiens jméno druhové. Podobné druhy jsou seskupovány do rodů, rody do čeledí, dále do řádů, tříd, kmenů a říší – existuje samozřejmě celá řada dalších kategorií umožňujících podrobnější členění (podčeledi, triby, a desítky dalších). Druh může zase vytvářet řadu poddruhů, forem, aberací, variet, kultivarů, ras a podobně. vědecký název – latinský název, kterým je taxon označován v odborné literatuře. Může se jednat o název platný, či synonymum (neuznávaný název použitý ve starší nebo novější literatuře). Každý taxon má svůj latinský název (současně ale může mít řadu synonym). Latinské vědecké názvy vyšších taxonů jsou jednoslovné, názvy nižších taxonů dvou- i víceslovné. Součástí vědeckého názvu je i autorita, např. Homo sapiens Linnaeus, 1758. autorita – součást vědeckého názvu taxonu, která označuje kdo (a u živočichů také kdy) taxon poprvé popsal, např. autorita Linnaeus, 1758 říká, že tento taxon vědecky popsal Carl von Linné ve své práci Systema Naturae roku 1758. Závorkami uzavřená autorita označuje, že byl taxon původně popsán pod odlišným rodovým názvem. determinace – určení příslušnosti organismu k nějakému taxonu, v souvislosti s BioLibem zejména determinace obrázků v galerii. check-list – územní seznam druhů nějaké lokality (či země).
KAPITOLA 2. ÚVODNÍ STUDIE
3
biotop – základní klasifikační jednotka typizace přírody. Popisuje určité prostředí, ve kterém organismy žijí. Výzkum jejich rozšíření a vzájemných vztahů patří v poslední době k velice důležitým oblastem ekologie. Existuje řada různých systémů biotopů platných v různých částech světa. profil – označení pro stránku zobrazující detail nějakého záznamu v BioLibu, např. taxonu, hesla ve slovníku, lokality atd. odkazová funkce – speciální sekvence znaků, která umožňuje uživatelům v textech zadávaných přes formuláře v BioLibu snadno vytvářet odkazy na záznamy v BioLibu i mimo něj. textový blok – z databázového pohledu atomická část textu, která může tvořit složitěji strukturovaný text, třeba i stránkovaný a proložený obrázky. potvrzování – označování záznamů (taxonů, obrázků atp.) jako ověřených a jejich přijímání mezi ostatní data. Ověřovat záznamy mohou pouze příslušní správci. Nepotvrzené záznamy jsou umístěné v oddělené části databáze, kde čekají na potvrzení či odmítnutí. Na tomto systému je založena „polootevřenostÿ BioLibu vzhledem ke vstupu od uživatelů. faunistický čtverec, kvadrát – souřadnice v síťovém mapování rozšíření taxonů používaném ve střední Evropě. Oblast je rozdělena na stejně velké úseky (kvadráty), mapuje se výskyt v kvadrátu, nikoliv na přesné souřadnici, což zjednodušuje archivaci a vizualizaci dat.
2.3
Odborný článek
Je nutné vytvořit aplikaci, která bude zájemcům umožňovat jednoduše sestavit internetovou prezentaci nějaké skupiny taxonomického systému či jiných dat související s biologií jako jsou články, slovník pojmů atp. Aplikace bude určena zejména pro uživatele, kteří nemají dostatek zkušeností či prostředků pro tvorbu vlastní prezentace nebo kteří chtějí využít vlastností systému jako sdílení informací dodaných jinými uživateli (obrázky, texty, taxonomie), automatické optimalizace prezentace pro uživatele s nejrůznějšími podmínkami, mezinárodní jazykovou podporu a řadu pomocných funkcí, jako vyhledávání, rejstříky atd. Do cílové skupiny uživatelů, kteří budou nástroj využívat naopak k získání informací, spadají studenti i učitelé přírodních oborů, biologové, majitelé vlastních přírodovědných stránek, novináři a redaktoři časopisů, překladatelé, fotografové přírody a samozřejmě kdokoliv jiný kdo se zajímá o přírodu. Zároveň bude BioLib sloužit jako podpůrná platforma pro vytvoření řady dalších funkcí na základě požadavků od nejrůznějších subjektů. Základním modulem projektu bude hierarchický taxonomický systém umožňující jednoduše zakládat, přesouvat a přejmenovávat jednotlivé taxony. Každý taxon bude opatřen unikátním identifikátorem, který umožní propojovat ho s obrázky v galerii či se na něj odkazovat z dokumentů uvnitř i vně BioLibu. Taxonomický systém bude možné doplňovat vědeckými i národními názvy, obrázky, texty, odkazy a řadou dalších informací. Nad taxonomickým systémem bude možné budovat překladové slovníky v libovolných
KAPITOLA 2. ÚVODNÍ STUDIE
4
jazycích, check-listy (územní seznamy druhů), tématické seznamy taxonů (např. zákonem chráněné druhy, parazité, zemědělské plodiny atp.). Vedle taxonomického systému má vzniknout slovník pojmů s možností přidávat termíny v různých jazycích doplněný obrázky, texty, odkazy atp. Dalšími moduly bude systém biotopů, databáze chráněných území, články, databáze odkazů a literatury či diskusní fórum. Vzhledem k obrovskému počtu dat, které bude třeba shromáždit, je nutné koncipovat nástroj tak, aby ho mohlo souběžně používat velké množství přispěvatelů s různým stupněm odbornosti a přitom si vzájemně minimálně zasahovali do své práce a aby jakékoliv problémy v datech (chybné zařazení záznamu či duplicity vzniklé čerpáním z různých zdrojů literatury) bylo možné jednoduše odhalit a odstranit. Bude se jednat o polootevřený systém, který umožní komukoliv podílet se na rozšiřování obsažených informací, ovšem pod dohledem odborníků, kteří budou mít k dispozici nástroje potřebné ke kontrole a začleňování přidaných dat do dat již ověřených. Informace přidané uživateli se stanou součástí prezentace až po jejich potvrzení správci příslušného modulu. Aby byl systém dostupný co nejvyššímu počtu uživatelů, je nutné umožnit přeložení rozhraní do libovolného jazyka, podobně i data by mělo být možné přidávat v libovolných variantách a uživatel měl o nich mít přehled v případě, že ovládá více jazyků. Dále musí být kladen důraz na dostupnost a použitelnost stránek a jejich optimalizaci pro vyhledávače.
2.4
Programové řešení
Řešit tuto aplikaci přes webové rozhraní je zcela samozřejmá cesta k tomu, aby nástroj mohl být přístupný pro maximum uživatelů. To pochopitelně ještě nezaručuje přístupnost nástroje, nicméně vede k minimalizaci požadavků na uživatele ze strany jeho programového vybavení – není požadován žádný speciální klient, který by do centrální databáze přistupoval, vše lze řešit skrze klienty, na které je uživatel zvyklý, tedy internetové prohlížeče. Dobře udělaná aplikace potom podporuje co nejširší skupinu těchto prohlížečů, včetně okrajových záležitostí jako lineární prohlížeče (např. čtečky pro nevidomé). Použití HTML sice částečně omezuje svobodu v tvorbě uživatelského rozhraní, nicméně jeho další přínosy jsou velmi významné. Vzhledem k rozsáhlosti projektu a požadavků na jeho funkce je také jasné, že pro základ nástroje není vhodné použít nějaký hotový produkt, např. nějaký wiki systém. Sice by to v počátcích projektu výrazně ušetřilo mnoho práce s řadou designerských a administrátorských záležitostí, postupem času by však bylo nutné systém dále modifikovat a práce na nových funkcích by postupovala daleko pomaleji. Navíc je většina produktů napsána příliš obecně pro různorodé využití, většina wiki systémů je stavěna jako plně editovatelná sada stránek, nejvýše s možnostmi omezení modifikace některých částí dat. Informace postavené na systému hypertextově propojených článků jsou velice špatně modifikovatelné tak, aby byla zachována celková konzistence a aktuálnost údajů jak pro jednotlivé jazykové varianty, tak pro různé pohledy na data. Proto je lepší vytvořit na míru napsaný systém, kde se budou jednotlivé údaje nacházet v oddělených datových strukturách a použití wiki technologie bude omezeno pouze na určitý druh informací, jako třeba popisy taxonů.
KAPITOLA 2. ÚVODNÍ STUDIE 2.4.1
5
Skripty na straně serveru
Stránky jsou podle požadavků klienta dynamicky vytvářeny na serveru, skripty se také starají o zpracování obsahu formulářů a o ukládání či čtení dat z databáze. Pro tvorbu skriptů je možno využít různé skriptovací jazyky. Nejrozšířenější z nich je v současné době jazyk PHP. Ten je vyvíjen jako open-source projekt, může být provozován na většině běžných operačních systémů a webových serverů, je k němu dostupná řada přídavných knihoven a bohatá dokumentace. Ačkoliv se nejedná o jazyk příliš „čistýÿ, pro jeho jednoduchost si ho oblíbila obrovská komunita tvůrců webových aplikací. Na vývoji PHP se podílí rozsáhlá skupina lidí, řešení funkčních i bezpečnostních chyb je rychlé. Alternativou je jazyk Perl, v mnohém podobný PHP – také je to open-source projekt s řadou knihoven a širokou základnou uživatelů. Jedná se však o jazyk poměrně komplexní a nevhodný pro začátečníky. Původně byl tento jazyk vyvinut pro zpracování textu a až druhotně přepracován na použití pro tvorbu webových aplikací. Active Server Pages (ASP) je produkt vyvinutý firmou Microsoft. Zatímco v klasickém ASP se používal především jazyk VBScript, v dnešním ASP.NET je to C#. Tento produkt je určen především pro provoz na serverech s operačním systémem Windows, jejichž bezpečnost je sporná a řešení problémů a bezpečnostních děr pomalé. Verze pro Unix jsou funkčně dosti omezené. K vytváření dynamického obsahu webových stránek lze použít i jazyk Java v podobě produktu Java Server Pages (JSP). Tato objektově orientovaná technologie je zatím poměrně nová a málo rozšířená. 2.4.2
Databáze
Hlavní databázové přístupy jsou relační resp. objektově-orientovaný. Využívanější je zatím stále přístup relační, reprezentovaný především standardem dotazovacího jazyka SQL. Jednotlivé implementace databázových systémů založených na SQL se od sebe příliš významně neliší. Velice oblíbený je zdarma distribuovaný databázový systém MySQL, který zatím sice některé prvky jazyka SQL zcela nepodporuje, většina těchto omezení ale díky vývoji postupně mizí. MySQL také nevyžaduje dodržování některých přísných pravidel, které definuje SQL standard, takže podobně jako PHP je oblíbený zejména mezi začínajícími vývojáři webových aplikací. Alternativou je volně dostupný PostgreSQL, ten je však méně rozšířený než MySQL a v současné době jsou oba systémy poměrně funkčně srovnatelné. Dalšími SQL databázovými systémy jsou například komerční Oracle, Microsoft SQL Server či InterBase, popřípadě jeho open-source varianta Firebird, která ovšem na oblíbenosti získává také až poslední dobou. Kromě toho mají oba tyto systémy pro některé uživatele nepříjemnou vlastnost – výsledek dotazu nemá pevný počet řádek, data jsou získávána podle potřeby na základě volání funkce pro načtení dalšího řádku. To sice umožňuje rychleji přistoupit k výsledku dotazu, nicméně absence informace o počtu řádků komplikuje vytváření navigací po jednotlivých záznamech. Použití databáze Microsoft SQL Server může být opět nevhodné z hlediska financí a bezpečnosti.
KAPITOLA 3. DISKUSE ALTERNATIVNÍCH PROJEKTŮ
6
3 Diskuse alternativních projektů V době, kdy vznikal BioLib [1], existovalo na internetu jen velice málo podobných projektů, většinou zaměřených čistě taxonomicky (tj. vědecké názvy, synonyma, citace literatury, ale žádné texty a obrázky) a navíc často specializovaných jen na určitou oblast světa nebo na určitou skupinu organismů. Na českém internetu potom takový projekt chyběl úplně. V současné době existuje více projektů s alternativními přístupy. Na prvním místě je nutné podotknout, že menší specializované stránky budou mít vždycky výhodu detailnějšího obsahového zpracování a větší aktuálnosti. BioLib se jim nechce konkurovat, ale naopak se snaží centrálně tyto projekty propojit pomocí odkazů na profilech jednotlivých taxonů v BioLibu. Následující rozbor se bude zaměřovat spíše na projekty obecného charakteru, snažící se pojmout celou přírodu, nebo alespoň nějakou její říši (rostliny, živočichy atd.) a to buď v celosvětového měřítku, či alespoň v rámci nějakého kontinentu. Dají se rozlišit dva přístupy ke zpracovávání taxonomického systému. Encyklopedické projekty kladou větší důraz na texty, obrázky a mapy rozšíření a zaměřují se spíše na výčet významnějších taxonů. Taxonomické projekty se zabývají zařazením jednotlivých druhů a jejich výskytem v odborné literatuře, přičemž části systému zpracovávají uceleně. Některé projekty se dají považovat za spíše encyklopedické (Wikipedia, Animal Diversity Web, Tree of Life, Zipcode Zoo), další za taxonomické (Species 2000, Taxonomicon, uBio, ITIS, Fauna Europaea), jiné za hybridní (Wikispecies, Salix, BioLib). Ze zmíněných projektů je většina dostupná pouze v anglickém jazyce, jediný český srovnatelný projekt – Salix [4] – vznikl zřejmě importem dat z projektu ITIS, obsahově prakticky nerespektuje autorská práva a navigace v něm je poněkud těžkopádná. Sice také umožňuje vstup od uživatelů, ti jsou však „skrytíÿ za přezdívkami. Kvůli absenci jakýchkoliv citací celý projekt působí značně nedůvěryhodně. Mluvíme-li o popularizaci přírodních věd, je třeba se zaměřit hlavně na projekty encyklopedické. Wikipedia [5] je všeobecná encyklopedie mající obrovskou výhodu v uživatelské základně a sdílení médií a informací i nebiologického rázu. Svým charakterem (hypertextově propojené texty) však znemožňuje složitější (a hlavně aktualizované) pohledy na svůj obsah, jednotlivé části si často vzájemně odporují a není jednoduché obsah podle potřeby jednoduše přesouvat a globálně měnit. Striktní oddělení jazykových verzí encyklopedie má za následek, že i takové informace jako taxonomické zařazení druhu musí být v každé z verzí definované zvlášť. Dalším částečně omezujícím faktorem je přílišná anonymita přispěvatelů, která může vést až k nedůvěře k obsahu. Její sesterský projekt Wikispecies je sice specializovaný na biologii, je ale založený na stejném přístupu a má tedy podobné nedostatky, přestože okruh jejích přispěvatelů je odbornější. Projekt Michiganské univerzity Animal Diversity Web (ADW) [8] je kombinací práce odborníků (vyšší taxonomie) a studentů, kteří formou referátů doplňují informace k jednotlivým druhům. ADW je zaměřená pouze na živočichy a navíc ještě pouze na „populárnější druhyÿ, kromě toho její taxonomická stránka je velice zjednodušena, chybí synonyma, autority atp. Velice zajímavý je projekt Tree of Life (ToL) [12], který oproti klasické linnéovské klasifikaci organismů zvolil modernější a popisnější (zato méně přehlednou, složitě aktualizovatelnou a stále se měnící) formu kladogramů čili fylogenetických grafů, znázorňujících vzájemné vývojové vztahy organismů. I z toho důvodu se jejich systém rozšiřuje jen velice pomalu. Oproti tomu
KAPITOLA 3. DISKUSE ALTERNATIVNÍCH PROJEKTŮ
7
projekt Zipcode Zoo [14] zvolil opačný postup a poskytnul uživatelům masivní množství stránek a informací, ovšem se spoustou chyb, duplicit a v současné době také poněkud slabší formou prezentace. Co se taxonomických a hybridních projektů týká, jedním z nejstarších z nich je ITIS (Integrated Taxonomic Information System) [2]. Jedná se o projekt s primárním zaměřením na druhy USA, pouze některé skupiny, které jsou globálně zpracované v rámci jiných internetových stránek, jsou kompletnější. Projekt je čistě taxonomický, umožňuje ale přidávat i názvy taxonů v nejrůznějších jazycích. Nabízí možnost vstupu od uživatelů skrze specializovaný nástroj a následné importy jeho výstupu či zpracování souborů jiných formátů. Fauna Europaea [11] je holandský projekt snažící se vytvořit aktuální systém a druhové check-listy suchozemských a sladkovodních živočichů na území Evropy. V tomto případě se jedná o projekt čistě taxonomický (pouze systém a vědecká synonyma). Zajímavý je projekt uBio [13] který ve své databázi udržuje mnoho různých systémů podle různých zdrojů (většinou tištěných), ať už globálního charakteru, nebo jen nějaké menší skupiny. Jedná se spíše o zdroj podle kterého lze studovat různé přístupy k taxonomickému systému, není zde nějaký jeden ucelený systém. Projekt uBio také nabízí řadu služeb, které lze spustit a předávat si s nimi data přímo z jiných stránek či aplikací. Taxonomicon [7] je velice podobný uBio, také nabízí různé pohledy na systém podle různých zdrojů, obsahuje ale i vlastní systém vzniklý jako kompromis ostatních. Species 2000 [6] je kompilací více spolupracujících internetových databází druhů, nabízí možnost dynamického prohledávání části těchto databází a dále obsáhlejší statický export jejich obsahu, tzv. „annual checklistÿ. Sám se však příliš nestará o sloučení těchto zdrojů, takže vzniká jen obrovská databáze taxonů bez větších souvislostí. Výčet přírodovědných projektů tím zdaleka nekončí, zvolil jsem pouze ty větší a známější. Spousta výborných projektů je omezená pouze na užší skupinu, ale kvalitou obsahu převyšuje řadu jiných projektů, příkladem budiž velice zdařilá databáze ryb FishBase [9], nebo databáze obojživelníků Amphibian Species of the World [10]. Tyto projekty často svým zpracováním taxonomie přispívají do databází větších, něco jako oboustranná synchronizace systémů zde však nefunguje. Většina těchto projektů má vzhledem k BioLibu své silnější i slabší stránky, je však jisté, že BioLib má díky své otevřenosti ke spolupráci s veřejností odbornou i neodbornou a díky snaze o odstranění jazykových bariér poměrně unikátní postavení.
KAPITOLA 4. ANALÝZA
8
4 Analýza Vzhledem k tomu, že v době tvorby diplomové práce je již BioLib nějaký čas implementován a jedná se o práci velkého rozsahu, byly některé části analýzy značně zjednodušeny či dokonce vypuštěny.
4.1
Uživatelské role
Základní dělení je založeno na oblasti přístupových práv k jednotlivým vrstvám dat (ať už se jedná o záznamy v databázi nebo o přidané soubory). Data jsou rozdělena na čtyři oblasti. Vedle oblasti hlavních dat jsou to data systémová, například různé logy událostí, systémové texty, nastavení, dále data uživatelská, jako třeba komentáře a nakonec data přidaná, což jsou vlastně informace a soubory přidané uživateli a čekající na kontrolu a potvrzení od správců (obr. 4.1).
Obrázek 4.1: Kontextový diagram: uživatelé dle přístupových práv k jednotlivým vrstvám dat běžní uživatelé – skupinu tvoří uživatelé, kteří prohlíží a využívají běžně dostupné funkce systému. Mohou číst veškerá data z vrstev mimo vrstvy systémové, zapisovat ale mohou pouze do uživatelských dat, např. psát komentáře k obrázkům a taxonům. zaregistrovaní uživatelé – uživatelé kteří mají na stránkách účet, který jim umožňuje ukládat nastavení stránek (jazyk systému, jazyk taxonů a slovníčku atp.), sledovat změny od poslední návštěvy (diskusní fórum, obrázky, texty, články atp.) a hlavně přispívat vlastními daty (taxonomický systém, názvy a synonyma taxonů, obrázky, určování fotografií, texty atp.). Registrace je nutná k tomu, aby bylo možné sledovat původce jednotlivých záznamů v databázi. Kromě toho mají všechna práva přístupu jako běžní uživatelé. správci dat – uživatelé s právy zasahovat do vrstvy hlavních dat, dále se dělí na správce taxonomického systému, galerie, slovníčku pojmů, biotopů atd. Mohou také potvrzovat či mazat data ve vrstvě přidaných dat. Kromě toho mají veškerá práva jako předchozí dvě skupiny. Uživatel může být zároveň správcem více oblastí BioLibu. Předpokládá se,
KAPITOLA 4. ANALÝZA
9
že správci nemusí mít velké znalosti o práci s internetem, jedná se často o lidi, kteří jsou profesí biologové a k počítačové technice mají nedůvěru. Návrh uživatelského rozhraní by měl být přizpůsoben především této skupině. manažeři – podobně jako správci mohou upravovat data v hlavní vrstvě, úpravy jsou však omezené jen na určité záznamy, např. některé údaje jejich fotografií, obsah jejich článků, popis jejich záznamů v databázi odkazů a literatury, nastavení a administrace diskusních místností atp. správci systému – mají právo spouštět funkce související s údržbou systému, kontroly dat, přidělovat práva uživatelům atd. roboti – za samostatnou skupinu se dají považovat i vyhledávací roboti. Někteří z nich mají přístup na BioLib zakázán (některé stahovací programy, několik příliš aktivních indexovacích robotů pro vyhledávače). Jiní, jako například googlebot, jsou naopak v systému vítáni. Je nutné optimalizovat stránky tak, aby byly pro tyto roboty co nejdostupnější, nicméně musí být identické s tím, co vidí normální návštěvník, za skrývání obsahu před roboty dává Google odkazům trestné body. Zároveň se ale musí zajistit, aby roboti neměli možnost zápisu ani do uživatelské vrstvy – např. odesílání komentářů. Dále je indexovacím robotům zakázáno indexovat stránky zobrazující data z nepotvrzené vrstvy, která se mohou v čase měnit (po přesunutí do hlavních dat získají záznamy nové id a původní stránka se stává neplatnou). Vedle tohoto dělení lze uživatele členit i podle dalších kritérií, např. podle stupně orientace v biologii. Náhodné návštěvníky bez většího zájmu o biologii je nutné dostatečně zaujmout formou a obsahem, umožnit jim rychle se z navštívené části dostat do oblasti která by je mohla zajímat, například k fotografiím. Do této skupiny by se dali zařadit i indexovací roboti vyhledávačů. Amatérští biologové přicházejí na stránky s tím, že hledají určitou informaci související s biologií, v této oblasti se orientují poměrně dobře, ale přesto očekávají systém s názvy v jejich rodném jazyce, „lidskyÿ napsané texty, dostatek obrázků atp., ne jen strohý výčet latinských názvů a citací odborné literatury. Odborníci naopak hledají zejména aktuální taxonomický systém doplněný synonymy a citacemi odborné literatury, takže informace určené pro neodborné uživatele by pro ně neměly působit rušivě. Podle zkušenosti práce se stránkami BioLibu se dále dají uživatelé dělit na nové a na zkušené. Většina nových návštěvníků se na stránky dostává přes odkazy z vyhledávače nebo z jiné specializované stránky odkazující na určitý záznam a nikoliv na úvodní stránku. Cílem je tyto uživatele upoutat, poskytnout jim možnost snadno se dozvědět co na stránkách naleznou a jak se stránky používají. Zkušeným návštěvníkům je nutné umožnit, aby si stránky mohli nastavovat podle svých potřeb a toto nastavení se obnovilo během příští návštěvy a aby byli přehledně informováni o změnách v datech.
4.2
Případy užití
Nemělo by smysl v této kapitole popisovat veškeré požadavky na funkce aplikace, kterých jsou implementovány řádově stovky. Rámcové požadavky na funkčnost uvádí
KAPITOLA 4. ANALÝZA
10
Obrázek 4.2: Případy užití: akce nad daty
Obrázek 4.3: Případy užití: schéma modulu galerie
kapitola 2.3. Zde je uvedeno pouze několik důležitějších a dosti zobecněných případů. Obrázek 4.2 zobrazuje s vysokou abstrakcí model užití aplikace co se týče zásahu do dat, dále je zakresleno přihlašování a správa uživatelů.
KAPITOLA 4. ANALÝZA
11
Obrázek 4.4: Případy užití: schéma modulu mapování druhů
Jako příklad modelu užití s principem potvrzování záznamů byl zvolen modul galerie, viz obrázek 4.3. Model zobrazuje případy užití závislé na tom, zda uživatel zasahuje do nepotvrzených obrázků (vrstva přidaných dat) či do potvrzených (vrstva hlavních dat). Dalším příkladem je diagram modelu užití modulu „Mapování druhůÿ (obr. 4.4). Tento modul vznikal dodatečně na zakázku Národního muzea. Zakreslena je administrační část správce mapování a akce pro prohlížení a přidávání pozorování.
KAPITOLA 4. ANALÝZA
12
Obrázek 4.5: Datový model BioLibu
4.3
Datový model
Pro přehlednost jsou datové struktury rozděleny do tématických skupin (modulů). Toto rozdělení je použito i v části popisující navrženou strukturu databáze (kapitola 5.8) Orientační přehled těchto modulů je zachycen na obr. 4.5. Zakresleny jsou pouze významnější vazby, vazby v rámci textů jsou samozřejmě možné mezi všemi moduly (viz odkazové funkce, kapitola 5.10.5). Podrobný datový model zde není uveden, v příloze C se však nachází E-R model systému. Ani ten není kvůli přehlednosti úplný, obsahuje pouze významější entity, atributy a vazby. Jádro modelu tvoří modul „Taxonomieÿ, do kterého spadají entity jako evidence taxonů, jejich vědeckých i národních názvů, jejich popisy, mezitaxonové vztahy, dále číselník taxonomických kategorií a podobně. Blízce svázané s předchozím modulem, avšak z praktických důvodů oddělené, jsou „Check-listyÿ, „Mapování výskytuÿ a „Mapyÿ. V prvním z těchto modulů se udržují informace o rozšíření druhů ve formě územních seznamů, druhý slouží k evidenci pozorování druhů a třetí sestává z entit určených pro evidenci mapových dat rozšíření.
KAPITOLA 4. ANALÝZA
13
Dalšími moduly jsou „Biotopyÿ a „Lokalityÿ. Zatímco první se zabývá taxonomií životního prostředí, modul „Lokalityÿ přímo popisuje konkrétní oblasti a podmínky na nich. Modul „Encyklopedieÿ sdružuje entity související se slovníkem pojmů, tedy jednotlivá hesla, jejich vzájemné propojení, texty, názvy v různých jazycích. V modulu „Odkazy a literaturaÿ se nachází seznamy zdrojů informací o biologii. Entity související s redakčním systémem článků spadají do modulu „Článkyÿ. Evidence obrázků z modulu „Galerieÿ potom slouží všem ostatním zmíněným modulům. Další čtyři moduly jsou spíše systémové – tvoří je modul „Uživateléÿ, entity okolo „Nápovědyÿ a „Diskusního fóraÿ. Zbylé administrační entity jako číselníky a evidence akcí, jazykové definice a podobně se nachází v posledním modulu – „Systémová dataÿ.
KAPITOLA 5. IMPLEMENTACE
14
5 Implementace 5.1
Použité technologie
Jako skriptovací jazyk bylo tedy použito PHP (momentálně verze 4.3), jako databáze MySQL (verze 4.0). Volba technologie byla dána konfigurací již existujícího serveru, na který měl být projekt umístěn, dále pak dostupností dokumentace k těmto produktům a jejich stabilitou a dalšími důvody zmíněnými v kapitole 2.4. Vzhledem k rozsahu projektu a cílové skupině uživatelů bylo možné dopředu navrhnout pouze rámcovou podobu aplikace. Použití PHP/MySQL usnadňuje změny ve struktuře aplikace i databáze, rozšířenost těchto produktů zase umožní v budoucnu do kódu aplikace jednodušeji zasvětit nové programátory. Projekt je provozován na serveru Apache/1.3.33 (Debian GNU/Linux) na počítači R Pentium° R 4, 512MB RAM. Výstupem jsou validní HTML stránky s minimem Intel° 1 JavaScriptu a s žádnými dalšími součástmi které vyžadují speciální podporu na straně klienta (viz část o uživatelském rozhraní v kapitole 5.10.2).
5.2
Základní koncept stránek
Stránky jsou vytvářeny hlavním skriptem index.php (dále jako engine), který do sebe vkládá jednotlivé skripty reprezentující požadované funkce. Engine nejprve načte konfiguraci specifickou pro server, na kterém běží (tj. hodnoty pro připojení k databázi a nastavení úrovně bezpečnosti a výpisu ladících textů), dále z URL převezme nastavení jazyka stránek a zobrazovanou funkci (které jsou v URL vždy přítomné, viz kapitola 5.10.4), naváže připojení k databázi, definuje základní konstanty a standardní funkce, založí či načte session data2 , ověří přihlášeného uživatele, připojí základní jazykové definice a načte z databáze některé základní údaje. V další fázi je spuštěn vkládaný skript, jeho výstup je ovšem přesměrován do proměnné a použit až později. Skript ovšem může během svého běhu nastavit řadu proměnných, které ovlivní generování celé stránky, nejen její obsahové části.
Obrázek 5.1: Režimy generování stránky
1
JavaScript – programovací jazyk interpretovaný na straně klienta. Na straně klienta však může chybět či být interpretován jinak v různých verzích či typech prohlížeče. 2 Session – server side cookie, tj. informace uložené na serveru identifikované pomocí tzv. session id, které je přidělené každému uživateli, pro kterého se session registruje.
KAPITOLA 5. IMPLEMENTACE
15
Engine umožňuje tři režimy generování stránky (obr. 5.1) – normální (s menu, patičkou atd.), základní (pouze základní kostra HTML stránky, všechny ostatní prvky generuje vkládaný skript) a datový (generují se pouze data z vloženého skriptu, například exporty dat, generované obrázky atp.). Režim je možné nastavit z vkládaného skriptu nebo pomocí parametru v URL. V normálním a základním režimu se engine stará o vygenerování hlavičky HTML včetně meta-tagů, přičemž obsah některých meta-tagů může být opět ovlivněn vkládaným skriptem, např. přístupnost stránky vyhledávacím robotům, popis stránky a klíčová slova. Dále může skript ovlivňovat titulek stránky. Engine samozřejmě do stránky vloží i potřebné styly a standardní funkce v JavaScriptu. Zatímco v základním režimu je další generování závislé na obsahu vkládaného skriptu, v normálním režimu ještě engine vytvoří hlavičku, patičku, horní menu, panel nástrojů a levé menu. Obsah posledních dvou zmíněných je také částečně závislý na proměnných nastavených vkládaným skriptem. Těsně předtím, než je do obsahu stránky vložena proměnná obsahující výstup dříve spuštěného vkládaného skriptu dojde v tomto výstupu k nahrazení odkazových funkcí (viz kapitola 5.10.5). Výstup do proměnné a nahrazování odkazových funkcí lze potlačit, např. pro generované obrázky či jiná binární data. Diagram celého generování stránky lze nalézt v příloze B.
5.3
Bezpečnost
Engine se stará o základní bezpečnost stránek – kontroluje, zda jméno vkládaného skriptu z URL není pokus o vložení a interpretaci cizího skriptu, který by mohl nějak kompromitovat bezpečnost aplikace. V případě přihlášeného uživatele je kontrolováno, zda se během jeho přihlášení nezměnilo jeho IP. V rámci jednotlivých vkládaných skriptů je kontrola, zda jejich kód není místo klasického vložení enginem spouštěný samostatně. V takovém případě by mohlo dojít k chybám které by útočníkovi mohly prozradit něco o struktuře aplikace. Kontrola je založena na porovnání speciálního pravidelně obměňovaného řetězce definovaného v enginu s hodnotou ve vkládaném skriptu. Data vkládaná do formulářů jsou chráněna proti SQL injection3 , dále použití HTML je silně omezeno (některé prvky a atributy se neinterpretují), kontroluje se párovost tagů které by mohly mít vliv na vzhled stránky – to je aktuální zejména v diskusním fóru a v komentářích, kam mohou psát i neregistrovaní uživatelé. Před spam-boty je pro neregistrované uživatele implementována jednoduchá slovní CAPTCHA4 funkce – je nutné zadat generovanou slovní interpretaci čísla numericky. Kontrola je sice jednoduchá a lehce překonatelná, zastaví však prakticky všechny klasické spam-boty kteří se pohybují po internetu a náhodně vkládají texty do formulářů. Emaily na profilech a v komentářích se nepřihlášeným uživatelům zobrazují upravené – znak @ se nahrazuje za „(na)ÿ, resp. „(at)ÿ. Přihlášení uživatelé vidí email normálně. Kontakty na profilech si mohou uživatelé nechat skrýt (viz dále). Tyto opatření slouží proti robotům sbírající emailové adresy pro rozesílání spamu. 3
podvržení vstupních proměnných dotazu SQL za účelem pozměnění jeho předpokládaného výsledku metody jak rozpoznat normálního uživatele od stroje, který může např. automatizovaně zahlcovat diskusní místnosti reklamami 4
KAPITOLA 5. IMPLEMENTACE
16
Někteří známí spam-boti, boti na získávání emailových adres a programy na hromadné stahování stránek jsou zakázaní přímo v .htaccess souboru5 a v souboru robots.txt6 . Údaje o nastavení stránek jsou obsažené v session na serveru, jejíž id je uloženo jako cookie na počítači uživatele, nebo předáváno v URL, pokud se uložení nezdaří. V URL se session id předává pouze v případě, že došlo ke změně defaultního nastavení. Ve stránkách vygenerovaných indexovacími roboty vyhledávačů, kteří cookies nepodporují, by přítomnost session id v URL způsobila nižší ohodnocení stránky7 .
5.4
Systém potvrzování záznamů
Jak už bylo zmíněno, BioLib je polootevřený systém, na jehož obsahu se sice může podílet kdokoliv, ale vstup uživatelů je ověřován a následně potvrzován správci. Data přidaná uživateli se nacházejí v oddělených tabulkách s podobnou strukturou jako jejich „obrazyÿ ve vrstvě hlavních dat. Takto mohou uživatelé přidávat taxony, vědecké i národní názvy, texty k taxonům, slovníkové pojmy a názvy a texty k nim, obrázky, determinace cizích obrázků, odkazy a podobně. Správci mají potom k dispozici různé přehledy přidaných dat, ze kterých mohou záznamy potvrzovat, upravovat nebo mazat. Déle přispívající uživatelé mají možnost získat rozšířená práva a zakládat záznamy přímo ve vrstvě hlavních dat. Tento přístup umožňuje správcům mít lepší přehled o změnách v BioLibu a také zabraňovat některým omylům (špatně určené obrázky, duplicitní taxony) či dokonce útokům na databázi.
5.5
Systém práv
Oblast práv je v BioLibu rozdělena podle modulů, ke kterým se vztahují, na práva na taxonomický systém, biotopy, lokality, slovník, galerii, nápovědu, databázi odkazů a právo na psaní textů k taxonům, které je z praktických důvodů odděleno od taxonomické části. Práva jsou vícestupňová, první stupeň zajišťuje základní sadu administrátorských funkcí, neumožňuje však přístup do některých náročnějších či choulostivějších nástrojů, které by mohly ovlivnit chod projektu. U uživatelů s touto úrovní práv se také klade větší důraz na zálohování měněných záznamů a důležitější záznamy nejsou přímo mazány, ale je jim nastaven indikátor „Smazánoÿ, čímž zmizí z přehledů, ale správce s vyššími právy je může znovu obnovit. U galerie jsou stupně práv tři, první stupeň umožňuje uživateli přímo nahrávat a plně editovat svoje fotografie v galerii. Toto právo se přiděluje uživatelům, kteří prokázali, že dokážou dostatečně posoudit kvalitu a věrohodnost determinace svých fotografií. Práva pro jednotlivé moduly se načítají při přihlášení uživatele do systému. 5
doplňující konfigurační soubor Apache pro příslušný adresář výčet přístupových práv pro různé typy robotů. Nekteří však tento soubor nerespektují 7 konfigurační proměnná session.use trans sid v PHP umožňuje automaticky vkládat session id do všech odkazů a formulářů vedoucích na stránky v rámci serveru. Proto je nutné vkládání session id řešit jinak 6
KAPITOLA 5. IMPLEMENTACE
17
Vedle správců lze na některé záznamy přiřadit zvláštní práva, která uživateli umožňují tyto záznamy editovat s úrovní správce. Jedná se např. o články, odkazy, mapování, mapy rozšíření, diskusní fóra či jazykové rozhraní. Práva se kontrolují vždy při prohlížení a práci s aktuálním záznamem. Uživatel, který je manažerem záznamu, však také často nemá přístup ke všem polím, ke kterým má přístup správce. U obrázků například nemůže měnit údaje jako je jejich determinace – editace je omezena pouze na informace týkající se lokality, techniky a autorských práv k obrázku. Přidělení správcovství mají na starost administrátoři systému, uživatel tím nepřichází o žádné z původních funkcí, jejich nabídka se pouze rozšiřuje. V případě potřeby mohou i správci zakládat záznamy jako nepotvrzené.
5.6
Ochrana před duplicitami a jejich řešení
Vzniku duplicit lze předcházet pouze do určité míry. Při přidávání nových záznamů se vždy kontroluje, zda už záznam se stejným jménem v databázi neexistuje – v takovém případě se ve formuláři objeví varování a data jsou přidána pouze při zaškrtnutí políčka „Ignorovat duplicityÿ. Kontrola probíhá i při hromadném zakládání záznamů a také třeba u přidávání synonym a vedlejších názvů – tam už ale varování může znamenat, že duplicity jsou již v databázi založeny pod jinými názvy. Funkce dostupné správcům dále umožňují hledat duplicitní názvy v rámci celého systému či nějaké jeho části, další funkce kontroluje, zda poddruhový název již v databázi neexistuje jako druh atp. V případě nalezení duplicity v hlavních datech se záznamy nemažou (kvůli zachování platnosti odkazu), duplicitní záznamy se speciálně označí. Postup označení, tzv. zneplatnění záznamu, probíhá následovně: správce nejprve zadá id obou záznamů. V následném formuláři zvolí, který ze záznamů je ponechán (zpravidla se vybírá záznam s nižším id, tedy ten dříve založený, kde je vyšší pravděpodobnost, že se na něj odkazuje nějaká stránka nebo vyhledávač), v některých případech se ve formuláři volí i které z informací jsou platné (např. u taxonů název, zařazení a taxonomická kategorie). Po potvrzení se data ze zneplatněného záznamu automaticky přiřadí k druhému taxonu, duplicitní položky se odstraní, zneplatněný záznam se označí jako skrytý. Vyplněním pole dupliciteID na id ponechaného záznamu je zaručeno, že profil při zobrazení zneplatněného záznamu zná adresu přesměrování, které provede i s příslušnou hlavičkou, což většinu vyhledávačů donutí opravit si vlastní záznam na aktualizovanou adresu.
5.7
Importování záznamů
Pro pohodlnější a rychlejší zpracování dat podporuje BioLib import řady typů záznamů ze souboru. Základním formátem, ze kterého skripty čtou informace, je formát CSV, tedy hodnoty oddělené čárkou (resp. středníkem). Pro zajištění jednoznačnosti se většinou pracuje s id záznamů místo s jejich názvy. Pro tyto účely je v BioLibu funkce Doplnění ID taxonů do CSV souboru (resp. biotopů atp.), která načte latinské názvy taxonů ze souboru a snaží se je dohledat v databázi, výstupem je opět CSV soubor, ve kterém jsou krom doplněných id taxonů i platné názvy taxonů v případě, že se záznam propojil přes synonymum. Hledání lze omezit taxonem, čímž se sníží pravděpodobnost
KAPITOLA 5. IMPLEMENTACE
18
nalezení duplicitního názvu (přítomnost stejných názvů v různých částech taxonomického systému, zejména na úrovní rodů, není nic neobvyklého). Sloupec id taxonů potom může administrátor v tabulkovém editoru přenést do souboru, který je dále zpracováván, např. soubor pro import vědeckých či národních názvů, data k hromadnému importu fotografií a podobně. Tyto importy umožňují speciální náhledový režim pro kontrolu dat před samotným importem. V režimech náhledu i importu probíhá samozřejmě detekce a přeskakování či hlášení duplicit a jiných problémů.
5.8
Databáze
Jak již bylo zmíněno, používá se databáze MySQL, ke které se engine připojí před generováním každé stránky. K dispozici je třída classQuery, která umožňuje odstínit příkazy související s typem databáze a umožňuje tak databázi relativně jednoduše vyměnit za jiný typ. Třída obsahuje například metody pro otevření dotazu, načítání jednotlivých řádek a načtení výsledku celého dotazu do pole. Dále je definováno několik funkcí pro jednodušší získání dat, např. queryrow() a queryfield() pro získání jednoho řádku nebo jednoho pole bez nutnosti vytvářet a následně zavírat instanci classQuery. Zajímavou vlastností třídy je možnost kešování provedeného dotazu pro další použití. O kešování by se sice víceméně měla starat databáze sama, v mnohých případech ale cílené kešování do souboru umožní snížit zátěž databáze. Instanci třídy je při zakládání předán název souboru, pod kterým by měl být dotaz uložen. V případě, že skript povolí kešování a zároveň je umožněno globálně (v konfiguračním souboru), se dotaz v případě nenalezení stejnojmenného souboru v adresáři CACHE během postupného načítání ukládá jako CSV do pracovního souboru, který je po uzavření objektu přejmenován na definovaný název, nebo smazán, pokud tento mezitím vzniknul jinou cestou. V případě, že se soubor při otevření dotazu nalezne, jsou data čtena z něj. Aktuálnost dat je zajištěna promazáváním keše při každé změně v příslušné oblasti, tj. při změně v taxonomickém systému jsou smazána všechny související dotazy, ale ponechány např. dotazy související s encyklopedií. O promazávání se stará funkce clear cache(), která maže soubory podle kontextu nebo masky. Názvy souborů se totiž vytvářejí dle určitých pravidel a je proto možné maskou ovlivnit rozsah promazávané oblasti. Kešování dotazů místo kešování celých HTML souborů má několik výhod. Některé dotazy jsou nezávislé na nastaveném jazyku nebo na tom, zda je uživatel přihlášený či nikoliv, zatímco stránky ano. Některé dotazy mohou být využité ve více různých stránkách. Kupříkladu latinský jmenný rejstřík umožňuje uložit dotaz zobrazující „obsazenáÿ písmena, ale v rámci přehledů pro jednotlivá písmena je neměnný a navíc nezávislý na nastaveném jazyce názvů taxonů. Kešování je závislé na skriptu, který dotaz provádí. Tam se může podle parametrů a předchozích dotazů rozhodnout, zda dotaz kešovat či nikoliv. Kešování je použito pouze u náročnějších funkcí, do kterých uživatelé (či roboti) mohou často přistupovat, jako např. rejstřík, přehled podtaxonů, slovník pojmů, statistiky atd. Databáze je pravidelně zálohována programem mysqldump, k dispozici je několik skriptů podle hloubky zálohy (vše, taxonomický systém, encyklopedie, systémová data, základní tabulky). Vygenerovaný SQL skript se potom přenese na počítač hlavního administrátora.
KAPITOLA 5. IMPLEMENTACE
19
Všechny názvy tabulek přímo svázaných se systémem BioLibu jsou prefixované řetězcem „bio ÿ, tabulky testovací či pomocné vzniklé při různých importech dat takto označené nejsou a v textu zmiňované nebudou. Popis struktury tabulek je omezen pouze na významné sloupce, na kterých jsou založené některé funkce popsané v dalších kapitolách. Před kapitolami, které se zabývají strukturou tabulek v jednotlivých modulech, jsou zařazené kapitoly popisující obecné struktury v těchto modulech využívané. 5.8.1
Systémová a speciální pole
Ve většině tabulek se nachází pole id typu INTEGER s primárním klíčem a generátorem (resp. vlastností auto increment), primární klíče jiného druhu jsou využité minimálně. Tento přístup umožňuje například záznamy jednoduše zálohovat přes společný mechanismus či logovat informace o akcích se záznamy, má však i řadu dalších výhod. Všechny tabulky, které může měnit více uživatelů, obsahují standardně pole syauth, sydate, syuauth, syudate označující autora a datum založení a poslední změny. Na těchto polích je u důležitějších tabulek index, aby bylo možné zobrazovat přehledy práce jednotlivých autorů a změny dat v čase. U řady záznamů je navíc pole auth udávající id autora informace (tj. většinou toho, kdo informaci přidal, ale správci toto pole mohou libovolně měnit). Pole syauth, syuauth a auth jsou klíče do tabulky uživatelů (kapitola 5.8.21). U záznamů, kde může autorství pocházet od nezaregistrovaného uživatele, je přítomno navíc textové pole authstr (u obrázků, determinací a textových bloků). Pole dupliciteID se používá při nalezení duplicity v datech. Duplicitní záznam není smazán, je ovšem skryt a uživatel, který se na profil záznamu dostane třeba z nějakého vyhledávače, je automaticky přesměrován na ponechaný záznam. Tento princip je použitý v tabulkách bio records, bio sources, bio dictionary a bio users, více v kapitole 5.6. Indikátor ind hidden umožňuje označit záznam jako skrytý nebo smazaný, aniž by byl smazán záznam a data s ním svázaná. Skrytý záznam je neviditelný běžným uživatelům, vidí ho však správci příslušného modulu a mohou ho zase zveřejnit. Smazaný záznam vidí jen správci modulu s právy na nejvyšší úrovni, kteří také mohou záznam s konečnou platností smazat. Pole je použité ve většině hlavních tabulek (tj. tabulek k jejichž záznamům existují profily). Indikátor indprofilehide je použitý v řadě vazeb a určuje, zda je druhý záznam zobrazený na profilu prvního záznamu z vazby, nebo jen ve speciální funkci, která vazby zobrazuje včetně podrobných informací (např. vazby taxonu na odkazy, kdy na profilu jsou zobrazeny pouze významnější zdroje informací). Pole directory se vyskytuje v několika tabulkách, jejichž data mají hierarchickou strukturu. Jedná se o pole typu varchar a je v něm uložen kompletní seznam předků v hierarchickém uspořádání, kde jednotlivá id nadřazených záznamů jsou oddělená pomlčkou. Na tomto poli je index. Pomocí podmínky „directory LIKE ’%-id-%’ÿ resp. pro využití indexu „directory LIKE ’prefix-%’ÿ, kde prefix je pole directory záznamu doplněné o jeho id, lze jednoduše vybrat celou větev záznamů, tj. omezit záznamy na
KAPITOLA 5. IMPLEMENTACE
20
takové, jejichž předkem je záznam s identifikátorem id. Toho je využito např. v taxonomickém systému, kategoriích a biotopech. Pole se musí u záznamu a všech jeho podřízených záznamů měnit při každé operaci přesunu, nicméně i při větším počtu záznamů je to akce docela rychlá a přínos tohoto pole ve funkcích je zjevný. 5.8.2
Tabulka kategorií
Tabulka slouží k definici hierarchického systému kategorií pro přehlednější zobrazení řady typů záznamů – do kategorií jsou členěné obrázky v galerii, termíny ve slovníku, články, zpracované check-listy, lokality, odkazy, témata nápovědy, diskusní místnosti či adresář odborníků. Názvy kategorií jsou buď definované pro každý systémový jazyk, nebo je kategorie vázána na taxonomický systém a název tak reaguje na změny v názvu taxonu (vědeckém i národním). Kategorie jsou uloženy v jedné tabulce bio trees a jednotlivé sekce jsou rozlišeny polem type. Pole directory dovoluje jednoduše vybrat všechny záznamy spadající do určité větve kategorií. 5.8.3
Obecná struktura textových bloků
Tabulka bio texttypes definuje typy textových bloků a jejich dostupnost pro jednotlivé případy použití – v textech k taxonům je možné použít jiné předdefinované bloky než v textech pro lokality, atp. Součástí definice bloku je jeho název (neměnný), v případě obecného bloku je název umístěn přímo v něm. Dále definice obsahuje pozici, která se u textového bloku při jeho založení předvyplní, čímž je dáno vzájemné uspořádání jednotlivých typů bloků. Tabulky bio XYZtexts (např. bio taxontexts, bio imagetexts, bio localtexts, bio helptexts atd.) obsahují samotné textové bloky. Blok obsahuje informaci o typu textu (z číselníku bio texttypes), v případě obecného typu nadpis, identifikátor jazyka, id záznamu, ke kterému je text vztažený, text, poznámku, indikátor, zda je text skrytý, pořadí a stránku textu vzhledem k ostatním blokům stejného záznamu a informace o autorech (autor může být zadán jako klíč v tabulce uživatelů, nebo jako text, pokud není zaregistrován). V případě bloku typu obrázek obsahuje navíc id obrázku. 5.8.4
Struktura vazeb s odkazy
Tyto tabulky realizují vazbu taxonů, slovníkových pojmů, lokalit, biotopů, článků a podobně se záznamy v databázi odkazů a literatury. Protože je však někdy zbytečné zakládat nějakou stránku v databázi odkazů, vazba může být i slepá, tj. URL je obsaženo přímo v záznamu vazby. Slouží k tomu pole extID, které je zároveň využito i v dalším případě speciální vazby – vazby na formát pro externí odkaz. Formáty jsou součástí databáze odkazů, nemají však funkční odkaz, ale pouze pravidla o tom, jak se odkaz tvoří složením z URL a pole extID. Tak je možné například importovat k taxonům desetitisíce odkazů na jedny stránky, aniž by se tím založily zbytečné a obtížněji hromadně editovatelné položky v databázi odkazů. Stejně jako u některých dalších vazeb je možné odkaz na profilu záznamu skrýt pomocí pole profilehide.
KAPITOLA 5. IMPLEMENTACE 5.8.5
21
Tabulka zpráv
Tabulka bio messages obsahuje zprávy uživatelům, příspěvky diskusních místností, komentáře k taxonům a komentáře k obrázkům. Typ záznamu je rozlišen polem type. Dále záznam obsahuje tělo zprávy, čas (v systémovém poli sydate), autora zprávy (v syauth, pokud byl autor přihlášený), předmět zprávy, autora zprávy a jeho email jako text (pokud není zaregistrovaný), id vztaženého záznamu (adresáta, diskusní místnosti, taxonu atd.) a dále různé systémové indikátory pro interní použití – např. u pošty indikátor, zda je pošta příchozí či odchozí, neboť se po odeslání ukládá kopie do pošty uživatele pro lepší přehled o komunikaci s druhou stranou, nebo indikátor, že je zpráva systémová, pokud se jedná o automaticky generovanou zprávu např. při změně determinace obrázku. 5.8.6
Struktura vazeb s obrázky
Vazby mezi obrázky z galerie a jednotlivými záznamy mají částečně shodnou strukturu. Tabulky vždy obsahují identifikátor záznamu a obrázku, indikátor, zda je obrázek pro záznam hlavní, a indikátor, zda se má obrázek zobrazovat na profilu záznamu či jen v kompletním přehledu přiřazených obrázků. Struktura vazeb taxonů s obrázky je komplikovanější a bude popsána v části o galerii v kapitole 5.8.18. 5.8.7
Obecná struktura tabulek manažerů
Tabulky slouží k definici speciálních práv přístupu k určitým záznamům pro uživatele, kteří nemají práva na celkovou administraci příslušného modulu. Tabulka obsahuje identifikátor uživatele a vztaženého záznamu, úroveň práv a v některých případech indikátor, zda se jedná o hlavního manažera (např. u diskusních místností). Tabulky jsou použity například pro manažery článků, odkazů, diskusních místností, mapování a map rozšíření. Informace o manažerech obrázků jsou řešeny odlišně, neboť u obrázků stačí jediný manažer, kterým je ten uživatel jenž do galerie obrázek přidal. 5.8.8
Řešení struktur pro nepotvrzená data
Informace přidané uživateli, které čekají na schválení nějakým správcem, jsou uloženy odděleně od ostatních dat, zpravidla v tabulkách s velice podobnou strukturou jako jejich obrazy v ověřené části. Pole syauth potom určuje uživatele, který může se záznamem pracovat, dokud ho někdo ze správců nepotvrdí – v takovém případě se data přenesou do hlavních tabulek a původní záznam se vymaže. Pole syauth v nové tabulce se přepíše na id správce, informace o původním autorovi záznamu se uchová v poli auth. 5.8.9
Taxonomický systém
Základem taxonomického systému a tedy i BioLibu jako takového je tabulka bio records, která obsahuje hierarchicky uspořádaný taxonomický systém živých organismů. Kromě základních systémových polí obsahuje tabulka identifikátor hierarchicky přímo nadřazeného taxonu, třídící pole umožňující ovlivnit řazení taxonů v profilu nadřazeného taxonu a taxonomickou kategorii záznamu. Pole directory (viz 5.8.1) umožňuje jednoduše vybrat taxony spadající do jedné větvě nebo naopak najednou vybrat všechny nadřazené taxony. Taxonomická kategorie odkazuje do tabulky bio taxony, kde jsou
KAPITOLA 5. IMPLEMENTACE
22
názvy pro jednotlivé jazykové mutace a vzájemné pořadí taxonomických kategorií pro správné řazení taxonů v rámci profilu nadřazeného taxonu. Tabulka obsahuje řízenou duplicitu „hlavní obrázekÿ (z tabulky bio imagedeter). Pole ind used umožňuje označit taxon jako nepoužitý v taxonomickém systému v BioLibu, pole ind incert označuje taxon, jehož zařazení v systému je z hlediska taxonomie sporné, pole ind isextinct slouží k označení vyhynulého taxonu. Pro zrychlení mnoha funkcí jsou v tabulce bio records dále umístěny řízené duplicity latin a authority, které se nastavují na odpovídající hodnoty z platného vědeckého názvu v tabulce bio taxonnames. Tam jsou vedle zmíněných hodnot uloženy i informace o autorovi záznamu, poznámka a specifikace typu názvu (platný či různé druhy synonym). Národní názvy taxonů jsou uložené v tabulce bio taxonvnames, která má podobnou strukturu, chybí však autorita a navíc je zde specifikace jazyku názvu. Každý taxon má právě jeden platný vědecký název a nejvýše jeden hlavní národní název, které se zobrazují v přehledech taxonů. Synonym a vedlejších názvů může být libovolný počet. Taxony je možné provazovat mezi sebou tzv. mezitaxonovými stavy (tabulka bio taxon taxon). To slouží např. k určení vztahů hostitel/parazit nebo spásač/potrava. Vazby jsou jednostranné, tj. pro správné zobrazení na obou profilech je nutné založit dvojici záznamů (což lze automaticky). Druh vazby je specifikován v tabulce bio taxonrelations. Taxon lze provázat s libovolným počtem obrázků z galerie, slouží k tomu tabulky bio taxonimages a bio imagedeter. Zatímco první tabulka umožňuje vytvářet jednoduchou vazbu, pomocí niž lze na profil taxonu přidávat „ilustrační obrázkyÿ, druhá tabulka se týká determinací obrázků a bude podrobněji vysvětlena v kapitole o galerii (5.8.18). Podobně jako s obrázky lze taxon provazovat se zvukovými záznamy (tabulka bio sounds). K taxonu lze přiřazovat textové bloky, které se zobrazují na jeho profilu pro vybranou jazykovou mutaci (tabulka bio taxontexts). Pro profily taxonů je možné využít předdefinované bloky „taxonomieÿ, „paleontologieÿ, „velikostÿ, „popisÿ, „ekologieÿ, „rozšířeníÿ, „významÿ, „možné záměnyÿ, „zajímavostiÿ a „literaturaÿ. Taxon lze také provázat se slovníkovým pojmem, pojmy se pak zobrazují na profilu taxonu a lze takto vytvářet tématické seznamy taxonů, viz kapitola 5.8.15. Podobně lze taxon provazovat s biotopy (diagnostické a typické druhy, tabulka bio biotop taxon) a lokalitami (významné druhy, tabulka bio locality taxon). K provázání taxonů a záznamů z tabulky odkazů a literatury slouží tabulka bio taxonsources (struktura v kapitole 5.8.4). Mimo to lze ke každému taxonu přiřadit seznam zdrojů, ze kterých bylo čerpáno při zpracování příslušné části systému. Zdroje se pak zobrazují jako citace na profilech taxonů. Do této tabulky (bio taxoninfo) je dále možno doplnit poznámku a datum citace.
KAPITOLA 5. IMPLEMENTACE
23
Tabulka bio taxonbook definuje seznam taxonů, které jsou významné pro rychlou navigaci v taxonomickém systému, tzv. funkci Rozcestníky. Profily s dostatečným množstvím informací pro nějaký jazyk může administrátor označit jako pro tento jazyk „zpracovanéÿ tím, že je přidá do tabulky bio taxonprofiles, ve které je identifikátor taxonu a jazyka, pro který byl zpracován. Přehled těchto profilů z prohlížené větve se pak zobrazuje na rozcestnících resp. ve funkci Zpracované taxony. Naopak pro správce slouží k informaci o stavu zpracování dat ve větvi taxonomického systému tabulka bio taxacount. Taxony lze sdružovat do tzv. check-listů (tabulka bio checklist) a je možné k nim přiřazovat mapy rozšíření (tabulka bio taxonmaph), více o nich v kapitolách 5.8.10 a 5.8.11. Dříve popsanou tabulku bio messages (kapitola 5.8.5) lze využít k ukládání komentářů k jednotlivým taxonům, kde mohou uživatelé klást dotazy či upozorňovat na nedostatky v taxonomii. Některé ze zmíněných tabulek existují v duální verzi obsahující nepotvrzená data, která jsou do hlavních tabulek přenesena teprve po kontrole správci. Takto mohou uživatelé přidávat nové taxony, vědecké názvy, národní názvy či texty. 5.8.10
Check-listy
Check-listy jsou vedeny v hlavičkové tabulce bio checklisth, kde je pro seznam definován jeho název, hierarchické začlenění pod jiný check-list a citace. Položky check-listu, tedy vazby mezi hlavičkou a taxony, jsou v tabulce bio checklist. Vazba má navíc různé check-listové indikátory – zda je druh na území vyhynulý, sporný, introdukovaný, invazní či závislý na člověku. Dále je možné ke každé položce doplnit poznámku. Hierarchické uspořádání check-listu umožňuje při vložení záznamu automaticky aktualizovat i rodičovské seznamy. Check-listy nejsou a ještě dlouho nebudou kompletní, pro přehled o tom, jaké checklisty pro jakou skupinu jsou v BioLibu zpracované, slouží tabulka bio completedlists. Seznamy jsou dělené do kategorií podle taxonomických skupin a umožňují jednoduše přejít na funkci Check-list filtrovanou pro určité území a skupinu taxonů. 5.8.11
Mapy
Mapy rozšíření v BioLibu mohou být buď síťové (středoevropské KFME členění [15]), nebo klasické pro celý svět či libovolný kontinent (či jinou definovanou část světa). Definice map (typ, rozměry atp.) se nachází v tabulce bio faunmap, tabulka bio taxonmaph se potom na tuto tabulku odkazuje, přičemž další její pole jsou poznámka, citace, autor mapy a samozřejmě přiřazený taxon. Vzhledem k potřebám mapování druhů lze navíc ke každé takové mapce přiřadit jejího manažera (či více), který může tuto mapu editovat, aniž by měl právo zasahovat do jiných map (bio taxonmapmanagers, více v obecné části v kapitole 5.8.7). Jednotlivé komponenty mapy (u síťových map kvadráty, u ostatních map kreslené masky) jsou v tabulce bio taxonmap, přičemž mohou dále obsahovat informace o autorovi, zdroji dat, lokalitě, roku atp.
KAPITOLA 5. IMPLEMENTACE
24
Síťové mapy pro druhy které jsou součástí mapování jsou úzce provázané s přidávanými pozorováními. 5.8.12
Mapování výskytu druhů
Seznam probíhajících mapování se nachází v tabulce bio speciesmapping, ve které je kromě názvů i úvodní text a vazba na síťovou mapu, do níž se výsledky přenáší (teoreticky tak může mapování fungovat nejen pro ČR, ale i pro další středoevropské země používající síťové mapování KFME; možné je i mapovat bez vazby na mapku). Mapování má definovaný seznam pozorovaných taxonů (tabulka bio speciesmappinglist), ze kterého uživatel volí při přidávání pozorování – je možné však i přidat pozorování druhu, který v seznamu nefiguruje. Vedle mapovaných druhů jsou v seznamu i „strukturálníÿ taxony, které slouží pro přehlednější zobrazení mapovaných druhů uspořádaných do skupin podle taxonomického zařazení. Dále je možné indikátorem rozlišit, zda je taxon na sledovaném území původní či introdukovaný. Každé mapování může mít libovolný počet správců, kteří mají přístup k získaným záznamům o pozorování a mohou z nich generovat data do síťových map. V tabulce bio speciesmappingmanagers je vedle id uživatele i příznak, zda se mají upozornění na přidané pozorování příslušnému správci posílat na email. Samotná pozorování se pak nachází v tabulce bio speciesmappingrec. V tabulce je nepovinná vazba na taxon, vazba na mapování, autor záznamu, údaje o času a lokalitě (včetně možnosti zadat souřadnice GPS, kvadrát mapy a nadmořskou výšku). Dále záznam obsahuje položky ke kterým mají přístup pouze správci mapování – poznámka správce, typ výskytu (stálý, občasný a sporný) a stav pozorování (přidané, zpracované a odmítnuté). K jednotlivým pozorováním lze vázat i libovolný počet obrázků z uživatelské galerie (bio images user). 5.8.13
Systémy biotopů
Tabulka bio biotops umožňuje vytvářet hierarchické systémy biotopů. Každý záznam obsahuje název, kód, ukazatel na nadřazený záznam a informaci o autorovi záznamu. K biotopu lze opět přiřadit textové bloky v libovolném jazyku (bio biotoptexts), dále je možné ho provazovat s obrázky z galerie (bio biotopimages), přičemž jeden hlavní obrázek vždy slouží jako náhled v seznamech biotopů – jeho id je v tabulce bio biotops jako řízená duplicita „hlavní obrázekÿ. Stejně jako u taxonů i k biotopům lze přidávat odkazy (bio biotop sources) Biotopy lze provazovat s taxony (tabulka bio biotop taxon). Vazby mají indikátory, zda se jedná o druh diagnostický a zda o druh převládající. Podobně je možné provázat biotopy s lokalitami, na kterých je biotop typický, tuto vazbu realizuje tabulka bio biotop local.
KAPITOLA 5. IMPLEMENTACE 5.8.14
25
Databáze lokalit
Databáze lokalit vznikla zejména pro možnost vytvoření seznamu chráněných oblastí jednotlivých státu, včetně popisů, obrázků, vazeb na typické taxony a podobně. Hlavní tabulkou je zde bio localities, která obsahuje pole informující o rozloze, rozsahu nadmořských výšek, roku založení a typu chráněného území, kódu IUCN [3] a podobně. Lokality jsou standardně uspořádány dle kategorií, v rámci profilů je však možné i hierarchické řazení. Názvy lokality s možností více jazykových variant se nachází v tabulce bio lnames. Textové bloky jsou standardně řešeny v tabulce bio ltexts, vazby na obrázky v tabulce bio localimages a vazby na odkazy bio local sources. K vazbám na taxony (seznamy významných zástupců příslušné lokality) slouží tabulka bio locality taxon. 5.8.15
Encyklopedie
Encyklopedií je v BioLibu myšlen slovník termínů a doplňující funkce, např. stratigrafická tabulka. Slovník termínů je v BioLibu řešen dosti komplexně. Jeden záznam ve slovníku pojmů neodpovídá jednomu slovu, ale seskupení slov s obdobným významem, ke kterému jsou přiřazeny texty, obrázky, odkazy a vazby na jiná hesla. Názvy i texty jsou v libovolných jazycích, kromě toho názvy mohou být i „mezinárodníÿ, např. latinské, oficiální jména institucí, zkratky atp. Slovník vždy zobrazuje přehled názvů vybraného jazyka a názvů mezinárodních. Jednotlivé položky slovníku se nachází v tabulce bio dictionary – tato tabulka obsahuje prakticky pouze zařazení do kategorie, autora záznamu, systémové informace o založení a poslední změně záznamu, indikátor zda je záznam viditelný a podobně. Jednotlivé názvy (synonyma, zkratky, množné číslo atp.) jsou v tabulce bio dictnames. Pro každý jazyk existuje nejvýše jeden hlavní název, v případě přítomnosti mezinárodního názvu však mohou existovat hlavní názvy dva, proto se v tabulce bio dictionary nachází řízená duplicita mainname, ve které je uložen hlavní mezinárodní název (je-li v databázi přítomen) a kterého se využívá v případě, že pro vybraný jazyk není nalezen jiný název. Tento přístup urychluje řadu funkcí souvisejících se slovníkem. Textové bloky se nachází v tabulce bio dtexts, vazby na odkazy v bio dict sources, vazby na obrázky v bio dictimages. Kromě toho je možné provazovat termíny vzájemně mezi sebou pomocí tabulky bio dict dict – vazba je vždy jednostranná, při přidávání vazby lze automaticky generovat dva zrcadlové záznamy. Vazba na taxon reprezentovaná tabulkou bio dict taxon umožňuje vytvářet tématické seznamy taxonů, např. chráněné druhy obsáhlé v nějaké vyhlášce, jedovaté druhy a podobně. Pro termíny přidané od uživatelů slouží tabulky bio addict, bio dictnames contrib a bio dtexts contrib. Součástí encyklopedie je i stratigrafická tabulka (tabulka rozdělení geologických období), která je pro snadnější editaci a případně možnost vytvoření více různých stratigrafických tabulek řešena také přes databázi. V tabulce bio strattimes jsou časové hranice jednotlivých období, v tabulce bio strat je potom seznam těchto období, které se do bio strattimes odkazují (horní a dolní časová hranice), dále záznam obsahuje název a doplňující informace o barvě a způsobu vykreslení v tabulce.
KAPITOLA 5. IMPLEMENTACE 5.8.16
26
Databáze odkazů a literatury
Tabulka bio sources obsahuje seznam odkazů, literatury, článků a dalších zdrojů informací o přírodě. Druh záznamu je rozlišený polem type, záznamy dále obsahují informaci o kategorii a o nadřazeném záznamu. Další pole jsou URL, popis, informace o jazyku zdroje, seznam autorů, rok vydání a nakladatelství. Pole brokenlink umožňuje uživatelům označit odkaz jako nefunkční. Názvy odkazů a knih jsou umístěny v tabulce bio sourcenames, aby bylo možné u vícejazyčných zdrojů přidat libovolný počet názvů. Pro každý jazyk smí existovat nejvýše jeden název, jeden název je vždy hlavní. Tabulka bio sourcemanagers umožňuje přiřadit k záznamu nějakého uživatele jako správce. Tabulka bio sourceimages zajišťuje možnost k záznam vázat obrázky z galerie, např. obrázky obalu knihy. K uchovávání záznamů přidaných uživateli slouží tabulka bio adsources. 5.8.17
Články
Seznam článků členěných dle kategorií je v tabulce bio articles. Další informací jsou jména autorů, úvodník textu, poznámka a systémové informace. Textové bloky článku jsou v tabulce bio articletexts, vazby na odkazy v bio articlesources a správci článku v tabulce bio articlemanagers. 5.8.18
Galerie
Tabulka bio images představuje seznam všech fotografií a ilustrací k taxonomickému systému, slovníku, databázi lokalit, biotopů a podobně. Fotografie jsou dělené dle kategorií, většina kategorií je přímo provázána s taxonomickým systémem (kategorie představují zjednodušený systém omezený na významné skupiny), což umožňuje určené fotografie automaticky zařazovat do nejvhodnější kategorie. Záznam obsahuje kromě systémových informací také informace o autorovi (který může být zadán jako klíč v tabulce uživatelů, nebo jako text, pokud není zaregistrován). Pole manager udává správce obrázku, pro případ, že někdo do galerie přidává cizí obrázky (se svolením autora). Narozdíl od jiných záznamů umožňujících přiřazení manažerů může mít tedy obrázek manažera jednoho, což je ovšem dostačující. Díky tomuto poli má uživatel, který obrázky do galerie přidal stále přístup k editaci záznamu a také přehled o všech takových fotografiích. Pole object id odkazuje do tabulky bio imageobjects a umožňuje provazovat obrázky stejného objektu, což je užitečné např. pro určování druhu (kdy jsou provázané např. detail listu, květu a celkový habitus rostliny). Pole original name uchovává název souboru, který byl do galerie nahrán, pro případ, že by uživatel chtěl obrázek zpětně dohledat. Indikátor ind undet označuje finálně určené obrázky, je automaticky nastavován podle taxonomické kategorie přiřazeného taxonu (druh a nižší kategorie jsou považovány za finální determinaci). Také je však možné ho nastavit ručně pro obrázky, které mají popisnou hodnotu pro nějakou skupinu organismů, určitelné do druhu však nejsou. Pole sourceID ukazuje do databáze odkazů a umožňuje provázat fotografii se záznamem např. nějaké fotogalerie, jejíž autor obrázek do BioLibu věnoval. Trojice polí year, month a day uchovávají informace o času pořízení obrázku, přičemž může být vyplněný i pouze rok, nebo pouze rok a měsíc. V textovém poli infolocation je informace o lokalitě, v infotech technické informace o fotografii, další pole obsahují název a doplňující poznámky k autorským právům. Popisy lze k obrázkům přidávat opět pomocí textových
KAPITOLA 5. IMPLEMENTACE
27
bloků (bio imagetexts). Tabulka bio imagemaps uchovává souřadnice, názvy a popřípadě i odkazy do slovníku oblastí u interaktivních obrázků sloužících jako ilustrace k termínům. Pole taxonID je řízená duplicita vazeb z bio imagedeter, což je tabulka propojení obrázků s taxony – narozdíl od jiných vazeb záznamů s obrázky je však fotografie propojena vždy nejvýše s jedním taxonem. Tabulka kromě vazby na taxon obsahuje autora determinace (opět jako klíč do tabulky uživatelů nebo text), typ determinace (podle fotografie/dokladového exempláře/popisku atd.), kvalitu determinace (snadno určitelný druh, přibližné určení a další) a determinační poznámku. Podobně jako jiné vazby na obrázky obsahuje dále systémová pole indprofilehide a ind main určující, jak se má obrázek na profilu taxonu zobrazovat. Vazby na obrázky jiné než determinační jsou zmíněné v kapitolách příslušejícím jednotlivým modulům, pro přehled jsou to vazby v tabulkách bio biotopimages, bio dictimages, bio localimages, bio sourceimages a bio taxonimages. Determinace přidané uživateli, ať už k obrázkům potvrzeným nebo nepotvrzeným, jsou uchované v tabulce bio idescr. Potvrzením záznamu se změny přenesou do tabulky bio imagedeter. Nepotvrzené obrázky jsou v tabulce bio adimages, struktura záznamů je podobná s bio images, navíc však obsahují několik důležitých systémových polí. Pole blockedID umožňuje správcům zablokovat obrázek před potvrzením, než se např. dořeší otázky k determinaci či autorským právům. Je zároveň klíčem do tabulky bio users a obsahuje číslo správce, který obrázek blokoval. Podobně funguje pole rejectedbyID, kterým se označují obrázky odmítnuté, pole rejectedreasonID specifikuje důvod odmítnutí. 5.8.19
Diskusní fórum
Podpora jednoduchého diskusního fóra je realizovaná tabulkou bio forums definující název, jazyk a popis tématu diskusní místnosti, její zařazení do kategorie, omezení zápisu (posílání zpráv pro administrátory/registrované uživatele/všechny) a přístupu (podle administrátorských práv) a kalkulované pole messages udávající celkový počet příspěvků. Příspěvky samotné jsou řešeny přes tabulku bio messages (viz kapitola 5.8.5). Tabulka bio forummanagers opět slouží k přiřazení většího počtu správců místnosti a definici jejich práv. Tabulka bio forumbook udržuje „záložkyÿ uživatelů, tedy místnosti, které uživatel sleduje, a obsahuje informaci o jeho poslední návštěvě, ze které se odvozuje počet nepřečtených zpráv. 5.8.20
Témata nápovědy
V tabulce bio help je seznam témat nápovědy rozdělený podle kategorií, texty nápovědy jsou opět řešeny přes textové bloky obsažené v tabulce bio helptexts, což umožňuje vytvořit nápovědu v libovolném počtu jazyků. Výjimku tvoří nápovědy generované z databáze, např. seznam jazyků, taxonomických kategorií atd. – ty jsou realizovány zvláštními skripty, jejichž název je uložen v poli helpfile. Další informací obsaženou v hlavičce nápovědy je omezení práv přístupu na nápovědný text.
KAPITOLA 5. IMPLEMENTACE 5.8.21
28
Uživatelé
Seznam uživatelů a jejich nastavení se nachází v tabulce bio users. Mimo jména a přihlašovacích údajů obsahuje tabulka email a URL osobní stránky uživatele, krátký text s popisem, údaje o času registrace, poslední návštěvě a jejich celkovém počtu, času posledního čtení pošty, informace o právech uživatele, uložené nastavení stránek (jazyky atd). Tabulka bio ufields zprostředkovává vazbu mezi bio users a adresářem odborníků, kam se uživatelé mohou zapsat. Adresář je řešen přes kategorie (kapitola 5.8.2), vazbu je však možné doplnit o slovní doprovod specializace nebo o vazbu na taxon. 5.8.22
Systémové tabulky
Do tohoto oddílu jsou počítány takové tabulky, které slouží především administrátorům nebo které jsou využívány pro řadu různých jiných okrajových účelů a nehodí se do žádného z předchozích modulů. Tabulka bio access umožňuje logování přístupů na stránky, používá se ovšem pouze pro krátkodobé detailní analýzy, jinak je počítadlo řešeno externě (Google Analytics [17]). Logovat jednotlivé druhy akcí umožňuje tabulka bio actions spolu s číselníkem bio actiontypes. Do tabulky se zapisuje datum, uživatel, případně id manipulovaného záznamu a další doplňující informace. Log umožňuje dohledat kdo, kdy a jaké záznamy zakládal, měnil či mazal. V současné době slouží log pouze ke krátkodobé analýze změn za nepřítomnosti administrátorů a není zálohován. Do tabulky bio errors se logují chybová hlášení a varování, chybová zpráva je předdefinována v tabulce bio errormsgs (ze které se chybové texty vypisují), nebo je určená pouze textem zprávy. Tabulka bio sys obsahuje systémovou větu s parametry pro některé systémové akce. Pomocí tabulky bio featurerequests mohou uživatelé žádat o změny na stránkách BioLibu, např. přidání či rozšíření jeho funkcí. Záznamy obsahují popis a kategorii požadavku, poznámku programátora, prioritu a stav zpracování požadavku. Seznam jazyků je v tabulce bio langs – takto definované jazyky lze používat pro jazyky textů, názvů taxonů, hesel ve slovníku atp. Kromě kódu a názvu obsahuje jazyk indikátor, zda je systémový. Jazykové definice rozhraní, tedy texty odkazů a formulářů, jsou uložené také v databázi, ovšem pouze pro analytické účely a snadnější editaci – pro použití ve skriptech jsou definice uložené jako soubory, které si jednotlivé skripty vkládají podle potřeby. Tabulka bio langfiles udává názvy těchto souborů, v tabulce bio langvar jsou názvy proměnných. Na záznamy v bio langvar jsou navázány definice textů v jednotlivých jazycích v tabulce bio langvardef. Zapsáním do tabulky bio langmanagers lze stanovit správce jednotlivých jazykových verzí, kteří mají přístup k editaci rozhraní. Zálohování záznamů měněných uživateli probíhá bez rozlišení do tabulky bio sysbackup. Každá tabulka má v tabulce bio systables definováno která pole se zálohují, při změně nebo smazání záznamu se právě tato pole uloží do bio sysbackup, spolu s
KAPITOLA 5. IMPLEMENTACE
29
označením typu (zdroje) zálohy a jejího identifikátoru, aby bylo možné zálohu provázat s příslušným záznamem. Již zmíněná tabulka bio systables dále obsahuje název a popis jednotlivých tabulek.
5.9
Soubory a struktura adresářů
Engine, tedy index.php, leží v kořenovém adresáři. Na stejné úrovni leží styly, .htaccess a robots.txt soubory a ikonka (favicon.ico). Další adresáře jsou: CACHE – nakešované SQL dotazy, viz kapitola 5.8. DWN – soubory ke stažení. ERR – skript pro zobrazení chybových hlášení, na který jsou přesměrovány základní chyby (stránka nenalezena atp.). IMG – grafika a obrázky. Základní adresář obsahuje grafiku použitou v designu stránek. Obrázky v podadresářích, které jsou přiřazené k nějakému záznamu, mají v názvu příslušné id pro rychlejší přístup. FLG – vlaječky jednotlivých jazyků. ICN – ikonky uživatelů. GAL – obrázky v galerii. BIG – varianty obrázků v původním vysokém rozlišení. BKP – zálohy při změnách obrázků přes www rozhraní. LAY – alternativní vrstvy u některých interaktivních obrázků. THN – náhledy obrázků v galerii. UPLGAL – nepotvrzené obrázky v galerii. UPLTHN – náhledy nepotvrzených obrázků. UPLD – adresář pro hromadné nahrávání obrázků. ART – ikonky ke článkům. REF – ikonky pro databázi odkazů a literatury. MAP – síťové mapy rozšíření. SPM – předgenerované mapky pozorování získaných přes mapování v BioLibu. TXM – předgenerované mapy rozšíření druhů. VAR – doplňující grafika pro účely článků a jiných textů. SND – zvukové záznamy. INC – obsahuje vkládané skripty, jejichž název je identický s částí URL odkazující se na příslušnou funkci nebo formulář BioLibu. Soubory začínající na „formÿ jsou formuláře pro editaci a přidávání záznamů, vyhledávání atp., soubory s předponou „selÿ slouží k výběru záznamů do formuláře (více v části o výběru záznamů v kapitole 5.10.11). Soubory s definicemi funkcí pro určitou oblast jsou prefixovány
KAPITOLA 5. IMPLEMENTACE
30
„func ÿ, soubory s definicemi tříd prefixem „class ÿ. Soubory prefixované „mnu ÿ jsou vkládány jako speciální levé menu podle právě používaného modulu. V souboru cnf server.php jsou údaje specifické pro server, v souboru vars std.php se nacházejí globální konstanty. INCOLD – nepoužívané vkládané skripty, viz kapitola 5.10.4. JS – globální JavaScriptové funkce. LNG – jazykové definice rozhraní uložené v proměnných, soubory jsou vždy prefixované zkratkou jazyka a dále rozděleny podle tématických oblastí. Tyto soubory jsou vytvořené exportem z databáze. VAR – stránky dalších projektů a nástrojů provozovaných pod BioLibem, avšak mimo jeho engine. Soubory mimo aplikaci samotnou a její databázi jsou zálohovány jednak v rámci serveru a jednak synchronizací přes ssh programem rsync spuštěném v prostředí Cygwin z počítače hlavního administrátora. Výjimku tvoří předgenerované obrázky s mapkami rozšíření, které je možné kdykoliv obnovit z údajů v databázi.
5.10
Návrh uživatelského rozhraní
5.10.1
Základní koncept
Tím, že se o generování stránky stará engine, je zajištěno, že všechny stránky mají podobný vzhled, viz obrázek 5.2, nebo obrázek E.1 v příloze.
Obrázek 5.2: Základní prvky stránky
KAPITOLA 5. IMPLEMENTACE
31
Stránky jsou dostupné ve dvou různých rozlišeních – 800x600 a 1024x768. Styly jsou generované skriptem a uloženy na serveru, což umožňuje v případě potřeby jednoduše upravovat barevná schémata a rozměry objektů, aniž by bylo nutné ručně přepisovat více různých CSS souborů. Přítomen je také styl pro tisk, který zruší omezení šířky stránky, skryje hlavičku, menu a patičku a barevné pozadí stránek, vyjma některých prvků, které nesou informaci (např. větve taxonomického stromu). V normálním režimu je vygenerována stránka skládající se z hlavičky, horního menu, panelu nástrojů, levého menu, hlavního obsahu a patičky. V hlavičce se nachází odkaz na úvodní stránku, nápovědu a mapu stránek, přepínání jazyků a rychlé vyhledávání s volitelnou oblastí (přednastavenou vloženým skriptem). Horní menu je neměnné a vede do základních částí BioLibu, odkud je možné se z levého podrobného menu dostat do většiny ostatních funkcí. Panel nástrojů obsahuje odkaz na poslední navštívený taxon pro případ, že uživatel opustil prohlížení taxonomického systému a nachází se například v galerii či slovníku pojmů. Dále v závislosti na obsahu stránky obsahuje panel nástrojů i odkaz na příslušnou nápovědu a odkaz na zobrazení systémových informací k záznamům aktuální funkce (kapitoly 5.10.9 a 5.10.10). Levé menu je opět do značné míry závislé na vkládaném skriptu – první blok levého menu se liší podle oblasti, ve které se uživatel nachází. Oblast taxonomického systému má jiné levé menu než třeba oblast galerie, výkladového slovníku atp. Následující blok se týká uživatele, obsahuje odkaz na nastavení stránek, pokud je uživatel přihlášený jsou zde odkazy pro návrat na účet či odhlášení se, v opačném případě pro přihlášení se. Na úvodní stránce se v menu uživatele objeví dokonce přímo formulář pro přihlášení a odkaz vedoucí do registračního formuláře. V případě zapnutých filtrů dle taxonu nebo dle check-listu se zobrazují další bloky s možností tyto filtry ignorovat nebo zrušit. O obsahovou část se stará vkládaný skript, ten má však také částečně jednotný vzhled. Každou funkci uvozuje nadpis, v horní části se správcům zobrazují odkazy na administrační funkce, ve spodní části se ve většině funkcí zobrazují informace, jak může normální uživatel pomáhat rozšířit či opravit prohlíženou část, popř. odkazy na příslušné funkce, kterými je možné přidávat nepotvrzené záznamy nebo navrhovat opravy. Standardizovány jsou prvky jako navigace po vícestránkových přehledech, navigace po záznamech stejné úrovně, přehledy záznamů a náhledů obrázků. V patičce se nachází odkaz na návrat na horní část stránky. Umístění vyhledávání, menu, loga a dalších prvků se řídí průzkumy použitelnosti webových stránek (viz [16]). 5.10.2
Dostupnost
Aby byly stránky co nejpřístupnější, není použito téměř žádných technologií závislých na straně klienta – designové ani funkční prvky nejsou řešené flashovými animacemi, Java applety atp. Použití JavaScriptu a cookies je omezeno na minimum a stránky jsou plně použitelné i při jejich vypnutí, přestože některé operace jsou potom složitější. Stránky jsou optimalizovány a vyzkoušeny pro prohlížeče Internet Explorer, Mozilla, Opera a Netscape (s dostatečnou zpětnou kompatibilitou).
KAPITOLA 5. IMPLEMENTACE
32
Za účelem zvýšení rychlosti načítání stránek byla snaha o co nejúspornější kód a nenáročnou grafiku. Další zrychlení je umožněno automatickou gz kompresí stránek odesílaných ze serveru (nastaveno pro php a css), takže se v mnoha případech přenáší pouze třetinový soubor oproti nekomprimované verzi stránky. Většina nových prohlížečů8 tuto funkci podporuje, ostatním prohlížečům server automaticky posílá nekomprimované stránky. Při volbě barev a kompozici prvků stránky bylo myšleno i na uživatele se zrakovými vadami. Odkazy v textu jsou podtržené, některé typy odkazů jsou dokonce barevně odlišené (odkazy mimo stránky, odkazy do taxonomického systému, slovníčku a nápovědy). Velikost písma není pevně daná, takže uživatelé se slabším zrakem ho mohou libovolně měnit. Barvy byly voleny s dostatečným kontrastem pro barvoslepé uživatele. Layout stránky je beztabulkový. Výhody strukturování stránek bez použití prvku tabulky je mezi webdesignery dlouhodobě diskutovaný problém. Pomineme-li argumenty mluvící pro menší kód a snadnější změny beztabulkového layoutu, je zde výrazná výhoda například v možnosti jiného pořadí prvků v kódu než jak jsou zobrazené na stránce, čehož lze využít pro zpřehlednění stránky pro lineární prohlížeče, např. slepecké čtečky. Proto je v kódu levé menu posunuto až za obsah stránky, čímž se nevidomý uživatel rychleji dostane k podstatným informacím. Následující dvě kapitoly také úzce souvisí s dostupností – jazyková přístupnost a formát odkazů na záznamy v BioLibu. 5.10.3
Jazyky
Jazyky v BioLibu lze rozlišit do tří skupin – systémové jazyky, jazyky rozhraní a jazyky dat. Jazyky dat jsou všechny jazyky definované v BioLibu a lze v nich přidávat textové bloky (tedy texty k taxonům, články, nápovědu atd.), názvy taxonů, slovníkové pojmy, diskusní místnosti a podobně. Jejich podmnožinou jsou jazyky rozhraní, tedy takové, pro které existují definice názvů funkcí, formulářů a odkazů. V jazycích systémových lze uvést např. poznámky u záznamů, slovní názvy kategorií, i když snaha je použití takových polí minimalizovat, tj. nahradit je za „mezinárodníÿ poznámky, nebo všude, kde je to třeba, umožnit textové bloky a přidávání názvů a textů v libovolné jazykové mutaci. Celkový počet jazyků v databázi BioLibu je téměř čtyřicet a je možné je libovolně rozšiřovat. Systémové jazyky jsou v současné době pouze dva – angličtina a čeština. Množina jazyků rozhraní je shodná, ačkoliv podpora pro libovolný další jazyk rozhraní existuje. Definice textů rozhraní pro jednotlivé jazyky jsou uložené v databázi, ovšem pro použití ve skriptech jsou exportovány do souborů. Proměnné s jazykovou definicí jsou prefixované řetězcem „l ÿ, takže například $l account obsahuje text „Účetÿ. Díky tomu lze ze skriptů jednoduše extrahovat informaci o tom, kde je která proměnná použita (pomocí programu grep) a tyto údaje nahrát do databáze, takže je možné analyzovat, zda v názvech proměnných nejsou překlepy a zda jsou jazykové definice vůbec někde využité. Ze samotných definic se také dá zjistit, zda se v nich nenachází duplicity, kde definice 8
Mozilla, Opera, Internet Explorer od verze 4 (kromě IE Mac verze 4.5/5), Netscape od verze 4.5
KAPITOLA 5. IMPLEMENTACE
33
pro nějaký jazyk chybí atp. Někdy je také nutné sestavit text v jiném jazyce, než je aktuální jazyk rozhraní, např. odesílá-li se automatizovaný vzkaz uživateli s jiným jazykovým nastavením. V takovém případě lze k jednotlivým definicím přistupovat i přímo do databáze, pomocí funkcí get langtext(id, language) a get langtextbyname(name, language). Je možné stanovit správce jazykového rozhraní, který má k definicím přístup a nemusí se mu na přeložení posílat definice v nepřehledném souboru. Při přidání nové jazykové proměnné samozřejmě nastane situace, kdy pro některé jazykové verze rozhraní chybí text. Při exportu definic do souborů se v případě absence nějakého textu vždy použije text standardní, tedy anglický. Takto je možné udržovat prakticky libovolný počet verzí rozhraní. Uživatel má v současné době možnost zvolit si různý jazyk systému, jazyk názvů taxonů, jazyk slovníkových pojmů a preferovaný jazyk textových bloků (viz kapitola 5.10.6). Jazyk názvů taxonů se týká například i názvů kategorií v galerii, které jsou přímo provázané s taxonomickým systémem. Vedle toho si může volit i tzv. „alternativní jazykyÿ, ve kterých se na profilu taxonů a slovníkových pojmů také zobrazují názvy, tedy hlavní jazyk názvů taxonů je kupříkladu čeština, na profilu se ale zobrazují i názvy v anglickém a německém jazyce. To je ideální např. pro překladatele. 5.10.4
Odkazy na BioLib
Jednou z hlavních funkcí BioLibu je poskytnout ostatním internetovým stránkám možnost odkazovat se na profily jednotlivých taxonů, slovníkových pojmů atd. Je proto nutné vytvořit jednoduchý formát odkazů a zajistit jejich neměnnost nebo alespoň přesměrování uživatele z neplatné stránky na platnou. Díky modulu mod rewrite serveru Apache je možné URL jednotlivých stránek uvádět ve tvaru www.biolib.cz/jazyk/funkce{/idID}{/?další parametry} nebo www.biolib.cz/jazyk/funkce/dirID a několik dalších obměn, přičemž sekvence „idIDÿ je automaticky nahrazena za id=ID, „dirIDÿ za kategorie=ID atp., nezávisle na funkci, „jazykÿ specifikuje jazyk rozhraní, „funkceÿ definuje vkládaný skript. Například URL http://www.biolib.cz/cz/taxon/id20659 je odkaz na profil taxonu hryzce vodního v češtině. Tato úprava zpřehledňuje zápis odkazu a navíc má i význam v SEO9 . 9 SEO – Search Engine Optimalization. Jednoduchá URL jsou vyhledávači lépe hodnocená a což je ve výsledcích hledání posouvá dopředu.
KAPITOLA 5. IMPLEMENTACE
34
Stálost odkazů je zajištěna tím, že záznamy, na něž se někdo může odkazovat, nejsou při smazání z databáze odstraněny, nýbrž skryty s příslušným textem o smazání záznamu (např. u obrázků), nebo označeny jako duplicitní k jinému záznamu a dojde k přesměrování uživatele na novou adresu. Záznamy přidané uživateli, které správci potvrdí nebo smažou, čímž vlastně dojde ke změně jejich URL, mají v hlavičce HTML stránky speciální metatagy zakazující indexování obsahu stránky. Přejmenované nebo nepoužívané funkce se přesunou do adresáře INCOLD a je v nich zajištěno přesměrování na novou adresu – engine při vkládání funkce hledá soubor v obou adresářích. 5.10.5
Podsystém odkazových funkcí
Odkazové funkce umožňují v textu jednoduše vytvářet odkazy na záznamy a funkce BioLibu. Syntaxe příkazů je ve většině případů [[nazev funkce;text odkazu]] nebo [[nazev funkce:ID,dalsi parametry;text odkazu]] Například [[t:1]] vytvoří odkaz na taxon s identifikačním číslem jedna, tedy rod Carabus, kterýžto název si automaticky načte z databáze během generování stránky. Odkazová funkce [[t:1;střevlík rodu Carabus]] vytvoří stejný odkaz, pouze s jiným textem (a bez načítání názvu z databáze). Existují i speciální odkazové funkce jako třeba [[link:URL]], která vytvoří speciálně označený odkaz na externí stránku, a v případě potřeby ho zkrátí, aby nenarušoval design stránky. Podobně [[image:URL]] vygeneruje IMG tag s tím, že pokud je obrázek z jiného serveru než z BioLibu, umístí ho do speciální omezené oblasti s posuvníky, aby nenarušoval design stránky10 . Protože se sekvence „[[ÿ resp. „]]ÿ vždy interpretují jako začátek či konec funkce, lze použít speciální odkazové funkce [[ left]] resp. [[ right]], které tyto sekvence do stránky vloží. Toho je využito např. pro účely nápovědy či v bloku podrobných systémových informací (kapitola 5.10.10). Pole, která podporují odkazové funkce, jsou ve formulářích speciálně označená, v ostatních naopak probíhá kontrola, zda tyto funkce nejsou přítomny. Odkazové funkce v základním formátu pro jednotlivé funkce a záznamy BioLibu je možné kopírovat z bloku přídavných informací (více dále), zkušený uživatel může příkazy sestavovat sám. Obrázek E.1 ukazuje příklad textu obsahujícího tyto funkce (další ikonky u pole označují jeho povinnost a možnost použití HTML), formátovaný text je vidět na obrázku E.2. Jak již bylo naznačeno, k nahrazování odkazových funkcí za odkaz dochází až při generování stránky. To sice mírně zpomalí její vytváření, nicméně umožňuje to do odkazu i do jeho textu umístit prvky závislé na aktuálním stavu dat nebo na nastavení stránek. Funkce formattextfunc() nejprve v celém předaném kódu stránky hledá odkazové 10
známý problém prohlížeče Internet Explorer s nesprávným chováním příliš širokých objektů v oblastech s pevnou šířkou, která má při beztabulkovém layoutu katastrofální důsledky na vzájemnou pozici prvků ve stránce.
KAPITOLA 5. IMPLEMENTACE
35
funkce, přičemž si zapamatuje jejich pozice a vytvoří pole id záznamů, jejichž názvy je nutné načíst z databáze. Pole využije v následných SQL dotazech a jejich výsledky použije k doplnění textu odkazů. V případě, že záznam není nalezen, přidá se položka do tabulky chybových hlášení – takto lze zjistit, kde se text odkazuje na neexistující záznam. V poslední fázi dojde k nahrazení odkazových funkcí v textu za konkrétní odkazy. Pro uživatele s vypnutou podporou cookies se do odkazů umísťuje session id, aby se i tito uživatelé měli možnost přihlašovat a nastavovat chování stránek. Funkci je možno použít nejen pro doplnění odkazů v rámci celé stránky, ale i jednotlivých textů, např. při odeslání zprávy na email uživatele. V takovém případě dochází k dosazování plného URL místo relativního. Doplňování aktivních odkazů lze i potlačit, takže nevznikne HTML kód, ale URL jsou doplněny do závorky za text odkazu. 5.10.6
Podsystém textových bloků
Pro snadnější vytváření strukturovaných textů existuje v BioLibu systém takzvaných textových bloků, které lze libovolně přesouvat, stránkovat, skrývat, definovat jejich nadpis a prokládat je obrázky. Při přidání textového bloku se automaticky nabízí předdefinované typy bloků podle oblasti, ve které jsou použity. Podle toho se i předvyplní jejich vzájemné pořadí – např. u taxonů se bloky řadí v pořadí taxonomie, velikost, popis, ekologie, rozšíření, . . ., literatura. Název i pozici textového bloku však lze podle potřeby měnit. Speciálním textovým blokem je blok typu obrázek, který umožní do textu vložit náhled obrázku z galerie, přičemž je obrázek textem obtékán. Textový blok „Literaturaÿ se zase zobrazuje v odlišném fontu než ostatní text, tak jak je literatura formátována i v jiných citacích na BioLibu. Strukturovanost textů zajišťuje jednotný vzhled, lze dodatečně kontrolovat přítomnost jednotlivých bloků např. v popiscích taxonů a zjistit tak, kde chybí jaká informace. Jednotlivé bloky lze pomocí standardního formuláře editovat, skrývat a pomocí funkce Akce s texty měnit jejich vzájemnou pozici či rozdělit do více stránek. Odkazové funkce pro profily záznamů používajících textové bloky umožňují odkázat se přímo na určitý blok. Takto lze vytvořit například úvodní obsahovou část delšího textu rozděleného na více stránek. K jednomu záznamu se vždy zobrazí všechny textové bloky ve zvoleném jazyce, uživatel má možnost zvolit z nabídky libovolný jiný jazyk, pro který nějaký blok existuje. Primárně se zobrazí texty v jazyce nastaveném jako „preferovanýÿ. Pokud se nenajde textový blok v preferovaném jazyce, hledá se text v jazyce anglickém. Výjimku tvoří český resp. slovenský jazyk, který před zobrazením anglického textu hledá ještě slovenskou resp. českou variantu. Slovenským uživatelům se tedy při absenci textu v jejich rodném jazyce nabídne česká varianta (a naopak). Textové bloky jsou použité pro popisky taxonů, články, texty ve slovníku pojmů, na profilech lokalit a biotopů, v nápovědě či v popiscích obrázků. Jejich použití lze jednoduše rozšířit na libovolnou další část v BioLibu, protože funkce na jejich zobrazování a editaci jsou společné.
KAPITOLA 5. IMPLEMENTACE 5.10.7
36
Podsystém kategorií
Dělení záznamů do kategorií je v BioLibu použito v řadě modulů. Proto byl vytvořen podsystém, který tyto kategorie umožňuje vytvářet a zobrazovat. Do skriptu vložený objekt „Kategorieÿ se postará o zobrazení hlavičky kategorie (pokud se uživatel nenachází na nulté úrovni) a všech jejích podkategorií. Požadované parametry jsou číslo aktuální kategorie a typ kategorie (podle oblasti, ve které je použit). Další parametry umožní rekurzivně zobrazovat u kategorií počty záznamů, skrývat prázdné kategorie či vynechávat prázdné mezikategorie, což umožňuje rychlou navigaci do oblasti, ve které se nachází nějaké záznamy přes prázdné nadřazené kategorie. Tyto modifikace však zpomalují zobrazení a jsou proto použity pouze ve funkcích, kde mají smysl, např. ve funkci Autorská galerie, Články, Galerie – nepotvrzené obrázky a v dalších přehledech nepotvrzených záznamů dělených do kategorií. Ke kategoriím načteným z databáze lze před zobrazením připojit i libovolný počet umělých kategorií, čehož je využito např. v galerii pro kategorii obsahující neurčené obrázky, viz obrázek E.5. Vazba kategorie na taxon umožňuje automaticky do nich zařazovat např. určené obrázky. Pro získání nejvhodnější kategorie slouží funkce get group(), které se jako parametr předá číslo přiřazeného taxonu a ta s využitím jeho pole directory (popsáno v kapitole 5.8.1) z tabulky taxonů dohledá takovou kategorii, jejíž přiřazený taxon se v tomto poli vyskytuje na nejzazší pozici. 5.10.8
Podsystém zpráv
Obecným způsobem jsou řešeny i komentáře, příspěvky v diskusním fóru a zprávy interní pošty. Funkce jako vykreslení formuláře, zpracování jeho obsahu, náhled odesílaného příspěvku a zobrazení zpráv jsou společné, ačkoliv zde mohou být v jednotlivých částech drobné odlišnosti. Obrázek E.2 uvádí příklad takové zprávy, její zdrojový text s odkazovými funkcemi je na obrázku E.1. Náhledy odesílaných zpráv jsou řešeny nastavením proměnných do otevřené session na serveru a následné kontrole na začátku výpisu zpráv, zda je instance náhledu vyplněná. V takovém případě se náhled zobrazí pod formulářem (obrázek E.11) a je možné před odesláním provést jeho vizuální kontrolu, což je zvlášť vhodné například při použití odkazových funkcí, neboť jednou odeslané zprávy už nelze dále měnit (s výjimkou správců). Vedle textové části obsahuje zpráva i pole jako email a jméno odesílatele. Pokud ovšem zprávu odesílá přihlášený uživatel, tato pole nejsou požadována a zpráva je místo toho provázána s uživatelovým profilem. Stejně tak ochrana před reklamními roboty řešená pomocí jednoduchého textového CAPTCHA kódu se týká pouze nepřihlášených uživatelů. 5.10.9
Provázání s nápovědou
Online nápověda k BioLibu je dostupná jednak z již zmíněného odkazu v levé horní části stránky, nebo lze některé nápovědné texty přímo vkládat do stránek (toho je využito zejména v krátkých úvodnících ve formulářích). Pokud k nějaké funkci existuje rozsáhlejší
KAPITOLA 5. IMPLEMENTACE
37
nápověda, zobrazí se na ni odkaz v nástrojovém panelu, což ovlivňuje vkládaný skript nastavením proměnné showhelptopic na id příslušné nápovědy, takže může o zobrazení nápovědného textu rozhodovat na základě konkrétního nastavení funkce. V textových blocích (a jakýchkoliv jiných polích s podporou odkazových funkcí) se odkazy na nápovědu zobrazují vizuálně odlišené jiným podtržením. 5.10.10
Funkce zobrazení podrobných systémových informací
K řadě funkcí a záznamů umožňuje BioLib zobrazit přídavné informace, které by jinak znepřehledňovaly obsah stránky. Při kliknutí na tlačítko UKÁZAT INFO v horní části stránky se pomocí JavaScriptu zobrazí (či naopak skryjí) informační bloky, které obsahují např. URL, přes které lze na funkci odkazovat z jiných stránek, předpřipravenou odkazovou funkci pro použití v textech v rámci BioLibu, id záznamu, čas založení záznamu a jeho poslední změny, autora záznamu, autora poslední změny, managery záznamu atp. Přítomnost tlačítka UKÁZAT INFO na nástrojové liště zajistí první použití funkce StartInfoBar(), která vytvoří ve stránce informační blok, funkce EndInfoBar() ho naopak uzavře. Těchto bloků může být ve stránce libovolný počet, zpravidla však bývá jen jeden hlavní na detailu záznamu umístěný v horní části stránky pod nadpisem funkce. Uživatelé s vypnutým JavaScriptem si mohou v nastavení zapnout automatické rozbalování těchto bloků. Stránka s rozbalenými informačními bloky je v příloze na obrázku E.4. 5.10.11
Formuláře
Název všech skriptů obsluhujících formuláře začíná textem „formÿ. Skripty zajišťují zobrazení formuláře pro přidání a editaci záznamu, obsluhu výstupu formuláře, mazání a skrývaní záznamu a případně i další akce. Zpravidla se vždy jeden formulář týká jedné tabulky, např. formulář formtaxonname obsluhuje veškeré akce okolo tabulky bio taxonnames, tedy vědeckých názvů taxonů. Kontrola a formátování nadpisů i obsahů polí je zajištěna třídou classForm, která se definuje na začátku formuláře a to jak při jeho zobrazení, tak při obsluze odeslaných dat. Ve třídě se definuje seznam polí včetně jejich typů a vlastností (povinné pole, numerické pole, povolené HTML, povolené odkazové funkce). O vypsání informačních ikonek u nadpisů polí se stará také třída classForm. Instance třídy classForm po odeslání formuláře spustí kontroly hodnot a postará se i o vypsání chyb a označení chybových polí. Kontrola ověřuje, zda jsou vyplněna povinná pole, zda mají správnou délku, kontroluje správný zápis numerických údajů a hlídá výskyt a syntaxi odkazových funkcí a HTML v polích, kde mohou být tyto funkce povoleny nebo zakázány. Složitější chyby (např. duplicity) ověřuje přímo formulářový skript, ale může k jejich oznámení využít metod třídy, takže mají chybové výstupy stejný vzhled. Následně skript podle výsledků kontroly rozhodne, zda je možné pokračovat, nebo se formulář vrátí do editačního režimu. Ukázky formulářů s výpisem chyb jsou na obrázcích E.9 a E.11.
KAPITOLA 5. IMPLEMENTACE
38
Vedle fatálních chyb může formulář hlásit i ignorovatelné varování (např. při nalezení duplicitního názvu taxonu, což nemusí být vždy chyba), v takovém případě se obsah formuláře nezapíše do databáze a uživatel zůstává v editačním režimu, ale objeví se nové zaškrtávací pole „Ignorovat varováníÿ (či podobně, jako na obrázku E.10), pomocí kterého lze varování přeskočit. V řadě polí ve formulářích je nutné přidávaný či editovaný záznam propojit s nějakým již existujícím záznamem, např. propojení fotografie s taxonem, textu s autorem atp. Aby uživatel nemusel ručně zadávat id příslušného záznamu, umožňují tato pole otevřít v JavaScriptu nové okno s výběrem a toto id v něm najít a do formuláře vložit. Výběrová okna samozřejmě tam, kde je to třeba, podporují vyhledávání, navíc lze hledaný text zadat přímo do pole pro identifikátor a tlačítkem „Vybratÿ se dostat rovnou na výsledky hledání. Zároveň je ale zachována možnost doplnit číslo manuálně. Pro zkušené uživatele je to nesmírné ušetření práce, neboť si mohou id zkopírovat třeba z jiného otevřeného okna z URL stránky, či z bloku podrobných informací (viz kapitola 5.10.10), dále je tato možnost potřebná pro uživatele s vypnutým JavaScriptem. Výběrové okno je řešeno otevřením stránky v základním režimu (tedy bez menu atp.), kód je generovaný skripty s prefixem „selÿ. Oknu je předán název formuláře a konkrétního pole a dále starý obsah pole, takže se výběrové okno může předem nastavit na určitou pozici v datech. Kliknutím na radiobutton u zvoleného záznamu se do původního okna přenese jednak nový id vybraného záznamu a jednak řetězec, který záznam popisuje, např. latinský název taxonu, ale třeba i náhled vybraného obrázku. Uživatelům to umožňuje zpětnou kontrolu výběru. Výběrových polí může být v jednom formuláři libovolný počet. Okna mohou podporovat i vícenásobný výběr dat, např. formulář na výběr alternativních jazyků dovoluje zvolit libovolný počet položek nabídky. Příklad výběrového pole a okna je na obrázku E.12.
KAPITOLA 6. FUNKCE
39
6 Funkce Tato kapitola má za úkol pouze nastínit rozsah funkcí BioLibu. Funkcí je zde myšlen skript vkládaný enginem do obsahové části stránky. Podrobnější popis je obsažený v uživatelské příručce a hlavně v online dokumentaci v rámci nápovědy BioLibu. Přehled hlavních funkcí (bez editačních formulářů) je v příloze D.
6.1
Taxonomický systém
Jak již bylo dříve zmíněno, taxonomický systém tvoří ústřední modul celého projektu, s nímž jsou ostatní moduly nějakým způsobem provázané. Základním prostředkem k přístupu do taxonomické databáze je zde funkce Profil taxonu, která zobrazuje základní informace k prohlíženému taxonu, tedy latinský název, vědecká synonyma, názvy ve zvolených jazycích, texty, obrázky, zařazení taxonu do systému a přehled přímých podtaxonů. Dále profil obsahuje přehled o počtu dat přidaných uživateli, tedy komentáře, nepotvrzené podtaxony, názvy, texty a podobně. Pomocí této funkce se dá libovolně pohybovat po jednotlivých úrovních systému a vede na ni většina odkazů od záznamů s taxonem provázaných, tedy např. obrázků. Příklad takového profilu taxonu je na obrázku E.7. Pro jednodušší orientaci v systému byla vytvořena funkce Rozcestníky, která zobrazuje pouze vyšší taxony označené správci jako významné uzly systému. Pomocí rozcestníků se uživatel rychle může dostat do oblasti, která ho zajímá, a udělat si hrubý obrázek o struktuře taxonomického systému. Rozcestníky navíc nabízejí jednoduchý přístup do základních funkcí omezených na prohlíženou skupinu (např. rejstřík, vyhledávání, slovník názvů, přehled změn, statistiky atd.) a možnost nastavit si skupinu jako globální filtr – v takovém případě jsou veškeré filtrovatelné funkce automaticky omezeny taxonem. V příloze lze rozcestník vidět na obrázku E.3. Funkce Přehled dat zobrazuje statistiky některých záznamů provázaných s vybraným taxonem, popř. při jiném nastavení i všech taxonů podřazených nebo nadřazených. Vybrané záznamy se potom prohlíží pomocí příslušných funkcí jako např. Taxon – obrázky, Taxon – odkazy atd. Funkce Taxon – názvy zobrazuje ke zvolenému taxonu vědecké názvy, synonyma a národní názvy ve všech jazycích. Funkce Taxon – obrázky ukáže náhledy obrázků jejichž determinace ukazuje na zvolený taxon, včetně těch, které se nezobrazují na profilech. Zpracované profily je funkce pro přehled profilů označených správci jako zpracované, tedy takových, které obsahují nějaký text pro určitý jazyk a většinou i obrázky. Další funkce zobrazují vazby s biotopy, lokalitami, odkazy a slovníkovými pojmy, seznamy map rozšíření, zvukových záznamů, mezitaxonových vztahů, literatury použité ke zpracování části systému, check-listová data atp. Modul dále obsahuje několik funkcí na alternativní zobrazení taxonomického systému, jako třeba Zařazení v systému, Stromové zobrazení systému, Zobrazení podtaxonů, Rejstřík vědeckých a národních názvů či Překladový slovník. Označením taxonu jako „incertae sedisÿ je řečeno, že je jeho pozice z taxonomického hlediska dosud nejasná, je většinou zařazen přímo pod nějakým vyšším taxonem, ačko-
KAPITOLA 6. FUNKCE
40
liv taxony stejné kategorie a stejné skupiny jsou zařazeny v systému hlouběji. Takovéto taxony se jak v seznamu podtaxonů na profilu, tak na profilu nejasně zařazeného taxonu samotného odlišují od ostatních přidáním textu „incertae sedisÿ za název taxonu. Vyhynulé taxony jsou zase ve všech výčtech označeny symbolem křížku. Taxony, které nemají v systému použitém na BioLibu logické místo, jsou správcem označeny jako „nepoužitéÿ – na takové taxony se lze dostat např. z rejstříku či vyhledávání, nezobrazují se ovšem v profilech nadřazených taxonů. K nepoužitému taxonu lze přiřazovat veškeré informace jako k použitému, např. národní názvy nebo text vysvětlující z jakého důvodu byl taxon vyřazen. Této možnosti je využito třeba u skupin, které mají nějaký historický význam, ale došlo k jejich rozdělení nebo naopak sloučení s jinou skupinou. Uživatelé mají možnost k taxonu přidat přímý podtaxon (případně další navazující podtaxony), včetně vědeckých synonym, názvů v libovolných jazycích a textů. Při přidávání synonym a při zobrazení profilu nepotvrzeného taxonu správcem probíhá kontrola na duplicity. Názvy a texty může uživatel přidat i k existujícímu taxonu. Dále profil obsahuje odkaz na přidání obrázku s předvyplněnou vazbou na taxon. Libovolné další návrhy na změnu lze provést použitím funkce Komentáře. Správci mohou taxony zakládat, editovat, hromadně přesouvat, zneplatňovat (kapitola 5.6), přidávat k nim vědecké i národní názvy, texty, provazovat je se všemi dříve zmíněnými záznamy a samozřejmě také potvrzovat přidaná data. Pro usnadnění práce lze taxony a dále vědecké i národní názvy zakládat hromadně z textového pole, kdy každý řádek je brán jako jeden záznam. U vědeckých názvů se pak automaticky odhadne začátek autority, aby se název správně rozdělil do dvou sloupců. Některá data lze hromadně importovat i ze souboru (kapitola 5.7), BioLib nabízí funkce jako například Import vědeckých názvů taxonů, Import národních názvů taxonů, Import autorit. Prvním sloupcem těchto souborů je vždy id taxonu, ke kterému jsou data vztažena. Při importu národních názvů se mimo duplicity kontroluje i to, zda k danému taxonu neexistuje částečný název, jako např. pouze rodové jméno v jazycích s binomickou nomenklaturou. Takové názvy se potom automaticky přepisují na plné znění. Zajímavou funkcí je Import druhů do rodů, která automaticky zakládá neexistující druhy z textového pole do nejvhodnějších nalezených rodů – název rodu je získán rozebráním druhového jména, pokud rody neexistují či je nalezeno více možností, jsou přeskočeny. I tuto funkci lze omezit nějakou skupinou, aby se zabránilo nejednoznačnosti v názvech rodů.
6.2
Check-listy
Check-listy úzce souvisí s taxonomickým systémem – jedná se o seznamy taxonů (druhů a poddruhů) vyskytujících se na určitém území, např. v České republice. Check-listy jsou hierarchicky provázány – při přidání taxonu do check-listu např. Moravy se záznam automaticky založí i ve všech nadřazených check-listech. V check-listu je možné uvést, zda se jedná o druh na území vyhynulý, introdukovaný, zda je jeho výskyt neprokázaný atp.
KAPITOLA 6. FUNKCE
41
Je možné prohlížet hlavičky check-listů zobrazujících základní informace a počty záznamů, nebo přímo obsah check-listu, který je možné i filtrovat podle taxonomické skupiny a omezit ho tak např. pouze na hmyz. Protože ne všechny skupiny mají zpracované check-listy pro všechna území (naopak stav zpracování check-listů pro ČR je obecně dosti nedostatečný), funkce Vybrané checklisty zobrazuje pouze seznamy, které správci označili jako zpracované, např. „Rostliny ČRÿ. Jedná se vlastně pouze o přednastavení omezení taxonem na určitý check-list. Tyto záznamy jsou pro přehlednost rozděleny do kategorií. Libovolný check-list lze nastavit jako globální pro BioLib, čímž lze dosáhnout vizuálního odlišení taxonů nacházejících se ve zvoleném check-listu v řadě funkcí, např. profilech taxonu, rejstříku, seznamech podtaxonů atp. Odlišení se týká pouze taxonů na úrovni druhů a poddruhů, označování (či dokonce úplné odfiltrování) vyšších taxonů by bylo příliš technicky náročné. Check-listová data mohou správci taxonomického systému zakládat ručně, nebo je hromadně importovat z CSV pomocí funkce Import check-listů.
6.3
Mapy
Modul pro práci s mapami zatím podporuje pouze síťové (kvadrátové) zobrazení rozšíření druhů v ČR, které se u nás v odborných publikacích často používá. Sada nástrojů umožňuje jednoduše vytvářet a zobrazovat síťové mapky pro účely zobrazení rozšíření určitých druhů, dat získaných mapováním nebo třeba kvadrátové pokrytí lokalit (chráněných území). Mapy jsou na serveru kvůli rychlosti uložené jako soubor, při změnách v datech se automaticky znovu generují. V případě map rozšíření je možné mapu generovat i dynamicky na základě nastavení (např. omezení rokem). Funkce Taxon – mapa rozšíření navíc u mapovaného druhu zobrazuje počet pozorování získaných přes BioLib a jejich orientační mapku, viz obrázek E.8. K jednotlivým mapám lze přiřadit manažery, kteří mohou mapu libovolně editovat. K tomu je k dispozici jednak klasické přidávání a editace obsazených kvadrátů ze seznamu a jednak přímé editování mapy za použití JavaScriptu, kdy uživatel volí „štětecÿ (typ obsazení kvadrátů) a „vybarvujeÿ s ním neobsazené čtverce. Přidané či odebrané čtverce se zapisují do neviditelného textového pole a po odeslání formuláře se změny promítnou do dat. BioLib dále nabízí dva nástroje ulehčující práci se síťovými mapami. První nástroj je počítadlo kvadrátů, které umožňuje převod GPS souřadnic na kvadráty a jejich zobrazení v síťové mapě. Druhý nástroj umožňuje vytváření síťových map s širší nabídkou symbolů – výsledné mapy je možné uložit do souboru PNG (připravuje se ale i export do PDF) a použít v nějaké odborné publikaci. Oba nástroje jsou založené na JavaScriptu.
KAPITOLA 6. FUNKCE
6.4
42
Mapování výskytu druhů
Modul vzešel ze spolupráce s zoologickým oddělením Národního Muzea v Praze pro účely mapování rozšíření savců v ČR, později byl upraven pro obecnější použití. Dále se na něm pracuje a počítá se s tím, že bude umožněno mapování všech druhů rostlin, hub a živočichů nezávisle na probíhajících mapováních a bude zdůrazněna vazba s lokalitami a možná i biotopy. Funkce Seznam probíhajících mapování zobrazí okruhy požadovaných dat, tedy např. Obojživelníci a plazi ČR a umožní uživateli dostat se na hlavní stránku jednotlivých mapování, ze kterého se dozví základní informace, může zde prohlížet došlá pozorování či přidávat vlastní. Funkce Mapované druhy zobrazí seznam taxonů, jejichž mapování probíhá. Seznam je strukturován dle vyšších taxonů, správce mapování může sám ovlivnit podle jakých. U položek seznamu jsou i odkazy na aktualizované kvadrátové mapy a odkaz na formulář s předvyplněným druhem. Taxon je jinak možné ve formuláři pro přidání pozorování vybrat ze seznamu, či ho lze zadat jako text, v případě že si uživatel není jistý. Pokud k pozorování přiloží fotografie, správce si taxon může doplnit sám. Po vyplnění údajů a odeslání formuláře je záznam uložen jako čekající na zpracování a všichni správci mapování jsou upozornění emailem se základními údaji (lze vypnout). Pozorování je možné prohlížet funkcí Detail pozorování, uživatel ho smí i dále upravovat či k němu přidávat další obrázky. Takto může měnit záznam do chvíle, než ho některý ze správců mapování označí jako zpracovaný či odmítnutý. Záznamy se potom zobrazují ve funkci Zpracovaná pozorování, zobrazení je možno filtrem omezit na jeden druh. Správci pozorování mají možnost záznamy exportovat do souboru pro zálohu či další zpracování v tabulkovém procesoru, uplatní se i aktuální filtr. Mapované druhy jsou úzce provázány s taxonomickými mapkami, které se podle nich automaticky aktualizují. Správci galerie mají možnost generovat záznamy o pozorování z přidaných obrázků.
6.5
Systémy biotopů
BioLib umožňuje vytvářet hierarchický systém biotopů s několika kořeny, přičemž každý strom reprezentuje určitý systém používaný u nás či ve světě. Možné je zadávat jejich vzájemné převodní vztahy, relace s taxony (dominantní a diagnostické druhy), vazby na lokality a samozřejmě přidávat k nim obrázky, texty a odkazy. Nové systémy biotopů lze hromadně importovat z CSV souboru.
6.6
Databáze lokalit
V současné době je databáze využita pro seznam chráněných území České a Slovenské republiky. Hlavní funkce Lokality zobrazuje abecední seznam lokalit ze všech podkategorií. Profil lokality zobrazuje základní údaje jako rozlohu, nadmořskou výšku, v případě chráněných území i typ chráněné oblasti a datum vyhlášení. Dále zobrazuje texty, obrázky, odkazy, seznam typických zástupců a podobně. Také lokality mají správci možnost importovat z CSV souboru.
KAPITOLA 6. FUNKCE
6.7
43
Encyklopedie
Základní abecední přehled hesel ve slovníku realizuje funkce Výkladový slovník, která zobrazuje všechny položky z prohlížené kategorie a jejích podkategorií (lze v nastavení omezit pouze na aktuální kategorii). Zobrazují se veškerá hesla ve zvoleném jazyce a hesla latinská, více hesel může ukazovat na jediný záznam. Funkce Termín zobrazí detail záznamu se seznamem relevantních názvů, dále texty, obrázky, odkazy, související hesla, seznam stejných hesel s jiným významem a počet souvisejících taxonů. Stránka obsahuje navigaci pro pohyb po záznamech ve stejné kategorii, přičemž uživatel prochází pouze po hlavních názvech slovníku, tj. každý termín navštíví nejvýše jednou. Všechny názvy (tedy i cizí) přiřazené k termínu lze prohlížet pomocí funkce Termín – názvy. Obrázků se na profilu termínu zobrazí nejvýše devět, ostatní lze prohlížet pomocí funkce Termín – obrázky, kterou lze i omezovat taxonem a získat tak třeba přehled všech fotografií lebek savců v galerii (nezávisle na zařazení obrázků do kategorií galerie). Podobně lze omezit i funkci Termín – seznam taxonů, která slouží k provázání termínů a taxonů a vytváření např. seznamu jedovatých druhů, zemědělsky využitelných druhů, taxonů spadajících do vyhlášky o ohrožených druzích atp. Okrajovou částí modulu je funkce Stratigrafická tabulka zobrazující rozdělení historie Země na geologická období pomocí přehledné tabulky. Jednotlivá období jsou hierarchicky provázána. Umožněna je i vazba na taxony, které zobrazuje funkce Stratigrafické období – taxony. Do seznamu jsou zařazeny všechny taxony, jejichž doba výskytu třeba i částečně zasahuje do zvoleného období.
6.8
Databáze odkazů a literatury
Funkce Odkazy zobrazuje společně záznamy databáze literatury, internetových stránek, článků, elektronických dokumentů atp. Na úvodní stránce je zobrazen přehled kategorií a pod ním seznam partnerských projektů a stránek. V jednotlivých kategoriích už jsou konkrétní odkazy či knihy, detaily o nich zobrazí funkce Profil odkazu, která obsahuje informace o autorech, jazyku, popř. v závislosti na typu záznamu URL, vydavatelství atp. Názvy odkazů se zobrazují v jazykové mutaci rozhraní, pokud existují – pokud ne, bere se název, který je označen jako hlavní. Pro knihu s německým názvem, ke které existuje pouze český překlad názvu, se tedy v české verzi stránek zobrazuje český název, v anglické německý. K záznamu je možné připojit i obrázky z galerie, např. přední stranu knih. Odkazy je také možné uspořádat hierarchicky a např. pod odkazem na stránky nějaké vysoké školy zobrazit seznam odkazů na projekty, které pod její patronací probíhají. Stránka obsahuje navigaci pro pohyb po záznamech ve stejné kategorii. Údaje jsou rozdělné do polí tak, aby z nich bylo možné sestavovat citace. Pomocí odkazové funkce [[scit:id]] se do stránky vloží citace záznamu id v nějakém standardním formátu. Stejná formátovací funkce zobrazuje i citace, kdy je záznam propojen ne přes text ale přes klíč, např. v seznamech literatury použité ke zpracování té které části taxonomického systému.
KAPITOLA 6. FUNKCE
44
Speciálním typem záznamu je tzv. „formát pro externí odkazÿ, popsaný dříve. Na profilu takového záznamu se zobrazuje i statistika počtu záznamů s odkazem provázaných, např. taxonů, lokalit, slovníkových pojmů atp., přičemž některé stránky mají společný formát pro všechny tyto typy (Wikipedia a další encyklopedie). Seznamy záznamů přiřazených k formátu externího odkazu lze samozřejmě prohlížet, konkrétně pomocí funkcí Externí odkaz – taxony, Externí odkaz – výkladový slovník a další, podle oblasti záznamů. Přidává-li uživatel do databáze odkaz na vlastní stránky, může zaškrtnout volbu, že chce zůstat manažerem této položky i po potvrzení záznamu. Má potom možnost dle potřeby editovat jednotlivé informace o odkazu a v případě externích odkazů přidávat nové vazby na taxony. Manažera může k odkazu přiřadit i správce odkazů.
6.9
Články
Články jsou zatím pouze vedlejší a málo používaný modul BioLibu, který se však v nejbližší době bude vzhledem k stoupajícímu zájmu autorů o tuto funkci rozšiřovat. Funkce je z větší části realizovaná standardními funkcemi popsanými dříve. Přehled zobrazuje kategorie a náhledy článků – úvodní text a doprovodnou ikonku. Detail článku pak kromě nadpisu, úvodníku a výčtu autorů zobrazuje přiřazené textové bloky. K článku je možné přiřadit manažera, který má možnost článek dále upravovat.
6.10
Galerie
Galerie je sdílená všemi moduly, rozlišení je pouze na úrovni kategorií, tj. např. obrázky našich chráněných území jsou v kategorii „Ostatní obrázky/Chráněná území/ČR/. . .ÿ. Obrázky taxonů, které tvoří většinu záznamů v galerii, jsou automaticky zařazené v kategoriích provázaných s taxony, viz kapitola 5.10.7. Při změnách v systému či založení nových podkategorií však musí být spuštěna kontrolní akce zařazení, která obrázky pro danou kategorii roztřídí. Jakýkoliv obrázek může být použit zároveň v profilu taxonu, jako ilustrace k encyklopedii nebo třeba jako součást textových bloků nějakého článku. Úvodní stránka galerie zobrazuje základní kategorie odpovídající říším organismů a jednu kategorii pro ostatní fotografie (chráněné oblasti, ilustrace slovníku atp.). Následuje seznam „důležitějších kategoriíÿ pro rychlý přechod do různých částí galerie. Další kategorie už jsou prohlížené skrze standardní funkci Galerie, která opět zobrazuje seznam všech podkategorií a jednu speciální „umělouÿ kategorii, do níž jsou sdruženy veškeré neurčené obrázky, a to jak potvrzené tak nepotvrzené. V základní galerii se tedy uživatelům zobrazují pouze potvrzené obrázky určené do druhu, nebo ty, které správci jako determinované označí. Tím je zajištěno, že se kvalitní určené fotografie neztrácí v balastu neurčených a naopak ty neurčené jsou seskupené do zvláštní kategorie, kde je mohou zájemci prohlížet a pomoci přiřadit k nim taxon. Je opět možné buď prohlížet pouze zvolené kategorie, či obrázky ze všech podkategorií najednou. Pro přihlášené uživatele se ve spodní části stránky zobrazují odkazy s možností přidání obrázku či možností hromadného vyhledávání neurčených fotografií. Část stránky z funkce Galerie je vidět na obrázku E.5.
KAPITOLA 6. FUNKCE
45
Kliknutím na náhled lze obrázek a všechny informace s ním spojené prohlížet. Stránka Obrázek obsahuje navigaci pro pohyb po záznamech ve stejné kategorii. Některé obrázky v galerii jsou interaktivní – mohou obsahovat vysvětlivky zobrazující se po přejetí nad obrázkem, u některých fotografií lze zapnout alternativní vrstvu, která např. barevně zvýrazní různé části na fotografii lebky, viz obrázek E.6. Zobrazení položky galerie je standardizované a stejná funkce s drobnými odlišnostmi je použitá jak pro základní zobrazení, tak pro zobrazení nepotvrzeného obrázku, obrázku v Autorské galerii (viz dále), ve funkci Taxon – obrázek, Neurčený obrázek atp., kdy se stránka liší pouze hlavičkou stránky a způsobem navigace po ostatních záznamech. Funkce Vyhledávání neurčených obrázků vyhledá a zobrazí seznam obrázků, jejichž determinace je nedostačující, a to jak potvrzených, tak nepotvrzených. Do této funkce se uživatel může dostat buď přes umělou kategorii Neurčené obrázky, pokud jsou nějaké takové obrázky v prohlížené kategorii, nebo odkazem ve spodní části stránky. Opět lze volit, zda prohledávat aktuální kategorii, nebo celou větev galerie. Fotografie od zaregistrovaného uživatele lze také prohlížet funkcí Autorská galerie. Ta vypadá podobně jako normální Galerie, ale zobrazují se pouze autorovy fotografie a ty kategorie, ve kterých má autor nějaké obrázky. U kategorií se zobrazují i počty záznamů a dochází k automatickému vypouštění „mezikategoriíÿ, tj. zobrazují se pouze nejvyšší společné kategorie před nějakým rozcestím. Např. pokud autor fotografuje pouze brouky, v jeho autorské galerii se zobrazuje pouze příslušná kategorie a její obsazené podkategorie. K obrázkům lze psát komentáře a upozorňovat v nich na chyby v určení či se třeba autora na něco zeptat. Autor i správci galerie mají samozřejmě přehled ke kterým obrázkům kdo přidal komentář. Pro návrh či opravu determinace mohou uživatelé využít formulář Přidat určení, přičemž nezáleží na tom, zda je již obrázek potvrzený či nikoliv. Navrhované determinace se také zobrazují ve funkci Obrázek a správci taxonomického modulu je mohou potvrdit, čímž se přepíše determinace stávající a obrázek se automaticky zařadí do nejvhodnější kategorie. Jak již bylo řečeno, fotografie může přidávat jakýkoliv zaregistrovaný uživatel. Pokud nemá práva do galerie alespoň prvního stupně, může přidávat pouze do nepotvrzených obrázků. Přijímány jsou pouze obrázky formátu JPG. Při nahrání obrázku větších rozměrů se soubor automaticky uloží ve dvou kopiích, přičemž standardně je kvůli rychlosti nabízena ta menší. Správci galerie obrázek potvrdí pouze tehdy pokud splňuje definované požadavky a determinace je dostatečně věrohodná. V opačném případě může obrázek zůstat jako nepotvrzený libovolně dlouhou dobu, dokud ho někdo neurčí nebo neodmítne. Při potvrzení obrázku s jinou determinací než tou zapsanou původním autorem se uživatelovi automaticky pošle zpráva. Podobně při změně determinace potvrzeného obrázku je zpráva o tom zaslána jeho manažerovi (ten kdo ho do galerie přidal) a také autorovi původní determinace, pokud nebyla determinace provedena přímo manažerem. Zasílání těchto zpráv si může každý uživatel vypnout, odesílání zprávy jde i potlačit ve formuláři změny determinace. Funkce Hromadné načtení obrázků umožňuje správcům galerie hromadně přidat obrázky předtím nahrané na server s možností připojit vstupní CSV soubor, ze kterého
KAPITOLA 6. FUNKCE
46
se berou informace o determinaci, lokalitách a podobně. Je možné zvolit, zda se mají obrázky zakládat jako potvrzené, nepotvrzené nebo obojí v závislosti na tom, zda jsou určené do druhu či nikoliv. Tento nástroj se hodí pro případy, že nějaký fotograf pošle své obrázky např. vypálené na CD.
6.11
Diskusní fórum
Modul vznikl z několika důvodů. Ten hlavní je samozřejmě vytvořit prostor pro dotazy uživatelů s možností jednoduše se odkazovat na záznamy v BioLibu (viz odkazové funkce), ale slouží i ke koordinaci práce mezi správci a oznamování novinek v jednotlivých modulech, popř. jako návštěvní kniha, detailní historie změn a místnost s hlavními novinkami. Diskusní místnosti jsou opět rozděleny do kategorií, uživatelé mají možnost místnosti sami zakládat a moderovat. Moderování spočívá v možnosti měnit informace o místnosti a mazat příspěvky. Do většiny místností může psát každý, je ale možné je i omezit pouze pro čtení (zapisují moderátoři), nebo pouze pro registrované uživatele či jen pro správce. Formulář na odeslání a výpis příspěvků je standardní (kapitola 5.10.8), prakticky stejný jako pro komentáře a pro vnitřní poštu. Jednotlivé místnosti si může registrovaný uživatel přidávat do záložek a sledovat tak nové příspěvky od poslední návštěvy místnosti. Odkaz na funkci Záložky s přehledem počtů celkových a nových příspěvků v diskusních fórech najde uživatel na svém účtu.
6.12
Nápověda
Funkce Témata nápovědy a Nápověda jsou opět z větší části postaveny na standardních prvcích jako kategorie a textové bloky. Zajímavou vlastností je možnost nápovědu vkládat do různých skriptů, např. do formulářů. Text se automaticky načte z databáze a vloží do stránky, pokud existuje v aktuální jazykové mutaci. Správci nápovědy mají možnost ho upravovat, aniž by to vyžadovalo změnu skriptů na serveru.
6.13
Uživatelé
Registrace uživatelů je nutná pro možnost aktivního podílení se na projektu, ale má samozřejmě i celou řadu jiných výhod. Uživateli se po přihlášení obnoví uložené nastavení stránek, načtou se jeho práva v jednotlivých modulech a nastaví se datum poslední návštěvy pro funkce jako Změny (viz dále). K přehledu registrovaných uživatelů slouží dvě funkce – abecední přehled Seznam uživatelů a rozřazení do kategorií ve funkci Oblasti zájmu. Tato druhá funkce je však závislá na tom, zda se uživatel do některé či do více z kategorií sám zařadí. Uživatel může i upřesnit svoji specializaci, např. „Entomologie, specializace Lepidoptera (motýli)ÿ. Oblasti specializace se potom vypisují i na Profilu uživatele, na který vedou veškeré odkazy týkající se uživatele, např. autorství obrázků a jiných záznamů. Profil dále zobrazuje jméno a přihlašovací jméno uživatele, čas poslední návštěvy, počet návštěv, osobní popis
KAPITOLA 6. FUNKCE
47
a kontakty, pokud to uživatel v nastavení nezakáže (je možné zobrazovat kontakt pouze administrátorům nebo pouze jiným přihlášeným uživatelům). Tyto informace může uživatel měnit ve formuláři Editace účtu, kde je dále možné i měnit heslo a nastavovat některé další chování stránek, např. přeposílání pošty na mail, zasílání upozornění o přeurčených fotografiích atp. Administrátoři systému dále vidí na profilu práva uživatele a některá jeho nastavení stránek. V rámci profilu jsou i odkazy na statistiky záznamů vytvořených či změněných uživatelem a odkaz na autorskou galerii a formulář na odeslání vzkazu uživateli. Hlavní funkcí, na kterou se uživatel dostane po přihlášení a na kterou se může kdykoliv vrátit kliknutím na ikonku v horní části obrazovky nebo na odkaz v levém menu, je funkce Účet. Ta funguje jako hlavní rozcestník k nejrůznějším uživatelským funkcím, jako je např. Pošta (zobrazuje se celkový počet zpráv a počet zpráv nepřečtených), nebo přehled nových příspěvků v diskusních místnostech ve funkci Záložky. Pro správce jednotlivých oblastí se zde zobrazují počty přidaných nepotvrzených obrázků, textů atp. od jejich poslední návštěvy. Správci mají také přístup k souboru funkcí Systémové nástroje, kde se jim jednotlivé funkce zobrazují podle oblasti a stupně práv. Funkce Statistiky podílení se na BioLibu a Změny od poslední návštěvy odpovídají funkcím Statistiky záznamů filtrované za aktuálního uživatele a funkci Změny omezené datem poslední návštěvy. Další odkazy vedoucí z účtu jsou odkazy na funkce Spravované části BioLibu, Autorská galerie, Komentáře k obrázkům uživatele a Návrhy na vylepšení a odkazy na formulář Editace účtu a Přidání obrázku. První ze zmíněných funkcí zobrazuje veškeré (potvrzené) záznamy, se kterými může uživatel nějakým způsobem manipulovat, přestože třeba nemá práva na příslušný modul. Jsou zde např. přehledy spravovaných záznamů v databázi odkazů, obrázky, které uživatel nahrál do galerie (nemusí být nutně jejich autor), mapování a diskusní fóra, kde je uživatel správcem, mapky rozšíření a články, které může uživatel měnit a podobně. Administrátoři mají ze svého účtu přístup do dalších funkcí, jako např. Statistika akcí, Chybová hlášení, Zálohovaná data či Struktura databáze. Funkce Pošta slouží ke čtení a odesílání vnitřní pošty na BioLibu a je s mírnými úpravami založena na subsystému zpráv vysvětlenému v kapitole 5.10.8. Změna spočívá zejména v modifikaci výběru adresáta. Toho je možné vybrat tlačítkem ze seznamu z okna otevřeného pomocí JavaScriptu, přímým zadáním jeho id, zadáním jeho přihlašovacího jména (při neúspěchu se zpráva neodešle a je možné výběr opakovat), nebo kliknutím na tlačítko „Odpovědětÿ u zprávy nějakého registrovaného uživatele, čímž se opět přes JavaScript automaticky nastaví adresát. Při odeslání vzkazu se kopie zprávy umístí i do vlastní schránky pro lepší přehled průběhu korespondence. Od ostatních zpráv je vizuálně odlišena. Na vzkazy neregistrovaných uživatelů přes BioLib odpovídat nelze. Uživatelovi, kterému dojde během jeho práce s BioLibem zpráva, se v horní části stránky rozsvítí ikonka indikující nepřečtený vzkaz. V případě, že má uživatel zapnuté přeposílání pošty na email a jeho adresu má na svém profilu řádně vyplněnou, vzkaz se mu po automatickém nahrazení odkazových funkcí za plné odkazy odešle i s vyplněným odesílatelem, takže lze v poštovním programu odpovídat rovnou na jeho email.
KAPITOLA 6. FUNKCE
6.14
48
Systém
V této kapitole jsou popsány funkce související spíše se stránkami samotnými než s biologií nebo takové, které se nedají jednoznačně zařadit do jednoho modulu. Jednou z takových funkcí je Vyhledávání. Funkce umožňuje prohledávat názvy taxonů, slovníkových pojmů, biotopů, lokalit, literatury atp., přičemž je možné nastavit i způsob hledání – na začátku názvu, začátku libovolného slova, konci slova, kdekoliv v textu či shoda slov. Nejrychlejší je pochopitelně první z uvedených, proto je to i defaultní způsob hledání při zadání hledaného řetězce do vyhledávacího pole v pravé horní části obrazovky a v oknech na výběr id záznamu. Hledání taxonů lze omezit i na určitou skupinu a prohledávat tak např. pouze rostliny. Záznamy ve výsledcích hledání jsou navíc označené speciálními sekvencemi znaků, takže lze hledání jednoduše integrovat do Mozilla Sidebar (tam se potom zobrazují pouze nalezené odkazy a ne celá stránka BioLibu). K dispozici je také plugin pro hledání do prohlížeče Mozilla a Mozilla Firefox. Funkce Statistika záznamů zobrazuje počty a přehledy vybraných záznamů a lze ji omezit dnem, uživatelem a taxonem. Také lze určit, zda se mají zobrazovat všechny změněné záznamy či pouze nově založené. Na této funkci jsou pomocí předání parametrů založeny funkce jako Změny od poslední návštěvy, Statistiky podílení se na BioLibu a Taxon – změny. Funkce Statistiky udává celkový počet vybraných záznamů a i ji je možné omezit taxonem, takže ukazuje např. počet druhů a obrázků hmyzu v BioLibu. Novinky a historie změn jsou řešeny přes funkci Diskusní fórum místností určenou pouze ke čtení, přičemž pro každý systémový jazyk existuje jedna tato místnost. Poslední hlavní novinka a několik nejnovějších položek historie změn se zároveň zobrazuje přímo na hlavní stránce BioLibu. Na té se zobrazuje kromě krátkého úvodu i celkový počet taxonů, vědeckých a národních názvů, slovníkových pojmů a obrázků v BioLibu. Tyto údaje jsou uloženy v tabulce bio sys, takže se nemusí vypočítávat při každém zobrazení úvodní stránky. Údaje se aktualizují vždy když někdo navštíví funkci Statistiky neomezenou taxonem a nenačtenou z keše. Pomocí funkce Návrhy na vylepšení mohou uživatelé přidávat žádosti o nové funkce či úpravy již existujících funkcí. Administrátoři potom zhodnotí prioritu návrhu, případně ho doplní a podle toho ho zpracují. Zpracované žádosti uzavřou a zařadí do kategorie zpracovaných požadavků. Základní Nastavení slouží k výběru jazykového nastavení stránek (jazyk systému, názvů taxonů, slovníkových pojmů a výběr alternativních jazyků), nastavení filtrování dle taxonu, typ zobrazování náhledů obrázků, automatické rozbalování bloku podrobných systémových informací atp. Přihlášený uživatel má možnost přejít na další tabule nastavení, vedle formuláře Editace účtu např. na tabule přednastavení informací pro přidávané obrázky a možnost nahrání ikonky uživatele. Některé doplňky, jako třeba plugin na vyhledávání v BioLibu pro prohlížeče Mozilla, nebo předdefinované soubory pro hromadný import vědeckých i národních názvů a dalších záznamů lze stáhnout ve funkci Ke stažení. Vyhledávací pluginy je na této stránce také možné instalovat přímo z prohlížeče.
KAPITOLA 6. FUNKCE
49
Odkazy na veškeré funkce, které nejsou nijak závislé na prohlíženém záznamu, jsou potom ve stromové struktuře zobrazeny ve funkci Mapa stránek, dostupné přes ikonku v horní části stránky.
6.15
Administrace
Správci systému mají k dispozici řadu administračních funkcí nabízejících větší přehled o dění v systému. Funkce Statistika akcí zobrazuje kompletní log operací, při kterých proběhla změna dat. Ve skriptech, které tyto změny provádějí, se volá funkce log action(), která provedenou operaci uloží do tabulky včetně informací o uživateli, času, id záznamu, se kterým se pracuje, a případně dalších doplňujících údajů. Funkce potom umožňuje tuto tabulku prohlížet dle různých kritérií. V současné době se seznam akcí nezálohuje, slouží pouze pro hlavního administrátora ke sledování změn v systému a je po kontrole pravidelně promazáván. Podobně je zacházeno i s obsahem tabulky, do které se zapisují chybové události a lze ji prohlížet pomocí funkce Statistika chybových hlášení. Mezi sledované události patří například chybové SQL příkazy, žádosti o neexistující skripty (včetně pokusů o spuštění externích souborů za účelem získání citlivých dat), neúspěšná hledání záznamu v rámci odkazové funkce atp. Funkce Seznam přístupů je používána pouze pro krátkodobé analýzy přístupu, jinak je logování přístupů z důvodů rychlosti vypnuto a probíhá přes nástroj Google Analytics. Strukturu databáze, tj. přehled tabulek i jejich jednotlivá pole, může administrátor prohlížet skrze stejnojmennou funkci. V této funkci lze i ovlivnit, která pole tabulek se mají zálohovat při změnách záznamů a v jakém pořadí, čímž zůstane záloha použitelná i když dojde ke změnám pořadí či názvů polí. K prohlížení záloh slouží funkce Zálohovaná data – ta zobrazí autora a čas změny a v detailu záznamu i označí ta pole, která se liší od skutečnosti. O zálohování se stará skript zpracovávající příslušný formulář, ovlivňuje však pouze za jakých podmínek se má záznam zálohovat, nikoliv jak a co. Funkce Jazykové definice slouží k prohlížení a editaci textů rozhraní. Do funkce má přístup hlavní administrátor, který může texty rozdělovat do skupin a přidávat nové definice, dále pak uživatelé, kterým bylo přiděleno právo na editaci rozhraní v určitém jazyce. Ti potom mohou v této funkci měnit některé texty, změny v rozhraní se projeví po exportu definic do souborů v adresáři LNG. Pro jednodušší přidávání nových funkcí funguje i cesta opačná, tedy aktualizace definic v databázi ze změněných souborů. Soubor funkcí pod Systémovými nástroji je rozdělen do několika základních skupin – Importy, Exporty, Speciální seznamy, Kontrolní akce a Opravné akce. Většina nástrojů je dostupná pouze správcům systému nebo správcům vyšších úrovní. V první skupině jsou zejména funkce týkající se zpracování vstupních souborů, které byly zmíněny v předchozích kapitolách, jako kupříkladu import vědeckých a národních názvů, biotopů a podobně. Pro konverze mezi různými strukturami CSV nebo textových souborů na CSV pro další zpracování slouží funkce Speciální konverze CSV, která umožňuje v případě potřeby jednoduše do skriptu doplňovat nová pravidla konverze. Skupina Exporty obsahuje možnost vyexportovat některé části databáze do zvoleného souboru, většinou ve formátu CSV. Funkce Generování CSV z Exif informace vygeneruje soubor s časovými a technickými údaji, který je potom možné doplnit o lokality a determinace a použít ve funkci
KAPITOLA 6. FUNKCE
50
Hromadné načtení obrázků. Skupina Speciální seznamy nabízí možnost vytvářet speciální pohledy na různé typy záznamů, např. na taxony či obrázky. Pohledy jsou definované programátorem, jejich prohlížení je ovlivněno právy uživatele a jedná se vesměs o kontroly a výpisy problematických záznamů rozlišitelných SQL příkazem. Jako příklad lze uvést kontroly koncovek latinských názvů čeledí, podčeledí a tribů (tyto taxonomické kategorie mají zpravidla definovanou koncovku), kontrola zda není nevyhynulý taxon zařazen pod vyhynulým, či platný pod neplatným, výpis vyšších taxonů, ke kterým existují obrázky ale žádné nejsou přiřazené v profilu a řada dalších. Ve skupině Kontrolní akce se nachází řada nástrojů pro kontrolu chyb způsobených jak špatným fungováním skriptů tak vinou uživatele. Jsou zde kontroly duplicitních názvů v taxonomickém systému a slovníku, hledání poddruhových názvů existujících v databázi zároveň jako druhové názvy, kontroly rozřazení obrázků v galerii nebo kontrola správného použití obrázků k ilustraci profilů vyšších taxonů (ověřuje se zda druh na obrázku nespadá do jiné větve). Opravné akce jsou takové nástroje, které nějakým způsobem zasahují do databáze či mění soubory na serveru, kromě různých akcí pro přegenerování řízených duplicit je zde například funkce na vygenerování CSS souborů, hledání a možnost doplnění rodových názvů taxonů pro jazyky s binomickým názvoslovím (např. čeština) a dále různé dočasné opravné akce sloužící pro změny ve struktuře databáze. Administrátor má také k dispozici SQL okno, které se zobrazuje vždy ve spodní části stránky, takže SQL příkazy lze spouštět prakticky odkudkoliv. Při zobrazení ve stránce se některá pole automaticky nahrazují za odkazy (např. taxonID, imageID atp., resp. bio records.id). Výsledky dotazu lze také exportovat do CSV souboru.
KAPITOLA 7. TESTOVÁNÍ, SPUŠTĚNÍ A PROVOZ
51
7 Testování, spuštění a provoz Projekt byl zahájen v roce 1999 jako rozšíření původního plánu vybudovat internetový atlas českého hmyzu. Přibližně do roku 2003 pak probíhal průzkum oblasti, vytváření základních funkcí a strategií projektu a plnění testovacími daty. Od tohoto roku probíhá oficiální provoz systému, přičemž na rozšiřování funkcí i obsahu se neustále pracuje. Databáze nyní obsahuje přibližně 300 tisíc taxonů, z toho 200 tisíc druhů rostlin, hub a živočichů. 46 tisíc taxonů má český název, celkový počet názvů ve všech jazycích je 165 tisíc. Některé skupiny jsou zpracované celosvětově (savci, ptáci, ale i některé méně významné skupiny hmyzu), jiné zatím třeba jen pro Evropu či pro Českou republiku. V galerii je přes 23 tisíc určených obrázků. Ve slovníku je v českém jazyce přes 5300 hesel ukazujících na 3700 záznamů. BioLib patří mezi největší projekty svého druhu na světě.
Obrázek 7.1: Růst počtu záznamů v tabulce taxonů
Obrázek 7.2: Růst počtu obrázků v galerii
KAPITOLA 7. TESTOVÁNÍ, SPUŠTĚNÍ A PROVOZ
52
V současné době BioLib denně navštíví asi 2500 různých uživatelů, zatím převážně z České a Slovenské republiky. Tento počet však neustále stoupá a již dnes se na BioLib odkazuje i řada zahraničních stránek. Kromě běžných uživatelů, kteří si chtějí prohlédnout fotografie a přečíst texty k nejrůznějším taxonům, slouží stránky i mnoha dalším lidem. Jsou využívány řadou studentů i pedagogů, učitelé z nich (po dohodě s autory) získávají obrázky pro zpestření výuky. Fotografové používají BioLib k propagaci svých prací a vlastních galerií, neboť stránky jsou dobře dostupné vyhledávačům, jsou mezinárodní a často na ně přistupují redaktoři nejrůznějších našich i zahraničních knih a časopisů. Překladatelé zde hledají české i cizí názvy druhů. Fórum je využíváno k nejrůznějším dotazům na odborníky, funguje zde i jakási determinační služba fotografií. V rámci BioLibu probíhají akce jako třeba mapování savců České republiky za spolupráce Národního muzea či mapování obojživelníků a plazů pod dohledem České herpetologické společnosti.
KAPITOLA 8. PLÁNY DO BUDOUCNA
53
8 Plány do budoucna V jednání je momentálně rozšíření mapování druhů na řadu dalších organismů za spolupráce s AOPK ČR (Agentura ochrany přírody a krajiny). V blízké budoucnosti se plánuje překlad rozhraní do více jazyků (podpora existuje, chybí pouze překladatelé). Pracuje se na funkci Kalendář akcí, který by byl zároveň sdílený jinými přírodovědnými stránkami, takže bude plně stylovatelný (jako např. návštěvní knihy BlueBoard [18]), či bude data poskytovat v XML či CSV formátu. Pracuje se i na dokonalejším redakčním systému článků. Tento modul není zatím na BioLibu příliš používán, ovšem podle mnohých autorů na českém internetu zatím chybí přírodovědný server s články dostatečně seriózními. Plánuje se možnost přidávat do BioLibu i zvuky, videa a flashové animace. Na úrovni dat dochází v současné době k rozšiřování databáze taxonů na evropské druhy. Do budoucna se samozřejmě počítá s dalším vývojem funkcí a doplňováním obsahu, rád bych také BioLib převedl na sofistikovanější databázový systém a experimentoval i s možností provozu projektu na serverovém gridu.
KAPITOLA 9. ZÁVĚR
54
9 Závěr Účelem této práce bylo vymezit problematiku systému sloužícímu ke sběru a prezentaci dat přírodovědného charakteru a navrhnout a implementovat nástroj, který by umožňoval efektivně koordinovat práci uživatelů z řad odborníků i široké veřejnosti. Přestože práce má daleko větší přínos v oblasti bioinformatiky a popularizace biologie než v informatice jako takové, byla použita řada poměrně zajímavých řešení, od systému potvrzování přidaných informací, přes odkazové funkce až po správu jazykových verzí rozhraní. Vytvořená aplikace splňuje původní myšlenku celého projektu. Ačkoliv její vývoj není dokončen, již nyní nabízí prakticky všechny funkce potřebné pro její provoz a je takto v současné době i využívána.
KAPITOLA 10. LITERATURA
55
10 Literatura [1] Zicha O.: BioLib – Biological Library http://www.biolib.cz/ [2] ITIS – Integrated Taxonomic Information System http://www.itis.usda.gov/ [3] IUCN - The World Conservation Union http://www.iucn.org/ [4] Salix http://www.salix.cz/ [5] Wikipedia http://wikipedia.org/ [6] Bisby F., Canhos V., Dadd M., Schalk P., Wilson K.: Species 2000 http://www.sp2000.org/ [7] Brands S.: Taxonomicon http://sn2000.taxonomy.nl/Taxonomicon/ [8] Myers P.: ADW – Animal Diversity Web http://animaldiversity.ummz.umich.edu/site/index.html [9] Froese R., Pauly D.: FishBase http://www.fishbase.org/ [10] Frost D. R.: Amphibian Species of the World http://research.amnh.org/herpetology/amphibia/index.php [11] Los W.: Fauna Europaea http://www.faunaeur.org/ [12] Maddison D.: ToL – Tree of Life http://tolweb.org/tree/ [13] Norton C. and Patterson D.: uBio – Universal Biological Indexer and Organiser http://www.ubio.org/ [14] Stang D.: ZipCode ZOO http://zipcodezoo.com/ [15] Buchar J. (1982): Způsob publikace lokalit živočichů z území Československa. Věst. Čs. Společ. Zool. 46: 317 – 318. [16] Nielsen J. (2002): Web.design SoftPress, 384 p.p. (z originálu Designing Web Usability: The Practice of Simplicity, New Riders Publishing, Indianapolis, 2000) [17] Google Analytics http://www.google.com/analytics
KAPITOLA 10. LITERATURA [18] BlueBoard.cz http://www.blueboard.cz/
56
PŘÍLOHA A. SEZNAM POUŽITÝCH ZKRATEK
57
A Seznam použitých zkratek ADW Animal Diversity Web, biologická encyklopedie ASP Active Server Pages, skriptovací engine BioLib Biological Library, biologická encyklopedie CAPTCHA Completely Automated Public Turing test to tell Computers and Humans Apart, testy na rozeznání člověka a stroje CSV Comma Separated Values, tabulkový soubor CSS Cascading Style Sheet, styly HTML souborů Exif Exchangeable image file format, definice grafických formátů pro digitální kamery včetně metainformací GPS Global Positioning System, satelitní navigační systém HTML HyperText Markup Language, jazyk webových stránek IP Internet Protocol address, adresa zařízení na síti ITIS Integrated Taxonomic Information System, taxonomická databáze IUCN International Union for the Conservation of Nature and Natural Resources, mezinárodní organizace pro ochranu přírody JPEG Joint Photographic Experts Group, grafický formát JSP Java Server Pages, skriptovací jazyk KFME Kartierung der Flora Mitteleuropas, metoda mapování rozšíření druhů PDF Portable Document Format, formát dokumentů PHP Hypertext Preprocessor, skriptovací jazyk PNG Portable Network Graphics, grafický formát SEO Search Engine Optimization, obor zabývající se zpřístupněním stránek pro vyhledávače SQL Structured Query Language, jazyk pro práci s relační databází ToL Tree of Life, biologická encyklopedie uBio Universal Biological Indexer and Organizer, biologická encyklopedie URL Uniform Resource Locator, adresa dokumentu na internetu XML Extensible Markup Language, formát pro výměnu dokumentů
PŘÍLOHA B. DIAGRAM FUNKCE ENGINU STRÁNEK
B Diagram funkce enginu stránek
Obrázek B.1: Diagram funkce enginu stránek
58
PŘÍLOHA C. ER MODEL DATABÁZE
C ER model databáze
59
PŘÍLOHA D. MAPA STRÁNEK
D Mapa stránek
60
PŘÍLOHA E. OBRAZOVÉ PŘÍLOHY
E Obrazové přílohy
Obrázek E.1: Ukázka použití odkazových funkcí
Obrázek E.2: Ukázka zprávy z novinek
61
PŘÍLOHA E. OBRAZOVÉ PŘÍLOHY
Obrázek E.3: Ukázka designu stránek - rozcestník
62
PŘÍLOHA E. OBRAZOVÉ PŘÍLOHY
Obrázek E.4: Zobrazení podrobných informací
Obrázek E.5: Část stránky z funkce Galerie
63
PŘÍLOHA E. OBRAZOVÉ PŘÍLOHY
Obrázek E.6: Interaktivní obrázek v galerii
64
PŘÍLOHA E. OBRAZOVÉ PŘÍLOHY
Obrázek E.7: Profil taxonu
65
PŘÍLOHA E. OBRAZOVÉ PŘÍLOHY
Obrázek E.8: Kvadrátová mapa rozšíření a mapa získaných pozorování
66
PŘÍLOHA E. OBRAZOVÉ PŘÍLOHY
Obrázek E.9: Formulář s chybovým hlášením
Obrázek E.10: Formulář s varováním
67
PŘÍLOHA E. OBRAZOVÉ PŘÍLOHY
Obrázek E.11: Náhled příspěvku v diskusním fóru
Obrázek E.12: Výběr záznamu ve formuláři
68
PŘÍLOHA F. INSTALACE APLIKACE
69
F Instalace aplikace Následující návod popisuje zprovoznění lokální instalace aplikace pod serverem Apache s podporou jazyka PHP a databáze MySQL. - obsah adresáře APL se zkopíruje na libovolné umístění na disku. - pro zřízení virtuálního serveru např. www.biolib.zc1 se do konfiguračního souboru apache\conf\httpd.conf přidá text: NameVirtualHost www.biolib.zc
DocumentRoot "cesta k aplikaci" ServerName www.biolib.zc ServerAlias *.biolib.zc ServerAdmin [email protected] ErrorLog logs/biolib-error_log CustomLog logs/biolib-access_log common - do souboru hosts (pod operačním systémem Windows XP/NT je umístěn v adresáři %WINDOWS%\system32\drivers\etc) se přidá řádka 127.0.0.1 www.biolib.zc - vytvoří se databáze biolib a spustí se zakládací skript (v adresáři DATA) - do souboru cnf server.php v podadresáři INC aplikace je nutné zadat přihlašovací údaje k databázovému serveru. - zadáním adresy www.biolib.zc do adresové řádky prohlížeče by se měla objevit úvodní stránka BioLibu.
1
v případě jiné volby názvu virtuálního serveru je nutné v dalších krocích použít příslušný název a také přepsat hodnoty v souboru .htaccess v kořenovém adresáři aplikace
PŘÍLOHA G. OBSAH PŘILOŽENÉHO CD
70
G Obsah přiloženého CD APL - aplikace včetně zdrojových kódů (skriptů), další struktura vysvětlena v kapitole 5.9. Soubory a struktura adresářů. DATA - zakládací SQL skript TEXT - tento dokument ve formátu PDF TEXT/SRC - zdrojové TEX soubory dokumentu DOC - uživatelská příručka ve formátu PDF DOC/SRC - zdrojové TEX soubory příručky readme.txt - popis obsahu CD Adresář DATA obsahuje aktuální databázi ze serveru BioLib ke dni 11. ledna 2007. U uživatelů jsou odstraněná hesla, kromě účtů admin/admin (nejvyšší administrátor) a testuser/testuser (správce dat se vstupem do většiny modulů). Obyčejného uživatele lze založit registrací. Obrázková data byla kvůli autorským právům a celkovému objemu dat omezena pouze na náhledy.