Webbox
Webbox vkládá externí webovou stránku do průzkumu jako modální iframe, což umožňuje enumerátorům prohlížet reference nebo interagovat s externími nástroji bez opuštění formuláře.
Webbox vkládá externí webovou stránku do průzkumu jako modální vyskakovací okno (iframe). Enumerátor klepne na tlačítko v popisku nebo textu poznámky, stránka se otevře v překrytí přes celou obrazovku uvnitř formuláře a když ji zavře, vrátí se přesně tam, kde byl. To vám umožní zobrazit referenční materiál, mapy, dashboardy nebo vlastní nástroje bez otevření samostatné záložky prohlížeče.
Syntaxe
Vložte HTML tag <webbox> přímo do sloupce popisku label nebo note:
<webbox src='https://example.com/reference' title='Referenční příručka'>Otevřít referenční příručku</webbox>
| Atribut | Popis |
|---|---|
src | URL pro načtení v iframe. Podporuje jednoduché i dvojité uvozovky. |
title | Text zobrazený v záhlaví modálního okna. Podporuje prostý text. |
| (obsah) | Popisek klikatelného tlačítka zobrazený v poli průzkumu |
Základní příklad
| type | name | label |
|---|---|---|
| note | ref_guide | <webbox src='https://docs.example.com/field-guide' title='Terénní příručka'>📖 Otevřít terénní příručku</webbox> |
Toto vykreslí tlačítko s popiskem „📖 Otevřít terénní příručku". Po klepnutí se otevře modální okno zobrazující web terénní příručky.
Vložení mapy
| type | name | label |
|---|---|---|
| note | area_map | <webbox src='https://maps.example.com/survey-area' title='Mapa oblasti průzkumu'>🗺 Zobrazit mapu</webbox> |
Předávání hodnot formuláře do vložené stránky
Připojte hodnoty polí formuláře k URL pomocí concat() ve sloupci calculation a odkazujte výsledek v popisku:
| type | name | label | calculation |
|---|---|---|---|
| calculate | webbox_url | concat('https://dashboard.example.com/household?id=', ${household_id}) | |
| note | hh_dash | <webbox src='${webbox_url}' title='Dashboard domácnosti'>Otevřít dashboard</webbox> |
Atribut src v tagu <webbox> podporuje reference ${fieldname}, když je popisek vypočítán z pole calculate. Sestavte celou URL v poli calculate a odkazujte ji.
Interakce s opakováními: tlačítka pro mazání
Webbox také podporuje speciální tagy akcí pro správu skupin opakování uvnitř popisků:
<delete-repeat-current>Odebrat tento řádek</delete-repeat-current>
<delete-repeat-last>Odebrat poslední řádek</delete-repeat-last>
Tyto se vykreslí jako tlačítka, která po klepnutí mažou instance opakování. Umístěte je do pole note uvnitř (nebo těsně za) skupinu opakování:
| type | name | label |
|---|---|---|
| begin_repeat | items | Položka |
| text | item_name | Název položky |
| note | delete_btn | <delete-repeat-current>✕ Odebrat tuto položku</delete-repeat-current> |
| end_repeat |
Komunikace s vloženou stránkou (postMessage)
Iframe webboxu a nadřazený formulář mohou komunikovat pomocí API postMessage prohlížeče. Nadřazená stránka pošle zprávu init do iframe při otevření. Vložená stránka může odpovědět:
delete-repeat-current— spustí smazání aktuální instance opakovánídelete-repeat-last— spustí smazání poslední instance opakování
To umožňuje vlastním webovým nástrojům (např. kreslicí nástroje, interaktivní mapy) spouštět akce formuláře, když uživatel potvrdí akci uvnitř iframe.
Osvědčené postupy
- Používejte webbox pro referenční materiál (pokyny, vyhledávací tabulky, mapy) — nikoli pro sběr dat, která by měla být ve formuláři samotném.
- Zajistěte, aby vložená URL byla přístupná ze sítě zařízení — webbox vyžaduje připojení.
- Udržujte vloženou stránku přívětivou pro mobily — modální okno má maximálně 800px šířku a 80% výšky viewportu.
- Používejte popisné texty tlačítek (např. „Zobrazit mapu vesnice") spíše než obecné popisky („Klikněte zde").
- Informujte enumerátory, že zavření modálního okna je vrátí do průzkumu — někteří uživatelé nemusí vědět, jak zavřít překrytí iframe.
Omezení
- Webbox vyžaduje připojení k síti pro načtení vložené URL.
- Některé externí weby blokují vložení do iframů prostřednictvím hlaviček
X-Frame-OptionsneboContent-Security-Policy— tyto weby nelze použít s webboxem. - Modální okno se zavře, když enumerátor přejde od otázky — jakýkoli neuložený stav v iframe je ztracen.
- Webbox je rozšíření webového formuláře rtSurvey a nemusí fungovat v jiných klientech kompatibilních s ODK.