• No results found

TECHNICKA´ UNIVERZITA V LIBERCI Fakulta mechatroniky a mezioborovy´ch inzˇeny´rsky´ch studiı´

N/A
N/A
Protected

Academic year: 2022

Share "TECHNICKA´ UNIVERZITA V LIBERCI Fakulta mechatroniky a mezioborovy´ch inzˇeny´rsky´ch studiı´"

Copied!
43
0
0

Loading.... (view fulltext now)

Full text

(1)

Fakulta mechatroniky a mezioborovy´ch inzˇeny´rsky´ch studiı´

Studijnı´ program: B 2612 – Elektrotechnika a informatika Studijnı´ obor: 1802R022 – Informatika a logistika

WYSIWYG editor pro sazbu validnı´ho XHTML WYSIWYG editor for typesetting valid XHTML

Bakala´rˇska´ pra´ce

Autor: Petr Hamtil

Vedoucı´ pra´ce: Ing. Pavel Tyl Konzultant: Ing. Jirˇı´ Ty´rˇ

V Liberci 13. 5. 2008

(2)

2

POZOR du˚ lezˇite´!!!

Tato stra´nka musı´ by´t prˇed vytvorˇenı´m vazby nahrazena origina´lnı´m zada´nı´m!

Origina´l zada´nı´ pra´ce Obsahuje zada´nı´ pra´ce s origina´lem podpisu˚ (vedoucı´ u´stavu a deˇkan fakulty). Zada´nı´ DP a BP je oboustranne´, v prˇı´padeˇ jednostranne´ho tisku se pocˇı´ta´

jako jedina´ stra´nka (cˇı´slo 2), v prˇı´padeˇ oboustranne´ho tisku je pocˇı´ta´me jako dveˇ strany (3 a 4).

(3)

Prohla´sˇenı´

Byl jsem sezna´men s tı´m, zˇe na mou bakala´rˇskou pra´ci se plneˇ vztahuje za´kon cˇ. 121/2000 o pra´vu autorske´m, zejme´na § 60 (sˇkolnı´ dı´lo).

Beru na veˇdomı´, zˇe TUL ma´ pra´vo na uzavrˇenı´ licencˇnı´ smlouvy o uzˇitı´ me´ BP a prohlasˇuji, zˇe s o u h l a s ı´ m s prˇı´padny´m uzˇitı´m me´ bakala´rˇske´ pra´ce (prodej, zapu˚jcˇenı´ apod.).

Jsem si veˇdom toho, zˇe uzˇı´t sve´ bakala´rˇske´ pra´ce cˇi poskytnout licenci k jejı´mu vyuzˇitı´

mohu jen se souhlasem TUL, ktera´ ma´ pra´vo ode mne pozˇadovat prˇimeˇrˇeny´ prˇı´speˇvek na u´hradu na´kladu˚, vynalozˇeny´ch univerzitou na vytvorˇenı´ dı´la (azˇ do jejich skutecˇne´

vy´sˇe).

Bakala´rˇskou pra´ci jsem vypracoval samostatneˇ s pouzˇitı´m uvedene´ literatury a na za´- kladeˇ konzultacı´ s vedoucı´m bakala´rˇske´ pra´ce a konzultantem.

Datum

Podpis

(4)

4

Podeˇkova´nı´

Na tomto mı´steˇ bych ra´d podeˇkoval vedoucı´mu bakala´rˇske´ pra´ce Ing. Pavlu Tylovi a konzultantovi Ing. Jirˇı´mu Ty´rˇovi za prˇipomı´nky a cenne´ rady prˇi vypracova´va´nı´ bakala´rˇske´

pra´ce.

Take´ chci podeˇkoval rodineˇ a prˇa´telu˚m za vesˇkerou podporu prˇi pra´ci na tomto projektu a psanı´ pra´ce.

(5)

Abstrakt

Cı´lem bakala´rˇske´ pra´ce je sezna´mit se hloubeˇji s problematikou tvorby XHTML webo- vy´ch stra´nek prostrˇednictvı´m WYSIWYG editoru˚ vytvorˇeny´ch v programovacı´m jazyce JavaScript a dalsˇı´mi prˇı´slusˇny´mi technologiemi, da´le prozkoumat sta´vajı´cı´ rˇesˇenı´ a pokusit se vytvorˇit a otestovat vlastnı´ WYSIWYG editor.

Prˇi studiu technologiı´ vyuzˇitelny´ch pro WYSIWYG editor jsem se zameˇrˇil na pro- zkouma´nı´ modernı´ch metod a technologiı´, ktere´ jsou vytvorˇeny´m editorem vyuzˇı´va´ny.

Prˇi popisu WYSIWYG editoru˚ jsem se zameˇrˇil prˇedevsˇı´m na popsa´nı´ principu, na kte- re´m pracujı´.

Vytvorˇeny´ WYSIWYG editor byl koncipova´n pro snadnou rozsˇı´rˇitelnost o nove´ funkce a kompatibilitu s nejpouzˇı´vaneˇjsˇı´mi prohlı´zˇecˇi.

Abstract

The goal of this work is to familiarize with the issues of XHTML web pages creating by WYSIWYG editors programmed in JavaScript language and other appropriate technolo- gies, to analyze existing solutions and to create and test own WYSIWYG editor.

Among tasks related to WYSIWYG editors I focused on analysis of state of the art methods and technologies used by these editors.

Within describing WYSIWYG editors I focused especially on their work principles.

Final WYSIWYG editor was conceived for a simple extension of new functions and maximal compatibility with nowadays most frequently used browsers.

Klı´cˇova´ slova

WYSIWYG editor, JavaScript, WWW, XHTML.

Keywords

WYSIWYG editor, JavaScript, WWW, XHTML.

(6)

6

Obsah

1 Technologie, metody a na´stroje 11

1.1 WYSIWYG editor . . . 11

1.1.1 WYSIWYG prˇi tvorbeˇ webu . . . 11

1.1.2 Vy´hody a nevy´hody . . . 12

1.1.3 Alternativa TEX . . . 12

1.2 XHTML – hypertextovy´ znacˇkovacı´ jazyk . . . 13

1.3 CSS – kaska´dove´ styly dokumentu . . . 15

1.4 JavaScript – klientsky´ programovacı´ jazyk . . . 16

1.5 PHP – serverovy´ programovacı´ jazyk . . . 17

1.6 AJAX – novy´ prˇı´stup pro webove´ aplikace . . . 18

1.7 TDD – programova´nı´ rˇı´zene´ testy . . . 19

1.8 Webove´ prohlı´zˇecˇe . . . 20

1.8.1 Ja´dro Trident . . . 21

1.8.2 Ja´dro Gecko . . . 22

1.8.3 Ja´dro Presto . . . 22

1.8.4 Ja´dro KHTML a WebKit . . . 23

2 WYSIWYG XHTML editory 24 2.1 Soucˇasne´ open source editory . . . 24

2.1.1 TinyMCE . . . 24

2.1.2 FCKeditor . . . 25

2.1.3 widgEditor . . . 26

2.1.4 Bronziho editor . . . 27

2.2 Princip JavaScriptovy´ch WYSIWYG editoru˚ . . . 29

2.2.1 Zacˇleneˇnı´ editoru do stra´nek . . . 29

2.2.2 Modifikace ko´du dokumentu . . . 29

2.2.3 Validita ko´du . . . 30

2.2.4 Graficke´ rozhranı´ . . . 30

2.2.5 Ukla´da´nı´ vy´sledku . . . 32

2.2.6 Omezenı´ JavaScriptovy´ch WYSIWYG editoru˚ . . . 33

(7)

3 Vy´voj aplikace 34

3.1 Konfigurace . . . 34

3.2 Inicializace editoru . . . 35

3.2.1 Funkce inicializuj . . . 35

3.2.2 Funkce generuj . . . 36

3.3 Konstruktor editoru . . . 37

3.3.1 Vizua´lnı´ prvky . . . 38

3.3.2 Generova´nı´ menu . . . 38

3.3.3 Styly . . . 38

3.3.4 Nacˇı´ta´nı´ a odesı´la´nı´ ko´du pomocı´ AJAXu . . . 38

3.3.5 Specia´lnı´ tlacˇı´tka . . . 39

3.4 Parser . . . 39

4 Testova´nı´ 40 4.1 Grafika a vy´stup . . . 40

4.2 Konqueror a ostatnı´ prohlı´zˇecˇe . . . 40

5 Za´veˇr 41

Seznam obra´zku ˚

1 Zasla´nı´ pozˇadavku na PHP stra´nku klienta na server . . . 17

2 Zna´zorneˇnı´ posı´la´nı´ pozˇadavku˚ klienta na server pomocı´ AJAXu . . . 19

3 Snı´zˇenı´ pameˇt’ove´ na´rocˇnosti poslednı´ verze Firefox 3 . . . 23

4 WYSIWYG editor TinyMCE . . . 25

5 WYSIWYG editor FCKeditor . . . 26

6 WYSIWYG editor widgEditor . . . 27

7 WYSIWYG editor Bronzi . . . 28

8 Vzhled Microsoft Word 2007 . . . 28

9 Graficke´ ovla´dacı´ rozhranı´ aplikace OpenOffice.org Writer 2.3.0 . . . 31

10 Vytvorˇeny´ WYSIWYG editor . . . 39

(8)

8

Seznam termı´nu ˚ a zkratek

CSS Cascading Style Sheets – jazyk pro popis zpu˚sobu zobrazenı´ stra´nek napsany´ch v jazycı´ch HTML, XHTML nebo XML.

DOM Document Object Model – objektoveˇ orientovana´ reprezentace XML nebo HTML dokumentu.

DTD Document Type Definition – jazyk pro popis struktury XML prˇı´padneˇ SGML dokumentu. Omezuje mnozˇinu prˇı´pustny´ch dokumentu˚ spadajı´cı´ch do dane´ho typu nebo trˇı´dy.

GPL GNU General Public License – licence pro svobodny´ software.

HTTP HyperText Transfer Protocol – internetovy´ protokol urcˇeny´ pu˚vodneˇ pro vy´meˇnu hypertextovy´ch dokumentu˚ ve forma´tu HTML.

LGPL GNU Lesser General Public License – varianta licence pro svobodny´ software GNU GPL, ktera´ ale na rozdı´l od GPL umozˇnˇuje spojova´nı´ s nesvobodny´m ko´dem.

MPL Mozilla Public License – licence pro svobodny´ software pouzˇı´va´na pro zdrojovy´

ko´d vyda´vany´ Mozilla Corporation.

MSIE(IE) Microsoft Internet Explorer (Internet Explorer) – proprieta´rnı´ graficky´ webovy´

prohlı´zˇecˇ spolecˇnosti Microsoft.

OS(S) Open Source (Software) – pocˇı´tacˇovy´ software s otevrˇeny´m zdrojovy´m ko´dem.

PDF Portable Document Format – souborovy´ forma´t vyvinuty´ firmou Adobe pro ukla´- da´nı´ dokumentu˚ neza´visle na softwaru i hardwaru, na ktere´m byly porˇı´zeny.

PHP Rekurzivnı´ zkratka PHP: Hypertext Preprocessor (pu˚vodneˇ Personal Home Page) – skriptovacı´ programovacı´ jazyk urcˇeny´ prˇedevsˇı´m pro programova´nı´ dynamicky´ch internetovy´ch stra´nek.

TDD Test-Driven Development – programova´nı´ rˇı´zene´ testy, cozˇ je jedna z metod pro- gramova´nı´.

(9)

W3C World Wide Web Consortium – mezina´rodnı´ konsorcium jehozˇ cˇlenove´ spolecˇneˇ s verˇejnostı´ vyvı´jejı´ webove´ standardy pro World Wide Web.

WHATWG The Web Hypertext Application Technology Working Group – pracovnı´ sku- pina snazˇı´cı´ se o na´vrh novy´ch technologiı´ umozˇnˇujı´cı´ch autoru˚m psa´t a nasazovat webove´ aplikace mnohem snadneˇji pomocı´ rozsˇı´rˇenı´ existujı´cı´ch technologiı´.

WML Wireless Markup Language – znacˇkovacı´ jazyk zalozˇeny´ na jazyce XML umozˇ- nˇujı´cı´ tvorbu online dokumentu˚ pro mobilnı´ zarˇı´zenı´.

WWW World Wide Web – oznacˇenı´ pro aplikace internetove´ho protokolu HTTP.

WYSIWYG What You See Is What You Get – oznacˇuje zpu˚sob editace dokumentu˚ v po- cˇı´tacˇi, prˇi ktere´m je verze zobrazena´ na obrazovce vzhledoveˇ totozˇna´ s vy´slednou verzı´ dokumentu.

