Editace stránky Šablona:Chyba/doc

Skočit na navigaci Skočit na vyhledávání
Varování: Nejste přihlášen(a). Pokud uložíte jakoukoli editaci, vaše IP adresa bude zveřejněna v historii této stránky. Pokud se přihlásíte nebo si vytvoříte účet, vaše editace budou připsány vašemu uživatelskému jménu a získáte i další výhody.

Editace může být zrušena. Prosím, zkontrolujte porovnání níže, abyste se ujistili, že to chcete provést, a poté pro dokončení zrušení editace níže zobrazené změny zveřejněte.

Aktuální verze Váš text
Řádek 1: Řádek 1:
Viz [[w:cs:Šablona:Chyba/doc]]
{{Podstránka s dokumentací}}
{{š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>
Všechny příspěvky do Enviwiki jsou zveřejňovány podle licencí Creative Commons Uveďte autora – Zachovejte licenci 3.0 Unported (podrobnosti najdete na Enviwiki:Autorské právo). Pokud si nepřejete, aby váš text byl nemilosrdně upravován a volně šířen, pak ho do Enviwiki neukládejte.
Uložením příspěvku se zavazujete, že je vaším dílem nebo je zkopírován ze zdrojů, které nejsou chráněny autorským právem (tzv. public domain). NEVKLÁDEJTE DÍLA CHRÁNĚNÁ AUTORSKÝM PRÁVEM BEZ DOVOLENÍ!
Storno Pomoc při editování (otevře se v novém okně)
Náhled stránky s touto šablonou