Šablona:Chyba/doc: Porovnání verzí

Z Enviwiki
Skočit na navigaci Skočit na vyhledávání
Bez shrnutí editace
(Obsah stránky nahrazen textem „Viz w:cs:Šablona:Chyba/doc“)
 
Řádek 1: Řádek 1:
{{Podstránka s dokumentací}}
Viz [[w:cs:Šablona:Chyba/doc]]
{{šablona|chyba}}
 
== Účel ==
Tato šablona slouží pro označení povinných parametrů volaných šablon a pro validaci vstupních hodnot.
 
Účelem šablony je:
* ošetření chyb při volání šablon,
* určení jejich důvodu a
* určení jejich původu, pro umožnění snadného nalezení místa jejich projevu ve výsledném článku.
Pro dosažení těchto účelů působí šablona tyto účinky:
* přidání článku z hlavního prostoru wikipedie do chybové kategorie a
* označení místa chyby, kdekoli, nejen ve článcích hlavního prostoru.
 
== Použití ==
V textu chybového hlášení se mají objevit tyto informace:
* odkaz na šablonu, která chybová hlášení generuje, ideálně pomocí <code><nowiki>{{Šablona|Chybu generující šablona}}</nowiki></code>
* popis chyby,
** především tedy přímo název chybějícho parametru: <code>hodnota parametru "NutnýVstup" chybí, ačkoli je požadována!</code>
** nebo s ukázkou hodnoty mimo rozsah: <code>hodnota "{{{NutnýVstup}}}" parametru "NutnýVstup" nebyla rozpoznána!</code>
 
Při editaci šablon a jejich rozšiřování o chybová hlášení se ujistěte, že nevzniknou žádná [[Nápověda:Neočekávaná odřádkování a mezery|nechtěná odřádkování]].
 
=== Příklady možných hlášení ===
==== Vůbec nezadáno ====
<code><nowiki>{{Chyba|Šablona {{Šablona|Chybu generující šablona}} požaduje pro parametr "NutnýVstup" zadat nějakou hodnotu!}}</nowiki></code>
{{Chyba|Šablona {{Šablona|Chybu generující šablona}} požaduje pro parametr "NutnýVstup" zadat nějakou hodonotu!}}
 
==== Zadáno mimo definiční rozsah ====
<code><nowiki>{{Chyba|Šablona {{Šablona|Chybu generující šablona}} hodnotu "{{{1}}}" zadanou do parametru "NutnýVstup" nerozeznala!}}</nowiki></code>
{{Chyba|Šablona {{Šablona|Chybu generující šablona}} hodnotu "{{{1}}}" zadanou do parametru "NutnýVstup" nerozeznala!}}
 
== Účinky ==
=== Zařazení do kategorie ===
Šablona typicky plní '''[[:Kategorie:Chybná volání šablon|kategorii Chybná volání šablon]]''' (přednastavená cílová kategorie), do ní ovšem vkládá pouze články z hlavního [[Nápověda:Jmenný prostor|jmenného prostoru]]. (To například pro odstínění stránek [[:Šablona:Dokumentace|dokumentací]].) Plnění zařizuje šablona {{šablona|Kategorie}}.
 
=== Skrytý popis chyby ===
Kromě chybových hlášení, které může být v různých článcích různé, podle textu zadaného při volání, lze chybové hlášení stále dohledat i ve výsledném [[w:cs:HyperText Markup Language|HTML]] kódu článku: Popis chyby je jen pomocí [[Kaskádové styly|CSS]] vlastnosti <code>display: none;</code> sice vyloučen ze zobrazování, ovšem text zadaný do šablony {{šablona|chyba}} bude v kódu přítomen.
 
Ovšem jakmile se tento schovávací mechanismus použije a skutečně dojde na prohledávání HTML, samotné hlášení "Chyba!" stále nijak nepomůže k rozpoznání problému! Je '''na zodpovědnosti''' wikipedisty, autora šablony, který skrývá chybová hlášení, aby do textu zahrnul i odkaz na šablonu, ve které chyba nastala!
* Použijte text, jako by se měl čtenářům ukázovat, aby objasňoval potíž.
* Do textu zahrňte i odkaz na šablonu samotnou.
Příklad:
<pre>{{chyba|Šablona {{Šablona|Dohledatelná}} selhala, ikdyž má všechny parametry, protože to tak zrovna chci!}}</pre>
Vygenerovaný výsledek:
{{chyba|Šablona {{Šablona|Dohledatelná}} selhala, ikdyž má všechny parametry, protože to tak zrovna chci!}}
 