XHTML eXtensible HyperText Markup Language – znacˇkovacı´ jazyk pro tvorbu hyper- textovy´ch dokumentu˚ v prostrˇedı´ WWW vyvinuty´ W3C.

XML eXtensible Markup Language – obecny´ znacˇkovacı´ jazyk, ktery´ byl vyvinut a standardizova´n konsorciem W3C.

(10)

10

U ´ vod

Je 21. stoletı´ a neexistuje nikdo, kdo by dnes nebyl at’prˇı´mo cˇi neprˇı´mo za´visly´ na jednom z nejrozsa´hlejsˇı´ch informacˇnı´ch me´diı´ zvane´m Internet. Tato celosveˇtova´ sı´t’ poskytuje snadnou a rychlou mozˇnost, jak zı´ska´vat a poskytovat informace, komunikovat s prˇa´teli nebo organizacemi a to prakticky odkudkoliv na sveˇteˇ.

Jednou z nejoblı´beneˇjsˇı´ch sluzˇeb Internetu je World Wide Web nebo take´ WWW cˇi jed- nodusˇe web. Pro tuto sluzˇbu se pouzˇı´vajı´ webove´ prohlı´zˇecˇe, ktere´ se prˇipojujı´ k serveru˚m a zı´ska´vajı´ ko´d webovy´ch stra´nek, jenzˇ na´sledneˇ sve´mu uzˇivateli interpretujı´ do srozumi- telneˇjsˇı´ nadefinovane´ podoby. Pokud chce ovsˇem uzˇivatel neˇjake´ webove´ stra´nky vytvorˇit a prˇispeˇt do celosveˇtove´ informacˇnı´ sı´teˇ, situace je pro neˇho komplikovaneˇjsˇı´.

Aby uzˇivatel nemusel veˇnovat neˇkolik dnı´ cˇi ty´dnu˚ studiu problematiky tvorby webo- vy´ch prezentacı´, je pro neˇho nezbytne´ mı´t kromeˇ na´stroje pro zobrazenı´ webovy´ch stra´nek take´ na´stroj pro jejich vytva´rˇenı´. V idea´lnı´m prˇı´padeˇ by tento na´stroj meˇl by´t soucˇa´stı´

webove´ho prohlı´zˇecˇe, aby nebylo potrˇeba doinstalova´vat dodatecˇny´ software. Za´rovenˇ by take´ meˇl mı´t pro uzˇivatele snadne´ ovla´da´nı´ a meˇlo by by´t hned videˇt, jak bude ve vy´sledku vy´tvor vypadat.

Bakala´rˇska´ pra´ce se skla´da´ ze cˇtyrˇ cˇa´stı´. Zprvu jsou popsa´ny technologie, metody a na´stroje pouzˇite´ prˇi pra´ci na editoru. V druhe´ cˇa´sti jsou vybra´ny neˇktere´ existujı´cı´

a pouzˇı´vane´ JavaScriptove´ WYSIWYG editory a vysveˇtlen princip na jake´m takove´to editory fungujı´. Trˇetı´ a cˇtvrta´ cˇa´st je veˇnova´na prakticke´ stra´nce bakala´rˇske´ pra´ce, vy´voji a otestova´nı´ vlastnı´ho JavaScriptove´ho WYSIWYG editoru.

(11)

1 Technologie, metody a na´stroje

1.1 WYSIWYG editor

Zkratka WYSIWYG je akronym anglicke´ veˇty „What you see is what you get“, neboli v cˇesˇtineˇ „Co vidı´sˇ, to dostanesˇ“.

Tı´mto akronymem se oznacˇuje metoda pro pra´ci s dokumenty na pocˇı´tacˇi, ktera´ umozˇ- nˇuje uzˇivateli snadno upravovat dokument v podobeˇ, v jake´ bude vypadat vy´sledek inter- pretovany´ na vy´stupu z dane´ho programu. Naprˇı´klad u nejcˇasteˇjsˇı´ch WYSIWYG editoru˚, textovy´ch procesoru˚, se obvykle jedna´ o vy´slednou podobu stra´nky, ktera´ bude vytisˇteˇna na tiska´rneˇ. Prˇı´kladem takove´ho editoru by mohl by´t velmi popula´rnı´ otevrˇeny´ open source projekt OpenOffice.org, ktery´ je jednou z hlavnı´ch konkurencı´ proprieta´rnı´ho produktu Microsoft Word, silneˇ sva´zane´ho s monopolnı´mi operacˇnı´mi syste´my MS Windows.

1.1.1 WYSIWYG prˇi tvorbeˇ webu

WYSIWYG editor pro sazbu validnı´ho XHTML1tedy uzˇivateli umozˇnı´ zna´my´m jednodu- chy´m a intuitivnı´m zpu˚sobem vytvorˇit webovou stra´nku ve znacˇkovacı´m jazyce XHTML.

Mnoho dokumentu˚ vytvorˇeny´ch pomocı´ WYSIWYG editoru˚ cˇasto trpı´ neprˇimeˇrˇenou velikostı´ a nekompatibilitou s neˇktery´mi me´neˇ pouzˇı´vany´mi prohlı´zˇecˇi. Takto generovany´

ko´d je sice mozˇne´ posle´ze editovat a opravit rucˇneˇ, ale pote´ editor ztra´cı´ svou nejveˇtsˇı´

vy´hodu.

Proble´my s neprˇimeˇrˇenou velikostı´ a nekompatibilitou je zpu˚soben na´vrhem webu.

Pu˚vodneˇ web nebyl navrzˇen jako vizua´lnı´ medium, a proto prˇi rozvoji Internetu byly ucˇi- neˇny ru˚zne´ pokusy, jak da´t autoru˚m vı´ce kontroly nad vzhledem webove´ stra´nky, naprˇı´klad pomocı´ CSS2. Bohuzˇel se kazˇdy´ webovy´ prohlı´zˇecˇ pokousˇel vyrˇesˇit proble´m po sve´m a mnohe´ veˇci, ktere´ perfektneˇ fungovaly v jednom prohlı´zˇecˇi, byly jen slabeˇ podporo- va´ny v prohlı´zˇecˇi jine´m. Du˚sledkem toho musely by´t WYSIWYG editory optimalizova´ny pro neˇkolik ru˚zny´ch prohlı´zˇecˇu˚, rˇesˇily mnoho proble´mu˚ a byly velmi komplikovane´.

1Znacˇkovacı´ jazyk pro tvorbu hypertextovy´ch dokumentu˚.

2Jazyk pro popis zpu˚sobu zobrazenı´ stra´nek napsany´ch v jazycı´ch HTML, XHTML nebo XML.

(12)

1 Technologie, metody a na´stroje 12

1.1.2 Vy´hody a nevy´hody

Vy´hodou teˇchto editoru˚ pro samotne´ho uzˇivatele je fakt, zˇe uzˇivatel nemusı´ veˇdeˇt, jak vypada´ samotny´ zdrojovy´ text dokumentu a jaky´ jazyk pro popis dat je v dokumentu pouzˇı´va´n. Proto je pro veˇtsˇinu uzˇivatelu˚, kterˇı´ majı´ za´jem o vytvorˇenı´ neˇjake´ho dokumentu, tento prˇı´stup tvorby dokumentu z hlediska cˇasove´ na´rocˇnosti a na pochopenı´ nejvhodneˇjsˇı´.

WYSIWYG editory ovsˇem nejsou vsˇemi uctı´va´ny a majı´ mnoho odpu˚rcu˚, zejme´na mezi odborneˇjsˇı´ verˇejnostı´. Du˚vod je prosty´, tyto editory jsou zameˇrˇeny na vizua´lnı´ ovla´- da´nı´, jednoduchost a snadnost pochopenı´. V neˇktery´ch prˇı´padech, kdyzˇ cˇloveˇk potrˇebuje kvalitnı´ sazbu dokumentu nebo vyuzˇı´t vesˇkere´ mozˇnosti pro urcˇity´ forma´t dokumentu, WYSIWYG editory nestacˇı´. Cˇı´m slozˇiteˇjsˇı´ a na´rocˇneˇjsˇı´ projekt, tı´m vı´ce ovla´dacı´ch prvku˚

je potrˇeba, a cˇı´m vı´ce ovla´dacı´ch prvku˚ nashroma´zˇdeˇny´ch ve hlavnı´ch menu a podmenu, tı´m se pra´ce sta´va´ slozˇiteˇjsˇı´, nepohodlnou a na´rocˇnou. WYSIWYG editory take´ nejsou schopny zpracova´vat kvanta dat pro idea´lnı´ vykreslenı´ a rozmı´steˇnı´ textu v rea´lne´m cˇase.

1.1.3 Alternativa TEX

Prˇestozˇe WYSIWYG editory cˇasto usnadnˇujı´ a urychlujı´ pra´ci s psanı´m textu, mnoho profesiona´lu˚ sta´le pouzˇı´va´ alternativnı´ zpu˚soby pro vytva´rˇenı´ textovy´ch dokumentu˚.

Jedna z nejkvalitneˇjsˇı´ch a nejpropracovaneˇjsˇı´ch alternativ je typograficky´ syste´m TEX naprogramovany´ Donaldem Knuthem, ktery´ byl zhruba prˇed trˇiceti lety nespokojen s na- bı´zenou nekvalitnı´ sazbou jeho matematicke´ knihy. TeX se prosadil zejme´na pro psanı´

veˇdecky´ch, zvla´sˇteˇ matematicky´ch, textu˚ a stal se standardnı´m forma´tem pro mnoho zna´my´ch veˇdecky´ch cˇasopisu˚.

Du˚vodu˚, procˇ psa´t v TeXu je mnoho. V jednom z mnoha cˇla´nku˚ o TeXu na webove´

stra´nce www.root.cz je vypsa´n seznam neˇkolika za´kladnı´ch du˚vodu˚ [9].

Procˇ tedy psa´t v TeXu?

• Skveˇly´ typograficky´ vy´stup.

• Vasˇe dokumenty pu˚jdou kdykoliv prˇecˇı´st, nemu˚zˇe se sta´t, zˇe se jejich obsah posˇkodı´

a nepu˚jdou otevrˇı´t (cozˇ se velmi cˇasto sta´valo se starsˇı´mi verzemi MS Office).

• Vede uzˇivatele k dobry´m na´vyku˚m strukturova´nı´ dokumentu.

• Mu˚zˇete pouzˇı´t svu˚j oblı´beny´ editor.

(13)

• TeX je multiplatformnı´, existujı´ implementace pro MS Windows, Linux, Mac OS X, BSD syste´my a dalsˇı´ operacˇnı´ syste´my.

• Existuje pro neˇj spousta sˇablon, ale take´ dokumentace.

• TeX je u´zˇasneˇ prˇizpu˚sobitelny´ a programovatelny´, nebude va´m bra´nit v rozletu, azˇ se stanete pokrocˇily´m uzˇivatelem.

Na rozdı´l od WYSIWYG editoru˚, ktere´ zpracova´vajı´ a zobrazujı´ text v rea´lne´m cˇase, se TeX kompiluje. Po napsa´nı´ dokumentu˚ je pouzˇit program pro prˇevod textu s TeXovsky´mi prˇı´kazy do pozˇadovane´ho forma´tu, naprˇı´klad prˇenosny´ forma´t dokumentu˚ PDF3. To da´va´

TeXu prostor pro mnohem kvalitneˇjsˇı´ a propracovaneˇjsˇı´ aplikaci ru˚znorody´ch pravidel.

Zvla´da´ obrovske´ mnozˇstvı´ ligatur a dalsˇı´ch typograficky´ch technik, ktere´ se aplikujı´

trˇeba pro zarovna´va´nı´ do bloku textu, kdy u WYSIWYG editoru˚ je vy´sledek mnohdy nepouzˇitelny´. TeX zarovna´va´ do bloku defaultneˇ a urcˇuje nejoptima´lneˇjsˇı´ rozlozˇenı´ textu v odstavci a prˇı´padneˇ sa´m rozdeˇlı´ slovo na konci rˇa´dku.

TeXove´ soubory se ukla´dajı´ do obycˇejny´ch textovy´ch souboru˚, ktere´ jsou prˇeva´zˇneˇ tvorˇeny textem ve znakove´ sadeˇ ASCII, Unicode, nebo ISO-8859-2. Cozˇ je velka´ vy´- hoda pro vy´voja´rˇe, kterˇı´ mohou velmi snadno zpracova´vat tyto soubory programem cˇi skriptem a vzhledem k tomu, zˇe TeX nenı´ interaktivnı´, je mozˇno jej pouzˇı´vat v programu pro generova´nı´ PDF souboru˚.

