iCalendar

Z Multimediaexpo.cz

iCalendar je standard (RFC 5545) pro výměnu kalendářových dat. Je též znám pod zkratkou iCal, což je též jméno kalendářového programu firmy Apple, který je jedním z programů, který tento formát využívá. Tento formát též podporují Mozilla Sunbird, Novell Evolution či třeba Windows Calendar.

iCalendar umožňuje uživatelům posílat žádosti k naplánování schůzky nebo úkolu ostatním uživatelům prostřednictvím standardního emailu. Příjemce emailové zprávy s takovýmto obsahem může jednoduše odesilateli odpovědět stejnou cestou (podmínkou je programové vybavení pro zpracování těchto dat), včetně možnosti úpravy navržených parametrů schůzky resp. úkolu. Tento standard je podporován velkým množstvím programových produktů. Data iCalendar jsou typicky používána ve spojení s emailovou komunikací, standard je ovšem navržen tak, aby byl nezávislý na přenosovém protokolu. Například je možné tato data sdílet pomocí protokolu WebDAV, nebo SyncML. Jednoduché webové servery (poskytující pouze protokol HTTP) jsou nezřídka používány ke zveřejňování informací o individuálních plánech událostí, akcí a osobním pracovním vytížení. Pro zobrazení těchto informací v HTML (XHTML) lze použít například mikroformát hCalendar, který slouží k přesné interpretaci dat iCalendar do HTML.

Obsah

Základní specifikace

Formát iCalendar byl navržen skupinou Calendaring and Scheduling Working Group (kterou založil pan Anik Ganguly z Open Text Corporation) ze sdružení Internet Engineering Task Force (zkratka IETF, česky „Komise techniky Internetu“) a autory jsou pánové Frank Dawson z Lotus Development Corporation a Derik Stenerson z Microsoft Corporation. Je založen na starším formátu vCalendar, jehož průmyslovou specifikaci vytvořili v ICM (Internet Mail Consortium)

Typ obsahu podle MIME je text/calendar.

Soubor s příponou ics označuje soubor obsahující informace kalendáře a plánování odpovídajícího typu dle MIME.

Soubor s příponou ifb obsahuje informace o volném anebo obsazeném čase v souladu s MIME typem.

V operačních systémech firmy Apple odpovídají těmto dvěma souborovým příponám kódy iCal a iFBf.

Data v souboru dle standardu iCalendar jsou prostý ASCII text, řádek je ukončen znakem CRLF (hex: 0D0A). Délka řádku může být omezena na 75 bytů (ne znaků). Když jsou data příliš dlouhá, pokračují na novém řádku a zde jsou uvozena znakem mezera (hex: 20) nebo tabulátorem (hex: 09). Pokud je potřeba uvést v datech zalomení řádku, je toto zakódováno sekvencí \n (hex: 5C6E).

Hlavní objekty

Objekty na nejvyšší úrovni jsou Hlavní objekt kalendáře (Calendaring Core Object) a Hlavní objekt plánování (Scheduling Core Object). To jsou soubory informací dat kalendáře a plánovače. Nejčastěji obsahují data informace právě jednoho samostatného iCalendar objektu, je nicméně možné seskupit několik objektů za sebe. První řádek datového souboru musí být: BEGIN:VCALENDAR, a poslední řádek END:VCALENDAR, obsah souboru mezi těmito dvěma řádky se nazývá icalbody. Obsah těla objektu iCalendar (icalbody) je sekvencí kalendářových vlastností a jedné nebo více kalendářových komponent. Kalendářové vlastnosti jsou vlastnosti, které se vztahují na popisovaný kalendář jako celek. Kalendářové komponenty jsou soubor vlastností, které vyjadřují právě nějakou část tohoto kalendáře (mohou popisovat například událost, úkol, informace o časovém pásmu, volném nebo obsazeném čase anebo budík). Příklad objektu iCalendar, který popisuje Den oslav dobytí Bastily jako událost konající se od 14. července 1997 17:00 (UTC) do 15. července 1997 03:59:59 (UTC)

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
DTSTART:19970714T170000Z
DTEND:19970715T035959Z
SUMMARY:Bastille Day Party
END:VEVENT
END:VCALENDAR

