Rozšíření:TemplateData

This page is a translated version of the page Extension:TemplateData and the translation is 100% complete.
Toto rozšíření je součástí MediaWiki verze MediaWiki 1.35 a vyšších. To znamená, že jej nemusíte stahovat samostatně. Musíte se nicméně stále řídit pokyny k jeho použití.
Základní informace k tomuto rozšíření MediaWiki
OOjs UI icon advanced-invert.svg
TemplateData
Stav rozšíření: stabilní
Screenshot of TemplateData extension.png
Zavádění Tag , API
Popis Umožňuje ukládat, načítat a vizualizovat informace o šablonách
Napsal(i) Timo Tijhof, Moriel Schottlender, James Forrester, Trevor Pascal, Bartosz Dziewoński, Marielle Volz, ...
Nejnovější verze 0.1.2 (Průběžně aktualizováno)
Zásady kompatibility Vydání snímků následuje MediaWiki. Hlavní vývojová větev není zpětně kompatibilní.
MediaWiki 1.25+
PHP 5.4+
Změny v databázi nedělá
Licence GNU General Public License 2.0 nebo pozdější
Zdrojový kód
  • $wgTemplateDataUseGUI
‎<templatedata>
Quarterly downloads 305 (Ranked 33rd)
Public wikis using 3,046 (Ranked 31st)
Přeložte rozšíření TemplateData, používá-li lokalizaci z translatewiki.net
Problémy Otevřené úkoly · Nahlásit chybu

Rozšíření TemplateData zavádí značku ‎<templatedata> 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 Nápověda:TemplateData .

Instalace

  • Stáhněte soubor/y a vložte je do adresáře pojmenovaného TemplateData ve vaší složce extensions/.
  • Následující kód přidejte na konec vašeho souboru LocalSettings.php :
    wfLoadExtension( 'TemplateData' );
    
  •   Dokončeno – Přejděte na stránku Special:Version vaší wiki a zkontrolujte, zda bylo rozšíření úspěšně nainstalováno.

Úpravy dat