TeX je velmi dobrˇe rozsˇirˇitelny´ pomocı´ mnoha knihoven a take´ je pro neˇj k dispozici mnoho sˇablon a stylu˚.

TeX sa´m o sobeˇ je velmi nı´zkou´rovnˇovy´, proto Donald Knuth zahrnul do svy´ch pla´nu˚

makrobalı´ky, ktere´ umozˇnˇujı´ psa´t dokument a nezaby´vat se proble´my s implementacı´

obsahu, rejstrˇı´ku˚ a podobneˇ. Tato makra jsou vlastneˇ dalsˇı´ prˇı´kazy TeXu.

Jednı´m z nejpouzˇı´vaneˇjsˇı´ch balı´ku˚, ktery´ je pouzˇı´va´n i prˇi psanı´ te´to bakala´rˇske´ pra´ci, je LaTeX.

1.2 XHTML – hypertextovy´ znacˇkovacı´ jazyk

XHTML, neboli „eXtensible HyperText Markup Language“, cozˇ je cˇesky prˇelozˇitelne´

jako „rozsˇirˇitelny´ hypertextovy´ znacˇkovacı´ jazyk“, je znacˇkovacı´ jazyk pro tvorbu hyper-

3Souborovy´ forma´t vyvinuty´ firmou Adobe pro ukla´da´nı´ dokumentu˚ neza´visle na softwaru i hardwaru, na ktere´m byly porˇı´zeny.

(14)

1 Technologie, metody a na´stroje 14

textovy´ch dokumentu˚ v prostrˇedı´ WWW vyvinuty´ konsorciem W3C (World Wide Web Consortium).

Tento znacˇkovacı´ jazyk je na´sledovnı´kem jazyka HTML (HyperText Markup Langu- age), ktery´ byl navrzˇen v roce 1990 spolecˇneˇ s protokolem HTTP (HyperText Transfer Protocol – prˇenosovy´ protokol hypertextu) pro jeho prˇenos po pocˇı´tacˇovy´ch sı´tı´ch. V te´

dobeˇ byl take´ napsa´n prvnı´ webovy´ prohlı´zˇecˇ, ktery´ se jmenoval WorldWideWeb. (Zdro- jovy´ ko´d programu byl v roce 1993 uvolneˇn jako volne´ dı´lo, cozˇ z neˇj deˇla´ svobodny´

software.)

Vy´voj jazyka HTML byl ukoncˇen ve verzi 4.01, ktere´ bylo vydane´ 24. prosince 1999 a meˇla by´t na´sledneˇ nahrazena verzemi XHTML zalozˇene´m na jazyce XML4.

Tento za´meˇr konsorcia W3C se vsˇak nesetkal s dostatecˇnou kladnou odezvou a negativnı´ hlasy se projevili v nedostatecˇne´m prˇijetı´ XHTML. Byla zalozˇena iniciativa WHATWG, ktera´ si dala za cı´l vytvorˇit novou verzi HTML, oznacˇovanou jako HTML 5.

V reakci na to, 7. brˇezna 2007, byla konsorciem W3C zalozˇena pracovnı´ skupina HTML, ktera´ ma´ za cı´l v roce 2010 uvolnit novou verzi HTML, oznacˇovanou jako HTML 5 a tak nava´zat na ukoncˇeny´ vy´voj HTML 4.01. V kveˇtnu 2007 se pote´ W3C dohodla s WHATWG o prˇevzetı´ doposud vytvorˇeny´ch novy´ch na´vrhu˚ Web Applications 1.0 a Web Forms 2.0.

Konsorcium W3C tedy momenta´lneˇ paralelneˇ vyvı´jı´ dva smeˇry a to znacˇkovacı´ jazyk HTML 5 a XHTML 2.

XHTML ve verzi 1.0 je prvnı´ specifikace konsorcia W3C, ktera´ si klade za cı´l prˇeve´st starsˇı´ znacˇkovacı´ jazyk HTML do podoby, ktera´ bude vyhovovat podmı´nka´m vytva´rˇenı´

XML dokumentu˚m prˇi zachova´nı´ zpeˇtne´ kompatibility. Tato verze existuje ve trˇech vari- anta´ch.

Tou nejstriktneˇjsˇı´ a nejprˇı´sneˇjsˇı´ verzı´ je XHTML 1.0 Strict. Hlavnı´ du˚raz je kladen na osvobozenı´ dokumentu˚ od forma´tovacı´ch znacˇek pro rozvrzˇenı´ stra´nky. Pro potrˇeby graficky´ch efektu˚ a rozvrzˇenı´ stra´nky se prˇedpokla´da´ pouzˇitı´ kaska´dovy´ch stylu˚ oznacˇo- vany´ch jako CSS.

Pro snadneˇjsˇı´ prˇechod z HTML existuje verze XHTML 1.0 Transitional, ktera´ umozˇ- nˇuje pouzˇı´vat prˇekonane´ tagy a forma´tovacı´ prvky zaka´zane´ ve striktnı´ verzi. Tato verze je vhodna´ pro me´neˇ na´silny´ prˇechod na XHTML standardy.

Poslednı´ (trˇetı´) verze je XHTML 1.0 Frameset. Kromeˇ mensˇı´ striktnosti (jako u Tran-

4Obecny´ rozsˇirˇitelny´ znacˇkovacı´ jazyk.

(15)

sitional verze) prˇida´va´ podporu ra´mcu˚. Ra´mce jsou jizˇ v dnesˇnı´ dobeˇ z mnohy´ch du˚vodu˚

zavrhova´ny a nahrazova´ny noveˇjsˇı´mi metodami pro rozvrzˇenı´ obsahu na stra´nce.

Pro rozlisˇenı´ verze XHTML cˇi HTML dokumentu se pouzˇı´va´ definice typu dokumentu DOCTYPE na zacˇa´tku dokumentu, ktery´ obsahuje informaci o pouzˇite´m znacˇkovacı´m jazyce a odkaz na soubor jeho pravidel.

Hlavnı´m rozdı´lem za´pisu HTML a XHTML je nutnost, aby vsˇechny tagy byly v jazyce XHTML ukoncˇene´. U nepa´rovy´ch tagu˚ jsou definova´ny trˇi zpu˚soby ukoncˇenı´, z nichzˇ se prˇeva´zˇneˇ z du˚vodu zpeˇtne´ kompatibility doporucˇuje za´pis mezery s lomı´tkem prˇed kon- cove´ zname´nko „veˇtsˇı´ nezˇ“. Naprˇı´klad za´pis pro novy´ rˇa´dek v HTML se zapisuje jako

<br> a v XHTML jako <br />.

Dalsˇı´m za´sadnı´m pravidlem je nutnost za´pisu vsˇech tagu˚ a atributu˚ maly´mi pı´smeny, jelikozˇ je jazyk XHTML citlivy´ na velikost pı´sma a musı´ se dodrzˇovat za´pis v deklaraci DTD5.

V XHTML je take´ nutno dodrzˇovat spra´vnou syntaxi a zapisovat atributy tagu˚ do uvo- zovek. Kazˇdy´ atribut take´ musı´ mı´t definovanou hodnotu, pokud je uveden. Kromeˇ teˇchto za´sadnı´ch rozdı´lu˚ jsou jesˇteˇ dalsˇı´ doporucˇenı´ a me´neˇ cˇasta´ pravidla.

1.3 CSS – kaska´dove´ styly dokumentu

Zkratka CSS z anglicke´ho Cascading Style Sheets, cˇesky tabulky kaska´dovy´ch stylu˚ nebo pouze kaska´dove´ styly, je pouzˇı´va´na pro oznacˇenı´ jazyku pro popis zpu˚sobu zobrazova´nı´

dokumentu˚ HTML, XHTML cˇi XML. Tento jazyk opeˇt navrhlo a da´le vyvı´jı´ konsorcium W3C. V soucˇasnosti jsou pouzˇı´va´ny ve verzi 1 a 2, prˇı´padneˇ 2.1.

Cı´lem a hlavnı´m du˚vodem existence kaska´dovy´ch stylu˚ je u´plne´ oddeˇlenı´ obsahu a struktury dokumentu od jeho zpu˚sobu prezentace. Oddeˇlenost definice vzhledu od ob- sahu a struktury umozˇnˇuje jednodusˇsˇı´ upravova´nı´ obsahu bez rizika posˇkozenı´ vzhledu dokumentu, mozˇnost spolupra´ce vı´ce lidı´ na jednom projektu, kdy se jeden zaby´va´ cˇisteˇ obsahovou stra´nkou a druhy´ jen grafickou.

Jednou z velky´ch vy´hod, hlavneˇ pro uzˇivatele, je mozˇnost neza´visle na obsahu kom- pletneˇ zmeˇnit celkovy´ vzhled dokumentu a tak mu˚zˇe autor stra´nek da´t uzˇivateli na vy´beˇr mezi neˇkolika vzhledy nebo urcˇit ru˚zna´ zobrazenı´ pro ru˚zna´ vy´stupnı´ zarˇı´zenı´. Naprˇı´klad vzhled pro zobrazenı´ na monitoru nemusı´ by´t idea´lnı´ pro tisˇteˇnou verzi apod.

5Definice typu dokumentu pro popis struktury XML (prˇı´padneˇ SGML) dokumentu.

(16)

1 Technologie, metody a na´stroje 16

Pro tvu˚rce dokumentu CSS prˇina´sˇı´ prˇedevsˇı´m rozsa´hlejsˇı´ mozˇnosti u´prav vzhledu, dynamickou pra´ci se vzhledem a konzistentnı´ vzhled vsˇech dokumentu˚ vyuzˇı´vajı´cı´ch stejny´ kaska´dovy´ styl.

1.4 JavaScript – klientsky´ programovacı´ jazyk

JavaScript vytvorˇeny´ Brendanem Eichem z tehdejsˇı´ spolecˇnosti Netscape je objektoveˇ orientovany´ skriptovacı´ jazyk pouzˇı´vany´ tvu˚rci webovy´ch stra´nek nebo aplikacı´ za u´cˇelem zvy´sˇenı´ interakce s uzˇivatelem prˇedevsˇı´m na klientske´m stroji.

Svu˚j na´zev zı´skal tento jazyk prˇedevsˇı´m z marketingovy´ch du˚vodu˚. To se vyplatilo a mnoho lidı´ si plete programovacı´ jazyk Java se skriptovacı´m jazykem JavaScript, dı´ky cˇemuzˇ se JavaScript rychle dostal do poveˇdomı´ internetove´ komunity a postupneˇ se propracoval prakticky na vsˇechny webove´ prohlı´zˇecˇe. Kromeˇ na´zvu spojuje JavaScript a Javu, ale take´ jazyky C, C++ podobna´ syntaxe.

V roce 1997 byl JavaScript standardizova´n asociacı´ ECMA (Europen Computer Manu- facturers Association) a o rok na to ISO (International Organization for Standardisation).

Standardizovana´ verze JavaScriptu byla pojmenova´na ECMAScript.

Vzhledem k tomu, zˇe je tento skriptovacı´ jazyk spousˇteˇn prˇeva´zˇneˇ azˇ na straneˇ kli- enta prˇi nacˇı´ta´nı´ WWW stra´nky do prohlı´zˇecˇe, musı´ by´t respektova´na urcˇita´ bezpecˇnostnı´

omezenı´. Prˇedevsˇı´m se jedna´ o nemozˇnost pracovat se soubory na klientske´m stroji, aby se zabra´nilo nezˇa´doucı´mu upravova´nı´, cˇtenı´ citlivy´ch souboru˚ (at’uzˇ osobnı´ch nebo sys- te´movy´ch) a nedosˇlo tak k narusˇenı´ soukromı´ uzˇivatele nebo nebyla narusˇena bezpecˇnost uzˇivatelova pocˇı´tacˇe.

