Manual:Extension registration/cs


 * extension.json redirects here. For a list of specifications, go to Manual:Extension.json/Schema directly.

Registrace rozšíření je mechanismus, který používá MediaWiki pro načítání rozšíření (extensions) a vzhledů (skins). Konfigurační data se zapisují do souboru s názvem, či v případě  grafického vzhledu  , který by měl být umístěn v kořenovém adresáři vašeho rozšíření nebo vzhledu. A ten MediaWiki použije k registraci vašeho rozšíření, či grafického vzhledu (skinu).

If you were looking for documentation on installing extensions instead, see this guide.

Funkce
Pokud načítáte velký počet rozšíření, registrace rozšíření poskytne zvýšení výkonu, pokud máte nainstalováno APC (nebo APCu). Rozšíření načtená společně s  (s množným číslem -s) budou uložena do mezipaměti společně.

Atributy
Neustálý problémem byl v tom, jak něco "zaregistrovat" pro jiné rozšíření. For instance, extensions can register a module with the VisualEditor (VE) extension through the hook. If the Math extension were to register a module with VE, it would have something like this in its :

The  node needs to be an object with the extension name as key and an object of attribute/value pairs as the value. Be aware that the key in the subobject must not contain the extension name!
 * manifest version 2

Manifest version 1 does not have a separate section for :
 * manifest version 1

Když chce VisualEditor získat přístup k tomuto atributu, použije:



Požadavky (závislosti)
Registrace rozšíření má sekci  (vyžaduje), která funguje podobně jako sekce   Composeru. Umožňuje vývojáři rozšíření specifikovat několik požadavků na rozšíření, jako je konkrétní verze MediaWiki (nebo vyšší/menší než) nebo jiné rozšíření/vzhled. Chcete-li například přidat závislost na verzi MediaWiki, která je větší než 1.26.0, můžete do  přidat následující kód:

Klíč objektu  je název závislosti (před MediaWiki 1.29.0 byla podporována pouze  ), hodnota je platné omezení verze (formát je podle volby autora).

V MediaWiki 1.29.0 a vyšší můžete také přidat závislosti na vzhledech a dalších rozšířeních, jako jsou:

V MediaWiki 1.33.0 (?!??) a výše můžete také přidat závislosti na PHP, jako je:



Zkontrolujte, zda je rozšíření načteno, aniž by bylo ve skutečnosti vyžadováno
Mnoho rozšíření může poskytovat funkce, které fungují pouze v případě, že je načteno i jiné rozšíření, aniž by tuto funkci skutečně potřebovali pro fungování základní funkce rozšíření. Jako příklad: Pokud je načteno rozšíření B, může rozšíření A poskytovat skutečný WYSIWYG editor, jinak bude používat jednoduchou textovou oblast. Rozšíření A může těžit z rozšíření B (pokud je načteno), ale ke správnému fungování nevyžaduje, aby bylo načteno. Za tímto účelem obvykle zkontrolujete, zda je rozšíření načteno, spíše než jej přidáte jako tvrdou závislost.

Pro implementaci standardizovaného způsobu kontroly, zda je rozšíření načteno nebo ne (bez nutnosti práce navíc v rozšíření, která je v jiném rozšíření měkkou závislostí), lze použít registraci rozšíření. Implementuje metodu, která vrací jednoduchý boolean, pokud je rozšíření načteno nebo ne (aby to fungovalo, musí být rozšíření načteno s registrací rozšíření). Příklad:

Od MediaWiki 1.32 je také možné zkontrolovat, zda je rozšíření načteno a zda splňuje dané omezení verze:

Pokud byste chtěli zkontrolovat, zda je v dřívějších verzích MediaWiki načtena konkrétní verze rozšíření, lze podobné informace extrahovat pomocí metody, která vrací informace o kreditu pro všechna načtená rozšíření. Příklad:

Alternativně, pokud rozšíření B definuje speciální konstantu určenou pro tento účel během načítání, je možné zkontrolovat, zda je definována:

Křehčím způsobem, kterému je třeba se vyhnout, je zkontrolovat, zda specifická třída rozšíření B existuje nebo ne, např. pomocí tohoto kódu:

To může přestat fungovat, pokud přípona existuje v systému souborů, ale není načtena, např. pokud byl pro automatické načítání použit composer. Pokud byla třída přejmenována nebo přestane existovat (např. protože není balíček public), dojde také k přerušení.