=== Stylování chyby ve zdrojovém kódu stránky ===
Chybová hlášení jsou stylována podle této definice CSS třídy, konkrétně ze souboru <code>/common/shared.css</code>:
<pre>.error {
color: red;
font-size: larger;
}</pre>
 
== Příklady použití ==
{| class="wikitable"
|-
! Kód
! Výsledek
! [[Kaskádové styly|CSS]] styl
|-
| {{šablona|Chyba}}
| {{Chyba}}
|
|-
| {{šablona|Chyba|}}
| {{Chyba|}}
|
|-
| {{šablona|Chyba|popis chyby}}
| {{Chyba|popis chyby}}
|
|-
| {{šablona|Chyba|<nowiki>popis chyby|kategorie=Jiná cílová kategorie</nowiki>}}
| <!--{{Chyba|popis chyby|kategorie=Jiná cílová kategorie}} Viz: [http://cs.wikipedia.org/w/index.php?title=Diskuse_k_%C5%A1ablon%C4%9B:Chyba&curid=551501&diff=6190533&oldid=6190079]-->{{Chyba|popis chyby}}
|
|-
| {{šablona|Chyba|<nowiki>popis chyby|skrytý=skrytý</nowiki>}}
| {{Chyba|popis chyby|skrytý=skrytý}}
| <code>display: none;</code>
|-
| {{šablona|Chyba|<nowiki>popis chyby|skrytý=</nowiki>}}
| {{Chyba|popis chyby|skrytý=}}
| <code>display: none;</code>
|}
 
== Parametry ==
Šablonu lze zavolat i bez parametrů: Implicitní hlášení pak je {{Chyba}}.
* <code><nowiki>{{{1}}}</nowiki></code> - nepojmenovaný volitelný (ale doporučený) parametr (první): Hodnotou je hlášení o chybě, text ke zobrazení.
* <code>skrytý</code> - volitelný parametr, text popisu chyby bude skryt, ale stále obsažen v HTML kódu výsledného článku (hledejte <code>title="Chyba v použití šablony!" class="error"</code>). Je-li tento parametr použit, žádné hlášení se čtenáři nezobrazí: Takové chování je vhodné například pro ošetření zastaralých parametrů používaných šablon, aby se všechna volání s takovými parametry mohla postupně opravit/nahradit. Na hodnotě parametru nezáleží, nepoužívá se, stačí i jen jeho přítomnost.
* <code>kategorie</code> - volitelný parametr, cílová kategorie, do které se má článek s chybou zařadit.
 
== Skrytý popis ==
V situacích, kdy sice je cílem varovat o chybném použití šablony, ovšem bez nevzhledného porušení obsahu příliš dlouhým hlášením, lze použít vnořené skryté hálšení:
<code><nowiki>abc{{Chyba|Chybný vstup!{{Chyba|skrytý=skrytý|Šablona {{Šablona|Chybu generující šablona}} hodnotu "{{{1}}}"<!--
-->zadanou do parametru "NutnýVstup" nerozeznala!}}}}xyz</nowiki></code>
abc{{Chyba|Chybný vstup!{{Chyba|skrytý=skrytý|Šablona {{Šablona|Chybu generující šablona}} hodnotu "{{{1}}}" zadanou do parametru "NutnýVstup" nerozeznala!}}}}xyz
 
Z příkladu je vidět, že se čtenáři v článcích zobrazí pouze minimalistická verze popisu chyby. Naproti tomu wikipedisté vědí, že takové články jsou kategorizovány a že i v samotném článku, v jeho zdrojovém [[HyperText Markup Language|HTML]] kódu, je podrobný popis chyby uveden a k dohledání.
 
Předané chyby lze takto detekovat ikdyž jsou generovány skrytě, parametrem "skrytý".
 
== Použití chyb ==
Kromě použití této šablony jako nápovědy při volání šablon a jako nástroje pro kategorizaci a následnou údržby Wikipedie lze chyby také detekovat v šablonách a reagovat na ně. Klíčová je zde CSS třída <code>class="error"</code>: Na tu totiž reaguje interní funkce <code>{{#iferror:</code>, šablona tedy má možnost detekovat chybu předanou z jiné šablony a reagovat na ní.<ref>{{en}}[http://www.mediawiki.org/wiki/Help:Extension:ParserFunctions#.23iferror iferror, Help:Extension:ParserFunctions], Wiki Help na commons, mediawiki.org</ref> Na základě detekované chyby lze větvit další činnost: Buď vygenerovat vlastní chybu, anebo tuto předanou naopak ošetřit. Takové vnitřně detekované chyby jsou pak pouze dočasné hodnoty během zpracovávání šablony, do výsledku a do samotného článku se vůbec nemusí zahrnout: Záleží jen na wikipedistovi a jeho šabloně.
 
{| class="wikitable"
|-
! Kód
! Výsledek
|-
| <code><nowiki>{{#iferror: {{#expr: a+1}} | error | O.K. }}</nowiki></code>
| {{#iferror: {{#expr: a+1}} | error | O.K. }}
|-
| <code><nowiki>{{#iferror: {{Vnitřně Volaná Šablona Možná Generující I Chybová Hlášení}} | error | O.K. }}</nowiki></code>
| {{#iferror: {{Vnitřně Volaná Šablona Možná Generující I Chybová Hlášení}} | error | O.K. }}
|-
| <code><nowiki>{{#iferror: {{Chyba|chyba dovnitř}} | error | O.K. }}</nowiki></code>
| {{#iferror: {{Chyba|chyba dovnitř}} | error | O.K. }}
|-
| <code><nowiki>{{#iferror: <span class="error">a</span> | error | O.K. }}</nowiki></code>
| {{#iferror: <span class="error">a</span> | error | O.K. }}
|-
| <code><nowiki>{{#iferror: <span class="error">chyba dovnitř</span> | {{chyba|chyba ven}} | O.K. }}</nowiki></code>
| {{#iferror: <span class="error">chyba dovnitř</span> | {{chyba|chyba ven}} | O.K. }}
|}
Pomocí takového mechanismu se lze přiblížit [[ExceptionHandling]]u jako má třeba [[Objektově orientované programování|objektové programování]]: Pak lze chybová hlášení používat na způsob třetí hodnoty [[w:cs:tříhodnotová logika|tříhodnotové logiky]], vedla klasických "ano" a "ne".
 
=== Praktické použití tříhodnotové logiky ===
Prostý příklad testování chyby předané z vnořené šablony: Nejdříve volána pro test chyby, pak znovu už pro hodnotu samotnou.
<pre><nowiki>{{#iferror: {{IsInt|{{{num|}}}}}
| {{chyba|Hodnota "num" není číslo!}}
| {{IsInt|{{{num|}}}}}
}}</nowiki></pre>
 
Komplexnější možné (už programátorsky překomplikované) testování chyby z volané vnořené šablony, navíc i s původním chybovým hlášením:
<pre><nowiki>{{#iferror: {{IsInt|{{{num|}}}}}
| {{chyba|Šablona {{Šablona|Tento příklad}} detekovala, že hodnota v parametru "num" není číslo!
    {{chyba|skrytý=skrytý|{{IsInt|{{{num|}}}}} }}
  }}
| {{IsInt|{{{num|}}}}}
}}</nowiki></pre>
 
== Odkazy ==
=== Reference ===
<references/>
 
 
 
=== Související články ===
* [[w:Exception (programování)]]
* [[w:Kategorie:Validace volání šablon]]
 
=== Externí odkazy ===
* [http://bits.wikimedia.org/skins-1.5/common/shared.css?283-16 shared.css], bits.wikimedia.org, zdroj definice třídy "error"
 
<includeonly>
<!-- Přidávejte KATEGORIE a INTERWIKI, prosíme, pod tento řádek -->
[[Kategorie:Šablony pomocné|{{PAGENAME}}]]
 
</includeonly>

Aktuální verze z 14. 5. 2016, 13:41