Jump to content

Extension:TemplateStyles

From mediawiki.org
This page is a translated version of the page Extension:TemplateStyles and the translation is 100% complete.
Příručka k rozšířením MediaWiki
TemplateStyles
Stav rozšíření: stabilní
Implementace Značka , ContentHandler , Háček
Popis Načte upravené CSS styly ze šablony.
Autoři
Nejnovější verze Průběžně aktualizováno
Zásady kompatibility Vydání snímků současně s MediaWiki. Hlavní vývojová větev není zpětně kompatibilní.
MediaWiki 1.30+
PHP 7.3+
  • $wgTemplateStylesUseCodeEditor
  • $wgTemplateStylesDisable
  • $wgTemplateStylesUseCodeMirror
  • $wgTemplateStylesDefaultNamespace
  • $wgTemplateStylesDisallowedAtRules
  • $wgTemplateStylesAllowedUrls
  • $wgTemplateStylesDisallowedProperties
  • $wgTemplateStylesAutoParseContent
  • $wgTemplateStylesMaxStylesheetSize
  • $wgTemplateStylesNamespaces
<templatestyles src=... />
Licence GNU General Public License 2.0 nebo novější
Stáhnout
Přeložte rozšíření TemplateStyles, používá-li lokalizaci z translatewiki.net
Problémy Otevřené úkoly · Nahlásit chybu

TemplateStyles je rozšíření parseru, které umožňuje uživatelům ukládat vlastní CSS kód na wiki stránky a vkládat tyto styly do článků pomocí tagu ‎<templatestyles>. Rozšíření umožňuje pouze bezpečnou podmnožinu syntaxe CSS uloženou na stránkách stylů, které lze vložit. Toto je poháněno knihovnou css-sanitizer .

Editorům se doporučuje přidávat styly pro šablonu prostřednictvím TemplateStyles, protože to umožňuje stejným uživatelům upravovat šablonu i její styly a styly se tak načítají pouze v případě potřeby (ve srovnání s přidáváním do celého webu MediaWiki:Common.css ).

Pokyny k použití rozšíření jako editoru na wiki naleznete v článku Nápověda:TemplateStyles .

Použití

Nejprve je nutné vytvořit stránku CSS. Ve výchozím nastavení bude jakákoli podstránka v oboru názvů šablon s názvem končícím na ".css" vytvořena s příponou Vyčištěné CSS content model , pokud neobsahuje žádné syntaktické chyby.

Sadu jmenných prostorů lze upravit pomocí $wgTemplateStylesNamespaces, nebo lze na libovolné stránce použít Special:ChangeContentModel . Pak do wikitextu šablony přidejte tag <templatestyles src="..." /> pro načtení stylů.

CSS uložený pomocí modelu obsahu Vyčištěné CSS musí splňovat přísné požadavky na platnost: neplatný CSS, nerozpoznaná pravidla at-rules a nerozpoznané nebo nepodporované vlastnosti či hodnoty vlastností nelze uložit. Pokud je nějakým způsobem uložen neplatný CSS kód, budou problematické konstrukty odstraněny při výstupu CSS kódu do prohlížeče.

Hodnota atributu src na tagu je název stránky, standardně se používá jmenný prostor šablony. (Tuto výchozí hodnotu lze změnit pomocí $wgTemplateStylesDefaultNamespace.) Například <templatestyles src="Example/styles.css" /> načte stránku "Template:Example/styles.css". Toto se nezdaří, pokud daná stránka neexistuje nebo má jiný model obsahu než Vyčištěné CSS.

Styly lze v rámci stránky vymezit pomocí volitelného parametru wrapper v tagu, např. <templatestyles src="Example/styles.css" wrapper="div.example" /> by vymezil styly načtené na libovolný parametr <div class="example"> v hlavním analyzovaném obsahu. Pro parametr wrapper lze použít libovolnou jednoduchou selektorovou sekvenci CSS. Toto má umožnit vedlejší porovnání živých a sandboxových verzí šablony.

Použití upraveného CSS je sledováno stejně jako vyloučení šablon a zobrazí se jako vyloučení při hodnotě Special:WhatLinksHere .