Kromeˇ za´kladnı´ syntaxe podobne´ klasicky´m programovacı´m jazyku˚m ma´ JavaScript specia´lnı´ rozhranı´ nazy´vane´ DOM, cozˇ je akronym anglicke´ho Document Object Mo- del, cˇesky objektovy´ model dokumentu, ktere´ umozˇnˇuje prˇistupovat, modifikovat nebo vytva´rˇet obsah, strukturu cˇi styl dokumentu. Nanesˇteˇstı´ se pra´veˇ zde nejvı´ce projevuje jedna z velky´ch proble´mu˚ tvorby webovy´ch stra´nek a tou je kompatibilita mezi prohlı´- zˇecˇi. Ze zacˇa´tku meˇl kazˇdy´ webovy´ prohlı´zˇecˇ vlastnı´ specia´lnı´ rozhranı´ pro manipulaci s HTML elementy v JavaScriptu, ktere´ byly navza´jem nekompatibilnı´. Nebohy´ webmas- ter, tvu˚rce webovy´ch stra´nek, proto musel vzˇdy oveˇrˇovat ru˚zny´mi klicˇkami verzi a typ prohlı´zˇecˇe, aby mohl pro dany´ prohlı´zˇecˇ spustit specia´lnı´ ko´d (pro neˇho optimalizovany´).

Proto se konsorcium W3C odhodlalo ke standardizaci tohoto rozhranı´ a vznikla specifikace

(17)

W3C DOM, ktera´ je platformeˇ i jazykoveˇ neza´visla´.

Specifikace W3C DOM je pro snadneˇjsˇı´ implementaci do webovy´ch prohlı´zˇecˇu˚ rozdeˇ- lena do neˇkolika u´rovnı´ oznacˇovany´ch jako DOM. Da´le za´rovenˇ jesˇteˇ kazˇda´ DOM vrstva obsahuje povinne´ a volitelne´ moduly. Pro splneˇnı´ urcˇite´ u´rovneˇ DOM je zapotrˇebı´ splnit u´rovneˇ prˇedesˇle´ a za´rovenˇ tu, ktera´ ma´ by´t splneˇna a tak bude moci by´t aplikace oznacˇena, zˇe podporuje urcˇity´ DOM level. V dobeˇ psanı´ te´to pra´ce existujı´ trˇi stupneˇ a to level 1, level 2 a level 3.

1.5 PHP – serverovy´ programovacı´ jazyk

Obra´zek 1: Zasla´nı´ pozˇadavku na PHP stra´nku klienta na server

PHP je rekurzivnı´ zkratka PHP: Hypertext Preprocessor, pu˚vodneˇ Personal Home Page. Oznacˇuje skriptovacı´ programovacı´ jazyk, urcˇeny´ prˇedevsˇı´m pro programova´nı´

dynamicky´ch webovy´ch stra´nek. Zacˇlenˇuje se prˇı´mo do struktury jazyku˚ HTML, XHTML cˇi WML6, cozˇ je velmi vy´hodne´ pro tvorbu internetovy´ch aplikacı´. Skripty napsane´

v PHP jsou prova´deˇny na straneˇ serveru a klient nema´ poveˇdomı´, jestli byl prˇi vytva´rˇenı´

dokumentu tento jazyk pouzˇit cˇi nikoliv. Uzˇivatel na klientske´ straneˇ dostane pouze vy´sledek cˇinnosti PHP skriptu˚. Syntaxe jazyka PHP je jako v prˇı´padeˇ JavaScriptu opeˇt podobna´ jazyku˚m C a Java. Jazyk je neza´visly´ na platformeˇ a umozˇnˇuje pouzˇı´vat rozsa´hle´

knihovny funkcı´ pro zpracova´nı´ textu, grafiky, pra´ci s databa´zı´ a soubory.

6Znacˇkovacı´ jazyk zalozˇeny´ na jazyce XML zameˇrˇeny´ na tvorbu dokumentu˚ pro mobilnı´ zarˇı´zenı´.

(18)

1 Technologie, metody a na´stroje 18

1.6 AJAX – novy´ prˇı´stup pro webove´ aplikace

AJAX neboli „Asynchronous JavaScript and XML“ je novou ikonou na poli webove´ho inzˇeny´rstvı´. Avsˇak nenı´ to zˇa´dny´ samostatny´ jazyk nebo nova´ technologie. AJAX je spı´sˇe novy´ prˇı´stup, se ktery´m prˇisˇel jako prvnı´ v cˇla´nku AJAX: A New Approach to Web Applications neboli „AJAX: Novy´ prˇı´stup k webovy´m aplikacı´m“ v dubnu 2005 Jesse James Garretta.

Prapu˚vod AJAXu saha´ do roku 1998, kdy spolecˇnost Microsoft prˇedstavila novou technologii nazvanou Remote Scripting, ve ktere´ v klientske´m prohlı´zˇecˇi beˇzˇel Java ap- plet7 komunikujı´cı´ se serverem, prˇicˇemzˇ tento applet poskytoval sluzˇby JavaScriptovy´m funkcı´m. Tato technika spolupra´ce serveru s klientsky´m prohlı´zˇecˇem zacˇala fungovat v MSIE od verze 4 a take´ v Netscape Navigatoru od verze 4. Microsoft ve svojı´ pa´te´

verzi prohlı´zˇecˇe Internet Explorer prˇedstavil objekt XMLHttpRequest, ktery´ v roce 2000 vyuzˇil v nove´m programu Outlook Web Access, ktery´ poskytuje webove´ rozhranı´ pro prˇı´- stup k emailu˚m na Microsoft Exchange Server. Objekt XMLHttpRequest je za´kladnı´m stavebnı´m kamenem AJAXu.

Nejveˇtsˇı´ za´sluhu na zpopularizova´nı´ a rozsˇı´rˇenı´ AJAXu lze prˇipsat spolecˇnosti Google, ktera´ vlastnı´ jeden z nejzna´meˇjsˇı´ch a nejpouzˇı´vaneˇjsˇı´ch vyhleda´vacˇu˚ a ktera´ AJAX zacˇala vyuzˇı´vat ve svy´ch produktech. Zprvu u online emailove´ sluzˇby Gmail, posle´ze tomu bylo u celosveˇtovy´ch map se sluzˇbou Google Maps a plno dalsˇı´ch.

Jednou z hlavnı´ch vy´hod a du˚sledkem, procˇ se AJAX tak rychle zacˇal rozvı´jet a pouzˇı´vat, je odstraneˇnı´ nutnosti znovu nacˇtenı´ a prˇekreslenı´ cele´ webove´ stra´nky prˇi kazˇde´

akci nebo operacı´ch souvisejı´cı´ch s prohlı´zˇenı´m a pouzˇı´va´nı´m webovy´ch stra´nek. Na rozdı´l od klasicke´ho modelu WWW stra´nek se tedy stra´nky vyuzˇı´vajı´cı´ AJAX nemusı´ cele´ znovu nacˇı´tat.

AJAX totizˇ umozˇnˇuje odesla´nı´ informacı´ na server, odkud zı´ska´ potrˇebnou odpoveˇd’.

Na´sledneˇ je pomocı´ JavaScriptu modifikova´n obsah zobrazovany´ch stra´nek. Uzˇivatel tak nenı´ nucen cˇekat na opeˇtovne´ nacˇı´ta´nı´ stra´nky a cela´ operace zobrazenı´ zˇa´dany´ch informacı´

se tak zrychlı´. Odesı´la´nı´ a prˇijı´ma´nı´ dat probı´ha´ na pozadı´. Uzˇivatel ma´ pocit mnohem veˇtsˇı´ plynulosti pra´ce, ktera´ se dokonce blı´zˇı´ beˇzˇny´m desktopovy´m aplikacı´m.

Dı´ky tomuto vylepsˇenı´ a zmeˇneˇ prˇı´stupu se snizˇuje za´teˇzˇ na webove´ servery a celou sı´t’

mezi klienty a serverem, prˇes ktere´ se museli posı´lat mnohem veˇtsˇı´ kvanta dat. AJAX vsˇak

7Softwarova´ komponenta, ktera´ beˇzˇı´ v kontextu jine´ho programu.

(19)

mu˚zˇe zvy´sˇit pocˇet vymeˇnˇovany´ch HTTP pozˇadavku˚, trˇebazˇe prˇena´sˇejı´ nizˇsˇı´ mnozˇstvı´ dat, proto prˇi nevhodne´ implementaci za´teˇzˇ neklesne.

Obra´zek 2: Zna´zorneˇnı´ posı´la´nı´ pozˇadavku˚ klienta na server pomocı´ AJAXu Mezi hlavnı´ nevy´hody patrˇı´ zmeˇny v paradigmatu pouzˇı´va´nı´ webu. Tedy zmeˇna cho- va´nı´ webove´ stra´nky. Web se chova´ jako plnohodnotna´ aplikace se slozˇitou vnitrˇnı´ logikou a nikoliv jako posloupnost stra´nek, mezi ktery´mi se lze navigovat. Nejveˇtsˇı´ vliv je videˇt prˇi pouzˇitı´ tlacˇı´tek „Zpeˇt“ a „Dalsˇı´“. Modernı´ AJAXove´ aplikace jsou vsˇak schopny tyto funkce tlacˇı´tek upravit a nasimulovat tak kompatibilnı´ funkcˇnost se standardnı´m modelem webovy´ch stra´nek.

1.7 TDD – programova´nı´ rˇı´zene´ testy

TDD je zkratkou z anglicke´ho „Test-Driven Development“, tedy „programova´nı´ rˇı´zene´

testy“. Tato technika vy´voje rˇı´zene´ho testy je soucˇa´stı´ agilnı´ metody vy´voje softwaru nazy´vane´ jako extre´mnı´ programova´nı´.

Hlavnı´m rozdı´lem oproti klasicke´mu cyklu vy´voje softwaru, kdy se stanovı´ pozˇadavky, na´vrh architektury, pote´ se prˇistoupı´ ke ko´dova´nı´ a na´sledneˇ k testova´nı´, je vytva´rˇenı´ testu˚

jesˇteˇ prˇed samotny´m ko´dova´nı´m.

Klasicky´ prˇı´stup vy´voje aplikace prˇedpokla´da´ existenci neˇjake´ho ko´du˚ programu˚, ktery´ se na´sledneˇ testuje a kontroluje. Pouzˇite´ testy kontrolujı´, jestli se projekt neodchy´lil

(20)

1 Technologie, metody a na´stroje 20

od zada´nı´ a pokud ano, musı´ se chyba napravit. Nalezenı´ a opravenı´ chyb v pozdeˇjsˇı´ch fa´zı´ch vy´voje, kdy je projekt mnohem rozsa´hlejsˇı´, mu˚zˇe zpu˚sobit nemale´ proble´my.

Oproti tomu TDD vytva´rˇı´ testy prˇed samotny´m napsa´nı´m ko´du, ktery´ by testy prosˇel.

Testy v TDD nemajı´ za cı´l kontrolovat ko´d, ale spı´sˇe prˇedstavujı´ na´stroj pro na´vrh syste´mu.

Na zacˇa´tku programova´nı´ se napı´sˇe test, ktery´ specifikuje u´kol dane´ cˇa´sti programu.

Test musı´ selhat nebo vu˚bec neprobeˇhnout, protozˇe zatı´m nebyl napsa´n zˇa´dny´ ko´d. Na´- sledneˇ se naprogramuje logika programu, tak aby test alesponˇ probeˇhl. Postupny´mi men- sˇı´mi u´pravami ko´du a spousˇteˇnı´m testu˚ dojde k upravenı´ ko´du do prˇijatelne´ podoby, kdy testy projdou. Pokud jesˇteˇ nenı´ program hotovy´, napı´sˇe se dalsˇı´ test a pokracˇuje se v programova´nı´. Pokud jsou vsˇechny testy u´speˇsˇne´ a jizˇ nenı´ potrˇeba vytva´rˇet dalsˇı´ testy, program je hotovy´, funkcˇnı´ a nemusı´ se jizˇ testovat.

Nevy´hodou je, zˇe programova´nı´ rˇı´zene´ho testu se da´ uplatnit jen pro cˇa´sti ko´du neza- by´vajı´cı´ se grafikou a je tedy vhodne´ prˇedevsˇı´m pro programova´nı´ aplikacı´ cˇi cˇa´stı´ ko´du prˇina´sˇejı´cı´ neˇjaky´ negraficky´ vy´sledek.

1.8 Webove´ prohlı´zˇecˇe

Webove´ prohlı´zˇecˇe, te´zˇ nazy´vane´ jako browsery jsou pocˇı´tacˇove´ programy, sı´dlı´cı´ na kli- entske´m stroji. Kdyzˇ se uzˇivatel rozhodne prohlı´zˇet World Wide Webu nebo neˇjaky´ do- kument v podporovane´m forma´tu jako naprˇı´klad HTML, XHTML, XML, spustı´ jeden z teˇchto programu˚ a on mu podle svy´ch mozˇnostı´ a podporovany´ch standardu˚ zforma´tuje a zobrazı´ dokument.

