Extension:Page Forms/Input types
Tato stránka se zabývá různými typy vstupů, které jsou k dispozici v rámci formulářů stránek, a parametry a další přizpůsobení, které lze pro ně nastavit.
Typy vstupů
text
Výchozí typ vstupu; odpovídá "textovému" vstupu HTML.
Speciální parametry:
size=velikost
|
Určuje šířku vstupu ve znacích. |
maxlength=maximální délka
|
Určuje maximální povolenou délku vstupu. |
placeholder=zástupný text
|
Určuje text nápovědy, který se zobrazí ve vstupu, dokud na něj uživatel neklikne. |
autocapitalize=hodnota
|
parametr autocapitalize v odpovídající značce HTML na jakoukoli hodnotu nastavenou pro tento parametr; příklady zahrnují on , off , sentences atd.
|
textarea
Odpovídá HTML značce <textarea>
.
Speciální parametry:
rows=počet řádků
|
Určuje počet řádků. |
cols=počet sloupců
|
Určuje počet sloupců. |
maxlength=maximální délka
|
Určuje maximální povolenou délku vstupu. |
autogrow
|
Nastaví textovou oblast tak, aby její výška "automaticky rostla", aby odpovídala výšce jejího obsahu, takže posuvník nebude potřeba. |
editor=typ editoru
|
Přidává do textové oblasti editor založený na JavaScriptu, aby úpravy jejího obsahu byly uživatelsky přívětivější. Podporovány jsou následující hodnoty:
|
max height=maximální výška
|
Pokud se používá VisualEditor, určuje maximální výšku (v pixelech) pro textovou oblast, protože VE používá autogrow. Výchozí hodnota je nastavena proměnnou $wgPageFormsVisualEditorMaxHeight , která je ve výchozím nastavení 400.
|
placeholder=zástupný text
|
Určuje text nápovědy, který se zobrazí ve vstupu, dokud na něj uživatel neklikne. |
text s automatickým doplňováním, textová oblast s automatickým doplňováním
Dříve to byly skutečné typy vstupů, ale od verze 5.0 byly aliasy pro "kombobox" nebo "tokeny" (v závislosti na tom, zda vstup obsahuje seznam hodnot nebo pouze jednu).
combobox
Typ vstupu "combobox" poskytuje rozhraní combo box: vstup, který funguje jako běžné pole automatického doplňování, ale má další ikonu šipky dolů, jako je rozbalovací nabídka, která uživateli umožňuje zobrazit všechny dostupné hodnoty najednou. Je implementován pomocí knihovny OOUI .
Speciální parametry:
size=velikost
|
Určuje šířku vstupu ve znacích. |
height="výška"
|
Určuje výšku pole se seznamem v pixelech. |
existing values only
|
Zakáže libovolné hodnoty v poli. |
placeholder=zástupný text
|
Určuje text nápovědy, který se zobrazí ve vstupu, dokud na něj uživatel neklikne. |
tokens
Tento typ vstupu "tokenizuje" hodnoty v poli, tj. umístí kolem každé hodnoty blok, aby se z ní stala jedna jednotka namísto pouhého řetězce znaků. Tyto "tokeny"“ pak lze také přeskládat. Tento vstup je implementován pomocí JavaScriptové knihovny Select2.
Speciální parametry:
size=velikost
|
Určuje šířku vstupu ve znacích. |
max values=maximální hodnoty
|
Určuje maximální počet povolených hodnot. |
existing values only
|
Zakáže libovolné hodnoty v poli. |
placeholder=zástupný text
|
Určuje text nápovědy, který se zobrazí ve vstupu, dokud na něj uživatel neklikne. |
Ve výchozím nastavení se "tokeny" zobrazují jako jednořádkový vstup a poté se v případě potřeby vertikálně rozšíří, pokud jsou přidány další hodnoty.
V některých případech můžete chtít, aby se tento vstup na začátku jevil vyšší než jeden řádek, aby bylo uživatelům jasnější, že se rozšíří.
Chcete-li to provést pro jeden vstup, přidejte do značky pole parametr class
, například "|class=ClassName
", a poté do MediaWiki:Common.css přidejte něco jako následující:
.ClassName, .ClassName .select2-choices {
min-height:60px;
}
Pokud chcete, aby to platilo pro všechny vstupy "tokenů" na wiki, přidejte místo toho do MediaWiki:Common.css něco takového:
#pfForm .select2-container-multi .select2-choices {
min-height: 60px;
}
radiobutton
Vstup "radiobutton" odpovídá HTML vstupu "radio". Zobrazuje sadu hodnot, ze kterých si uživatel může vybrat pouze jednu.
Ve výchozím nastavení je první hodnota přepínacího tlačítka "None" (žádné), což uživateli umožňuje vybrat prázdnou hodnotu. Chcete-li zabránit zobrazení "None", musíte pole nastavit jako "povinné" (mandatory) a také nastavit jednu z povolených hodnot jako hodnotu "default=" (výchozí).
dropdown
Vstup "dropdown" (rozbalovací) odpovídá HTML značce <select>. Zobrazuje rozbalovací seznam hodnot, z nichž si uživatel může vybrat pouze jednu.
checkboxes
Vstup "checkboxes" (zaškrtávací políčka) zobrazuje zaškrtávací políčka, která umožňují uživateli vybrat libovolný počet hodnot.
Pokud je zaškrtávacích políček více než určitý počet, nad sadou zaškrtávacích políček se automaticky zobrazí odkazy"Select all" (vybrat vše) a "Select none" (nevybrat žádné), což uživatelům umožní automaticky zaškrtnout všechna nebo žádná z nich.
Toto číslo je diktováno proměnnou $wgPageFormsCheckboxesSelectAllMinimum
, která je ve výchozím nastavení 10, i když ji lze změnit v LocalSettings.php.
Speciální parametry:
hide select all
|
skrýt odkazy "Select all" (vybrat vše) a "Select none" (nevybrat nic) pro tento vstup bez ohledu na počet hodnot |
show select all
|
zobrazit odkazy "Select all" (vybrat vše) a "Select none" (nevybrat nic) pro tento vstup bez ohledu na počet hodnot |
listbox
Vstup "listbox" odpovídá HTML značce <select> s přidaným atributem "multiple". Zobrazuje vertikální seznam možností, kde si uživatel může vybrat libovolný počet hodnot.
Speciální parametry:
size=velikost
|
Určuje výšku seznamu podle počtu zobrazených řádků |
tree
Typ vstupu "tree" (strom) umožňuje hierarchické zadávání ve stromovém stylu, kde všechny hodnoty mají vedle sebe buď přepínací tlačítka, nebo zaškrtávací políčka, v závislosti na tom, zda pole může obsahovat jednu nebo více položek. Hodnoty mohou pocházet buď ze stromu kategorií v rámci wiki, nebo mohou být nastaveny ručně v definici formuláře.
Jak tento vstup pozná, zda může obsahovat jednu nebo více hodnot, a měl by tedy zobrazovat přepínací tlačítka vs. zaškrtávací políčka? Kontroluje, zda je pole v šabloně definováno jako pole obsahující seznam hodnot (pomocí #arraymap) nebo ne. Tato kontrola však není dokonalá. Pokud stromový vstup zobrazuje přepínací tlačítka místo zaškrtávacích políček, stačí přidat parametr "|list" do značky pole v definici formuláře, abyste zjistili, že se jedná o seznam.
V závislosti na zdroji hodnot musíte zadat jeden z těchto dvou dalších parametrů:
top category=
- nastaví název kategorie v horní části "stromu".structure=
- nastavuje celou stromovou strukturu. K nastavení úrovně hloubky by se měly používat odrážky ve stylu wikitextu.
Pokud použijete parametr "structure" (struktura), měl by vypadat nějak takto:
{{{field|Location|input type=tree|structure=*Universe **Milky Way Galaxy ***Solar system **Andromeda Galaxy ...etc. }}}
Volitelně můžete také nastavit tyto parametry:
height=
- nastavuje výšku pole, ve kterém se strom objeví, v pixelech.width=
- nastavuje šířku pole, ve kterém se strom objeví, v pixelech.delimiter=
- nastavuje oddělovač, kdy pole může obsahovat seznam hodnot. Výchozí hodnota je ','.hideroot
- skryje název nejvyšší kategorie.depth=
- nastavuje počet úrovní stromu, které jsou zobrazeny na začátku. Výchozí hodnota je 10.
Zde si můžete prohlédnout vzorový formulář, který používá tento typ vstupu.
Pro názvy kategorií
Pokud k zobrazení stromu kategorií používáte typ vstupu "strom", uvědomte si, že tento vstup vytiskne pouze názvy vybraných kategorií bez jmenného prostoru "Category:" před ním. Takže pokud chcete, aby se zobrazil i na stránce, šablona jej bude muset přidat.
Pokud pole určuje více kategorií a šablona k tomu používá #arraymap, mělo by volání #arraymap vypadat nějak takto:
{{#arraymap:{{{Categories|}}}|,|x|[[Category:x]] |<nowiki> </nowiki>}}
...jinými slovy, musíte zadat konečný paramet "delimiter" (oddělovač) pro #arraymap a vytvořit z něj mezeru, prázdnou nebo něco podobného, abyste se vyhnuli tisku čárek mezi značkami kategorií.
checkbox
Jediné zaškrtávací políčko používané pro booleovské hodnoty.
Speciální parametry:
label=
|
specifikuje "label" pro toto zaškrtávací políčko, které by šlo do tagu <label>. |
date
Tento vstup obsahuje tři samostatné položky pro rok, měsíc a den.
datetime
Vstup "datetime" je podobný vstupu "date", ale obsahuje další položky pro hodiny, minuty, sekundy a AM/PM.
Speciální parametry:
include timezone
|
určuje, že by měla být zahrnuta také položka časového pásma. |
year
"year" je jednoduchý textový vstup, který se používá k získání hodnoty pouze pro rok pro pole data.
datepicker
"datepicker" umožňuje uživateli vybrat si datum pomocí vyskakovacího kalendáře založeného na JavaScriptu.
Special parameters:
date format=
|
nastaví vlastní formát data, který se používá pouze pro vstupní pole. Příkladem může být DD-MM-YYYY .
|
first date=
|
nastavuje první datum, které může uživatel vybrat. |
last date=
|
nastavuje poslední datum, které může uživatel vybrat. |
Počáteční den týdne (např. sobota, neděle nebo pondělí) je nastaven na základě jazyka wiki. To bohužel nelze nastavit nezávisle na jazyku. Pokud je vaše wiki v angličtině a chcete, aby týdny v kalendáři začínaly v pondělí místo v neděli (což je výchozí nastavení), můžete to udělat nastavením jazyka vaší wiki na "en-gb" místo "en".
datetimepicker
"datetimepicker" je typ vstupu založený na JavaScriptu velmi podobný "datepicker", ale obsahuje vyskakovací okna pro výběr data i času.
Výchozí hodnota je rrrr/mm/dd hh:mm
.
Jeho sada parametrů zahrnuje všechny tyto "datepicker" a také následující:
mintime=
|
minimální povolený čas |
maxtime=
|
maximální povolený čas |
interval=
|
interval (v minutách) mezi možnostmi zobrazenými uživateli |
rating
Typ vstupu "rating" zobrazuje sadu hvězdiček, aby mohl uživatel zadat hodnocení.
Speciální parametry:
star width
|
určuje šířku (a výšku) každé hvězdičky. Výchozí hodnota je 24 pixelů. |
num stars
|
určuje počet hvězdiček, které se mají zobrazit. Výchozí hodnota je 5. |
allow half stars
|
umožňují uživatelům vybrat půl hvězdičky. Výchozí hodnota je false. Nastavte na 'yes' (nebo jakoukoli jinou hodnotu), aby bylo true. |
googlemaps, leaflet, openlayers
Typy vstupu "googlemaps", "leaflet" a "openlayers" vám umožňují zobrazit mapu pro získání hodnoty souřadnic pomocí služeb Google Maps, Leaflet nebo OpenLayers.
Pokud používáte vstup "googlemaps", možná budete muset získat klíč Google Maps API a poté jej nastavit na LocalSettings.php pomocí nastavení $wgPageFormsGoogleMapsKey
, aby se vstup zobrazil.
Volitelně můžete také nastavit tyto parametry pro tyto typy vstupů:
height=
|
nastavuje výšku mapy v pixelech. |
width=
|
nastavuje šířku mapy v pixelech.
K nastavení dimenze je potřeba dohromady height a width.
|
starting bounds=
|
vezme pár souřadnic pro nastavení hranic zobrazené mapy. Tento parametr platí pouze v případě, že vstup nemá hodnotu. (Příklad hodnoty tohoto parametru: "-20,-15;50,55".) |
Typ vstupu "leaflet" (leták) také umožňuje jeden další parametr:
image=
|
nastaví zadaný obrázek (což musí být obrázek, který byl nahrán na wiki) jako pozadí mapy místo zeměpisné mapy. |
Všechny mapové vstupy vám umožňují zadat adresu pro snadnější nalezení souřadnic. Pokud však formulář již obsahuje jedno nebo více polí pro zadání adresy, uživatel je možná bude muset zadat dvakrát – jednou pro skutečné uložení dat a podruhé pro nalezení souřadnic. Abyste se vyhnuli tomu, že by uživatelé museli dělat tuto dvojí práci, můžete pole adresy (polí) zadat své hodnoty přímo do mapy při lokalizaci bodu. Můžete to udělat pomocí parametru "feeds to map=" - hledejte "cesty do mapy" zde.
Všechny tyto formáty ve výchozím nastavení spoléhají na externí kód JavaScript. Můžete však nechat formát "openlayers" místo toho používat místní kód JavaScript, stačí nainstalovat rozšíření OpenLayers.
Zákazy
Všimněte si, že všechny tyto typy vstupů odesílají data vaší wiki (tj. data obsažená ve výsledcích dotazu) externím službám. Jsou jedinou částí kódu Page Forms, která odesílá data externě, kromě automatického doplňování na externích hodnotách, i když tato vyžaduje ke spuštění další konfiguraci. Pokud máte soukromou wiki a máte velké obavy z toho, aby se žádná data nedostala ven, možná budete chtít k LocalSettings.php přidat následující:
$wgPageFormsDisableOutsideServices = true;
To znemožní používání jakýchkoliv externích služeb stránkovými formuláři - což v tuto chvíli znamená zakázání těchto tří typů vstupu.
regexp
Typ vstupu "regexp" není skutečný typ vstupu, ale spíše schopnost zobrazit jiný vstup (nejčastěji "text") s dalším ověřením založeným na regulárních výrazech. Podívejte se na podrobnější vysvětlení tohoto typu vstupu a jeho parametrů.
Povolené vstupní typy pro datové typy
Každý definovaný datový typ při použití Cargo nebo Semantic MediaWiki má výchozí typ vstupu a případně také výchozí velikost vstupu. Některé datové typy mají navíc speciální zpracování, pokud pole obsahuje seznam hodnot s oddělovači, nikoli pouze jednu hodnotu.
Zde jsou výchozí hodnoty a další povolené typy vstupu pro každý typ dat pro jednotlivé hodnoty:
Typ dat Cargo | Datový typ SMW | Výchozí typ vstupu | Výchozí velikost | Další povolené typy vstupu |
---|---|---|---|---|
Page | Page | combobox | 35 | text, dropdown, textarea, tree |
String | N/A | text | 35 | combobox, textarea |
Text | Text, Code | textarea | 5 x 30 | text |
URL | URL | text | 100 | textarea |
Integer, Float | Number | text | 10 | textarea |
Date, Start date, End date | Date | date | datetime, year, datepicker | |
Datetime, Start datetime, End datetime | N/A | datetime | datetimepicker, date, year | |
Boolean | Boolean | checkbox | dropdown, radiobutton | |
Coordinates | Geographic coordinate | openlayers | googlemaps, leaflet | |
Rating | N/A | rating | ||
Enumeration (jakékoli pole Cargo se seznamem povolených hodnot) | Enumeration (jakákoli vlastnost SMW s definovanými "povolenými hodnotami") | dropdown | radiobutton | |
Hierarchy (jakékoli pole Cargo s hierarchickou sadou povolených hodnot) | N/A | tree |
A zde jsou výchozí a další povolené typy vstupu pro "oddělené seznamy" určitého datového typu:
Typ dat Cargo | Datový typ SMW | Výchozí typ vstupu | Výchozí velikost | Další povolené typy vstupu |
---|---|---|---|---|
Page | Page | tokens | 100 | text, textarea, tree, checkboxes |
String | Text | text | 100 | textarea, tokens |
Enumeration | Enumeration | checkboxes | listbox | |
Hierarchy | N/A | tree |
Nahrávání souborů
Pokud má pole ve formuláři obsahovat název nahraného souboru (řekněme obrázek), můžete uživatelům umožnit nahrát tento soubor přímo prostřednictvím formuláře. To se provádí jednoduše přidáním parametru "uploadable" do deklarace tohoto pole v definici formuláře. Tím se vedle tohoto pole ve formuláři přidá odkaz "Upload file" (nahrát soubor). Pokud uživatel klikne na tento odkaz, zobrazí se okno ve stylu "lightbox" (pomocí knihovny JavaScript FancyBox), které uživateli umožní nahrát soubor. Jakmile tak uživatel učiní, okno se zavře a pole bude obsahovat název nahraného souboru. Pokud je pole nakonfigurováno tak, aby obsahovalo seznam hodnot, bude nový název souboru připojen k tomu, co tam bylo předtím, Jinak název souboru přepíše jakékoli pole obsažené dříve.
Pamatujte, že parametr "uploadable" lze použít pouze v polích typu "text", "text s automatickým doplňováním", "combobox" nebo "tokens".
U polí, která lze nahrát, můžete také nastavit výchozí název souboru nahraných souborů nastavením parametru "default filename=" v definici pole. Hodnota tohoto parametru může zahrnovat funkce parseru, magická slova a podobně. Může také obsahovat proměnnou "<page name>", která je nahrazena názvem přidávané nebo upravované stránky. Přidání parametru "default filename=Image for <page name>" do definice pole, například pro stránku s názvem "Abc", by tedy nastavilo výchozí název jakéhokoli nahraného souboru na "Image for Abc". Všimněte si, že pokud chcete pouze zadat výchozí soubor, který se má použít, například "Imageneeded.png", postačí běžný parametr "default=Imageneeded.png".
Zde můžete vidět ukázku nahrávání souboru .
Upozorňujeme, že okno nahrávání nebude fungovat, pokud je $wgBreakFrames
ve vašem souboru LocalSettings.php nastaveno na true
.
Můžete také nastavit pole, do kterých lze nahrávat, tak, aby přímo používala vlastní nahrávání operačního systému namísto použití systému nahrávání MediaWiki – to dává uživateli méně možností, ale je to jednodušší proces a na mobilních zařízeních může představovat některé zajímavé možnosti, jako je nahrávání fotografií ihned po jejich pořízení. Chcete-li to provést, přidejte do souboru LocalSettings.php následující řádek:
$wgPageFormsSimpleUpload = true;
Speciální parametry pro pole, která lze nahrát, jsou:
uploadable
- určuje, že se jedná o pole, které lze nahrát.image preview
- určuje, že pod polem ve formuláři má být umístěna miniatura nahraného obrázku.default filename=
filename - určuje výchozí název souboru pro soubory nahrané pomocí tohoto pole.