Varování

  • Styly přidané metodou TemplateStyles jsou vymezeny v rámci kategorie .mw-parser-output, aby se zabránilo manipulaci s uživatelským rozhraním mimo hlavní analyzovaný obsah.
    • Chcete-li použít TemplateStyles ke stylování něčeho jako w:MediaWiki:Protectedpagetext, museli byste obsah zprávy uzavřít do proměnné <div class="mw-parser-output">...</div>.
  • Styly by měly být napsány tak, aby cílily na konkrétní třídy CSS, a cokoli, co generuje prvky s těmito třídami, by mělo také zahrnovat samotné styly, spíše než se spoléhat na nějakou jinou šablonu.
    • Styly zahrnuté v šabloně mohou v současné době ovlivnit obsah na stránce mimo obsah generovaný danou šablonou, ale tato možnost může být v budoucnu odebrána a nemělo by se na ni spoléhat. (Viz diskuse z phab:T155813#2996589 a v phab:T176272.)
    • Zahrnutí stylů do šablony, které ovlivňují obsah mimo danou šablonu, způsobí, že se tyto styly nepoužijí při úpravě sekce, která danou šablonu neobsahuje. Příklad: Pokud přidáte styly do informačního pole, které ovlivňují všechny tabulky na stránce, při úpravě sekce, která dané info pole neobsahuje, nebudou tyto tabulky při zobrazení náhledu dané sekce stylizovány.
  • TemplateStyles nepodporuje definování CSS proměnných, viz phab:T320322 (CSS proměnné definované jinde, například v MediaWiki:Common.css, lze odkazovat z TemplateStyles).
  • TemplateStyles umožňuje několik nestandardizovaných CSS vlastností. Požadavky na podporu dalších vlastností by měly být zasílány jako zařazeny do Phabricatoru v projektech css-sanitizer a TemplateStyles.
    • Žádosti by měly obsahovat odkazy na dokumenty týkající se standardů (např. na w3.org) popisující syntaxi požadovaných vlastností a analýzu aktuální podpory vlastností prohlížeči (např. odkaz na stránku o vlastnostech na caniuse.com).
    • Vlastnosti s předponou dodavatele (např. cokoli začínajícího na -webkit-, -moz- nebo -ms-) budou pravděpodobně odmítnuty, pokud nejsou potřeba pro moderní prohlížeče.
  • Pravidla @font-face musí používat předponu font-family s předponou "TemplateStyles". To by mělo do značné míry zabránit předefinování písem použitých jinde v dokumentu.
  • Pro cílení stylů na základě vzhledů použijte selektor, například body.skin-vector .myClass. Specifikace prvku body je vyžadována a musí být následována následným kombinátorem (tj. mezerou). Stejným způsobem lze cílit i na další třídy na prvcích body nebo html. Podívejte se na stránku phab:T197617. 1.32+

Instalace

Toto rozšíření je součástí MediaWiki 1.44 a vyšší. Zbývající konfigurační pokyny je stále nutné dodržovat.
  • Stáhněte soubor/y a vložte je do adresáře pojmenovaného TemplateStyles ve vaší složce extensions/.
    Vývojáři a přispěvatelé kódu by si místo toho měli nainstalovat rozšíření from Git pomocí:
    cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/TemplateStyles
    
  • Při instalaci z Gitu spusťte Composer pro instalaci závislostí PHP zadáním composer install --no-dev v adresáři rozšíření. (Vyskytnou-li se nějaké komplikace, podívejte se na T173141.)
  • Na konec vašeho souboru LocalSettings.php přidejte následující kód:
    wfLoadExtension( 'TemplateStyles' );
    
  • Vyžaduje nastavení v konfiguračním souboru.
  • Yes Dokončeno – Přejděte na stránku Special:Version vaší wiki a zkontrolujte, zda bylo rozšíření úspěšně nainstalováno.


Instalace Vagrant:

  • Pokud používáte Vagrant , instalujte s těmito parametry vagrant roles enable templatestyles --provision
Pro příjemnější uživatelské rozhraní se zvýrazněním syntaxe a editorem kódu s automatickým odsazením nainstalujte následující rozšíření:

Konfigurace

Nastavení konfigurace
Parametr Výchozí Komentář
$wgTemplateStylesAllowedUrls
[
    "audio" => [
        "<^https://upload\\.wikimedia\\.org/wikipedia/commons/>"
    ],
    "image" => [
        "<^https://upload\\.wikimedia\\.org/wikipedia/commons/>"
    ],
    "svg" => [
        "<^https://upload\\.wikimedia\\.org/wikipedia/commons/[^?#]*\\.svg(?:[?#]|$)>"
    ],
    "font" => [],
    "namespace" => [
        "<.>"
    ],
]
Regulární výrazy PCRE pro porovnávání povolených URL adres pro různé typy externích odkazů.

Klíče jsou externí typy odkazů a hodnoty jsou pole regulárních výrazů (včetně oddělovačů), které odpovídají povoleným URL adresám. Pokud existuje pojmenovaná skupina pro zachycení s názvem filename, pak se její hodnota použije k označení daného souboru jako používaného. Aktuální typy externích referencí jsou:

audio
Zvukový soubor pro cue vlastností modulu CSS Speech.
image
Soubor obrázku pro vlastnosti jako například background.
svg
Soubor SVG pro filtry Masking a Filters.
font
Místo @font-face je src.
namespace
Pro @namespace.
$wgTemplateStylesNamespaces [ NS_TEMPLATE => true ] Jmenné prostory, ve kterých se má nastavit model obsahu Vyčištěné CSS pro názvy končící na ".css".

Povolení této možnosti pro 2 (Uživatel) nebo 8 (MediaWiki) je špatný nápad, protože by to vedlo ke konfliktu s běžnými CSS soubory v těchto jmenných prostorech.

$wgTemplateStylesPropertyBlacklist [] Vlastnosti, které se mají zakázat v pravidlech stylu CSS.

Háček TemplateStylesPropertySanitizer umožňuje jemnější kontrolu.

$wgTemplateStylesAtRuleBlacklist [] Pravidla pro zakázání přístupu (AT-rules) ve stylech.

Háček TemplateStylesStylesheetSanitizer umožňuje jemnější kontrolu.

$wgTemplateStylesUseCodeEditor true Zda povolit Extension:CodeEditor pro typ obsahu Vyčištěné CSS.
$wgTemplateStylesAutoParseContent true Pokud je hodnota true, bude model obsahu Vyčištěné CSS přidán k $wgTextModelsToParse, pokud je model obsahu CSS již v daném poli přítomen.

Pokud je hodnota false, přidejte do tohoto pole ručně hodnotu 'sanitized-css', pokud chcete, aby kategorie a podobně byly analyzovány mimo stránku CSS.

$wgTemplateStylesMaxStylesheetSize 102400 Maximální velikost (v bajtech) stylového listu. null pro neomezený počet.
$wgTemplateStylesDefaultNamespace NS_TEMPLATE Výchozí jmenný prostor pro atribut src tagu ‎<templatestyles>.

Další potřebné knihovny

Proměnná $wgTidyConfig by měla být nakonfigurována tak, aby se nepoužívalo žádné úklidové operace, nebo RemexHtml. Pokud se použije s jakýmkoli ovladačem Raggett, tag ‎<templatestyles /> uprostřed odstavce (včetně vložené šablony) způsobí, že příkaz tidy v tomto místě zalomí odstavec. Ostatní ovladače nebyly na tento problém testovány.

Možné chyby

Abyste zjistili, zda se u vás nevyskytuje některá z níže uvedených chyb, může vám pomoci v poli LocalSettings.php povolení $wgShowExceptionDetails .

  • Class 'Wikimedia\CSS\Parser\Parser' not found
    To znamená, že požadovaná knihovna nebyla nainstalována. Chyba se může objevit při pokusu o import stránky wiki CSS nebo při změně modelu obsahu stránky na "sanitized-css". Toto se v minulosti stávalo kvůli chybě v distributoru rozšíření. Již by se to stávat nemělo.
    Řešením tohoto problému by obvykle bylo rozšíření Composer .
  • Import failed: The content model 'sanitized-css' is not registered on this wiki.
    Stane se to, když se pokusíte importovat stránku wiki vytvořenou pomocí TemplateStyles, ale TemplateStyles není na vaší wiki nainstalován.

Související odkazy