Vlastní formulář pro podání nového požadavku
Systémový formulář pro podání nového požadavku na ALVAO WebApp lze nahradit 
vlastním formulářem se specifickým obsahem a chováním. Vlastní formulář může 
založit i více požadavků současně a tím může sloužit i pro podporu složitých 
firemních procesů, jako je například nástup nového zaměstnance.
	
	Poznámka:
	Vlastní formulář může představovat také obecnou stránku ALVAO WebApp, která 
	neslouží vytváření požadavků. Vytvoření takové stránky vyžaduje 
	pokročilé znalosti programování.
 
	
	Tip:
	Ve vlastním formuláři je můžete využít 
rozhraní Alvao.API pro práci s požadavky, nicméně použití API vyžaduje pokročilé znalosti programování.
 
Šablony pro tvorbu vlastních formulářů najdete ve složce 
\Custom\Templates\ 
v instalační složce ALVAO WebApp.
Seznam standardních šablon:
	
		
			| Název | 
			Popis | 
		
	
	
		
			| NewTicket | 
			Příklad formuláře pro vytvoření více požadavků ve vzájemné 
			vazbě. Zároveň ukazuje, jak používat některé ovládací prvky a jak 
			pracovat s prvkem pro vykázání času k zakládanému požadavku. | 
		
		
			| EmptyPage | 
			Prázdná šablona. Používá se pro stránky, které nejsou určené k 
			vytváření požadavků. Tento typ stránek slouží pouze pro speciální 
			účely, jako je třeba obsah vlastních záložek na požadavku. | 
		
		
	
Soubor s příponou .cshtml definuje vzhled 
formuláře, soubor .cs, nacházející se ve složce \Code, popisuje logiku odeslání údajů z vyplněného formuláře.
Příprava nového formuláře
Ve složce \Custom nejprve vytvořte složku pro funkčnost, které se bude 
nový vlastní formulář týkat, např. HrProcessAutomation (pro automatizaci HR procesů). Ve složce jedné funkčnosti může být umístěno i několik formulářů.
Poté si ve složce \Custom\Templates vyberte šablonu formuláře, která se co nejvíce blíží vašemu 
záměru. Obsah složky se šablonou zkopírujte do složky Custom\<název funkčnosti>. Soubory .cshtml a .cs vhodně přejmenujte. 
Oba soubory (.cshtml i .cs) pojmenujte stejně. Název formuláře doporučujeme začínat názvem funkčnosti, potom uvést název služby, pro kterou je určen, 
a nakonec operaci, např. HrProcessAutomation_Onboarding_NewTicket, kde HrProcessAutomation je název funkčnosti, Onboarding 
je název služby a NewTicket je název operace.
	
	Upozornění:
	Názvy všech používaných formulářů napříč všemi funkčnostmi musí být unikátní.
 
Nyní je třeba upravit také vnitřek formuláře podle nového názvu:
	- V souboru .cs, na začátku souboru za slovem namespace, uveďte název jmenného prostoru 
	Alvao.ServiceDesk.ServiceDeskWebApp.Custom.<název_funkčnosti>. Jako název funkčnosti uveďte 
	název složky na disku, ve které je formulář umístěn, např. Alvao.ServiceDesk.ServiceDeskWebApp.Custom.HrProcessAutomation.
 
	- V souboru .cs na začátku souboru u klíčového slova class změňte název třídy. Název třídy musí být 
	<název cshtml stránky>Controller, např. ve formuláři HrProcessAutomation_Onboarding_NewTicket.cshtml se bude 
	třída jmenovat HrProcessAutomation_Onboarding_NewTicketController.
 