Prohlı´zˇecˇe umozˇnˇujı´ komunikaci se servery sı´dlı´cı´mi na Internetu pomocı´ protokolu HTTP, dı´ky neˇmuzˇ webovy´ prohlı´zˇecˇ prˇistupuje ke vzda´leny´m dokumentu˚m, trˇeba na dru- he´m konci sveˇta.

Mohli bychom je rozdeˇlit do dvou skupin a to na prohlı´zˇecˇe textove´ a prohlı´zˇecˇe graficke´. Textove´ prohlı´zˇecˇe zobrazujı´ dokumenty jako text a to obvykle s velmi jedno- duchy´m forma´tova´nı´m. Takovy´mi programy jsou naprˇı´klad Links nebo Lynx. Na rozdı´l od textovy´ch umozˇnˇujı´ graficke´ prohlı´zˇecˇe slozˇiteˇjsˇı´ forma´tova´nı´ stra´nky vcˇetneˇ zobrazenı´

obra´zku˚. Lze v nich zobrazit neˇktere´ externı´ soucˇa´stı´ stra´nky jako jsou Flashove´ animace nebo Javove´ applety, pro ktere´ je potrˇeba do prohlı´zˇecˇe doplnit specializovane´ za´suvne´

moduly. Mezi nejzna´meˇjsˇı´ graficke´ webove´ prohlı´zˇecˇe patrˇı´ Internet Explorer, Mozilla Firefox, Opera, SeaMonkey, Konqueror a Safari.

(21)

Jednou z nejdu˚lezˇiteˇjsˇı´ch cˇa´stı´ webovy´ch prohlı´zˇecˇu˚ je ja´dro, take´ oznacˇovane´ jako renderovacı´ ja´dro. Jeho u´cˇel v prohlı´zˇecˇi je vykreslovat webove´ stra´nky a je napsa´no ve vysˇsˇı´ch programovacı´ch jazycı´ch, jako je naprˇı´klad jazyk C++. V soucˇasnosti nejpou- zˇı´vaneˇjsˇı´ ja´dra jsou Trident, Gecko a KHTML.

1.8.1 Ja´dro Trident

Na ja´drˇe Trident, drˇı´ve zna´my´ pod na´zvem MSHTML, jsou postaveny prohlı´zˇecˇe Micro- soft Internet Explorer, ktere´ jsou doda´va´ny spolecˇneˇ s operacˇnı´m syste´mem Microsoft Windows. Z tohoto du˚vodu je take´ toto ja´dro jedno z nejpouzˇı´vaneˇjsˇı´ch na cele´m sveˇteˇ.

Poprve´ se objevilo roku 1997 v Internet Exploreru 4.0 a v soucˇasnosti je ve verzi 5 soucˇa´stı´

Internet Exploreru 7.0.

Da´le se toto ja´dro nacha´zı´ v prohlı´zˇecˇi Maxthon, ktery´ se stal velmi oblı´benou alter- nativou k Internet Exloreru 6. Maxthon si nasˇel prˇı´zenˇ mezi uzˇivateli prˇedevsˇı´m pro sve´

dodatecˇne´ vlastnosti jako jsou za´lozˇky, ale hlavneˇ pro sve´ lepsˇı´ zabezpecˇenı´ nezˇ bylo u Internet Exploreru 6.

Jesˇteˇ bych zmı´nil prohlı´zˇecˇ Netscape Browser 8.0, ktery´ je vy´jimecˇny´ a zajı´mavy´

prˇedevsˇı´m pro svou schopnost prˇepı´nat mezi renderovacı´m ja´drem Gecko, ktere´ pouzˇı´vajı´

prohlı´zˇecˇe postavene´ na Mozille a ja´drem Trident.

Jako veˇtsˇina produktu˚ spolecˇnosti Microsoft je i ja´dro Trident proprieta´rnı´ nesvobodny´

software a proto jeho ko´dy jsou uzavrˇeny. Zna´me´ a pro mnohe´ vy´voja´rˇe nemile´ vlastnosti Tridentu jsou slabsˇı´ podpora webovy´ch standardu˚, existence neˇktery´ch nestandardnı´ch rozsˇı´rˇenı´ a prˇedevsˇı´m u starsˇı´ch verzı´ slabsˇı´ zabezpecˇenı´.

Kromeˇ webovy´ch prohlı´zˇecˇu˚ se ja´dro Trident, dı´ky sve´ integraci do operacˇnı´ho sys- te´mu Windows, pouzˇı´va´ jako renderovacı´ ja´dro v mnoha dalsˇı´ch komponenta´ch syste´mu.

Naprˇı´klad je vyuzˇito pro na´poveˇdu v syste´mu Windows, kancela´rˇsky´ balı´k Microsoft Of- fice a Windows Explorer. Mu˚zˇe jej vyuzˇı´vat a take´ jej vyuzˇı´va´ rˇada instalovany´ch aplikacı´

nepocha´zejı´cı´ch od spolecˇnosti Microsoft.

Aktua´lneˇ je vyvı´jen Internet Explorer 8, ktery´ by meˇl by´t vyda´n ve stabilnı´ verzi koncem roku 2009 a meˇl by by´t kladen veˇtsˇı´ du˚raz na bezpecˇnost a webove´ standardy.

(22)

1 Technologie, metody a na´stroje 22

1.8.2 Ja´dro Gecko

Gecko je druhe´ nejpouzˇı´vaneˇjsˇı´ ja´dro hned po ja´drˇe Trident a jeho obliba neusta´le roste i dı´ky tomu, zˇe na rozdı´l od ja´dra Trident se Gecko rˇadı´ mezi open source projekty a je pouzˇı´va´no v mnoha dalsˇı´ch open source projektech. Bylo napsa´no v programovacı´m jazyce C++, pod licencemi MPL, GPL a LGPL. Toto ja´dro bylo pu˚vodneˇ vytvorˇeno firmou Netscape Communications Corporation, ale nynı´ je vyvı´jeno spolecˇnostı´ Mozilla Corporation.

Gecko nenabı´zı´ pouze mozˇnost renderova´nı´ webovy´ch stra´nek, ale dı´ky sve´mu boha- te´mu API slouzˇı´ i k vykreslova´nı´ graficke´ho rozhranı´ (XUL), vyuzˇı´vane´ho Firefoxem cˇi Thunderbirdem. Nenı´ zameˇrˇeno pouze na urcˇity´ syste´m, ale jedna´ se o multiplatformnı´

ja´dro. K dispozici je pro Microsoft Windows, Linux, Mac OS X a dalsˇı´.

Z du˚vodu˚ zpeˇtne´ kompatibility a podpory webovy´ch stra´nek optimalizovane´ pro stare´

verze prohlı´zˇecˇu˚ Netscape Navigator a Internet Explorer podporuje Gecko dva rezˇimy vykreslova´nı´. Pokud je v dokumentu nalezena definice Doctype, vykresluje se stra´nka

„v rezˇimu platny´ch standardu˚“. V opacˇne´m prˇı´padeˇ vyuzˇije tzv. „rezˇim zpeˇtne´ kompati- bility“, ktere´mu se take´ rˇı´ka´ quirks mo´d.

Mezi vy´znamneˇjsˇı´ programy vyuzˇı´vajı´cı´ ja´dro gecko patrˇı´ prohlı´zˇecˇe Epiphany, Ga- leon, prohlı´zˇecˇ Camino urcˇen pro Mac OS, multimedia´lnı´ prˇehra´vacˇ Songbird, posˇtovnı´

klient Mozilla Thunderbird nebo balı´k internetove´ch aplikacı´ SeaMonkey.

Aktua´lnı´ verzı´ je Gecko 1.9. Toto ja´dro je obsazˇene´ v prohlı´zˇecˇi Mozilla Firefox 3.0, ktera´ by meˇla by´t vyda´n oproti pu˚vodnı´mu pla´nu v cˇervnu. Vy´voja´rˇi Firefoxu se v poslednı´

verzi ja´dra zameˇrˇili prˇedevsˇı´m na snı´zˇenı´ pameˇt’ove´ na´rocˇnosti prohlı´zˇecˇe, cozˇ se jim meˇlo pove´st oproti starsˇı´m verzı´m o jednu trˇetinu.8

1.8.3 Ja´dro Presto

Renderovacı´ ja´dro Presto se poprve´ objevilo 28. ledna 2003 ve webove´m prohlı´zˇecˇi Opera 7.0 od firmy Opera Software, pro operacˇnı´ syste´m Windows a nahradilo tak do- savadnı´ starsˇı´ ja´dro Elektra. Je licencova´no obchodnı´m partnerem Adobe Systems a take´

integrova´no do produktu Adobe Creative Suite. Opera je distribuova´na jako freeware.

Nejveˇtsˇı´ prˇednostı´ tohoto ja´dra a tedy take´ Opery je snaha du˚sledneˇ dodrzˇovat stan- dardy konsorcia W3C. Spolu s dodrzˇova´nı´m standardu˚, dobry´m zabezpecˇenı´m, rychlostı´

8zdroj: http://blog.pavlov.net/2008/03/11/firefox-3-memory-usage/

(23)

Obra´zek 3: Snı´zˇenı´ pameˇt’ove´ na´rocˇnosti poslednı´ verze Firefox 3

a technologiı´ Small Screen Rendering se prohlı´zˇecˇ Opera (ve specia´lneˇ upravene´ podobeˇ) dostal na vedoucı´ pozici jako prohlı´zˇecˇ pro „chytre´“ mobilnı´ telefony a PDA.

1.8.4 Ja´dro KHTML a WebKit

KHTML je renderovacı´ ja´dro, ktere´ je vyvı´jene´ v ra´mci projektu KDE, cozˇ je desktopove´

prostrˇedı´ pro operacˇnı´ syste´m Linux. Napsa´no je v jazyce C++. Uvolneˇno je pod licencı´

LGPL a v KDE se nacha´zı´ od verze 2.

Vyuzˇı´va´ jej webovy´ prohlı´zˇecˇ Konqueror, cozˇ je hlavnı´ prohlı´zˇecˇ pouzˇı´vany´ v deskto- pove´m prostrˇedı´ KDE a je na neˇm zalozˇen take´ prohlı´zˇecˇ Swift a RSS cˇtecˇka Akregator.

Na za´kladeˇ ja´dra KHTML bylo cˇa´stecˇneˇ vytvorˇeno spolecˇnostı´ Apple ja´dro WebKit, konkre´tneˇ renderovacı´ engine WebCore, a je pouzˇito pro webovy´ prohlı´zˇecˇ Safari urcˇeny´

prˇedevsˇı´m pro operacˇnı´ syste´my Mac OS X a Apple iPhone. Jako KHTML je napsa´n v jazyce C++ a pouzˇı´va´ licenci LGPL.

(24)

2 WYSIWYG XHTML editory 24

2 WYSIWYG XHTML editory

Mysˇlenka na vytvorˇenı´ WYSIWYG editoru, ktery´ by byl soucˇa´stı´ webovy´ch prohlı´zˇecˇu˚

nenı´ nova´. Ve skutecˇnosti byl WYSIWYG HTML editor soucˇa´stı´ jizˇ v prvnı´m internetove´m prohlı´zˇecˇi umozˇnˇujı´cı´m HTTP, ktery´ se jmenoval WorldWideWeb (pozdeˇji Nexus).

2.1 Soucˇasne´ open source editory

Dnesˇnı´ situace je o neˇco slozˇiteˇjsˇı´. Soucˇasne´ prohlı´zˇecˇe se staly postupem cˇasu mnohem rozsa´hlejsˇı´, slozˇiteˇjsˇı´ a pouzˇı´vaneˇjsˇı´. Z tohoto du˚vodu jsou i dnesˇnı´ na´roky na WYSIWYG editory veˇtsˇı´.

Za´kladnı´ podmı´nkou u nı´zˇe popsany´ch editoru˚ je GPL nebo LGPL licence, tedy aby WYSIWYG editor byl volneˇ sˇirˇitelny´ a libovolneˇ modifikovatelny´.

Vzhledem k existenci neˇkolika pouzˇı´vany´ch prohlı´zˇecˇu˚ je jednı´m z du˚lezˇity´ch faktoru˚, aby byl WYSIWYG editor kompatibilnı´ a choval se v kazˇde´m editoru stejneˇ. To je vzhledem k faktu, zˇe prohlı´zˇecˇe nejsou mezi sebou kompatibilnı´, na´rocˇny´ u´kol.

Pro webmastery a webove´ vy´voja´rˇe aplikacı´ je du˚lezˇite´, aby se ko´d aplikace dal snadno modifikovat dle jejich prˇa´nı´, vylepsˇovat o specificke´ za´lezˇitosti a v neposlednı´ rˇadeˇ byl snadno integrovatelny´.

