API¶
Otvoreni web kalendar se može koristiti bez ograničenja. Ovaj API možeš koristiti za prilagođavanje kalendara.
Ovaj odjeljak može biti koristan u sljedećim slučajevima:
- Ti si web programer koji želi ugraditi „Otvoreni web kalendar”.
- Želiš iskoristiti potpunu fleksibilnost, a ne samo ono što je moguće na stranici konfiguracije.
- Želiš koristiti JavaScript za dinamičko generiranje dizajna i opcija kalendara.
- Želiš proširiti funkcionalnost otvorenog web kalendara.
- Želiš koristiti „Otvoreni web kalendar” kao proxy za traženje JSON događaja za tvoje stvorene događaje.
Identifikatori resursa¶
Osnovni parametri su isti pri ovim identifikatorima resursa:
/index.html
– uredi kalendar/about.html
– pogledaj stranicu s informacijama o aplikaciji/calendar.html
– pogledaj kalendar/calendar.spec
– preuzmi specifikaciju/calendar.ics
– pretplati se na ics datoteku/calendar.json
– informacije o kalendaru i sadržaju u JSON formatu/calendar.events.json
– FLEKSIBILNO ” dohvati događaje u JSON formatu. Napomena: ovo se MOŽE koristiti, ali nije sigurno da će JSON shema ostati ista. Ako to želiš, dodaj testove.
Za /calendar.events.json
su potrebni dodatni parametri:
timezone=UTC
– vremenska zona u kojoj će se prikazati događajifrom=YYYY-MM-DD
– početak razdoblja u kojem se događaji događaju (uključujući)to=YYYY-MM-DD
– kraj razdoblja u kojem se događaji događaju (uključujući)
Parametri¶
Svi konfiguracijski parametri su dovoljno opisani u [zadanoj_specifikaciji]. To je referenca. Npr. ako pronađeš parametar title
u [zadanoj_specifikaciji], imaš nekoliko mogućnosti:
Promijeni naslov u parametru upita:
/index.html?title=calendar
Promijeni naslov u YAML specifikaciji:
title: calendar
Promijeni naslov u JSON specifikaciji:
{
"title": "calendar"
}
Kompiliranje specifikacije¶
Ponašanje i izgled kalendara se može promijeniti pomoću parametara. Ako je isti parametar naveden na različitim mjestima, ranije navedeno mjesto ima najveći prioritet. Ovo su mjesta za navođenje parametara:
Parametri upita¶
Svi parametri URL-a kalendara stavljaju se u specifikaciju. Parametri upita imaju najveći prioritet.
Primjeri:
index.html?language=de calendar.html?title=CALENDAR
specification_url¶
Ako se ovaj parametar upita postavi, konfiguracija uređivača se također učitava s ovog URL-a. Parametri upita su i dalje važniji od onoga što je napisano u ovoj datoteci. Izvorni format može biti YAML ili JSON.
Primjeri:
calendar.html?specification_url=https://github.com/niccokunzmann/open-web-calendar/raw/master/open_web_calendar/default_specification.yml
open_web_calendar.app.DEFAULT_SPECIFICATION¶
Ovo je namijenjeno za programere i interne Python stvari.
from open_web_calendar.app import DEFAULT_SPECIFICATION
DEFAULT_SPECIFICATION['title'] = 'calendar'
OWC_SPECIFICATION¶
Ovo je opcionalna varijabla okruženja. Saznaj više o tome u Konfiguracija servera.
[default_specification]¶
Ova datoteka sadrži zadane parametre. Ne smiju biti fiksno kodirani u izvornom kodu. Svi parametri su tamo navedeni i dokumentirani tako da se ova datoteka može koristiti kao referenca. Nemoj mijenjati ovu datoteku, umjesto toga koristi varijablu okruženja OWC_SPECIFICATION
.
Dodavanje parametara¶
Ako kao programer dodaš novi parametar:
- Dodaj parametar sa zadanom vrijednosti u [default_specification]
- Dodaj implementaciju ovisno o njenoj upotrebi u
app.py
ili predlošcima JavaScript datoteka. Specifikacija je već dostupna u svima njima za korištenje. - Dodaj testove u features/configure-the-calendar.feature za provjeravanje je li kalendar odgovara na tu funkciju.
- Dodaj testove u features/edit-the-calendar.feature za osiguravanje da se parametar može koristiti kada se kalendar uređuje.
Specifikacija u kalendaru¶
app.py kompilira specifikaciju iz zadanih parametara u get_specification()
. U predlošku možeš pristupiti specifikaciji putem varijable specification
. Specifikacija je dostupna JavaScriptu kao varijabla specification
.
Također pogledaj:
Specifikacija u stranici indeksa¶
Zadana specifikacija dostupna je prije nego što se kalendar izradi putem JavaScripta u varijabli configuration.default_specification
. Postoji funkcija getSpecification() koja stvara specifikaciju iz ulaznih podataka. Općenito treba koristiti varijablu specification
.
Arhitektura¶
Pogledaj sliku arhitekture.
Osnova kalendara je specifikacija koja postoji u različitim oblicima. Ova specifikacija utječe na sve korake.
Nakon što se specifikacija kompilira, datoteke kalendara (ics) se preuzimaju s mjesta na internetu.
Događaji se generiraju iz datoteka kalendara.
Zatim se biraju različiti prikazi za prikaz događaja.
Na kraju, to dovodi do promjena HTML-a i stila web stranice kalendara.
U stvarnoj primjeni, ti su koraci pomalo pomiješani i neuređeni ili izostavljeni, ali ovo objašnjava osnovnu, početnu ideju o obradi događaja.