Preskoči na sadržaj

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đaji
  • from=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.

arhitektura

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.