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í.
Š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 v
programu Admin. 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.
Cestu k vlastnímu formuláři je třeba zadat 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.aspx
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.
|