Definice vzhledu formuláře
Soubor .cshtml obsahuje popis vzhledu formuláře a určuje zobrazené prvky. Při 
odeslání dat uživatelem se pak data zadaná do zobrazených prvků převádí na text 
a tento text pak můžete použít dále v definici chování.
V souboru .cshtml upravujte pouze část ohraničenou mezi řádkem <div id="CustomFormContent"> 
a </div>, prvky formuláře se do textu převádějí pouze v této části. 
Prvky mimo CustomFormContent se do textu požadavku nepřevedou, ale ve formuláři 
budou zobrazeny.
Do textu požadavku se převádí tyto prvky formuláře:
	
		
			| Název prvku | 
			Způsob převodu | 
			Odřádkování | 
		
	
	
		
			| <label> | 
			Do textu požadavku se vloží zobrazený text a za něj se doplní 
			dvojtečka. | 
			Ne | 
		
		
			| Editor "StringField" | 
			Do textu požadavku se vloží text, který uživatel napíše do 
			vstupního řádku. Pokud do parametru prvku přidáte hodnotu „UniquedId 
			= Model.TicketBodyGuid“, bude možné zadávat formátovaný text (HTML).
			
					
					Poznámka: 
					Na jednom formuláři může být nejvýše jeden prvek v HTML 
					formátu.
				  
			
			 | 
			Ano | 
		
		
			| Editor "BoolField" | 
			Do textu požadavku se vloží zobrazený text a za něj se doplní 
			Ano nebo Ne podle výběru uživatele. | 
			Ano | 
		
		
			| Editor "DateTimeField" | 
			Do textu požadavku se vloží uživatelem zadané datum. | 
			Ano | 
		
		
			| Editor "DropDownListField" | 
			Do textu požadavku se vloží vybraná položka. | 
			Ano | 
		
		
			| Editor "RadioButtonList" | 
			Do textu požadavku se vloží vybraná položka. | 
			Ano | 
		
		
			| Editor "CheckBoxList" | 
			Do textu požadavku se postupně vloží všechny vybrané položky. | 
			Ano | 
		
		
			| Editor "DoubleField" | 
			Do textu požadavku se vloží celé nebo desetinné číslo, které 
			zadal uživatel. | 
			Ano | 
		
		
			| Editor "ColumnsControl"  | 
			Do textu požadavku se postupně vloží všechny zobrazené položky. 
			Také hodnoty vloží přímo do vlastností založeného požadavku. | 
			Ano | 
		
		
			| Editor "AttachmentField" | 
			K zakládací zprávě požadavku se vloží přílohy. | 
			Ne | 
		
	
	
	
Prvky nevyjmenované v tabulce se do textu nevkládají. Příklady použití všech 
prvků najdete v šabloně NewTicket.
V souboru .cshtml přidáním třídy "btn-command" k tlačítku zajistíte, že se 
tlačítko zkopíruje jako příkaz do panelu příkazů. 
	
	Poznámka:
	Formát čísla v poli DoubleField se při odeslání formuláře kontroluje a pokud 
	není v pořádku, označí se červeně a vypíše se 
zadejte číslo ve správném 
	formátu.
	Správný český formát zápisu desetinného čísla je s desetinnou čárkou.
 
Definice chování formuláře
Popis chování se nachází v souboru .cs. V první části kódu je komentáři 
označena oblast, která je určena pro úpravy. Nezasahujte do ostatních částí 
kódu!
Nejdůležitější je zde vytváření požadavků. V souboru je již příklad vytvoření 
požadavku, podle kterého můžete udělat vlastní úpravu.
Základní struktura příkazu pro tvoření požadavku je následující:
CreateTicket("Název služby", "Název požadavku", 
"Vlastní text požadavku\n" + TicketBody);
Kde TicketBody je již připravený text požadavku, který vzniknul 
převodem obsahu formuláře na text. V případě potřeby lze ve všech položkách 
použít sčítání textů tak, jak je ukázáno. Chcete-li vložit do vlastního textu 
odřádkování, použijte značku \n.
	
	Poznámka:
	Pokud je na formuláři použit prvek „StringField“, do kterého lze zadat text 
	v HTML formátu, použijte pro odřádkování řetězec „<br>"
 
Název služby musí být vyplněn přesně tak, jak se zobrazuje název služby ve Správě. Podslužby se oddělují pomocí znaku /, tedy například 
"Interní/Personalistika/Nástup zaměstnance". Musíte zadat celou cestu od 
kořenové služby.
Dostupná je i verze příkazu pro vytvoření požadavku rozšířená o vytváření 
vazeb:
CreateTicket("Název služby", "Název požadavku", 
"Vlastní text požadavku\n" + TicketBody, MainTicketId, TicketRelationType. 
SystemTicketRelationType.IsChildOf);
Kde MainTicketId je číslo navázaného požadavku. Příklad získání ID z 
hlavního požadavku je rovněž součástí šablony. Hodnota 
TicketRelationType.SystemTicketRelationType.IsChildOf definuje typ 
vazby:
	
		
			| Hodnota | 
			Typ vazby | 
		
	
	
		
			| RelatesTo | 
			Souvisí s | 
		
		
			| IsParentOf | 
			Je nadřazený nad | 
		
		
			| IsChildOf | 
			Je podřazený pod | 
		
		
			| PrecedesBefore | 
			Předchází před | 
		
		
			| FollowsAfter | 
			Následuje po | 
		
		
			| Blocks | 
			Blokuje | 
		
		
			| IsBlockedBy | 
			Je blokován | 
		
		
			| IsDuplicatedBy | 
			Je duplikován | 
		
		
			| Duplicates | 
			Duplikuje | 
		
	
