Skip Navigation LinksALVAO 10.0ALVAO 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ů, například nástup nového zaměstnance.

Poznámka:
Jako vlastní formulář lze vytvořit i obecnou stránku ALVAO WebApp, která nebude sloužit k vytváření požadavků. Vytvoření takové stránky vyžaduje pokročilé znalosti programování.

Šablony pro tvorbu vlastních formulářů najdete v adresáři \Custom\Templates\ v instalační složce ALVAO WebApp. Soubory NewTicket_Template.cshtml a NewTicket_Template.cs slouží jako šablona.

Soubor s příponou .cshtml vždy slouží pro definici vzhledu formuláře, soubor .cs pak slouží pro popis chování při odeslání údajů.

Seznam standardních šablon:

Název Popis
NewTicket_Template 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.
Empty 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.

Příprava nového formuláře

Nejprve si vyberte jeden z hotových vzorových formulářů, který je co nejblíže vašemu zamýšlenému účelu. Pro vybraný formulář zkopírujte .cshtml do složky Custom\<název firmy> a soubor .cs do složky Custom\<název firmy>\Code. Oba soubory přejmenujte tak, aby název odpovídal významu formuláře. Doporučujeme, aby název formuláře korespondoval s názvem služby, ve které bude použit. Oba soubory (.cshtml i .cs) pojmenujte stejně.

Upozornění:
Jména všech používaných formulářů musí být unikátní.

Nyní je třeba upravit i vnitřek formuláře na nové jméno:

  • V souboru .cs, na začátku souboru za slovem namespace, uveďte pojmenování jmenného prostoru namespace Alvao.ServiceDesk.ServiceDeskWebApp.Custom.<název_firmy>. Doporučujeme pojmenování odpovídající názvu adresáře.
  • V souboru .cs na začátku souboru u klíčového slova class změňte jméno stejně jako v předchozím kroku. Název třídy musí být <název cshtml stránky>Controller, např. pokud má stránka název NewTicket.cshtml, pak se třída bude jmenovat 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 souboru NewTicket_Template.cshtml.

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.IsTheChildOf 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 firmy>/<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 firmy>\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.