Tvorba webových stránok – Manuál k redakčnému systému Rheia 1.0, Roman Horváth, © 2015, powered by Rheia

Obsah stránky sa číta, prosím čakajte…

 TWS – Manuál k RS Rheia 1.0 – Obsah  « RSS kanál  |  Zoznam použitých a odporúčaných zdrojov » 

iCalendar otvárané v novom okne
(obvykle ide o externý odkaz) (pozri aj vyhľadávanie iCalendar v Google otvárané v novom okne
(obvykle ide o externý odkaz) je formát vhodný na výmenu informácií medzi aplikáciami alebo systémami. Je podporovaný veľkým množstvom produktov vrátane: Google Calendar, Apple Calendar, IBM Lotus Notes, Yahoo! Calendar, rozšírenie Lightning pre Mozillu Thunderbird, čiastočne Microsoft Outlookom a inými.

 

Na spracovanie udalostí kalendára slúži v RS Rheia modul ical. Prevod textových údajov na záznamy kalendára nemusí byť vždy jednoduchý a priamočiary proces. Údaje o jednej udalosti môžu byť rozmiestnené na viacerých miestach jedinej webovej stránky, napríklad vyjadrené viacerými tabuľkami. Na to, aby boli možnosti kalendára čo najviac univerzálne, bol pre modul ical RS Rheia vyvinutý jednoduchý symbolický jazyk, pomocou ktorého je možné určiť, kde sa nachádzajú údaje spracovateľné modulom ical a ako majú byť spracované.

Inštrukcie v tvare #ical:«inštrukcia»[:«údaje»] sú vkladané priamo do toku zdrojového textu, pričom každá inštrukcia musí byť umiestnená na samostatnom riadku:

#ical:start
Informácia o udalosti, ktorá sa bude konať 8. 9. 2014.
#ical:end

Najväčšiu cenu pre modul ical majú údaje uložené v tabuľkách. Tabuľky otvárajú najviac možností využitia modulu. Modul môže spracovať aj text umiestnený v klasickom odseku, ale tento spôsob použitia poskytuje menej možností a aj keď je priamočiarejší, odporúčame využitie tabuľkovej formy spracovania.

 

Každý záznam iCalendar otvárané v novom okne
(obvykle ide o externý odkaz) je zložený z niekoľkých údajových celkov, ktoré budeme pre potreby tohto článku nazývať atribútmi. Pri tomto pomenovaní ide aj o to, aby sme terminologicky oddelili atribút (field) od poľa (array).

Základom sú atribúty určujúce dátum a čas, resp. rozsah dátumov a časov vzťahujúcich sa k záznamu. Modul ical implementovaný v rámci RS Rheia momentálne podporuje len určenie dátumu/rozsahu dátumov bez času. Ďalšími údajmi, ktoré nás budú zaujímať, sú opis (description – pozri poznámku nižšie), zhrnutie (summary) a kategórie (categories).

Poznámka: Anglické termíny v zátvorkách sú uvedené v terminológii formátu iCalendar otvárané v novom okne
(obvykle ide o externý odkaz).
Poznámka: Kategórie modulu ical nijako nesúvisia s kategóriami RS Rheia, ktorých význam je opísaný napríklad v kapitole Ponuky.

Zhrnutie (summary) principiálne pripomína predmet e‑mailovej správy a opis (description) text e‑mailovej správy. Kategórie (categories) sú kľúčové slová, ktoré nie sú široko podporované nástrojmi, ktoré boli vymenované vyššie, ale dajú sa využiť na jemnejšie odlíšenie záznamov uložených napríklad v jednotlivých stĺpcoch tabuľky.

Textové údaje na spracovanie je do modulu ical možné posielať dvojakým spôsobom:

  1. Blokovo, pričom blok sa začína riadkom s inštrukciou začatia odchytávania textu (#ical:begin – pozri aj príklad použitia vyššie) a končí inštrukciou ukončenia odchytávania textu (#ical:end). Všetok text medzi uvedenými dvoma inštrukčnými riadkami bude spracovaný jednak modulom ical a jednak zvyškom jadra RS Rheia (návštevník uvidí informácie aj vo webovej podobe spracovanej jadrom RS Rheia).
  2. Jednotlivo, inštrukciou modulu data (#ical:data:«riadok údajov»), ktorá riadok údajov s inštrukciou presmeruje výhradne do modulu ical, čo sa dá využiť na „súkromné“ spracovanie údajov modulom (to znamená, že tento riadok nebude spracovaný zvyškom jadra RS Rheia – návštevník na stránke neuvidí žiadnu vizuálnu informáciu o jeho bytí).

Okrem toho podporuje modul ical množstvo inštrukcií slúžiacich predovšetkým na správnu definíciu spôsobu spracovania údajov týmto modulom. Základným princípom je správne definovanie toho, čo sa bude nachádzať v odsekoch textu alebo jednotlivých stĺpcoch tabuľky, ktoré budú poslané modulu ical na spracovanie a nakoniec vykonanie rôznych záverečných úprav už prijatého predspracovaného textu.

 

Modul ical spracuje vždy len ten riadok, ktorý obsahuje dátum v tvare:

  «deň»«mesiac»«rok»

alebo rozsah dátumov v tvare:

  «deň»«mesiac»«nepovinný rok» – «deň»«mesiac»«rok»

V syntaxi je naznačené, že prvý rok rozsahu môže byť vynechaný – v tom prípade sa do dátumu začiatku skopíruje rok uvedený pri dátume konca.

 

Tabuľka inštrukcií modulu ical

V nasledujúcej tabuľke sú zhrnuté a opísané všetky inštrukcie modulu ical. Dvojbodka za názvom inštrukcie znamená, že táto inštrukcia očakáva zoznam parametrov oddelený tabulátormi.

(Použitie tabulátorov súvisí jednak s tým, že modul ical najlepšie funguje s tabuľkami a jednak s tým, že tabulátory sú z pohľadu vzniku možných konfliktov najmenej problémové.)

Okrem prvých troch sú inštrukcie v tabuľke zoradené podľa toho, aký je predpokladaný ich výskyt v zdrojovom texte Rheia. Ústrednou inštrukciou je inštrukcia contentto.

Inštrukcia Opis
start začne zachytávanie a spracúvanie obsahu zdrojového textu modulom ical so súčasným spracovaním ostatnými mechanizmami RS Rheia.
end ukončí zachytávanie a spracúvanie obsahu zdrojového textu modulom ical.
reset vymaže všetky vlastnosti a doteraz vykonané nastavenia modulu ical. Stav zachytávania (ovplyvňovaný inštrukciami startend) nie je touto inštrukciou ovplyvnený.
data: pošle modulu ical jeden riadok na spracovanie, pričom tento riadok nie je spracovaný zvyšnými mechanizmami RS Rheia (z tohto riadka nie je generovaný webový obsah).
default: táto inštrukcia prijíma dvojice parametrov (jednotlivé parametre sú oddeľované tabulátormi), každý nepárny parameter znamená názov atribútu (description, summary, categories, prípadne iné) a párny parameter hodnotu atribútu. Hodnoty budú platné pre všetky nasledujúce vytvárané záznamy, ale môžu byť prekryté inštrukciou ifcontsetdef
Inštrukcia nastaví takzvane predvolené hodnoty zadaných atribútov, pričom ich použitie nie je automatické. Môžeme ich vnímať ako hodnoty, ktoré sú vopred pripravené na použitie. 
Predvolená hodnota môže byť použitá aj na vytvorenie ID pomocou inštrukcie uidparts. Do záznamov iCalendar otvárané v novom okne
(obvykle ide o externý odkaz) bude predvolená hodnota ktoréhokoľvek z týchto atribútov skutočne skopírovaná len v tom prípade, že je pre neho súčasne platné nastavenie aktualizácie prázdneho atribútu inštrukciou updateempty.
uidparts: jednotlivé tabulátormi oddelené parametre tejto inštrukcie určia, ktoré atribúty majú byť použité pri vytváraní unikátneho ID záznamu formátu iCalendar otvárané v novom okne
(obvykle ide o externý odkaz). Názvy parametrov sú zväčša zhodné s názvami atribútov formátu iCalendar otvárané v novom okne
(obvykle ide o externý odkaz). Výnimokou je rezervovaný parameter dates, ktorý by mal byť obsiahnutý v každej takejto definícii a ktorý určuje to, že do ID budú zaradené číselné kódy vyjadrujúce dátumy začiatku a prípadne aj konca obdobia platnosti aktuálneho záznamu.
contentarray: každý parameter tejto inštrukcie určuje názov jedného atribútu, ktorý bude spracovaný ako pole. O tomto spôsobe spracovania sa podrobnejšie píše nižšie v texte kapitoly.
activefilters: táto inštrukcia nastaví aktívne filtre, ktoré budú platné pre každý atribút spracúvaný na podnet inštrukcie contentto
Parametre tejto inštrukcie tvoria štvorice s nasledujúcim významom: 
1. regulárny výraz otvárané v novom okne
(obvykle ide o externý odkaz) určujúci, čo sa bude vyhľadávať týmto filtrom, 
2. názov atribútu, do ktorého môže byť presmerovaná časť výsledku tohto filtra, 
3. šablóna presmerovania – určí, ako bude vyzerať spracovaný údaj v atribúte z bodu 2., 
4. šablóna výsledku – určí, ako bude vyzerať časť atribútu, ktorá bude nahrádzaná (ovplyvňovaná) regulárnym výrazom, po spracovaní týmto filtrom. 
Šablóny presmerovania a výsledku (body 3. a 4.) môžu obsahovať odkazy na skupiny regulárneho výrazu ($1, $2…) i odkazy na predvolené hodnoty atribútov ($location…).
Príklad: 
Nasledujúca štvorica parametrov: 
/#cell#(Mgr|Bc)De#(.*)/i → categories → $1 → denné: $2 ($location) 
bude mať za následok takéto správanie: 
Z prvého parametra vyplýva, že: V každom atribúte spracúvanom na podnet inštrukcie contentto bude bez citlivosti na veľkosť písmen (určuje to modifikátor i uvedený za jadrom regulárneho výrazu, ktorý je v tomto prípade ohraničený znakmi lomky /) vyhľadaný jeden z reťazcov: #cell#MgrDe# alebo #cell#BcDe#. Za týmto reťazcom je očakávaný ľubovoľný obsah určený na zachytenie do takzvanej skupiny (ide o termín z oblasti regulárnych výrazov). Časti reťazcov MgrBc sú zachytené do skupiny číslo jeden a ľubovoľný obsah, ktorý nasleduje za posledným znakom mreže je zachytený do skupiny číslo dva regulárneho výrazu (číslovanie skupín regulárnych výrazov je automatické). 
Z ďalších dvoch parametrov vyplýva, že: Názov atribútu, do ktorého má byť presmerovaná časť údajov, je categories a hodnotou je iba obsah skupiny číslo jeden z regulárneho výrazu ($1). To znamená, že do kategórií pribudne prvok Mgr alebo Bc (podľa toho, čo bude obsahovať skupina číslo jeden). 
A z posledného parametra vyplýva, že: Šablóna, ktorá určuje hodnotu výsledku, obsahuje text „denné:“, odkaz na skupinu číslo dva regulárneho výrazu ($2) a reťazec „ ($location)“, kde $location je odkaz na predvolenú hodnotu atribútu location. To znamená, že výsledok bunky spracovanej týmto aktívnym filtrom bude obsahovať obsah zachytený v skupine číslo dva (čo je ľubovoľný text prítomný za vyhľadávanými reťazcami), pred ním bude text „denné: “ a za ním bude v zátvorke uvedená predvolená hodnota atribútu location.
ifcontsetdef: účelom tejto inštrukcie je dočasné nastavenie predvolenej hodnoty určitého atribútu počas spracovania obsahu daného inštrukciou contentto. Každý jeden parameter obsahuje priradenie predvolenej hodnoty v nasledujúcom tvare: «názov atribútu»:«hodnota atribútu». Poradie parameterov/stĺpcov (oddelených tabulátorom) tejto inštrukcie korešponduje s poradím parametrov/stĺpcov inštrukcie contentto.
prefixcontent: účelom tejto inštrukcie je zariadenie pripojenia zadaného textu pred obsah spracúvaný na základe inštrukcie contentto. Poradie parameterov/stĺpcov (oddelených tabulátorom) tejto inštrukcie korešponduje s poradím parametrov/stĺpcov inštrukcie contentto.
contentto: toto je ústredná inštrukcia spracovania záznamov. Každý parameter tejto inštrukcie určuje zaradenie do spracovania a spôsob spracovania stĺpca tabuľky (prípadne riadka odseku) modulom ical. Ak je parameter neprázdny, tak určuje názov atribútu, do ktorého má byť nasmerovaný obsah neprázdnej bunky tabuľky v tom riadku, ktorý obsahuje platný tvar dátumu alebo rozsahu dátumov. (Ak je na spracovanie prijatý netabuľkový riadok – riadok s odsekom, tak je tento odsek považovaný za jednostĺpcový riadok tabuľky.) 
Ak zadaný názov atribútu nespadá do definície štandardu iCalendar otvárané v novom okne
(obvykle ide o externý odkaz), tak je považovaný za premenovaný a musí byť dodatočne spracovaný inštrukciou moveto (pozri nižšie), inak by nastalo vygenerovanie nekorektných záznamov iCalendar otvárané v novom okne
(obvykle ide o externý odkaz), čo by malo za následok ich odmietnutie externými systémami. 
Ak sú definované aktívne filtre (activefilters – pozri vyššie), tak neprázdny obsah bunky je spracovaný nimi a následne je skontrolované nastavenie inštrukcie updateempty (pozri nižšie). Týmto mechanizmom sú pripravované údaje pre jednotlivé záznamy vo formáte iCalendar otvárané v novom okne
(obvykle ide o externý odkaz).
updateempty: táto inštrukcia očakáva zoznam názvov atribútov (oddelených tabulátorom), ktorých hodnoty budú po spracovaní aktuálneho záznamu naplnené predvolenými hodnotami. Pozor, naplnené budú len tie atribúty, ktorých hodnoty zostanú po spracovaní záznamu prázdne. Spracovaním záznamu sa rozumie riadenie sa všeobecnými pravidlami modulu ical a definíciami, ktoré boli definované najmä inštrukciami contenttoactivefilters.
joinarray: táto inštrukcia je vykonaná na záver spracovania záznamov a jej účelom je záverečné zlúčenie tých hodnôt atribútov, ktoré boli definované ako polia, pričom inštrukcia poskytuje možnosť zadania oddeľovacieho reťazca. Inštrukcia očakáva dvojicu parametrov, z ktorých prvý určuje názov atribútu na zlúčenie a druhý určuje oddeľovací reťazec. Pozor, Rheia automaticky odstraňuje nadbytočné medzery na začiatkoch a koncoch všetkých riadkov a buniek tabuliek, ale toto správanie je možné ovplyvniť rušiacou klauzulou code().
removerepeatingstring: táto inštrukcia je vykonaná na záver spracovania záznamov a jej účelom je odstránenie opakujúcich sa reťazcov v dvoch po sebe nasledujúcich prvkoch poľa. Inštrukcia očakáva dvojicu parametrov, z ktorých prvý určuje názov atribútu na spracovanie a druhý určuje regulárny výraz otvárané v novom okne
(obvykle ide o externý odkaz) definujúci opakujúci sa reťazec. Regulárny výraz rozširuje možnosti inštrukcie, môže ním byť napríklad určené, že reťazec sa musí nachádzať na začiatku hodnôt prvkov poľa a podobne.
moveto: táto inštrukcia je vykonaná na záver spracovania záznamov a jej účelom je presunúť a zlúčiť obsah premenovaného atribútu s obsahom atribútu nesúcim korektný názov štandardu iCalendar otvárané v novom okne
(obvykle ide o externý odkaz). Očakáva trojicu parametrov, z ktorých prvý je názov zdrojového (premenovaného) atribútu, druhý je názov cieľového (korektného) atribútu a tretí je reťazec, ktorý má byť použitý na oddelenie oboch obsahov v prípade, že je druhý z nich neprázdny. Pozor, zdrojový (prvý) atribút bude pripojený na koniec cieľového (druhého), nie naopak.

Keď sú všetky údaje pripravené na publikovanie, modul pošle všetky nasledujúce atribúty záznamov na spracovanie do jadra RS Rheia, ktoré z nich vygeneruje HTML otvárané v novom okne
(obvykle ide o externý odkaz) kód: summary, location, categoriesdescription. Úplne poslednou úpravou je odfiltrovanie všetkých HTML otvárané v novom okne
(obvykle ide o externý odkaz) značiek zo spracovaného obsahu. Takto upravený výsledok je pripravený na prezentovanie vo formáte iCalendar otvárané v novom okne
(obvykle ide o externý odkaz).

 

Príklad využívajúci tabuľku

Spomenuli sme, že na komunikáciu s modulom je lepšie použiť tabuľku, preto uvádzame príklad obsahujúci údaje v tabuľke.

(Pripomíname, že tabuľka je v zdrojovom texte definovaná pomocou riadkov obsahujúcich znak tabulátora, ktorý v tomto manuáli vyjadrujeme značkou  →  a v tomto manuáli taktiež zalamujeme dlhé riadky zdrojového textu, čo je symbolizované znakom – pozri aj: Použitá symbolika a terminológia.)

Nižšie uvedený zdrojový text tabuľky bude na základe inštrukcií modulu ical spracovaný tak, že neprázdne bunky druhého až piateho stĺpca tabuľky budú považované za obsah atribútu description v zázname iCalendar otvárané v novom okne
(obvykle ide o externý odkaz) – slúži na to inštrukcia contentto.

Ďalej sa zároveň pri spracovaní každej neprázdnej bunky sĺpcov tri až päť v závislosti od výskytu neprázdnej hodnoty dočasne (to znamená, že iba v rámci jedného záznamu) nastaví obsah atribútu categories na jednu z nasledujúcich hodnôt:

Miesto výskytu Hodnota
Tretí stĺpec Bc
Štvrtý stĺpec Mgr
Piaty stĺpec PhD

Slúži na to inštrukcia ifcontsetdef.

Správna definícia by mala zahŕňať aj určenie atribútov, z ktorých bude vytvorené jednoznačné ID záznamu kalendára – slúži na to inštrukcia uidparts. ID automaticky obsahuje názov skriptu, ktorý určuje pôvod záznamu v rámci webového sídla, ďalej typ záznamu (ktorý je momentálne fixný: udalosť event) a postfix generátora (calendar@pdf.truni.sk, ktorý môže byť v prípade potreby nakonfigurovaný administrátorom).

Ak nie je určené inak, tak predvolene je do ID zahrnutý číselný kód vytvorený z dátumu alebo rozsahu dátumov záznamu kalendára. Tento kód by mal byť v inštrukcii uidparts vždy obsiahnutý. Reprezentuje ho reťazec dates. Okrem povinných prvkov je možné pridať ďalšie časti ID, napríklad kategórie (categories).

Inštrukciou uidparts v tomto príklade prikážeme modulu, aby do ID každého záznamu zaradil okrem údajov o dátumoch (dates) aj údaje o kategóriách (categories). Keby sme neodlišovali stĺpce pomocou kategórie, tak by údaje zo všetkých stĺpcov v konkrétnom riadku smerovali do jedného záznamu vytvoreného podľa dátumu (alebo rozsahu dátumov). V súlade s vyššie uvedenými informáciami sú modulom ical spracované len tie riadky, ktoré obsahujú dátum alebo rozsah dátumov.

Zdrojový text príkladu:

#ical:uidparts:dates → categories
#ical:start
#ical:ifcontsetdef: → categories:– → categories:Bc → categories:Mgr → 
categories:PhD
#ical:contentto: → description → description → description → description
*Dátum → Všeobecné informácie → Bakalárske štúdium → Magisterské štúdium → 
Doktorandské štúdium*
3. 9. – 20. 9. 2014 → potvrdenia o návšteve školy →  →  → zápis PhD. študentov 
na AR 2014//15 – 28. 8. 2014
16. 9. – 20. 9. 2014 →  → info týždeň, školenie novoprijatých študentov →  → 
19. 9. 2014 →  → imatrikulácie 1. ročník Bc. denné štúdium →  → 
#ical:end

Výsledkom spracovania budú záznamy iCalendar otvárané v novom okne
(obvykle ide o externý odkaz) (opísané nižšie) uložené vo vnútornej databáze RS Rheia a zároveň nasledujúca tabuľka zobrazená návštevníkom (jej vizuálna stránka môže byť pomocou pravidiel RS Rheia upravená podľa potreby, v tomto príklade sa však na ňu nezameriavame):

Dátum Všeobecné informácie Bakalárske štúdium Magisterské štúdium Doktorandské štúdium
3. 9. – 20. 9. 2014 potvrdenia o návšteve školy     zápis PhD. študentov na AR 2014/15 – 28. 8. 2014
16. 9. – 20. 9. 2014   info týždeň, školenie novoprijatých študentov    
19. 9. 2014   imatrikulácie 1. ročník Bc. denné štúdium    

Modul ical RS Rheia rozpozná a vytvorí nasledujúce samostatné udalosti kalendára:

  • 3. 9. – 20. 9. 2014: potvrdenia o návšteve školy,
  • 3. 9. – 20. 9. 2014: zápis PhD. študentov na AR 2014/15 – 28. 8. 2014,
  • 16. 9. – 20. 9. 2014: info týždeň, školenie novoprijatých študentov,
  • 19. 9. 2014: imatrikulácie 1. ročník Bc. denné štúdium.

Dodatočné spracovanie údajov môže byť tiež dôležité. Niektorých z vyššie vytvorených záznamov napríklad nikde v texte description neobsahujú informáciu o tom, na ktorý stupeň štúdia sa udalosť vzťahuje. Na napravenie tohto nedostatku je vhodné použiť inštrukciu prefixcontent, ktorou sa dá určiť text, ktorý bude pripojený na začiatok údaju konkrétneho stĺpca:

#ical:prefixcontent: →  → Bc. štúdium: code() → Mgr. štúdium: code() → 
PhD. štúdium: code()

(Uvedenie rušiacej klauzuly code() na konci každého prefixu je nevyhnutné na zachovanie typograficky korektnej medzery, ktorá má nasledovať za dvojbodkou.)

Po tejto úprave bude opis udalosti vytvorenej z tretieho až piateho stĺpca obsahovať na začiatku prislúchajúci text (Bc./Mgr./PhD. štúdium s dvojbodkou a medzerou):

  • 3. 9. – 20. 9. 2014: potvrdenia o návšteve školy,
  • 3. 9. – 20. 9. 2014: PhD. štúdium: zápis PhD. študentov na AR 2014/15 – 28. 8. 2014,
  • 16. 9. – 20. 9. 2014: Bc. štúdium: info týždeň, školenie novoprijatých študentov,
  • 19. 9. 2014: Bc. štúdium: imatrikulácie 1. ročník Bc. denné štúdium.

 

Modul ical a polia

Niektoré údaje je výhodnejšie spracovať ako pole. Napríklad zoznam miestností harmonogramu:

#ical:contentarray:location

Klasický postup modulu je taký, že sa každý údaj prichádzajúci do konkrétneho atribútu (okrem atribútu sequence) pripojí oddelený medzerou na jeho koniec. Polia sa správajú tak, že každý prichádzajúci údaj je zaradený do samostatného prvku poľa. Všetky polia sú na konci spracovania automaticky zlúčené do jedného údajového celku oddeleného medzerami, čo je možné upraviť inštrukciou joinarray, ktorá dovoľuje určiť oddeľovací reťazec:

#ical:joinarray:location → , code()

Polia navyše umožňujú vyhľadávanie opakujúcich sa reťazcov a ich odstránenie. Inštrukcia removerepeatingstring vyhľadá a odstráni opakujúci sa reťazec v po sebe nasledujúcich prvkoch jedného poľa. Reťazec však musí byť definovaný vo forme regulárneho výrazu PCRE (v PHP) otvárané v novom okne
(obvykle ide o externý odkaz). S využitím tejto syntaxe odstráni nasledujúca inštrukcia z atribútu description (o ktorom predpokladáme, že sme ho predtým definovali ako pole) opakujúci sa reťazec „denné:“, ktorý by sa vyskytol na začiatkoch hodnôt po sebe idúcich prvkov:

#ical:removerepeatingstring:description → /^denné:/

To znamená, že ak sa počas spracovania stalo, že séria po sebe nasledujúcich údajov súvisela s dennou formou štúdia a táto informácia bola napríklad nejakým filtrom pridaná na začiatok každého prvku poľa, tak vo výsledku sa viacnásobná informácia objaví len raz. Za ňou môže nasledovať zoznam údajov, ktorý môžeme oddeliť inštrukciou joinarray, napríklad čiarkami s medzerou (pozri vyššie).

 

Aktívne filtre modulu ical

Spracovanie údajov pre potreby kalendára môže ísť ešte ďalej. K dispozícii sú aktívne filtre (ktoré tiež používajú regulárne výrazy, ako vidno z tabuľky inštrukcií uvedenej vyššie) a dočasné premenovanie atribútu.

Premenovaný atribút nevyžaduje špeciálnu definíciu, stačí ak v ištrukcii contentto určíme iný názov cieľového atribútu, než očakávajú záznamy iCalendar otvárané v novom okne
(obvykle ide o externý odkaz), avšak pozor(!) vždy je povinné takto premenovaný údaj zlúčiť na konci spracovania prostredníctvom inštrukcie moveto s takým atribútom, ktorý má korektné pomenovanie podľa štandardu iCalendar otvárané v novom okne
(obvykle ide o externý odkaz) (najlepšie s niektorým z nasledujúcich: description, location, categories alebo summary), inak by nastalo vygenerovanie nekorektných záznamov iCalendar otvárané v novom okne
(obvykle ide o externý odkaz), čo by malo za následok ich odmietnutie externými systémami.

Nasledujúci komentovaný príklad ukazuje:

  • použitie série inštrukcií na premenovanie atribútu description (ktorý zároveň definujeme ako pole) na desc1,
  • priebežné spracovanie atribútu s použitím aktívnych filtrov – na pridanie určitých reťazcov do hodnôt buniek (podrobnosti v komentároch príkladu),
  • záverečné spracovanie údajov inštrukciami removerepeatingstring (odstránenie opakujúcich sa reťazcov) a joinarray (zlúčenie prvkov poľa s určením oddeľovacieho reťazca):
; Nasledujúca inštrukcia určuje, že desc1 bude pole:

#ical:contentarray:desc1

; Aktívne filtre sú komplikované na použitie, ale dokážu mnoho. Nasledujúce
; filtre nájdu v zdrojovom texte reťazce v tvare #cell#BcDe#, #cell#BcEx#,
; #cell#MgrDe#, #cell#MgrEx# (ktoré používa Rheia na určenie štýlu buniek,
; ich efekt môže byť rôzny, napríklad zmena podfarbenia buniek) a nahradia
; ich reťazcami „denné: “ alebo „externé: “ (samozrejme, že táto zmena sa
; dotýka len údajov modulu ical – vizuálne zmeny spôsobené použitím štýlu
; zostanú na stránke zachované):

#ical:activefilters:/#cell#(Mgr|Bc)De#(.*)/i → categories → $1 → denné: $2 
($location) → /#cell#(Mgr|Bc)Ex#(.*)/i → categories → $1 → externé: $2 ($location)

; Nasleduje tabuľka s údajmi, ktoré budú smerovať do prvkov poľa desc1:

#ical:contentto: →  → desc1 → desc1 → desc1 → desc1 → desc1
*Deň → Dátum → ||1P1 → ||2P1 → ||3P1 → ||4P1 → ||5P1 → ||AT*
streda → 13. 5. 2015 → #cell#MgrDe#B → #cell#MgrDe#Ch → #cell#MgrDe#M → 
#cell#MgrDe#Sj → #cell#MgrDe#I → #cell#MgrDe#Vv
štvrtok → 14. 5. 2015 → #cell#MgrDe#B → #cell#MgrDe#Nv → #cell#MgrDe#Aj → 
#cell#MgrDe#Sj → #cell#MgrDe#Ev → 
piatok → 15. 5. 2015 → #cell#MgrDe#B → #cell#MgrDe#Nj → #cell#MgrDe#Aj → 
#cell#MgrDe#Sj → #cell#MgrDe#Ev → #cell#MgrDe#PVU
sobota → 16. 5. 2015 →  →  →  →  →  → 
*nedeľa → 17. 5. 2015 →  →  →  →  →  → *
pondelok → 18. 5. 2015 → #cell#MgrDe#M → #cell#MgrDe#Nj → #cell#MgrDe#I → 
#cell#MgrDe#SPV → #cell#MgrDe#SPV → #cell#MgrDe#PVU

; Nasledujúca sekvencia inštrukcií spôsobí:
;  1. odstránenie opakujúceho sa reťazca „denné: “ zo začiatkov po sebe
;     nasledujúcich prvkov poľa,
;  2. odstránenie opakujúceho sa reťazca „externé: “ zo začiatkov po sebe
;     nasledujúcich prvkov poľa,
;  3. zlúčenie prvkov poľa do jednoriadkového zoznamu oddeleného čiarkami
;     s medzerou,
;  4. presunutie obsahu premenovaného atribútu desc1 do korektne pomenovaného
;     atribútu formátu iCalendar – description. Ak v description už sú nejaké
;     údaje, tak presúvané údaje budú oddelené bodkočiarkou s medzerou
;     a pripojené na koniec.

#ical:removerepeatingstring:desc1 → /^denné: /
#ical:removerepeatingstring:desc1 → /^externé: /
#ical:joinarray:desc1 → , code()
#ical:moveto:desc1 → description → ; code()

 

Sprístupnenie záznamov modulu ical na webovej stránke

Na prístup k záznamom databázy iCalendar otvárané v novom okne
(obvykle ide o externý odkaz) je potrebné vytvoriť špeciálny odkaz s lokálnou adresou toho skriptu, v ktorom sú definované záznamy a s uvedením špeciálneho „protokolu“ ical (nejde o oficiálny sieťový protokol, je to len klauzula slúžiaca na odlíšenie tohto typu odkazov v rámci RS Rheia – v skutočnosti Rheia vytvorí odkaz na prevzatie súboru so záznamami iCalendar otvárané v novom okne
(obvykle ide o externý odkaz)):

{iCal kalendár|ical:manual?kalendar}

Výsledok:

Požiadavka na prevzatie v skutočnosti smeruje na nejestvujúci súbor. Tento rozpor musí byť vyriešený konfiguráciou webového servera (napríklad Apache otvárané v novom okne
(obvykle ide o externý odkaz)), v ktorej bude zabezpečené presmerovanie všetkých požiadaviek na prevzatie súborov vo formáte iCalendar otvárané v novom okne
(obvykle ide o externý odkaz) (s príponou .ics) do prislúchajúceho PHP otvárané v novom okne
(obvykle ide o externý odkaz) skriptu RS Rheia, ktorý sa o vygenerovanie správneho formátu súboru postará. (Podrobnosti sú v kapitole Konfigurácia webového servera.)

 

Súvisiace kapitoly:

 


Otázky a úlohy:

  1. Čo je to iCalendar otvárané v novom okne
(obvykle ide o externý odkaz)? / Na čo je využiteľný formát iCalendar otvárané v novom okne
(obvykle ide o externý odkaz)?
  2. Aký tvar údajov je navýhodnejšie poskytnúť modulu ical?
  3. Ako sa dajú využiť polia modulu ical?
  4. Na čo slúžia aktívne filtre modulu ical?
  5. Ako je možné sprístupniť údaje spracované prostredníctvom modulu ical na webovej stránke?