Obecně je upřednostňováno sdílení kódu prostřednictvím komponent pro composer namísto rozšíření. Pokud třídy rozšíření potřebují pouze existovat, ale rozšíření nemusí být konfigurováno ani načteno, pro to, co chcete dělat, je to silný indikátor toho, že by tento kód měl být rozdělen na komponentu composer, na kterou byste se měli spolehnout. namísto.



Configs (Vaše nastavení rozšíření/vzhledů)
Ve výchozím nastavení  předpokládá, že vaše konfigurační nastavení začíná předponou "wg".

Pokud tomu tak není, můžete předponu přepsat pomocí speciálního klíče:

To by použilo předponu "eg" a nastavilo globální proměnnou na hodnotu true.

Počínaje zveřejněním verze 2 poskytuje konfigurační sekce registrace rozšíření mnohem více funkcí a umožňuje vám popsat možnosti konfigurace mnohem podrobněji. Namísto jediného klíče -> úložiště hodnot pro možnosti konfigurace můžete také přidat následující informace.

Obecná struktura  se mírně mění na následující, více objektově orientovanou verzi:

value
Hodnota konfigurace se přesunula na toto místo. Toto je jediný požadovaný klíč pro konfigurační objekt.

path
Booleovská hodnota klíče  identifikuje, zda má být hodnota konfigurační volby interpretována jako cesta souborového systému vzhledem ke kořenu adresáře rozšíření. Pokud je například hodnota konfigurace  a   je pravdivá, skutečná hodnota bude.

description
Klíč  pro možnost konfigurace může obsahovat nelokalizovaný řetězec, který lze použít k vysvětlení možnosti konfigurace dalším vývojářům nebo uživatelům (správcům systému) vašeho rozšíření. Může být také použit jako popisný text v sekci parametrů informačního pole rozšíření na stránce popisu rozšíření MediaWiki.org. Hodnota klíče popisu obvykle není vystavena frontendu wiki, ale podívejte se do přehledu, kde najdete další informace, jak by se tato funkce mohla v budoucnu používat!

descriptionmsg
Existuje také možnost přidat klíč zprávy interního lokalizačního systému MediaWiki jako popis, který bude v budoucnu použit k odhalení popisu v rozhraní instalace MediaWiki.

public / private
Tato volba je booleovská, jejíž výchozí hodnota je, což znamená, že konfigurační volba a hodnota jsou označeny jako "private". Tato hodnota se momentálně nikde nepoužívá, podívejte se do přehledu, kde se o této možnosti dozvíte více.

Výhled
Výše uvedené změny jsou také přípravnými kroky pro vylepšenou správu konfigurace v MediaWiki. Výše uvedené změny nám umožňují např. odhalit možnosti konfigurace rozšíření v uživatelském rozhraní MediaWiki. K tomu je zapotřebí zpráva s lokalizovaným popisem ( a  ) a indikace, zda má být konfigurační volba  veřejná nebo ne.



Automatické zjišťování testů jednotek
MediaWiki umožňuje libovolné rozšíření pro registraci testů phpunit. Bez registrace rozšíření byste museli zaregistrovat obslužný program pro háček, který by vypadal asi takto:

(jak je popsáno v příručce). Tento kód však vypadá stejně pro mnoho rozšíření, takže byste to mohli nazvat zbytečnou duplikací kódu. Pokud vaše rozšíření používá registraci rozšíření a vaše testy phpunit jsou umístěny v podadresáři  vašeho rozšíření, wraper phpunit MediaWiki automaticky objeví testy jednotek pomocí registrace rozšíření. Proto již nemusíte háček registrovat a nemusíte specifikovat, že vaše testy jednotek jsou uloženy ve výchozím adresáři.



Přizpůsobení registrace

 * Viz MPříručka:Extension.json/Schema#callback.



Také composer.json
Pokud má rozšíření nebo vzhled knihovny závislosti, může je mít také soubor, viz. Použijte pole, aby MediaWiki používala automatické načítání Composer, když je to vhodné.

Některá pole metadat se překrývají mezi  a   (diskutované v ), včetně:
 * a
 * a



Správce kódu


Documentation

 * je schéma pro  (a skin.json).
 * Migration guide - some recommendations on updating older extensions
 * Migration guide - some recommendations on updating older extensions
 * Migration guide - some recommendations on updating older extensions
 * Migration guide - some recommendations on updating older extensions

Feedback

 * Hlášení chyb v projektu MediaWiki-Configuration.
 * RfC o implementaci registrace rozšíření