Přejít k navigační liště

Zdroják » Webdesign » Tvoříme uživatelské skripty pro Operator: Základy

Tvoříme uživatelské skripty pro Operator: Základy

Články Webdesign

Rozšíření Operator umožňuje uživatelům prohlížeče Firefox používat mikroformáty při každodenní práci s webem. Jeho možnosti lze dále rozšířit pomocí uživatelských skriptů. Základy jejich tvorby si popíšeme v tomto článku. Na příkladu pochopíte, jak skripty fungují a dokážete vytvořit vlastní.

Dnešním článkem začíná několikadílný tutoriál zbývající se tvorbou skriptů pro Operator. Operator je rozšíření prohlížeče Firefox pro práci s mikroformáty. Po instalaci umožňuje Operator spolupráci s několika aplikacemi (např. Yahoo! Maps nebo Google Calendar), pokud chcete využívat jiné aplikace, nezbývá než pro ně vytvořit vlastní skript. Tento tutoriál vám ukáže, jak na to. Celá série je překladem anglického originálu, jehož autorem je vývojář Operatoru Michael Kaply.

Základem všech uživatelských skriptů je javascriptový objekt, obsahující detaily akce nebo mikroformátu, který jím definujeme, a následná registrace tohoto objektu. Jako první krok vytvoříme javascriptový objekt, který popisuje danou akci. Cílem naší akce bude najít nejbližší Pizzerii Domino k adrese, která je zapsána mikroformátem addr (mikroformát pro adresu) na webové stránce. K tomu nám poslouží web www.dominos.com. Všimněte si, že při vyhledávání je celá adresa zakódována v URL. To nám usnadní práci.

Co je Operator?

Operator je rozšíření prohlížeče Firefox, které uživatelům nabízí rozhraní pro práci s mikroformáty. Více se o používání Operatoru dočtete v článku Operator: snadná práce s mikroformáty ve Firefoxu.

Co jsou mikroformáty?

Mikroformáty je způsob vkládání sémantických informací do HTML dokumentů. Hodí se pro zápis kontaktů, událostí a mnohých dalších dat. Více se o nich dočtete v našem seriálu Kódujme sémanticky s mikroformáty.

Častým úkolem, se kterým se při tvorbě akcí setkáte, je sestavení URL, kterou následně Operator načte (stejně dobře ale můžete vytvořit a zavolat celý HTTP dotaz sami včetně posílání POST dat). Náš jednoduchý příklad bude pouze generovat URL a vypadá takto. Probereme si jej postupně.

Popis akce

Příklad začíná definicí javascriptového objektu dominos, který obsahuje základní popis akce. Je to docela jednoduché:

var dominos = {
  description: "Find the nearest Domino's Pizza",
  shortDescription: "Domino's",
  ...
} 

Pokud bychom chtěli vložit popis ve více jazycích, vytvoříme pole obsahující několik překladů (národní znaky je nutné vkládat jako Unikódové sekvence se zpětným lomítkem) např.:

var dominos = {
  description:
    "en-US": "Find the nearest Domino's Pizza",
    "fr-FR": "Trouvez la pizza du domino le plus proche",
    "cs-CZ": "Naju00EDt nejbliu017Eu0161u00ED pizzerii Domino",
    ...
} 

Můžete pro vaši akci určit i ikonu. Web Domina nemá favikonu, ale pokud by ji měl, mohli bychom ji přidat jako:

icon: "http://www.dominos.com/favicon.ico", 

Sémantický obor

V dalším kroku definujeme „sémantický obor“ (semantic scope). Ten název vypadá možná trochu nezvykle, ale nic lepšího mne nenapadlo. Sémantický obor určuje, pro který mikroformát je daná akce definována, a které složky mikroformátu musí být pro její použití přítomny. Např. akce, která přidává událost do kalendáře, může požadovat, aby událost měla nastavené datum svého začátku.

Pokud není pro akci žádná složka mikroformátu povinná, nastavte pouze název mikroformátu na obou stranách výrazu. Pokud požadovaná složka může být v mikroformátu přítomna vícekrát (např. URL v mikroformátu hCard), máte možnost nastavit akci pro každou složku (více o tom později). A takto vypadá sémantický obor naší akce:

scope: {
  semantic: {
    "adr" : "adr"
  }
}, 

To je ten nejjednodušší sémantický obor, jaký jen může být. Pokud bychom chtěli pracovat jen s adresami, které obsahují poštovní směrovací číslo, definovali bychom sémantický obor takto:

scope: {
  semantic: {
    "adr" : "postal-code"
  }
}, 

Pokud má mikroformát, pro který akci vytváříme, vnořené vlastnosti, můžeme i pro ně definovat sémantický obor. Pokud by naše akce měla pracovat jen s mikroformáty hCard, které obsahují adresu s poštovním směrovacím číslem, vypadal by náš sémantický obor takto:

scope: {
  semantic: {
    "hCard" : "adr.postal-code"
  }
}, 

Existují i další typy sémantických oborů, např. obor URL, pokud chceme, aby naše akce fungovala jen pro vybrané domény. Používá jí například uživatelský skript pro corkd.

scope: {
  url: "http://corkd.com"
}, 

Vytvoření akce

Nyní, když máme určeno, pro co se má akce použít, vytvoříme funkci, která vlastní akci vykoná. K tomu slouží funkce doAction:

doAction: function(semanticObject, semanticObjectType, propertyIndex) {
 ...
} 

Její první parametr semanticObject je javascriptový objekt, který reprezentuje mikroformát. Naše akce je cílená na mikroformát adr, který se skládá ze složek jako je street-address, region, locality a postal-code. Tyto složky jsou přístupné jako klasické vlastnosti javascriptového objektu, tedy semanticObject.region nebo semanticObject.locality. Poznamenejme, že k vlastnostem obsahujícím v názvu pomlčku musíme přistupovat skrze alternativní zápis, např.  semanticObject["street-address"].

Druhým parametrem je semanticObjec­tType. Pokud by naše akce pracovala s více mikroformáty, pak by nám tento parametr řekl, jakého typu je první parametr semanticObject. V našem případě bude vždy roven  adr.

Třetí parametr je volitelný a nese název propertyIndex. Pokud v sémantickém oboru specifikujeme vlastnost, která má několik instancí, pak propertyIndex určuje, na které instanci byla akce vyvolána.

Funkce doAction je v akci našeho příkladu zodpovědná za jediný úkol – sestavit URL a vrátit ji jako návratovou hodnotu. Když Operator obdrží z funkce URL, tak tuto adresu jednoduše načte. Pokud by naše akce dělala něco jiného než načtení URL, pak by její návratová hodnota měla být true jako oznámení, že akce byla vykonána. Doporučuji vám podívat se na příklady dalších funkcí doAction.

Zaregistrování akce

Posledním krokem je zaregistrování akce do seznamu všech akcí. Registraci provedeme zavoláním funkce add globálního objektu SemanticActions. První parametr je interní název naší akce. Nemusí být nutně stejný s názvem našeho objektu. Druhým parametrem je náš vytvořený objekt.

SemanticActions.add("dominos", dominos); 

Příklady dalších uživatelských skriptů pro vaše zkoumání najdete na stránce Přehled uživatelských skriptů pro Operator.

Pokračování příště

Zatím jsme probrali základy tvorby uživatelských skriptů. V příštím díle se podíváme na uživatelské skripty, které mění název akce a také na skripty, které dovedou pracovat najednou se všemi mikroformáty na stránce.

Tento text je překladem návodu Creating a Microformat Action User Script (Basic), jehož autorem je Michael Kaply.

Použili jste už k něčemu mikroformáty?

Komentáře

Subscribe
Upozornit na
guest
2 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
View all comments
compare

Uvítal bych alespoň stručné zmínění rozdílů v použití tohohle a skriptů GreaseMonkey.

Martin Hassman

Připravuju článek o Operatoru z pohledu uživatele pro ty, kdo Operator neznají. Tam se myslím rozdíly vyjasní.

Enum a statická analýza kódu

Mám jednu univerzální radu pro začínající programátorty. V učení sice neexistují rychlé zkratky, ovšem tuhle radu můžete snadno začít používat a zrychlit tak tempo učení. Tou tajemnou ingrediencí je statická analýza kódu. Ukážeme si to na příkladu enum.