Rozšíření TemplateData funguje tak, že ve wikitextu šablony stránky je definována značka ‎<templatedata> (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 ‎<templatedata> 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 ‎<templatedata>, 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ř. params.yourParameterName.type), 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 subst: v jakékoli šabloně přidané uvnitř ‎<tag>, včetně tagů ‎<ref> a ‎<gallery>. 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 {{#tag:templatedata}} místo ‎<templatedata>.

Formát

Níže je vizualizovaná verze dat JSON, jak je definována na stránce šablony uzavřené značkami ‎<templatedata>‎</templatedata>. 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 ‎<templatedata> na stránce šablony.

Klíč Typ Popis
description InterfaceText nebo null Stručný popis šablony. Musí to být prostý text. Po vyplnění může být zobrazen jako titulek při úpravě jedné šablony a možná ve výsledcích vyhledávání, když si uživatelé vyberou jednu z mnoha. Výchozí hodnota je null.
params Objekt obsahující objekty Param Objekt, který mapuje každý název parametru šablony na odpovídající objekt Param popisující vlastnosti tohoto parametru.
paramOrder Pole obsahující řetězce názvů parametrů Logické pořadí, ve kterém by se měly parametry zobrazovat. Pole obsahuje přesně jednou každý klíč parametru. Každý řetězec musí být platným klíčem v objektu params.
sets Pole obsahující
nastavení objektů
Pole obsahující specifikace sady. Sada je skupina parametrů, které by měly být použity společně. Výchozí nastavení je []. Všimněte si, že funkce sets je stále ve vývoji.
format řetězec, buď inline nebo block Jak by mělo být uspořádáno zobrazení wikitextu šablony. Výchozí nastavení je inline. Další vlastní formáty najdete na stránce #Custom_formats.
maps Mapový objekt Objekt, který mapuje zjednodušené jméno spotřebitele třetí strany dat šablony (tj. Citoid, Special:MyLanguage/Wikidata atd.), Na objekt, který zase mapuje jméno parametru spotřebitele na jeden nebo více odpovídajících názvů parametrů šablony.

Param objekt

Klíč Typ Výchozí Popis
label InterfaceText null Krátký (velmi) název parametru. Zkuste zachovat méně než 20 znaků.
description InterfaceText null Stručný popis parametru, aby uživatelé věděli, které mají vybrat ze seznamu možností.
required boolean false Parametr je vyžadován pro to, aby šablona fungovala (true, pokud musí být zadán tento parametr).
suggested boolean false Parametr je navržen pro šablonu, aby byla užitečná (true, pokud by měl být tento parametr uveden).
deprecated booleovský nebo řetězec false Parametr je zastaralý. Hodnota může být řetězec instrukcí poskytujících uživateli návod, co místo toho lze udělat, nebo může být jednoduše true.
aliases Řetězce obsahující pole [] Seznam aliasů. Alias je alternativní název parametru, který lze použít namísto (nikoli vedle) primárního názvu. Aliasy nejsou dokumentovány v samostatném objektu Parameter. Pokud potřebují více informací, měly by být ve svých vlastnostech označeny jako "deprecated" (zastaralé).
default InterfaceText null Výchozí hodnota použitá šablonou, není-li parametru nebo jeho popisu přiřazena žádná hodnota.
autovalue řetězec null Dynamicky generovaná výchozí hodnota ve wikitextu, jako je dnešní datum nebo jméno editujícího uživatele. Bude často zahrnovat náhradu wikitextu, jako je {{subst:CURRENTYEAR}}.
example InterfaceText null Příklad textu parametru, který uživatelům pomůže vyplnit správnou hodnotu.
type řetězec "unknown" Typ parametru pro (soft) typ hinting. Jeden z:
Řetězcová hodnota Typ parametru
"unknown" Předpokládaný typ, pokud není nastaven
"number" Jakákoli číselná hodnota (bez desetinných míst nebo oddělovačů tisíců)
"string" Jakákoli textová hodnota. Může obsahovat konce řádků.
"line" Krátké textové pole - používá se pro jména, štítky a jiná pole krátkých formulářů. Předpokládá se, že se jedná o text, u kterého se neočekává, že bude obsahovat konce řádků.
"boolean" Booleovská hodnota ('1' pro true, '0' pro false, '' pro neznámé), viz Tříhodnotová logika.
"date" Datum ve formátu ISO 8601, např. "2014-05-09" nebo "2014-05-09T16:01:12Z"
"url" URL, včetně protokolu, např. "http://www.example.org", "https://example.org", nebo "//example.org".
"wiki-page-name" Platný název stránky MediaWiki pro aktuální wiki. Nemusí existovat, ale pokud ano, měl by být platným názvem stránky, který by mohl být vytvořen.
"wiki-file-name" Platný název souboru MediaWiki pro aktuální wiki. Nemusí existovat, ale pokud ano, měl by být platný název souboru, který lze nahrát. Neměla by obsahovat jmenný prostor (např. "Foo.svg" ne "File:Foo.svg" nebo "Bild:Foo.svg").
"wiki-template-name" Platný název šablony MediaWiki pro aktuální wiki.
"wiki-user-name" Platné uživatelské jméno MediaWiki pro aktuální wiki. Nemusí existovat, ale pokud ano, mělo by to být platné uživatelské jméno, které by bylo možné vytvořit. Neměla by obsahovat jmenný prostor (např. "Foo", nikoli "User:Foo" nebo "Usario:Foo").
"content" Obsah stránky ve wikitextu, například styl textu, odkazy, obrázky, atd.
"unbalanced-wikitext" Hrubý wikitext, který by neměl být považován za samostatný obsah, protože je nevyvážený - například šablony spojující neúplný wikitext jako větší celek, například {{echo|before=<u>|after=</u>}}
inherits řetězec žádný
nahrazený
Klíč názvu jiného parametru (musí to být platný klíč v objektu params). Aktuální parametrový objekt zdědí vlastnosti od zadaného objektu parametrů, přičemž místní vlastnosti potlačí zděděné.
suggestedvalues Řetězce obsahující pole [] Nepovinná vlastnost parametru. Vytvoří seznam hodnot parametrů, které uživatelům pomohou vybrat požadovanou hodnotu. Aby se navrhované hodnoty zobrazily jako pole se seznamem ve VisualEditoru, musí být typ parametru nastaven na jeden z následujících: obsah, řádek, řetězec, číslo, neznámý nebo nevyvážený wikitext.

Nastavení objektu

Klíč

Objekt nebo základní typ

Popis

label InterfaceText Krátký (velmi) název parametru. Zkuste zachovat méně než 20 znaků.
params Pole řetězců Jeden nebo více názvů parametrů, které mají být v sadě zahrnuty (každý musí být platným klíčem v objektu params). Parametr může být ve více sadách. Ne každý parametr musí být v sadě.

Mapový objekt

Klíč Typ Výchozí Popis
jméno spotřebitele objekt {} Objekt, který mapuje jméno spotřebitele na objekt, který zase mapuje jméno parametru spotřebitele na jeden nebo více odpovídajících názvů parametrů šablony.

Názvy parametrů šablon mohou být zadány buď jako řetězec (jedno jméno), pole řetězců (několik jmen) nebo pole polí řetězců (několik sad názvů). Každý z těchto řetězců musí být platným klíčem v objektu params jinde v TemplateData stejné šablony.

Specifický parametr šablony může být ve více mapách a může být použit v hodnotách více klíčů v dané mapě, ale ne každý parametr šablony musí být v mapě.

Stručný příklad z Template:Cite_news#TemplateData anglické Wikipedie ilustruje strukturu objektu map.

{
	"proveit": {
		"main": "title",
		"textarea": [
			"quote"
		]
	},
	"citoid": {
		"title": "title",
		"url": "url",
		"publisher": "publisher",
		"publicationTitle": "work",
		"date": "date",
		"ISSN": [
			"issn"
		],
		"ISBN": [
			"isbn"
		],
		"contributor": "others",
		"author": [
			[
				"first",
				"last"
			],
			[
				"first2",
				"last2"
			],
			[
				"first9",
				"last9"
			]
		],
		"editor": [
			[
				"editor-first",
				"editor-last"
			]
		]
	}
}

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 null.

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í:

Klíč Typ Popis
Kód jazyka Wikipedie řetězec Lokalizovaný řetězec pro použití na Wikipedii odpovídající danému kódu jazyka.

Příklad mapování objektu:

Klíč Hodnota
"en" "Welcome to Wikipedia"
"de" "Willkommen bei Wikipedia"
"fr" "Bienvenue sur Wikipédia"
"nl" "Welkom op Wikipedia"
"it" "Benvenuti su Wikipedia"
"es" "Bienvenidos a Wikipedia"
"ru" "Добро пожаловать в Википедию"

Příklad

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

<templatedata>
{
    "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": "{{subst:#time:Y-m-d}}"
        },
        "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"
            ]
        }
    }
}
</templatedata>

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