Existuje mnoho různých typů kalendářových komponent popsaných standardem iCalendar, viz následující popis.

událost (VEVENT)

Komponenta VEVENT umožňuje sdružení vlastností, které popisují v úseku času naplánovanou událost. Potvrzená událost například způsobí, že čas jejího konání je považován za obsazený, může být ovšem nastavena jako TRANSPARENT což umožní změnu této interpretace. Událost VEVENT může obsahovat komponentu VALARM. Každá událost má vlastnosti DSTART, která definuje čas započetí, a DTEND definující čas ukončení. Pokud se jedná o opakovanou událost, pak DTSTART udává čas prvního spuštění. Opakované události bez přesné specifikace času (např. výročí) jsou také komponenty VEVENT. Tyto události mají vlastnost DSTART typu DATE namísto DATE-TIME a nemusí obsahovat vlastnost DTEND.

úkol (VTODO)

VTODO je komponenta popisující nějaký úkol (něco, co je třeba vykonat). Následující příklad popisuje úkol na 15. února 1998. Zvukové upozornění bylo nastaveno tak, aby upozornilo uživatele kalendáře v poledne, den před tím, než má být úkol splněn, a má se opakovat 4 krát v intervalu jedné hodiny. Definice úkolu byla od vytvoření dvakrát upravena.

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//ABC Corporation//NONSGML My Product//EN
BEGIN:VTODO
DTSTAMP:19980130T134500Z
SEQUENCE:2
UID:uid4@host1.com
ORGANIZER:MAILTO:unclesam@us.gov
ATTENDEE;PARTSTAT=ACCEPTED:MAILTO:jqpublic@host.com
DUE:19980415T235959
STATUS:NEEDS-ACTION
SUMMARY:Submit Income Taxes
BEGIN:VALARM
ACTION:AUDIO
TRIGGER:19980403T120000
ATTACH;FMTTYPE=audio/basic:http://host.com/pub/audio-files/ssbanner.aud
REPEAT:4
DURATION:PT1H
END:VALARM
END:VTODO
END:VCALENDAR

deník (VJOURNAL)

Komponenta VJOURNAL popisuje záznam do deníku. Jednoduše připojí popisnou textovou poznámku k určitému datu kalendáře, může sloužit například k zaznamenávání seznamu aktivit během dne, nebo k popisu akcí vztahujících se k nějakému úkolu. Komponenta VJOURNAL nezabírá v kalendáři žádný čas ani nemá vliv na stav obsazení času (jako TRANSPARENT položka) V praxi se deníkové záznamy příliš nepoužívají, jsou implementovány například v programu Plum Canary's Chirp, který je používá kombinaci VTODO a VJOURAL pro správu projektů. Jsou podporovány také programem KOrganizer, který je součástí balíku KDE.

Příklad:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//ABC Corporation//NONSGML My Product//EN
BEGIN:VJOURNAL
DTSTAMP:19970324T120000Z
UID:uid5@host1.com
ORGANIZER:MAILTO:jsmith@host.com
STATUS:DRAFT
CLASS:PUBLIC
CATEGORY:Project Report, XYZ, Weekly Meeting
DESCRIPTION:Project xyz Review Meeting Minutes\n
 Agenda\n1. Review of project version 1.0 requirements.\n2.
 Definition
 of project processes.\n3. Review of project schedule.\n
 Participants: John Smith, Jane Doe, Jim Dandy\n-It was
  decided that the requirements need to be signed off by
  product marketing.\n-Project processes were accepted.\n
 -Project schedule needs to account for scheduled holidays
  and employee vacation time. Check with HR for specific
  dates.\n-New schedule will be distributed by Friday.\n-
 Next weeks meeting is cancelled. No meeting until 3/23.
END:VJOURNAL
END:VCALENDAR

Volný a obsazený čas (VFREEBUSY)

Komponenta popisuje požadavek na zjištění stavu obsazení v určitém čase, popisuje odpověď na tento dotaz a popisuje také sestavu pro zveřejnění obsazeného času.