Dnesˇnı´ open source JavaScriptove´ WYSIWYG editory jsou velmi oblı´bene´ dı´ky sve´

dobre´ funkcionaliteˇ a nulovy´m porˇizovacı´m na´kladu˚m. Ty nejlepsˇı´ projekty dosahujı´ kvalit komercˇnı´ch projektu˚ jako EditOnPro1.

2.1.1 TinyMCE

Jednı´m z nejpopula´rneˇjsˇı´ch a nejpropracovaneˇjsˇı´ch WYSIWYG XHTML editoru˚ psany´ch v JavaScriptu je produkt TinyMCE vyvı´jeny´ spolecˇnosti Moxiecode systems.

Vzhledem k licenci LGPL je tento opensource projekt mozˇno libovolneˇ pouzˇı´vat.

Modifikace jsou rˇesˇeny pomocı´ pluginu˚ a te´mat. K dispozici je i cˇesky´ prˇeklad.

Je mozˇne´ ho sta´hnout na stra´nka´ch http://tinymce.moxiecode.com/ v sekci download.

Integrace je velmi snadna´. Po stazˇenı´ souboru a rozbalenı´ na mı´sto, odkud bude aplikace vola´na stacˇı´ v cı´love´m dokumentu, kde ma´ by´t editor pouzˇit, vlozˇit externı´ Ja- vaScriptovy´ soubor s editorem a do hlavicˇky dokumentu vlozˇit inicializacˇnı´ ko´d, ve ktere´m

1zdroj: http://www.standards-schmandards.com/2007/WYSIWYG-editor-test-2/

(25)

Obra´zek 4: WYSIWYG editor TinyMCE

se provedou potrˇebna´ nastavenı´ editoru. Nastavenı´ inicializacˇnı´ cˇa´sti editoru jizˇ vsˇak tak snadne´ nenı´, a pokud je potrˇeba vyrˇesˇit neˇjake´ specificke´ nastavenı´, je trˇeba se sezna´mit s dokumentacı´ a spra´vneˇ vsˇe nakonfigurovat. Spolu s editorem se rozbalı´ i neˇkolik prˇı´kladu˚

pro snadneˇjsˇı´ pochopenı´ funkcˇnosti, a dobra´ podpora je take´ na domovsky´ch stra´nka´ch.

Spolecˇnost Moxiecode kromeˇ editoru nabı´zı´ i plugin pro pra´ci se soubory MCFile- Manager a plugin pro pra´ci s obra´zky MCImageManager. Tyto pluginy vsˇak jizˇ nejsou dostupne´ zdarma a je nutne´ za neˇ zaplatit.

Mezi prˇednosti TinyMCE patrˇı´ mozˇnost ulozˇenı´ vy´sledny´ch dokumentu˚ pomocı´ tech- nologie AJAX.

Nevy´hodou je prˇedevsˇı´m placeny´ souborovy´ a obra´zkovy´ manager. Editor je velmi robustnı´, rozsa´hly´ a vnitrˇneˇ komplikovany´ z du˚vodu uspokojenı´ uzˇivatelu˚ po co nejveˇtsˇı´m mnozˇstvı´ funkcı´ a mozˇnostı´, proto nenı´ vhodny´ pro me´neˇ na´rocˇne´ webove´ stra´nky nebo pro studium struktury, jak takovy´ editor funguje.

2.1.2 FCKeditor

Jednou z velky´ch konkurencı´ popula´rnı´ho TinyMCE je editoru FCKeditor, ktery´ byl podle pocˇı´tadla umı´steˇne´m na stra´nce sta´hnut vı´ce jak dva a pu˚l milionkra´t.

Tento editor nabı´zı´ rozsa´hlejsˇı´ rˇadu licencı´ a tak umozˇnˇuje vybrat si tu nejvhodneˇjsˇı´.

Editor je distribuova´n pod GPL, LGPL a MPL open source licencemi a navı´c pod komercˇnı´

licencı´ Closed Distribution License, ktera´ je urcˇena pro spolecˇnosti a produkty, ktery´m

(26)

2 WYSIWYG XHTML editory 26

Obra´zek 5: WYSIWYG editor FCKeditor nevyhovujı´ open source licence. Tato komercˇnı´ licence je zpoplatneˇna.

Je mozˇne´ ho sta´hnout na stra´nka´ch http://www.fckeditor.net/ v sekci download.

Integrace editoru do webovy´ch stra´nek je o neˇco obtı´zˇneˇjsˇı´, nezˇ u editoru TinyMCE, cozˇ mu˚zˇe mı´t souvislost s mozˇnostı´ placene´ podpory. Po stazˇenı´ a rozbalenı´ souboru jsou v adresa´rˇi slozˇky editor a samples s neˇkolika soubory. Pomocı´ prˇı´kladu˚ vsˇak lze snadno odvodit, jak dany´ editor zakomponovat do stra´nek.

Na rozdı´l od TinyMCE ma´ FCKeditor pouze souborovy´ manager, proto mnoho webo- vy´ch vy´voja´rˇu˚, kterˇı´ potrˇebujı´ do sve´ho redakcˇnı´ho syste´mu komplexneˇjsˇı´ rˇesˇenı´, zu˚sta´vajı´

u TinyMCE i prˇes me´neˇ vy´hodne´ licencˇnı´ podmı´nky a zpoplatneˇne´ pluginy.

Mezi prˇednosti tohoto editoru patrˇı´ automaticka´ detekce jazyka, nemusı´ se tedy spe- cia´lneˇ stahovat a nastavovat jazykova´ mutace.

Specialitou je rˇesˇenı´ nekompatibility prohlı´zˇecˇu˚ Internet Explorer a Firefox. FCKeditor ma´ pro kazˇdy´ prohlı´zˇecˇ zvla´sˇtnı´ ja´dro.

2.1.3 widgEditor

Mezi robustnı´mi WYSIWYG editory se skry´va´ nena´padny´, ale oblı´beny´ editor widg- Editor, ktery´ mnohe´ zaujal svou jednoduchostı´, rychlostı´ a na rozdı´l od TinyMCE nebo FCKeditoru svou datoveˇ mnohem mensˇı´ velikostı´.

Autor uvolnil editor pod licencı´ GPL a da´le jej prˇestal vyvı´jet. Dı´ky licenci a prˇehled- nosti ko´du si jej oblı´bilo mnoho webmasteru˚ a vy´voja´rˇu˚. Stoupajı´cı´ obliba widgEditoru donutila autora po trˇech letech k vyda´nı´ nove´ verze s opravami chyb, ktere´ se v pru˚beˇhu cˇasu objevili. Byl take´ prˇislı´ben vy´voj nove´ verze editoru.

Za´kladnı´ vlastnosti editoru jsou oproti vy´sˇe zmı´neˇny´m editoru˚m strohe´. Editor umı´

pouzˇı´vat tucˇny´ text, kurzı´vu, vkla´dat odkazy, obra´zky, seznamy, odstavce, nadpisy a

(27)

Obra´zek 6: WYSIWYG editor widgEditor

zobrazit zdrojovy´ ko´d, cozˇ vsˇak mnoha lidem vyhovuje a dı´ky jednoduchosti a prˇehlednosti je mozˇne´ editor vcelku snadno modifikovat.

Je ho mozˇne´ sta´hnout na adrese http://themaninblue.com/experiment/widgEditor/.

Implementace do webovy´ch stra´nek je velmi jednoducha´. Po stazˇenı´ a rozbalenı´ sou- boru stacˇı´ v cı´love´m webove´m dokumentu do hlavicˇky vlozˇit externı´ JavaScriptovy´ sou- bor s editorem a na´sledneˇ budou vsˇechna textova´ pole <textarea> nahrazena WYSIWYG editorem. To sice vzˇdy nemusı´ vyhovovat, ale na druhou stranu nenı´ potrˇeba zˇa´dna´ dalsˇı´

nastavenı´.

Dı´ky svojı´ prˇehlednosti a dobrˇe cˇitelne´mu zdrojove´mu ko´du je tento editor vhodny´

ke studijnı´m u´cˇelu˚m.

2.1.4 Bronziho editor

Poslednı´ editor, o ktere´m bych se ra´d zmı´nil, je Bronziho editor, ktery´ je jeden z velmi nadeˇjny´ch a jeden z prvnı´ch cˇesky´ch projektu˚ zameˇrˇeny´ch na vytva´rˇenı´ validnı´ho HTML a XHTML obsahu pro webove´ stra´nky pomocı´ JavaScriptove´ho WYSIWYG editoru.

Za´meˇrem autora je svobodne´ sˇı´rˇenı´ a modifikace aplikace podle potrˇeb uzˇivatele a proto je program uvolneˇn pod licencı´ GPL a LGPL.

Je mozˇne´ ho sta´hnout na stra´nka´ch http://www.bronzi.cz/ spolu s dalsˇı´mi projekty.

Podle autorova na´zoru se veˇtsˇina online WYSIWYG editoru˚ pouzˇı´vajı´cı´ch v redakcˇ- nı´ch syste´mech snazˇı´ o implementaci mnoha funkcı´, ktere´ vsˇak nemajı´ velkou vyuzˇitelnost.

Proto se snazˇı´ vyhnout situaci, kdy tvu˚rci webovy´ch stra´nek pracneˇ omezujı´ funkce edi- toru za u´cˇelem zabra´neˇnı´ znehodnocenı´ designu stra´nek nezkusˇeny´mi uzˇivateli, kterˇı´ by

(28)

2 WYSIWYG XHTML editory 28

Obra´zek 7: WYSIWYG editor Bronzi

Obra´zek 8: Vzhled Microsoft Word 2007 se pokousˇeli vylepsˇit svu˚j prˇı´speˇvek ru˚zny´mi nevhodny´mi vylepsˇenı´mi.

Aktivace editoru je velice snadna´ a dobrˇe vysveˇtlena´ a zna´zorneˇna´ na webovy´ch stra´n- ka´ch autora. Pro stazˇenı´ a rozbalenı´ stacˇı´ do dokumentu, kde se ma´ nacha´zet editor vlozˇit odkaz na externı´ soubor se samotny´m skriptem, na´sledneˇ vlozˇit jednoduchou konfiguraci a nakonec nastavit elementu <textarea>, ktery´ ma´ by´t prˇekonvertova´n na WYSIWYG editor, identifika´tor „textarea“.

Graficke´ rozhranı´ bylo znatelneˇ inspirova´no nejnoveˇjsˇı´mi verzemi aplikace Microsoft Word1a proto bude pro mnoho uzˇivatelu˚ velky´m prˇı´nosem jeho velmi lı´bivy´ a poveˇdomy´

vzhled.

Autor da´le take´ pracuje na vlastnı´m souborove´m a obra´zkove´m manazˇeru.

1Obra´zek cˇ. 8, zdroj: http://myego.cz/item/microsoft-office-2007-o-deset-let-pred-konkurenci

(29)

2.2 Princip JavaScriptovy´ch WYSIWYG editoru ˚

Za´kladnı´m principem, na ktere´m jsou postaveny JavaScriptove´ WYSIWYG editory, je vyuzˇitı´ renderovacı´ho ja´dra prohlı´zˇecˇe pro zobrazenı´ editovane´ nebo tvorˇene´ webove´

stra´nky a za´rovenˇ vyuzˇitı´ specia´lnı´ch funkcı´ ja´dra pro mozˇnost editace dokumentu.

Vy´sledkem je pak rozhranı´, ve ktere´m je mozˇno za´rovenˇ videˇt na´hled dokumentu a soucˇasneˇ jej editovat. Dı´ky tomu je na´hled generova´n renderovacı´m ja´drem prohlı´zˇecˇe, cozˇ zajisˇt’uje pozdeˇjsˇı´ shodne´ zobrazenı´ stra´nky v norma´lnı´m webove´m rezˇimu prohlı´zˇecˇe.

2.2.1 Zacˇleneˇnı´ editoru do stra´nek

Aby bylo mozˇne´ editor pouzˇı´t pouze v urcˇene´ oblasti vyhrazene´ editoru, je nutno edito- vanou oblast uzavrˇı´t do urcˇite´ho elementu. Editaci pouze vybrane´ho elementu je mozˇne´

docı´lit s pouzˇı´tı´m atributu contenteditable vytvorˇene´m spolecˇnostı´ Microsoft a zakompo- novane´m od prohlı´zˇecˇe Microsoft Internet Explorer 5.5. Tento atribut vsˇak nenı´ podpo- rova´n ja´drem Gecko. Neexistenci tohoto atributu vsˇak v tomto ja´drˇe nahrazuje vlastnost designMode, ktera´ nabı´zı´ obdobnou funkcionalitu jako atribut contenteditable.

