Pokud se v PHP nezobrazují warningy a místo toho se provádění skriptu ukončí, zkontrolujte nastavení logování chyb v PHP. K chybě dochází když je nastavené log_errors na On, ale není nastavena cesta k souboru error_log - viz http://forums.iis.net/p/1146102/1856222.aspx#1856222 Pomůže správné nastavení cesty k souboru s logem, nebo případně (jako nouzové řešení) nastavení log_errors na off.
XML formulář definuje obsah, který se zobrazí uživateli a případně akce které se budou provádět po zadání dat.
Může být předávací - to znamená, že se po po uložení vyplněný formulář uloží do databáze (Vyplněné XML formuláře)
a může se předávat dalším uživatelům. Způsob zpracování formuláře určuje parametr mode
.
mode="show"
- zobrazovací formulářmode="process"
- zobrazovací (nepředávací) formulář, ve kterém se provádí i nějaké akce (uložení do databáze atd.).
Po odeslání tohoto formuláře se provede zpracování (process) a následně přesměrování na stejnou XML šablonu - tedy nové zobrazení.
Toto je doporučený mód pro formuláře, které provádějí nějaké zpracování, ukládání dat, volání skriptů, přepočtu atd.mode="data"
- předávací formulář. Ve vyplněném formuláři se ukládají pouze uživatelem vyplněná data.
Pro zpracování vyplněného formuláře se použije znovu původní šablona. V případě změny šablony se změna projeví i ve vyplněných formulářích.
Tento mód je doporučený pro předávací formuláře. Výhodou (proti módu transform) je menší datová velikost vyplněných formulářů (nepřenáší se kód šablony)
a možnost oprav již vyplněných formulářů. Vyplněné datové formuláře je technicky možné následně zpracovávat například pro zjištění nějakých statistik,
což u transformovaných formulářů prakticky nelze.mode="transform"
- předávací formulář. Do vyplněného formuláře se přenáší transformovaný kód původní šablony. Změna šablony nemá vliv na již vyplněné formuláře.
POZOR! tento mód ještě není u většiný tagů implemenován!mode="event"
- šablona je určena pro spouštění událostí (je volána automaticky z kódu Portálu). Nelze použít samostatně.mode="include"
- šablona je určena pro načtení (include) z jiného formuláře. Může obsahovat například nastavení uživatelských proměnných. Nelze použít samostatně.mode="hodnoceni"
- šablona je určena pro zobrazení hodnocení. Nelze použít samostatně.S formulářem se pracuje v několika režimech v závislosti na jeho módu:
Starší formuláře nepoužívaly parametr mode. Místo toho měly příznak neukladat="1"
nebo neukladat="2"
.
Hodnota 2 (doplněna 7.6.2016) pracuje jinak s POST a pro akci formulare používá stejnou URL jako pro zobrazení.
Navíc v nich bylo potřeba pomocí parametru verze="2"
zapnout používání nového zápisu proměnných.
Pro vytváření XML formuláře je někdy užitečné zapnout ladící informace. To se provede povolením v _appdbset.php
$enabledebugmode = 1;
a následným zapnutím v URL adrese pomocí parametru debug=1. Ladící informace se zobrazují jen uživateli, který si je takto zapne, takže je to možné provádět i u zákazníka v ostrém provozu.
Šablona XML formuláře musí vypadat takto:
<?xml version="1.0"?> <?xml-stylesheet href="ronform.xsl" type="text/xsl"?> <!-- JMENO AUTORA, RON Software, 2011 --> <ronform mode="data" xmlns:html="http://www.ron.cz/xmlforms/ns/html/" xmlns:htmladd="http://www.ron.cz/xmlforms/ns/htmladd/> ... obsah xml sablony ... </ronform>
Pokud šablona neobsahuje editovatelné prvky, nebo je zpracování editovatelných prvků a odesílání formuláře řešené nějakým jiným způsobem,
je možné místo ronform
použít ronxml
. Rozdíl je v tom, že ronxml
nevkládá do HTML stránky form
a skrytá pole.
Uvnitř tagu je možné použít xmlform
, který skrytá pole vloží. To lze použít například v případě, že má být ve stránce více formulářů.
<?xml version="1.0"?> <?xml-stylesheet href="ronform.xsl" type="text/xsl"?> <!-- JMENO AUTORA, RON Software, 2013 --> <ronxml mode="show"> ... obsah xml sablony ... ... generovaná stránka neobsahuje form a skrytá pole, takže nelze pouzit <predatdale> a podobně </ronxml>
Datové XML formuláře (tj. formuláře, ve kterých se při předávání ukládají jen data) musí mít parametr mode="data"
.
<?xml version="1.0"?> <?xml-stylesheet href="ronform.xsl" type="text/xsl"?> <!-- JMENO AUTORA, RON Software, 2017 --> <ronform mode="data"> ... obsah xml sablony ... </ronform>
Důležitá je správná hlavička a kořenový tag <ronform>
.
Vše se řídí pravidly XML. Poznámky se zapisují mezi znaky <!--
a -->
Každý element může vypadat takto:
<JMENO_ELEMENTU>
... obsah ... </JMENO_ELEMENTU>
nebo (pokud nemá žádný vnořený obsah) takto:
<JMENO_ELEMENTU />
Pořadí parametrů v tagu není podstatné a některé parametry mohou být úplně vynechány. Záleží na velikosti písmen.
Tagy <ronform>
a <xmlform>
mohou obsahovat také html atributy, např. html:class="..."
Kopíruje se do HTML a v případě transformovaných formulářů (mode="transform") i do výsledného vyplněného formuláře
<div>
... obsah ... </div>
V obsahu lze použít HTML značky, ale musí odpovídat XML pravidlům.
Např.
<BR/>
(všimněte si znaku / )<B>
... text ... </B>
Pozor! Text nesmí obsahovat řídící znaky jako např. "<
" a ">
"
Pro zobrazení těchto znaků lze použít aliasy <
a >
Nebo lze text uzavřít do sekce CDATA
<table class="browser"> <tr> <td>testovací tabulka</td><td>sloupec 2</td><td>třetí sloupec</td> </tr> <tr> <td>druhý řádek</td><td>té testovaci</td><td>tabulky ...</td> </tr> </table>
<text> Text s proměnnýma ... </text>Zobrazí přímo zadaný text s nahrazením proměnných.
POZOR! Každý prvek musí mít své jedinečné jméno v rámci celého XML formuláře. Toto jméno musí odpovídat identifikátoru programovacího jazyka (začíná písmenem, dále může obsahovat písmena i čísla). Nepoužívejte pro jména diakritiku!
hidden
. Používá se pro předání informací, které nezadává uživatel (např. načtené z databáze).
<hidden name="nazev" value="hodnota" format=""/>
<postvalue name="nazev" format="" htmlname="htmlname" />Načte do proměnné se zadaným názvem hodnotu odeslanou v předchozím kroku formuláře. Může to být hodnota zadaná uživatelem, nebo odeslaná v pomocí
<hidden>
. Umožňuje zjistit hodnotu zadané proměnné ještě před tím, než se ve formuláři zpracuje
příslušný editovatelný prvek (edit a podobně).
Parametr name
určuje jméno vytvořené proměnné.
Parametr format
určuje požadovaný datový formát.
Nepovinný parametr htmlname
určuje jméno použité v html stránce. Pokud není zadán, použije se name
.
<xmllog value="text s proměnnými, který se zapíše do XML"/>Zobrazení logu:
<showxmllog name="jmeno"/> <showxmllog name="jmeno"> <div><span class="dotaznik_jmeno">{$xmllog_username} ({$xmllog_time})</span>: <b>{$xmllog_value}</b></div> </showxmllog>Zobrazí log pro příslušný editační prvek (parametr name). Pokud je obsah elementu prázdný (první způsob zápisu), zobrazí výchozí vzhled logu, Pokud má element vnořený obsah (druhý způsob zápisu), použije jej pro výpis každého záznamu. Vnořený obsah může obsahovat jakékoliv jiné tagy a lze použít proměnné xmllog_name, xmllog_time, xmllog_username, xmllog_value, xmllog_value_br (konce řádků jsou nahrazeny tagem br), xmllog_poradipredavani, xmllog_urovenpredavani. xmllog_value_br lze vypsat například takto:
<showxmllog name="poznamka"> <div><span class="dotaznik_jmeno">{$xmllog_username} ({$xmllog_time})</span>: <b><text>{$xmllog_value_br}</text></b></div> </showxmllog>
<debugmsg>text debugovací hlášky s parametry</debugmsg> <infomsg>text informační hlášky s parametry</infomsg>Text hlášky se vypíše přímo do intrawebu ihned v okamžiku zpracování tagu a to v režimu show i fill.
<debugmsg>
se zobrazuje jen v debug režimu, infomsg vždy.
Parametr se do dotazu vloží takto: {$JMENO_PROMENNE:FORMAT}
Format je nepovinný, výchozí je string
. U jiných datových typů musí být zadán.
Možné formáty (některé mají různé možné názvy - není mezi nimi rozdíl):
string
date
datetime, timestamp
sqltimestamp
- převede datum načtené z databáze na sql formát
datestr
- převede textové datum (např. zadané editem ve formatu date) na sql format
int, integer
float, double
sql
- vloží přímo hodnotu proměnné jako část sql dotazu (bez dalšího formátování).
Pokud obsahuje další proměnné, tak jsou nejdříve nahrazeny.
To znamená, že je možné nadefinovat nějaký podvýraz (např. filtr) s proměnnýma, který je možné potom využít v dalších sql dotazech
<link action="akce" params="parametry" text="zobrazený text" question="nepovinná otázka před provedením akce" />Zobrazí HTML odkaz pro provedení zadané akce s parametry v aktuálním formuláři
<uzavrit />- uzavře formulář (nastaví stav = 128)
<stav novystav="0" />- nastaví stav na zadanou hodnotu
<predat smer="1" />- předá formulář o zadaný počet kroků dále (zpět). Parametr
smer
musí být celé číslo (kladné = předat dále, záporné = vrátit zpět). Hodnota -999 znamená předání na začátek.
<prejitnaxml idsablony="..." />Po provedení formuláře (fill) přejde na zadané XML - tj. zobrazí zadaný XML formulář místo standardního seznamu formulářů (přechod provede pouze v případě, že už se formulář nezobrazuje, například po odeslání formuláře).
V aplikaci je možné změnit standardní funkčnost Intrawebu přesměrováním na XML formulář. Provede se v nastavení intrawebu, záložka Předávací procesy, XML. Kromě běžných "menuid" je tam možné přemapovat také zobrazení seznamu hodnocení - zadáním řádku
b_hodnoceni=id xml formuláře
Pomocí tagu <mapovanimenu>
v XML formuláři je pak možné nastavit, jestli se po zobrazení formuláře provede ještě nějaká další (např. defaultní) akce.
XML formulář tak může být použit jen pro zobrazení uživatelských informací před samotným obsahem stránky, například pokyny pro uživatele.
<mapovanimenu pokracovat="0/1" menuid="nove_menuid" />Parametr pokracovat určuje, jestli se po zobrazení formuláře ještě pokračuje standardní obsluhou události. Navíc lze událost změnit pomocí parametru menuid.
<delete okinfomsg="Formulář byl smazán z databáze" />- smaže formulář z databáze a v případě úspěchu zobrazí zadanou hlášku
<dokument name="JMENO_POLE" popis="popis dokumentu" typ="kod_typu" style="html_styl"/>Zobrazí pole pro přiložení souboru. Soubor se potom zapíše do tabulky dokument a propojí s XML formulářem záznamem v tabulce DokumentXMLFormulare. Po vložení souboru se vytvoří nový záznam v tabulce Dokument, tag
dokument
se transformuje na pripojenydokument
a zobrazuje se odkaz na stáhnutí souboru.editing
(hodnoty yes/no) je možné nastavit, jestli bude možné vložit více dokumentů.
viewfile
je možné změnit způsob zobrazení celé webové stránky.
Parametrem frame="1"
se zapíná zobrazení stránky bez hlavičky a menu (vhodné například pro umístění do frame):
<viewfile frame="1"/>Parametrem
filename="...."
je možné použít jakýkoliv jiný PHP soubor pro vygenerování stránky.
<editacemesicnich>
SKOLENI_PRIHLASENI_BEFORE
a SKOLENI_PRIHLASENI_AFTER
obsahují navíc oproti záznamu record
i proměnné osobaRC
, osobaOsobniCislo
a osobaDatumNastupu
pro identifikaci vybraného pracovního poměru osoby.
html
možné doplnit i parametry,
které se přímo vygenerují do XML. Ke kořenovému elementu XML formuláře se v tom případě musí doplnit namespace:
<ronform xmlns:html="http://www.w3.org/1999/xhtml" mode="data"> ... <edit name="muj_edit" html:style="width: 500px" /> ... </ronform>
<span style="display:inline-block; width:50px;"> </span>
<span style="float:right"> ... (obsah) ... </span>