Např. v případě hodnoty 
TicketRelationType.SystemTicketRelationType.IsChildOf bude aktuálně 
vytvořený požadavek podřazený a požadavek s číslem předaným v MainTicketId bude 
nadřazený.
Pro přístup k hodnotám vlastních položek použijte následující strukturu 
(příklad pro položky "NoveJmeno" a "NoveCislo"):
	
								string NoveJmeno = 
((ColumnsControl)Model.ColumnsControl["ColumnsControl0"]).Values.Find(Col => 
Col.Column.sColumn == "NoveJmeno").Value as string;
								int NoveCislo = 
(int)((ColumnsControl)Model.ColumnsControl["ColumnsControl0"]).Values.Find(Col 
=> Col.Column.sColumn == "NoveCislo").Value;
	
	
	
Připojení formuláře k aplikaci
Pokud v nastavení služby zadáte cestu k formuláři, bude se tento formulář 
zobrazovat na ALVAO WebApp místo běžného formuláře pro podání nového požadavku. 
Viz také nastavení služeb Service Desku.
	- Ve WebApp - Správa - Service Desk - Služby vyberte službu, ve které chcete zobrazovat vlastní formulář. 
 
	- V sekci  Formulář pro podání nového požadavku v panelu příkazu přepněte režim ze systémového návrhu formuláře do režimu Vlastní formulář (URL).
 
	- Zadejte cestu k vlastnímu formuláři ve tvaru ~/Custom/<název funkčnosti>/<název formuláře bez přípony .cshtml>.
 
Dynamické přepínání jazyků formuláře
Při úpravě .cs a .cshtml souborů lze využívat souborů .resx, které obsahují 
lokalizované řetězce pro jednotlivé jazyky. Každému uživateli se pak zobrazují 
tyto řetězce načtené ze souboru dle jeho preferovaného jazyka. Pokud pro nějaký 
jazyk není vytvořen .resx soubor, použije se .resx soubor pro angličtinu.
Vytvoření .resx souboru pro jazyk
Napřed vytvoříme .resx soubor pro angličtinu. Ze složky 
Custom\Templates\Resources zkopírujte soubor SampleController.resx 
do složky Custom\<název funkčnosti>\Resources a přejmenujte ho na <název 
cshtml stránky>Controller.resx. 
Otevřete tento soubor v textovém editoru. Za řádek "<!-- Insert --!>" 
vložte řádky:
<data name="name" xml:space="preserve"> 
<value>Name</value>
</data>
Výsledek by měl být následující:
<!-- Insert --!>
<data name="name" xml:space="preserve">
<value>Name</value>
</data>
<!-- Do not change --!>
</root>
Řádky:
<data name="name" xml:space="preserve">
<value>Name</value>
</data>
lze znovu zkopírovat a upravit tak, aby se vytvořilo více lokalizovaných 
řetězců. Každá hodnota "<data name="name" musí být jedinečná v rámci 
souboru.
<data name="name" udává název, který se používá jako parametr ve 
funkci GetResources(), popsané v Použití .resx souboru v .cs a .cshtml 
souborech. <value>Name</value> udává hodnotu, jakou tato funkce 
vrací.
Vytvoříme teď .resx soubor pro český jazyk. Zkopírujte upravený soubor 
<název cshtml stránky>Controller.resx. do stejné složky a pojmenujte ho 
<název cshtml stránky>Controller.cs.resx. Upravte v této kopii položky 
<value>Name</value> tak, aby byl v tomto souboru následující text:
<!-- Insert --!>
<data name="name" xml:space="preserve">
<value>Jméno</value>
</data>
<!-- Do not change --!>
</root>
	
	Upozornění:
	Žádné ostatní části resx souborů neměňte.
 
Stejně jako se zkopíroval a upravil soubor <název cshtml 
stránky>Controller.cs.resx, tak lze zkopírovat a upravit i soubory pro 
ostatní jazyky, které lze nastavit jako preferované jazyky uživatele. Tyto 
soubory se vždy jmenují <název cshtml stránky>Controller.<zkratka 
jazyka>.resx (například <název cshtml stránky>Controller.de.resx). 
Zkratky jazyka, které lze použít jsou definovány na: 
http://msdn.microsoft.com/cs-cz/goglobal/bb896001
Použití .resx souboru v .cs a .cshtml souborech
Jednotlivé položky, které se vytvořily v .resx soborech lze použít v .cs i 
.cshtml souborech.
V .cshtml souboru použijte místo řetězce label = "Jméno" řetězec 
label = Model.GetResource("name"). Uživateli, který má nastavený jako 
preferovaný jazyk češtinu, se zobrazí popisek pole Jméno. Ostatním 
uživatelům se zobrazí Name.
Při použití v .cs souboru by se dosáhlo stejné funkce použitím funkce 
GetResource("name"), místo řetězce.
                 
                
                
                    Nenašli jste co jste hledali? Zeptejte se našeho týmu technické podpory.