Z tohoto du˚vodu musı´ vsˇechny nejpouzˇı´vaneˇjsˇı´ editory tento proble´m specia´lneˇ ob- cha´zet. Vytvorˇı´ se pomocna´ webova´ stra´nka s minima´lnı´m obsahem, u ktere´ se zapne editacˇnı´ mo´d. Na´sledneˇ v cı´love´m dokumentu s WYSIWYG editorem je pouzˇit element

<frame>, <iframe> nebo <object> podporujı´cı´ vkla´da´nı´ externı´ho dokumentu jako svu˚j obsah, cˇı´mzˇ vznikne vy´sledny´ efekt vyhrazene´ editovatelne´ oblasti.

Mozˇnost editova´nı´ proste´ho textu vsˇak nenı´ nic vy´jimecˇne´ho a tuto vlastnost umozˇnˇuje i tag <textarea> . Proto je nutno na klientske´ straneˇ vytvorˇit urcˇitou nadstavbu ovla´dacı´ch prvku˚, ktere´ umozˇnı´ modifikovat HTML ko´d.

2.2.2 Modifikace ko´du dokumentu

Modifikace HTML ko´du dokumentu se prova´dı´ pomocı´ funkce execCommand, ktera´ se vola´ na vzda´lene´m souboru se zapnutou mozˇnostı´ editova´nı´. Jako prˇı´klad bych uvedl prˇı´kaz bold, ktery´ do dokumentu vlozˇı´ znacˇky pro tucˇny´ text, prˇı´padneˇ obklopı´ text oznacˇeny´.

Tato funkce ma´ trˇi parametry, z toho prvnı´ je povinny´ a prˇeda´va´ se jı´m na´zev prˇı´kazu, ktery´ se ma´ prove´st.

Druhy´ nepovinny´ parametr naby´vajı´cı´ booleovsky´ch hodnot „true“ nebo „false“ urcˇuje mozˇnost, zda ma´ by´t uzˇivatel vyzva´n k zada´nı´ dodatecˇny´ch informacı´. Implicitnı´ hodnota

(30)

2 WYSIWYG XHTML editory 30

tohoto parametru je „false“ a tato funkce zatı´m nenı´ prohlı´zˇecˇi podporova´na a nefunguje.

S jejı´m vyuzˇitı´m se pocˇı´ta´ do budoucna.

Trˇetı´ a opeˇt nepovinny´ parametr se pouzˇı´va´ spolu s neˇktery´mi prˇı´kazy, ktere´ vyzˇa- dujı´ prˇeda´nı´ dodatecˇny´ch informacı´ ke spra´vne´mu provedenı´ dane´ho prˇı´kazu. Naprˇı´klad prˇi vkla´da´nı´ odkazu je potrˇeba funkci informovat o adrese, kam ma´ odkaz odkazovat, cozˇ by meˇl norma´lneˇ zajisˇt’ovat druhy´ nepovinny´ parametr. Vzhledem k nefunkcˇnosti druhe´ho parametru je nutne´ zjistit potrˇebne´ informace rucˇneˇ. Mozˇnostı´ je neˇkolik, od JavaScripto- ve´ho prˇı´kazu prompt, ktery´ pomocı´ dialogove´ho okna pozˇa´da´ uzˇivatele o zada´nı´ urcˇity´ch informacı´, po neˇktery´ vstupnı´ dialogovy´ formula´rˇovy´ prvek. Takto zı´skana´ data se jesˇteˇ musı´ oveˇrˇit. Pokud uzˇivatel zadal korektnı´ data, jsou prˇeda´na jako trˇetı´ parametr funkce execCommand.

2.2.3 Validita ko´du

Bohuzˇel kazˇdy´ webovy´ prohlı´zˇecˇ ma´ odlisˇnou implementaci funkce execCommand, kdy naprˇı´klad Internet Explorer a Opera vkla´da´ vsˇechny znacˇky velky´mi pı´smeny a Firefox pouzˇı´va´ rˇa´dkovy´ tag span s vlozˇeny´m stylem. Aby pra´ce s funkcı´ execCommand nebyla azˇ tak snadna´, prohlı´zˇecˇe nepodporujı´ stejne´ prˇı´kazy nebo jejich vykona´va´nı´ neprova´deˇjı´

u´plneˇ stejneˇ. To znamena´, zˇe neˇktere´ prˇı´kazy nelze pouzˇı´t, pokud chceme docı´lit jednot- ne´ho rozhranı´ ve vsˇech optimalizovany´ch prohlı´zˇecˇı´ch. Prˇehledne´ porovna´nı´ kompatibility prˇı´kazu˚ v jednotlivy´ch prohlı´zˇecˇı´ch poskytuje server www.quirksmode.org2.

Funkce execCommand nenı´ jedinou prˇeka´zˇkou prˇi modifikaci zdrojove´ho ko´du doku- mentu. Velky´m proble´mem jsou samotne´ webove´ prohlı´zˇecˇe, ktere´ si prˇi rucˇnı´m vkla´da´nı´

ko´du bez pouzˇitı´ funkce execCommand, prˇeva´deˇjı´ zdrojovy´ ko´d do sve´ vlastnı´ vnitrˇnı´

srozumitelne´ syntaxe. To je prˇı´cˇinou, procˇ se musı´ ko´d vytva´rˇene´ webove´ stra´nky prˇi prˇe- pnutı´ do textove´ho mo´du nebo odesı´la´nı´ na server prˇevalidovat. Du˚vod, procˇ webove´

prohlı´zˇecˇe prˇizpu˚sobujı´ modifikovany´ obsah, pramenı´ ze snahy opravenı´ chyb v ko´du a snahou umozˇnit zobrazenı´ i nevalidnı´m a sˇpatneˇ napsany´m dokumentu˚m.

2.2.4 Graficke´ rozhranı´

Z du˚vodu˚ uzˇivatelske´ prˇı´veˇtivosti a jednoduchosti ovla´da´nı´ je potrˇeba, aby webove´ WY- SIWYG editory meˇly prˇı´veˇtive´ graficke´ rozhranı´. Vzhledem k prakticky monopolnı´mu

2http://www.quirksmode.org/dom/execCommand.html

(31)

Obra´zek 9: Graficke´ ovla´dacı´ rozhranı´ aplikace OpenOffice.org Writer 2.3.0 postavenı´ komercˇnı´ch produktu˚ spolecˇnosti Microsoft se stalo jı´m pouzˇı´vane´ graficke´

ovla´da´nı´ nepsanou podmı´nkou, pro vesˇkere´ graficke´ aplikace.

Prˇı´klad takove´ho graficke´ho rozhranı´ je mozˇne´ videˇt na obra´zku cˇ. 9 aplikace Open- Office.org Writer ve verzi 2.3.0. Je zde patrne´ rozdeˇlenı´ na trˇi cˇa´sti.

Prvnı´ cˇa´st je urcˇena pro rozsa´hla´ menu a podmenu, ktera´ umozˇnˇujı´ komplexnı´ ovla´- da´nı´ nebo prˇizpu˚sobenı´ aplikace. Tato nabı´dka je vsˇak pro mnohe´ uzˇivatele z pocˇa´tku znacˇneˇ neprˇehledna´, a pokud uzˇivatel nepotrˇebuje vyuzˇı´t komplexnost cele´ho programu, je pro neˇho zbytecˇne´ zna´t dopodrobna vsˇechna jejı´ za´koutı´. Z tohoto du˚vodu existuje panel na´stroju˚ a hlavnı´ menu uzˇivatel prakticky nepotrˇebuje vyuzˇı´vat. Obra´tı´ se na neˇj jen pokud potrˇebuje prˇenastavit program nebo pouzˇı´t neˇkterou z pokrocˇilejsˇı´ch funkcı´, kterou mu nenabı´zı´ panel na´stroju˚.

Druha´ cˇa´st, ktere´ se rˇı´ka´ panel na´stroju˚, se skla´da´ z te´maticky´ch podnabı´dek na´stroju˚

pro rozlicˇne´ cˇinnosti. Kazˇdy´ na´stroj ma´ svou vlastnı´ ikonku nebo nabı´dku a cely´ panel umozˇnˇuje za´kladnı´ pra´ci s dokumentem, jeho nacˇtenı´, ulozˇenı´ nebo tisk. Neˇktera´ tlacˇı´tka jsou pouze dvoustavova´ a vztahujı´ se k editovane´mu textu a jeho forma´tova´nı´. Ukazujı´, v jake´m forma´tova´nı´ se nacha´zı´ oznacˇeny´ text, prˇı´padneˇ text nacha´zejı´cı´ se pod aktivnı´m kurzorem. Prˇi pouzˇitı´ teˇchto prvku˚ se zmeˇnı´ jejich stav i forma´tova´nı´ textu. Dı´ky sve´

prˇı´veˇtivosti, na´zornosti a rychle´ dosazˇitelnosti se na´stroje hojneˇ vyuzˇı´vajı´, a proto je jejich pouzˇitı´ ve WYSIWYG editorech nutnostı´.

Ve trˇetı´ cˇa´sti, kterou zmı´nı´m, se nacha´zı´ editacˇnı´ oblast, kde je mozˇne´ sepisovat svu˚j dokument ve WYSIWYG mo´du bez nutnosti znalosti vnitrˇnı´ ko´dove´ struktury dokumentu cˇi syntaxe.

(32)

2 WYSIWYG XHTML editory 32

2.2.5 Ukla´da´nı´ vy´sledku

Kdyby nesˇlo v JavaScriptove´m WYSIWYG editoru vytvorˇeny´ dokument ulozˇit, byl by takovy´ editor zbytecˇny´ a nepouzˇitelny´. Hlavnı´m prˇedpokladem pro ulozˇenı´ vy´sledku je podpora programovacı´ho jazyka pro pra´ci se soubory. JavaScript, ktery´ je pouzˇı´va´n u JavaScriptovy´ch WYSIWYG editoru˚ vsˇak z prakticky´ch du˚vodu˚ tuto funkcionalitu nema´ vu˚bec integrovanou a nepodporuje ji.

Du˚vodem, procˇ JavaScript neumozˇnˇuje pra´ci se soubory je prˇedevsˇı´m bezpecˇnost pro uzˇivatele, jeho osobnı´ data a syste´m. Jelikozˇ se JavaScript prova´dı´ na klientoveˇ pocˇı´- tacˇi, ale skripty se nacˇı´tajı´ ze vzda´lene´ho serveru, neˇkdy i nebezpecˇne´ho a infikovane´ho viry, nenı´ mozˇne´ zarucˇit neza´vadnost nacˇı´tane´ho skriptu. I kdyby tato funkcionalita byla osˇetrˇena neˇjaky´mi bezpecˇnostnı´mi prvky, sta´le by zde bylo velke´ riziko prˇi odhalenı´ chyb v zabezpecˇenı´ a naboura´nı´ se do velke´ho mnozˇstvı´ pocˇı´tacˇu˚ prˇes za´vadny´ JavaScriptovy´

ko´d. Z teˇchto du˚vodu˚ se autorˇi JavaScriptu rozhodli vu˚bec neimplementovat podporu pra´ce se soubory a tak plneˇ eliminovat rizika spojene´ se zneuzˇitı´m dane´ funkcionality.

Pro WYSIWYG editory to vsˇak znamena´ dalsˇı´ proble´m a to jak vyrˇesˇit ukla´da´nı´ sou- boru˚. Jednou z mozˇnostı´ je zobrazit na´hled dokumentu v nove´m okneˇ prohlı´zˇecˇe a vyuzˇı´t mozˇnosti ulozˇenı´ webove´ stra´nky prostrˇednictvı´m samotne´ho webove´ho prohlı´zˇecˇe. Tento zpu˚sob vsˇak nenı´ prˇı´lisˇ vhodny´ naprˇı´klad pro redakcˇnı´ syste´my nebo pro upravova´nı´ cˇa´sti obsahu webove´ stra´nky kdesi na Internetu, protozˇe by uzˇivatel musel pomocı´ prohlı´zˇecˇe pracneˇ ukla´dat svu˚j vy´tvor na loka´lnı´ disk a na´sledneˇ se prˇipojovat prˇes FTP protokol a nahra´vat modifikovane´ soubory na vzda´leny´ server.

