Skip Navigation LinksALVAO 10.1ALVAO Service DeskImplementace systému v organizaciVlastní úpravy a rozšířeníVlastní formulář pro podání nového požadavku Skip Navigation Links. Skip Navigation Links Skip Navigation Links.


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.