Dle normy RFC2445 je popsána takto:

Pro zjištění stavu obsazení času existuje vlastnosti ATTENDEE specifikující uživatele kalendáře, jehož stav času je dotazován, ORGANIZER specifikuje který uživatel kalendáře se ptá a vlastnosti DTSTART a DTEND udávají časové rozmezí v němž je stav zjišťován. Vlastnosti UID a DTSTAMP slouží k určení pořadí dotazů v případě, že jich žádost obsahuje více.
Odpověď na dotaz stavu času obsahuje opět vlastnosti ATTENDEE, která specifikuje odpovídajícího uživatele (vlastník zjisťovaného kalendáře) a ORGANIZERv tomto případě značí původního tazatele – nyní tedy příjemce odpovědi. Vlastnost FREEBUSY určuje stav dotazovaného časového úseku. A opět vlastnosti UID a DTSTAMP určující pořadí ve více dotazech.
K publikování stavu času slouží vlastnosti ORGANIZER, jež i zde značí vlastníka (publikovaného) kalendáře, DTSTART a DTEND jsou časové údaje ohraničující oblast kalendáře označenou jako obsazený čas. Vlastnost FREEBUSY obsahuje popis obsazeného času a DTSTAMP informaci o tom, kdy byl objekt v kalendáři vytvořen.

Příklad publikovaného kalendáře:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//RDU Software//NONSGML HandCal//EN
BEGIN:VFREEBUSY
ORGANIZER:MAILTO:jsmith@host.com
DTSTART:19980313T141711Z
DTEND:19980410T141711Z
FREEBUSY:19980314T233000Z/19980315T003000Z
FREEBUSY:19980316T153000Z/19980316T163000Z
FREEBUSY:19980318T030000Z/19980318T040000Z
URL:http://www.host.com/calendar/busytime/jsmith.ifb
END:VFREEBUSY
END:VCALENDAR

Objekt iCalendar může být umístěn na serveru v souboru s příponou ifb.

další typy komponent

Formát iCalendar definuje dále typy komponent VTIMEZONE (určení časového pásma) a VALARM (definice zvukového upozornění). Některé komponenty mohou obsahovat jiné komponenty (VALARM se zpravidla vyskytuje jako součást jiné komponenty), a mohou být také vytvořeny komponenty, které jsou použity jako součást dále definovaných komponent (to je nejčastěji právě VTIMEZONE).

distribuované aktualizace

Vlastnost UID se používá k usnadnění publikování změn v případě, že dojde ke změně plánování události v kalendáři. Při prvním vytvoření události je jí přiřazen globální unikátní identifikátor. Pokud je později publikována událost se stejným identifikátorem, je původní událost touto nahrazena. Identifikátor 5. srazu skupiny 131 2. semestru hypotetické VŠ může vypadat například Y2007S2C131M5@bigcitycollege.org.

Výměna dat iCalendar

Jak již bylo uvedeno výše, formát iCalendar je určen k popisu kalendářových dat a neobsahuje tedy popis jak s těmito daty pracovat. Proto je třeba použít nějaký jiný protokol pro práci s těmito daty. Těchto protokolů existuje několik, jedním z nich je například iTIP (iCalendar Transport-Independent Interoperability) (RFC 2664) definující protokol pro výměnu dat kalendáře mezi uživateli kalendáře (Calendar Users (CUs)) – kdokoli zahájí libovolnou výměnu dat, stává se Organizátorem (Organizer). Tento standard obsahuje metody: PUBLISH, REQUEST, REPLY, ADD, CANCEL, REFRESH, COUNTER a DECLINE-COUNTER.

Dalším příkladem protokolu pro práci s daty iCal je IMIP (iCalendar Message-based Interoperability Protocol) (RFC 2447), který stanoví metody pro implementaci protokolu iTIP se standardním internetovým poštovním transportním protokolem (email).

Guide to Internet Calendaring (RFC 3283) popisuje vztah mezi formátem iCalendar a různými jinými standardy (současnými i budoucími).

Externí odkazy