Proto se pro ukla´da´nı´ nebo spı´sˇe odesı´la´nı´ dokumentu˚ pouzˇı´va´ element <form> umozˇ- nˇujı´cı´ seskupit neˇkolik ovla´dacı´ch polı´ do jednoho formula´rˇe, ktery´ je mozˇne´ najednou odeslat metodami post nebo get na libovolnou adresu, ktera´ s teˇmito u´daji da´le pracuje.

Veˇtsˇinou se jedna´ o soubor umı´steˇny´ na serveru obsahujı´cı´ PHP skript, ktery´ prˇijme po- slana´ data a mu˚zˇe s nimi da´le pracovat, naprˇı´klad ulozˇit do databa´ze nebo poslat klientovi vygenerovany´ dokument se specia´lnı´ hlavicˇkou, ktera´ vyzve uzˇivatele k ulozˇenı´ jeho pra´ce na loka´lnı´ disk.

Dalsˇı´m rˇesˇenı´m je pouzˇı´t velmi popula´rnı´ technologii AJAX, pomocı´ nı´zˇ je zdrojovy´

ko´d, jako v prˇı´padeˇ formula´rˇove´ho elementu, odesla´n na specia´lnı´ soubor naprˇı´klad s PHP skriptem. PHP soubor pro zpracova´nı´ dat na serverove´ straneˇ se pro pouzˇitı´ formula´rˇe a technologie AJAX shoduje. Vy´hodou AJAXu oproti formula´rˇove´mu odesı´la´nı´ je prˇe-

(33)

devsˇı´m v mozˇnosti ponecha´nı´ sta´vajı´cı´ stra´nky a rozepsane´ho textu anizˇ by se stra´nka musela znovu nacˇı´tat nebo se musela pracneˇ posı´lana´ data na server odesı´lat zpeˇt klien- tovi pro zobrazenı´ na noveˇ nacˇı´tany´ch stra´nka´ch. V prˇı´padeˇ AJAXu tedy skript pouze odesˇle data na server a vycˇka´va´ na odpoveˇd’. Pokud server bude zrovna neaktivnı´, mu˚zˇe WYSIWYG editor na tento stav upozornit.

Nevy´hodou AJAXove´ho a formula´rˇove´ho rˇesˇenı´ je nutnost pouzˇitı´ serveru.

2.2.6 Omezenı´ JavaScriptovy´ch WYSIWYG editoru˚

Jeden z hlavnı´ch proble´mu˚ a omezenı´ JavaScriptovy´ch WYSIWYG editoru˚ je specia- lizace pouze na urcˇitou skupinu jader umozˇnˇujı´cı´ pouzˇı´t vlastnosti pro editova´nı´ doku- mentu prˇı´mo ve webove´m prohlı´zˇecˇi. Z tohoto du˚vodu jsou neˇkterˇı´ uzˇivatele´ zameˇrˇenı´

na exoticˇteˇjsˇı´ graficke´ nebo textove´ prohlı´zˇecˇe znevy´hodneˇni a WYSIWYG editor jim pravdeˇpodobneˇ nebude fungovat nebo nebude fungovat optima´lneˇ.

Souvisejı´cı´m omezenı´m je pouzˇitelnost na mobilnı´ch, PDA a jiny´ch specia´lnı´ch zarˇı´- zenı´ch. Tato vcelku mala´ a specia´lnı´ zarˇı´zenı´ jsou omezena svou velikostı´ a tudı´zˇ velikostı´

pameˇti, vy´konem procesoru apod. Proto majı´ veˇtsˇinou znacˇneˇ omezene´ a upravene´ pro- hlı´zˇecˇe z du˚vodu snı´zˇenı´ na´rocˇnosti a jejich ja´dro nemusı´ podporovat vsˇechny specia´lnı´

funkce vyzˇadovane´ WYSIWYG editorem.

(34)

3 Vy´voj aplikace 34

3 Vy´voj aplikace

Za´kladnı´ principy WYSIWYG JavaScriptovy´ch editoru˚ vypadajı´ jednodusˇe, ale samotny´

vy´voj aplikace je mnohem slozˇiteˇjsˇı´ a obtı´zˇneˇjsˇı´, nezˇ se zprvu mohlo zda´t.

Nejveˇtsˇı´m proble´mem prˇi vy´voji aplikace se stala nekompatibilita a rozdı´lne´ chova´nı´

webovy´ch prohlı´zˇecˇu˚. Mnohdy urcˇita´ funkcionalita bezchybneˇ fungovala v prohlı´zˇecˇi Firefox nebo Opera, avsˇak jizˇ nikoliv v prohlı´zˇecˇi Internet Explorer. Mnohe´ opravy chyb takovy´chto nekompatibilit a rozdı´lu˚ trvaly neˇkdy pa´r hodin nebo dokonce i cely´ den, kdy byla prˇepsa´na polovicˇka ko´du.

Jizˇ prˇed zapocˇetı´m programu jsem veˇdeˇl, zˇe se program musı´ da´t snadno konfigurovat a prˇizpu˚sobit dle aktua´lnı´ch potrˇeb webmastera cˇi uzˇivatele. Z tohoto du˚vodu jsem se rozhodl, aby bylo mozˇno nakonfigurovat vı´ce editoru˚ s ru˚zny´mi menu za´rovenˇ na jedne´

stra´nce, cesty k souboru˚m a obsahy jednotlivy´ch menu.

Aby se navza´jem ru˚zne´ a prˇedem nezna´me´ kopie editoru v jedne´ stra´nce neovlivnˇovaly nebo nebyly ovlivneˇny jiny´m ko´dem umı´steˇny´m na stra´nce, bylo potrˇeba jej uzavrˇı´t do objektove´ho modelu. Proto je editor rozdeˇlen do cˇtyrˇ za´kladnı´ch cˇa´stı´.

3.1 Konfigurace

Prvnı´ ze cˇtyrˇ za´kladnı´ch cˇa´stı´ je pole editory, ktere´ slouzˇı´ pro za´kladnı´ konfiguraci jednotlivy´ch editoru˚. Jednotlive´ editory se do pole prˇida´vacı´ pomocı´ prˇı´kazu:

editory.push([”id”, ”menu”, ”umı´steˇnı´ editoru”, ”typ”]);

Tı´mto prˇı´kazem se do pole editory prˇida´vajı´ za´znamy s polem obsahujı´cı´ cˇtyrˇi para- metry, na za´kladeˇ ktery´ch je pak generova´n WYSIWYG editor.

Prvnı´ parametr „id“ identifikuje element, mı´sto ktere´ho se ma´ vlozˇit WYSIWYG editor. Je nutne´, aby byl vyplneˇn. Vkla´da´nı´ editoru nenı´ omezeno pouze na elementy

<textarea> jako u mnoha jiny´ch editoru˚, ale je mozˇne´ jej pouzˇı´t i na jine´ tagy. Naprˇı´klad pro div obsahujı´cı´ provizornı´ jednodusˇsˇı´ editor tvorˇeny´ formula´rˇem. Identifika´tor musı´

by´t na stra´nce unika´tnı´ a v elementu se zapisuje jako atribut id. Pokud takovy´to element s identifika´torem na stra´nce nenı´, dany´ editor nebude vytvorˇen a pokracˇuje se dalsˇı´m za´znamem.

Druhy´m parametrem je „menu“ slouzˇı´cı´ pro identifikaci nabı´dky, ktera´ ma´ by´t pro dany´

editor pouzˇita. Tato nabı´dka se nastavuje v konfiguraci konstruktoru a je zde mozˇne´ si

(35)

jednodusˇe vytvorˇit libovolne´ menu z jednotlivy´ch funkcı´ editoru. Du˚vodem, procˇ se musı´

definovat menu, je variabilita aplikace. Takto je mozˇne´ kazˇde´mu editoru na stra´nce prˇirˇadit odlisˇne´ menu dle specificky´ch pozˇadavku˚.

Trˇetı´ parametr slouzˇı´ pro informova´nı´ genera´toru editoru˚, kde se nacha´zı´ soubor temp.html, ktery´ je pouzˇı´va´n jako hlavnı´ soucˇa´st ve WYSIWYG rozhranı´ a nad ktery´m se aktivuje editacˇnı´ mo´d ja´dra.

Cˇtvrty´ a nepovinny´ parametr je urcˇen prˇedevsˇı´m k testovacı´m u´cˇelu˚m. Urcˇuje, jaky´

element se ma´ pouzˇı´t pro WYSIWYG rozhranı´. V poslednı´ verzi jsou implemento- va´ny dveˇ, ale je mozˇne´ snadno do budoucna prˇidat i dalsˇı´. Jako prvnı´ a za´kladnı´ je nastaven element <iframe>, jelikozˇ druha´ mozˇnost pouzˇı´t element <object> nenabı´zı´

tak rozsa´hle´ mozˇnosti kvu˚li sˇpatne´ kompatibiliteˇ prohlı´zˇecˇu˚ a prˇedevsˇı´m velmi chabe´

podporˇe ze strany Internet Exploreru. Zatı´mco <iframe> je generova´n pomocı´ funkce document.createElement, u objectu se musı´ obdobnou funkcı´ nejprve vytvorˇit obal z elementu <div> a azˇ pote´ se do neˇho pomocı´ funkce innerHTML vlozˇı´ ko´d ele- mentu <object>. Tento postup je nutny´, jelikozˇ pokud se vkla´da´ dany´ ko´d prˇed element

<textarea>, cozˇ je nejcˇasteˇjsˇı´ pouzˇitı´, Internet Explorer vypı´sˇe chybovou hla´sˇku „Ne- zna´ma´ chyba prˇi beˇhu programu“ a editor v tomto prohlı´zˇecˇi nebude fungovat. V ostatnı´ch prohlı´zˇecˇı´ch proble´m nenastal. I po pracne´m rˇesˇenı´ tohoto proble´mu se pozdeˇji uka´zaly dalsˇı´ nevy´hody a proble´my, procˇ mı´sto perspektivnı´ho elementu <object> pouzˇı´t jizˇ ne- modernı´ <iframe>, ktery´ se pouzˇı´va´ ve vsˇech ostatnı´ch JavaScriptovy´ch WYSIWYG editorech. Jednou z dalsˇı´ch mozˇnostı´ je pouzˇitı´ element <div> se zapnutou vlastnostı´

contenteditable, avsˇak vzhledem k nemozˇnosti pouzˇitı´ te´to vlastnosti v ja´drech Gecko nebyla zatı´m tato mozˇnost implementova´na a odzkousˇena.

3.2 Inicializace editoru

Druha´ ze za´kladnı´ch cˇa´stı´ WYSIWYG editoru je inicializace editoru. Inicializace pro- gramu se nacha´zı´ v objectu editor ini, ktera´ obsahuje dveˇ funkce, a to funkci inicializuja generuj.

3.2.1 Funkce inicializuj

Funkce inicializuj ma´ za cı´l zajistit spusˇteˇnı´ druhe´ inicializacˇnı´ cˇa´sti v okamzˇiku, kdy bude webova´ stra´nka plneˇ nacˇtena. Jedna´ se prˇedevsˇı´m o proble´m, kdy webove´ stra´nky nejsou

References

Related documents

Důvod, proč jsou zapotřebí dva, je následující: Pokud by při konstantním tlaku tedy i indexu lomu uvnitř trubice interferometru, byla fáze výstupního paprsku π/2, nebylo

Povrch základního materiálu je dokonale hladký (bez rýh), patrné jsou pouze místní nerovnosti.. 4.4a: Po mechanickém broušení a leštění jsou zrna materiálu

För övrigt arbeta vi ju inom klubben och dess styrelse på att göra våra möten så kultiverade och givande, som över huvud taget är möjligt, med de små medel och den

Ze srovnání vlastností obou typů algoritmů vyplývá vhodnost explicitního algoritmu v případech analýzy velmi rychlých dějů na topologicky složitých prostorových sítích.

Protozˇe metoda, pomocı´ nı´zˇ ZS pracuje, ma´ na vstupu rˇeteˇzec prˇedstavujı´cı´ konkre´tnı´ rˇa´dek, musı´ se cely´ text te´to metodeˇ prˇedat rˇa´dek

kvällen, då var det slut för veckan. ett Fader vår. Det är föreningar och kaos av allting. Och att vara bonddräng, sådant arbete anses alltför simpelt. Så

Al24 Al_DiffPressPrb A Positive Differential pressure probe alarm Al25 Al_DiffPress M Positive Differential pressure alarm Al26 Al_UserFilterPress A Positive Cold

le&amp;is, non poteft non medium univerfale ex- cedere viginti. In negotio vero tali, iparfim exempla lunt fumenda , icilicet, Epocha£ tam majoris quam minoris duracionis , &amp;