Label unsigned comments in a conversation.

Template parameters

ParameterDescriptionTypeStatus
User's nameuser 1

User name of person who forgot to sign their comment.

Userrequired
Datedate 2

Timestamp of when the comment was posted, in YYYY-MM-DD format.

Auto value
{{subst:#time:Y-m-d}}
Unknownsuggested
Yearyear

no description

Numberoptional
Monthmonth

no description

Numberoptional
Dayday

no description

Numberoptional
commentcomment

no description

Unknownoptional

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 ‎<templatedata>...‎</templatedata> 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 ‎<templatedata>...‎</templatedata>. V reakci na požadavek API provede rozšíření TemplateData následující změny objektu JSON:

  • Přidá dvě možnosti zabalení objektů:
    1. Celkový objekt stránky obsahující jeden nebo více objektů stránky
    2. Objekt s numerickým klíčem: stránka objektu
  • Přídavky nebo změny skutečného TemplateData objektu
    1. Přidejte klíč názvu title s názvem stránky, ze které byla požadována data (např. "Template:Cite web").
    2. Přidejte klíč sets
    3. 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
    4. Odstraňte všechny klíče inherits.
      • 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.
    5. 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.

Vizualizované rozdíly v objektu JSON TemplateData dodané API

Objekty Wrapper přidané do JSON dodávané pomocí API
Nejsou definovány v objektu JSON uzavřeném značkami ‎<templatedata> na stránce šablony.
JSON Root
Klíč Typ Popis
pages Page Object Page object (obsahuje jeden klíč, kterým je číslo stránky). Pokud by bylo požadováno více stránek najednou, bude existovat více Page objektů.

Objekt stránky
Klíč Typ Popis
(číslo stránky) TemplateData Object TemplateData Object obsahující užitečné informace. Klíč je statické číslo stránky pro stránku šablony, ze které byla požadována data JSON.


Objekt TemplateData (přidáno pomocí API)
Následující klíč je přidán do kořene objektu JSON, který je uzavřen ve značkách ‎<templatedata> na stránce šablony.
Klíč Typ Popis
title řetězec Název stránky šablony (např. "Template:Cite web").
Tento klíč není součástí struktury JSON na stránce šablony. Je přidán do struktury pomocí softwaru MediaWiki na cestě k doručení přes API.
sets Pole obsahující nastavení objektů Pole obsahující specifikace sady. Sada je skupina parametrů, které by měly být použity společně.
Pokud na stránce šablony neexistuje, přidá se jako struktura do rozhraní poskytovaného API jako prázdné pole.


Objekty parametrů z API
Klíč Typ Popis
label InterfaceText Přeloženo do InterfaceText objektu, pokud již v tomto formátu není.
required boolean Pokud není definován, přidá se výchozí hodnota false.
description InterfaceText nebo null Pokud je definován jako řetězec, převeden na InterfaceText objekt. Pokud není definován, přidává se klíč s hodnotou null.
deprecated booleovský nebo řetězec Pokud není definován, přidá se výchozí hodnota false.
aliases Pole řetězců Pokud není definován, je přiřazeno výchozí prázdné pole (tj. []).
default řetězec Pokud není definován, je přiřazena výchozí hodnota "".
type řetězec Pokud není definován, je přiřazena výchozí hodnota "unknown".
inherits (odstraněno) Tento klíč je odstraněn a jsou přidány všechny zděděné klíče. Klíče definované pro aktuální parametr mají přednost a všem klíčům, které nejsou definovány ani na aktuálním parametru, ani na klíči, od kterého zdědí, je dána výchozí hodnota.


Text rozhraní (object nebo null):
Objekt obsahující řetězce klíčované kódem jazyka.
Klíč Objekt nebo
základní typ
Popis
Objekt
(obsahující lokalizované řetězce podle kódu jazyka Wikipedie)
Pokud pole TemplateData na stránce šablony obsahuje řetězec, nikoli objekt s lokalizovanými řetězci, MediaWiki jej převede do objektu InterfaceText s řetězcem přiřazeným k názvu klíče zdroje Wikipedia v kódu jazyka Wikipedie. Výchozí hodnota pro všechna pole InterfaceText je null.
(Kód jazyka Wiki) řetězec Lokalizovaný řetězec pro použití na Wikipedia odpovídající kódu jazyka Wikipedie.

Příklad objektu JSON poskytovaného API

Odpověď na žádost API o strukturu TemplateData v části Příklad (výše) lze vidět:

Konfigurace

Proměnná Výchozí Popis
$wgTemplateDataUseGUI true Experimentální dialogové rozhraní pro úpravu templatedata JSON

Související stránky