Extension:TemplateData/cs

Rozšíření TemplateData zavádí značku a API, které společně umožňují editorům určit, jak mají být šablony vyvolány. Tato informace je k dispozici jako formátovaná tabulka pro koncové uživatele a jako JSON API, které umožňuje jiným systémům (např. VisualEditoru) vytvářet rozhraní pro práci se šablonami a jejich parametry. Podrobnou nápovědu najdete na stránce.

Úpravy dat
Rozšíření TemplateData funguje tak, že ve wikitextu šablony stránky je definována značka (volitelně může být také přenesena z jiné stránky). Toto je navrženo tak, aby bylo kompatibilní s běžným rozvržením, které má mnoho wiki při předávání dokumentace k šablonám ze samostatné stránky (není to však nutné). Obsah značky musí být platný JSON ve formátu popsaném níže. Všimněte si, že všechny popisy musí být ve formátu prostého textu (v datech šablony není akceptován žádný wikitext).

Je-li na stránce zahrnut blok, provede rozšíření TemplateData při ukládání stránky následující kontroly:


 * 1) Obsah musí být platný JSON.
 * 2) Každá položka ve struktuře JSON musí být očekávaného typu, jak je uvedeno níže (např. Objekt, pole nebo primitiv).
 * 3) U položek, které mají specifikovaný seznam možných hodnot (např.  ), musí hodnota v objektu JSON odpovídat jedné z těchto hodnot.

Pokud některá z těchto kontrol selže, server nebude moci ukládat a nad editační stránkou se zobrazí chybová zpráva.

U položek s automatickým přidáním bug 2700 zabraňuje práci  v jakékoli šabloně přidané uvnitř, včetně tagů  a. Blok TemplateData se uloží správně, ale výsledný wikitext nebude při použití šablony správně analyzován.

Všimněte si, že nemůžete použít  místo.

Formát
Níže je vizualizovaná verze dat JSON, jak je definována na stránce šablony uzavřené značkami . Formální specifikace je k dispozici v repozitáři TemplateData. Nejnovější verzi najdete na stránce Specification.md.

Objekt TemplateData
Objekt TemplateData je kořenový prvek JSON uzavřený v prvku na stránce šablony.

Text rozhraní (řetězec nebo objekt)
Volný textový řetězec prostého textu (tj. žádný wikitext nebo HTML) v jazyce obsahu wiki nebo objekt obsahující tyto řetězce klíčované kódem jazyka.

Výchozí hodnota pro všechna textová pole rozhraní je.

Typ řetězce
Pokud se jedná o řetězec, musí obsahovat nelokalizovaný řetězec v jazyce obsahu místní wiki.

Typ objektu
Pokud se jedná o objekt, musí mít toto mapování:

Příklad
Příklad struktury TemplateData, jak je uvedeno ve wikitextu na stránce šablony.

Níže je uveden příklad, který by se zobrazil na stránce šablony:

{   "description": "Label unsigned comments in a conversation.", "params": { "user": { "label": "User's name", "type": "wiki-user-name", "required": true, "description": "User name of person who forgot to sign their comment.", "aliases": ["1"] },       "date": { "label": "Date", "suggested": true, "description": { "en": "Timestamp of when the comment was posted, in YYYY-MM-DD format." },           "aliases": ["2"], "autovalue": "" },       "year": { "label": "Year", "type": "number" },       "month": { "label": "Month", "inherits": "year" },       "day": { "label": "Day", "inherits": "year" },       "comment": { "required": false }   },    "sets": [ {           "label": "Date", "params": ["year", "month", "day"] }   ],    "maps": { "ExampleConsumer": { "foo": "user", "bar": ["year", "month", "day"], "quux": [ "date", ["day", "month"], ["month", "year"], "year" ]       }    } }

API
Podívejte se na vygenerovanou nápovědu na Special:ApiHelp/templatedata. Ukázkové vyvolání (formátované pro čitelnost lidmi) je:

Tím se vrátí data šablony pro Šablona:Citovat web. Blok  pro tuto šablonu je na stránce s dokumentací o přenesené šabloně, en:Template:Cite web/doc.

Přírůstky a změny JSON přijaté z API
Struktura JSON poskytovaná v reakci na požadavek API HTTP get se výrazně liší od struktury definované v bloku . V reakci na požadavek API provede rozšíření TemplateData následující změny objektu JSON:


 * Přidá dvě možnosti zabalení objektů:
 * Celkový objekt stránky obsahující jeden nebo více objektů stránky
 * Objekt s numerickým klíčem: stránka objektu
 * Přídavky nebo změny skutečného TemplateData objektu
 * Přidejte klíč názvu  s názvem stránky, ze které byla požadována data (např. "Template:Cite web").
 * Přidejte klíč
 * Změňte všechny výskyty TemplateText, které jsou pouhými řetězci, na objekty s jediným klíčem pro aktuální kód jazyka Wikipedie
 * Odstraňte všechny klíče.
 * Přidejte všechny vlastnosti z parametru, ze kterého je definována dědičnost a které nejsou dědicem nahrazeny explicitně definovanými klíči v Parameter Object.
 * Přidejte výchozí hodnoty pro všechny klíče v každém Parameter Object, které nebyly explicitně definovány nebo zděděny.

Příklad objektu JSON poskytovaného API
Odpověď na žádost API o strukturu TemplateData v části Příklad (výše) lze vidět:
 * Ve formátu HTML: https://www.mediawiki.org/w/api.php?action=templatedata&titles=Extension:TemplateData&format=jsonfm
 * Podle rozhraní API: https://www.mediawiki.org/w/api.php?action=templatedata&titles=Extension:TemplateData

Související stránky

 * – uživatelské rozhraní pro výběr a vložení wikitextu šablon, na základě jejich $dat.
 * GitHub: jeblad/TemplateData – alternativní verze s některými funkcemi Lua.
 * Translatable template