API¶
In zijn algemeenheid kan Open Web Calendar zonder restricties gebruikt worden. U kunt deze API gebruiken om kalenders ad hoc aan te passen.
Deze sectie kan interessant zijn voor u als een van deze opties van toepassing is:
- U bent een web-ontwikkelaar die Open Web Calendar wil integreren.
- U wilt volledige vrijheid in flexibiliteit, niet alleen wat getoond wordt op de configuratiepagina.
- U wilt JavaScript gebruiken om alle kalenderontwerpen en opties dynamisch te genereren.
- U wilt de functionaliteit uitbreiden van Open Web Calendar.
- U wilt Open Web Calendar gebruiken als een proxy om gebeurtenissen in JSON voor uw zelfgemaakte gebeurtenissen feed te gebruiken.
Endpoints¶
De standaardparameters zijn gelijk bij deze endpoints:
/index.html
- wijzig de kalender/about.html
- bekijk de “over” pagina/calendar.html
- bekijk de kalender/calendar.spec
- download de specificaties/calendar.ics
- abonneer op het ICS-bestand/calendar.json
- informatie over de kalender en de inhoud als JSON/calendar.events.json
- FLEXIBEL - ontvang de evenementen als een JSON. Wees er op verdacht dat u dit KUNT gebruiken, maar dat geen zekerheid gegeven kan worden dat het JSON schema ongewijzigd blijft. Indien u dit wilt, dan dient u testen toe te voegen.
Aanvullende parameters zijn verplicht voor /calendar.events.json
:
timezone=UTC
- de tijdzone waarin de evenementen getoond wordenfrom=YYYY-MM-DD
- de start van de periode waarin evenementen plaatsvinden (inclusief)to=YYYY-MM-DD
- het eind van de periode waarin evenementen plaatsvinden (exclusief)
Parameters¶
Alle configuratieparameters zijn voldoende beschreven in de default_specification. Dat is de referentie. Bijv. indien u de parameter title
vind in de [default_specificatie], heeft u verschillende opties:
Wijzig de title in een query-parameter:
/index.html?title=calendar
Wijzig de titel in een YAML specificatie:
title: calendar
Wijzig de titel in een JSON specificatie:
{
"title": "calendar"
}
De specificatie compileren¶
U kunt het standaard gedrag en weergave aanpassen via parameters. Als dezelfde parameter gespecificeerd is op meerdere plekken, zal de plek waar die voor het eerste gedefinieerd is voorrang krijgen. Dit zijn de plekken waar de parameters gespecificeerd worden:
Query-parameters¶
Alle parameters naar de kalender-URL worden in de specificatie gezet. De query-parameters hebben de hoogste prioriteit.
Voorbeelden:
index.html?language=de calendar.html?title=CALENDAR
specification_url¶
Indien u deze query-parameter specificeert wordt ook de editor-configuratie geladen vanaf deze URL. Query-parameters zijn nog steeds belangrijker dan wat is opgenomen in dit bestand. Het bronformaat can YAML of JSON zijn.
Voorbeelden:
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¶
Dit is bedoeld voor ontwikkelaars en Python-internal.
from open_web_calendar.app import DEFAULT_SPECIFICATION
DEFAULT_SPECIFICATION['title'] = 'calendar'
OWC_SPECIFICATION¶
Dit is een optionele omgevingsvariabele. Leest u meer hierover in de Server Configuratie.
default_specification¶
Dit bestand bevat de standaard parameters. Deze mogen niet hard-coded voorkomen in de broncode. Alle parameters zijn daar opgenomen en gedocumenteerd, dus kan dit bestand als referentie worden gebruikt. Wijzig dit bestand niet, maar maak gebruik van de OWC_SPECIFICATION
omgevingsvariabele.
Toevoegen van parameters¶
Indien u als ontwikkelaar een nieuwe parameter toevoegt:
- Voeg de parameter toe met een standaardwaarde aan de default_specification
- Voeg een implementatie toe, afhankelijk van het gebruik in de
app.py
of de sjablonen van de JavaScript bestanden. De specificatie is direct overal beschikbaar om te gebruiken. - Voeg tests toe features/configure-the-calendar.feature om te controleren of de kalender juist functioneert.
- Voeg tests toe features/edit-the-calendar.feature om zeker te weten dat de parameter gebruikt kan worden wanneer een kalender wordt gewijzigd.
Specificatie in de kalender¶
app.py compileert de specificatie van de gegeven parameters in get_specification()
. In het sjabloon kunt u de specificatie benaderen via de specification
variabele. De specificatie is beschikbaar in JavaScript als de specification
variabele.
Bekijk ook:
Specificatie in de Indexpagina¶
De standaardspecificatie is beschikbaar voordat de kalender opgebouwd wordt door JabaScript in de configuration.default_specification
variabele. Er is een getSpecification() functie die de specificatie maakt op basis van de invoer. In het algemeen, de specification
variabele zal gebruikt moeten worden.
Architectuur¶
Hieronder kunt u een schematische weergave zien van de architectuur.
De basis van de kalender is de specificatie, in de verschillende vormen. Deze specificatie beïnvloedt alle stappen.
Nadat de specificatie is gecompileerd worden de kalenderbestanden (ics) gedownload van de locaties op het internet.
Evenementen worden gegenereerd vanuit de kalenderbestanden.
Dan worden verschillende weergaven gekozen om evenementen te tonen.
Uiteindelijk leiden deze HTML en stijlwijzigingen tot wijzigingen van de kalenderwebsite.
In de echte toepassing zijn deze stappen enigszins door elkaar, ongesorteerd of soms weggelaten, maar dit legt op een eenvoudige manier het basisidee achter de evenementverwerking uit.