Přeskočit na hlavní obsah

Vlastní formulář pro odeslání nového požadavku

Systémový formulář pro odeslání nového tiketu do aplikace Alvao WebApp lze nahradit vlastním formulářem se specifickým obsahem a chováním. Vlastní formulář dokáže pojmout i více tiketů najednou, a lze jej tak použít k podpoře složitých obchodních procesů, jako je například nástup nového zaměstnance. Vlastní formuláře nejsou pro službu ALVAO SaaS k dispozici.

Tip

Místo vlastních formulářů doporučujeme použít kombinaci standardního formuláře pro odeslání nového servisního lístku a vlastního javascriptu na formuláři pro odeslání nového lístku.

Poznámka

Vlastním formulářem může být také obecná stránka aplikace Alvao WebApp, která se nepoužívá k vytváření tipů. Vytvoření takové stránky vyžaduje pokročilé znalosti programování.

Tip

Ve vlastním formuláři můžete ke zpracování tipů použít Alvao.API, použití API však vyžaduje pokročilé znalosti programování.

Šablony pro vytvoření vlastních formulářů lze nalézt v *\Custom\Templates* v instalační složce Alvao WebApp.

Seznam standardních šablon:

NázevL 343, 22.12.2009, s. 1).
NovinkaPříklad formuláře pro vytvoření více tipů ve vzájemném spojení. Ukazuje také, jak používat některé ovládací prvky a jak pracovat s prvkem pro hlášení času k vytvářenému tipu.
EmptyPagePrázdná šablona. Používá se pro stránky, které nejsou určeny k vytváření tipů. Tento typ stránky se používá pouze pro speciální účely, například pro obsah vlastních karet tipu.

Soubor .cshtml definuje vzhled formuláře, . s soubor, umístěný ve složce \Code, popisuje logiku odesílání dat z vyplněného formuláře.

Příprava nového formuláře

Ve složce \Custom nejprve vytvořte složku pro funkčnost, kterou bude nový vlastní formulář pokrývat, např. HrProcessAutomation (pro automatizaci HR procesu). Více formulářů může být umístěno v jedné složce s funkcemi.

Ve složce \Custom\Templates pak zvolte šablonu formuláře, která bude co nejblíže vašemu záměru. Zkopírujte obsah složky šablony do složky Vlastní<název funkce>. Přejmenujte soubory .cshtml a .cs. Oba soubory (.cshtml a .cs) pojmenujte stejně. Doporučujeme začít název formuláře názvem funkce, pak názvem služby, pro kterou je určena, a nakonec operací, např. HrProcessAutomation_Onboarding_NewTicket, kde HrProcessAutomation je název funkce, Onboarding je název služby a NewTicket je název operace.

Varování

Názvy všech formulářů, které se používají napříč všemi funkcemi, musí být jedinečné.

Nyní musíte také upravit vnitřek formuláře podle nového jména:

  • V souboru .cs na začátku souboru za slovem jmenný prostor, uveďte název jmenného prostoru Alvao.WebApp.Custom.<function_name>. Pro název funkce zadejte název složky na disku, kde se nachází formulář, např. Alvao.WebApp.Custom.HrProcessAutomation.
  • V souboru .cs na začátku souboru pro třídu klíčové slovo změňte název třídy. Název třídy musí být <the name of the cshtml page>Controller, např. ve tvaru HrProcessAutomation_Onboarding_NewTicket.cshtml bude třída pojmenována HrProcessAutomation_Onboarding_NewTicketController.

Definice rozvržení formuláře

Soubor .cshtml obsahuje popis rozvržení formuláře a určuje prvky, které se mají zobrazit. Při odesílání dat uživatelem se data zadaná do zobrazených prvků převedou na text, který lze dále použít v definici chování.

V . shtml soubor, upravte pouze část oddělenou mezi řádkou <div id="CustomFormContent" > a </div>, prvky formuláře jsou převedeny na text pouze v této části. Prvky mimo CustomFormContent nebudou převedeny na text požadavku, ale budou zobrazeny ve formuláři.

Následující prvky formuláře jsou převedeny na text požadavku:

Název prvkuMetoda převoduVeselí
<label>Zobrazený text je vložen do textu tipu a následuje za ním dvojtečka.Ne
Editor "StringField"

Text, který uživatel zadá do vstupního řádku, se vloží do textu tipu. Pokud do parametru elementu přidáte hodnotu "UniquedId = Model.TicketBodyGuid", bude možné zadávat formátovaný text (HTML).

Poznámka

V jednom formuláři může být maximálně jeden formátovaný prvek HTML.

Ano
Editor "BoolField"Zobrazený text se vloží do textu tipu a za ním následuje Ano nebo Ne podle volby uživatele.Ano
Editor "DateTimeField"Do textu tipu se vloží datum zadané uživatelem.Ano
Editor "DropDownListField"Vybraná položka je vložena do textu požadavku.Ano
Editor "RadioButtonList"Vybraná položka je vložena do textu požadavku.Ano
Editor "CheckBoxList"Všechny vybrané položky se postupně vloží do textu tipu.Ano
Editor "Dvojité pole"Do textu tipu se vloží celé nebo desetinné číslo zadané uživatelem.Ano
Editor "ColumnsControl"Všechna zobrazená pole se do textu tipu vkládají postupně. Hodnoty také vloží přímo do vlastností založeného tipu.Ano
Editor "AttachmentField"Přílohy budou vloženy do zprávy o vytvoření tipu.Ne

Prvky, které nejsou uvedeny v tabulce, nejsou do textu vloženy. Příklady použití všech prvků najdete v šabloně NewTicket.

Přidáním třídy "btn-command" k tlačítku v souboru .cshtml zajistíte, že se tlačítko zkopíruje jako příkaz do příkazového řádku.

Poznámka

Formát čísla v poli DoubleField se při odesílání formuláře kontroluje, a pokud není správný, je zvýrazněn červeně a zobrazí se vložte číslo ve správném formátu. Správný český formát pro zápis desetinného čísla je desetinný bod.

Použít vlastní pole

Viz tabulka příkladů získávání vlastních polí:

Druh údajůPříklad kódu
bool
bool PromEmergency =
(bool)((ColumnsControl)Model.ColumnsControl["ColumnsControl0"]).Values.Find(Col
=> Column.sColumn == "Emergency").Hodnota;
Datum a čas
DateTime PromDatumOd =
(DatumTime)((ColumnsControl)Model.ColumnsControl["ColumnsControl0"]).Values.Find(Col
=> Column.sColumn == "DatumOd").Hodnota;
Poznámka

Pokud chcete získat jiný časový standard než UTC, musíte hodnotu převést na místní čas:

string DatumOd = PersonPrincipal.Current.LocalIdentity.Details.ConvertUtcDateToLocal(PromDatumOd);
počítadlo intu
ColumnValue cWorkingHours =
((ColumnsControl)Model.ColumnsControl2).Values.Find(col => col.Column.sColumn == "workingHours" && col.Column.sTable ==
"tHdTicketCust"); string workingHours =
((ColumnValueWithCustom)cWorkingHours).DisplayValue;
počítadlo intu (nelokalizované)
ColumnValue cWorkplace =
((ColumnsControl)Model.ColumnsControl0).Values.Find(col => col.Column.sColumn == "workplace" && col.Column.sTable ==
"tHdTicketCust"); string Workplace = ((List)cWorkplace.Column.Values()).Find(Col
=> Col.iColumnValueId ==
(int)Model.ColumnsControl0.Values[0].Value).mColumnValue;
dvojnásobný
double personPrice =
(double)((ColumnsControl)Model.ColumnsControl["ColumnsControl0"]).Values.Find(Col
=> Sloupec == "CenaVaOsoba").Hodnota;

Definice chování formulářů

Popis chování je v souboru .cs. V první části kódu je oblast určená k úpravám označena komentářem. Nezasahujte do jiných částí kódu!

Nejdůležitější je zde vytváření požadavků. V souboru je již uveden příklad vytvoření tipu, který můžete použít pro vlastní úpravy.

Základní struktura příkazu k vytvoření požadavku je následující:

CreateTicket("Service name", "Ticket name", "Custom ticket text" + TicketBody);

Kde je TicketBody již připravený text požadavku, který byl vytvořen převodem formulářů do textu. V případě potřeby může být ve všech zobrazených polích použito doplnění textu. Pro vložení řádku zalomení do aktuálního textu použijte značku \n.

Poznámka

Je-li prvek "StringField" použit na formuláři, který může být použit k zadání textu v HTML formátu, použijte řetězec "<br>"

Název služby musí být vyplněn přesně tak, jak se v administraci zobrazí název služby. Dílčí služby jsou odděleny / znakem, např. "Interní/osobnostní/Employee Entry". Musíte zadat úplnou cestu od kořenové služby.

Verze příkazu k vytvoření požadavku je také k dispozici, která je rozšířena pro vytvoření odkazů:

CreateTicket ("Název služby, "Název požadavku", "Vlastní text požadavku" + TicketBody, MainTicketId, TicketRelationType.IsChildOf);

Kde MainTicketId je číslo propojeného požadavku. Příklad získání ID z hlavního požadavku je také součástí šablony. Hodnota TicketRelationType.SystemTicketRelationType.IsChildOf definuje typ odkazu:

HodnotaLink Type
RelatesToTýká se
IsParentOfIsParentOf
IsChildOfJe podřazený
PrefeedespředPředchází před
SledovatPoSleduje po
BlokyBloky
IsBlockedByJe zablokováno
IsDuplicatedByJe duplikován
DuplikátyDuplikáty

Např. v případě TicketRelationType.SystemTicketRelationType.IsChildOf, aktuálně vytvořený požadavek bude podřazený, a požadavek s číslem uvedeným v MainTicketId bude nadřazený.

Pro přístup k hodnotám vlastních polí použijte následující strukturu (příklad pro pole "NoveName" a "NoveNumber"):

string NoveName = ((ColumnsControl)Model.ColumnsControl["ColumnsControl0"]).Values.Find(Col => Col.Column.sColumn == "NoveJmeno").Hodnota jako string;int NoveCislo = (int)((ColumnsControl)Model.ColumnsControl["ColumnsControl0"]).Values.Find(Col => Column.sColumn.sColumn == "NoveCislo").Hodnota;

Připojování formuláře k aplikaci

Pokud v nastavení služby zadáte cestu k formuláři, tento formulář se zobrazí na Alvao WebApp namísto standardního formuláře pro odeslání nového požadavku. Viz také Service Desk service settings.

  1. V Administrace - Service Desk - Služby, vyberte službu, ve které chcete zobrazit vlastní formulář.
  2. V sekci Nový formulář požadavku příkazového panelu, přepněte režim ze systémového návrhu na vlastní formulář (URL).
  3. Zadejte cestu k vlastnímu formuláři ve formuláři ~/Custom/<name of the functionality>/<name of the form without the .cshtml> rozšíření.

Dynamické přepínání jazyka

Při úpravě .cs a .cshtml souborů můžete použít soubory .resx, které obsahují lokalizované řetězce pro každý jazyk. Každý uživatel pak zobrazí tyto řetězce ze souboru v souladu s jejich preferovaným jazykem. Není-li soubor .resx vytvořen pro jazyk, použije se soubor .resx pro angličtinu.

Vytváření souboru .resx pro jazyk

Nejprve vytvořte soubor .resx pro angličtinu. Z Vlastní\Templates\Resources, zkopírujte soubor SampleController.resx do složky Vlastní<functionality>\Resources a přejmenujte ho na <cshtml page name>Controller.resx.

Otevřít tento soubor v textovém editoru. Za řádek "<!-- Vložte -->" vložte řádky:

<data name="name" xml:space="preserve">
<value&>název</value>
</data>

Výsledek by měl být následující:

<!-- Insert -->           
<data name="name" xml:space="preserve">
<value>název</value>
</data>
<!-- Do not change -->
</root>

Řádky:

<data name="name" xml:space="preserve">
<value>název</value>
</data>

lze znovu zkopírovat a upravit pro vytvoření více lokalizovaných řetězců. Každý <datový název="name" hodnota musí být v souboru jedinečná.

<datový název=" name" specifikuje jméno používané jako parametr ve funkci GetResources() popsané v Use . esx soubor v .cs a .cshtml souborech. <value> Jméno</value> specifikuje hodnotu, kterou tato funkce vrací.

Let's now create a .resx file for the Czech language. Copy the modified <cshtml page name>Controller.resx. to the same folder and name it <cshtml page name>Controller.cs.resx. Edit the <value>Name</value> so that the following text is in this file:

<!-- Insert -->
<data name="name" xml:space="preserve">
<value>název</value>
</data>
<!-- Do not change -->
</root>
Varování

Neměňte žádné další části resx souborů.

Stejně jako <cshtml page name>Controller.cs. soubor esx je zkopírován a upraven, soubory pro další jazyky, které lze nastavit jako preferované jazyky uživatele lze kopírovat a upravovat. Tyto soubory jsou vždy pojmenovány <cshtml page name>Controller.<language abbreviation>.resx (například <cshtml page name>Controller.de.resx). Jazykové zkratky, které lze použít, jsou definovány na:

https://msdn.microsoft.com/en-us/goglobal/bb896001

Používá .resx soubor v .cs a .cshtml souborech

Některé položky vytvořené v .resx souborech lze použít v .cs i .cshtml souborech.

V souboru .cshtml použijte řetězec štítek = "Jméno" namísto řetězce label = Model.GetResource("name"). Uživatel, který nastavil angličtinu jako preferovaný jazyk, uvidí štítek pole Jméno. Ostatní uživatelé uvidí jméno.

Při použití v .cs souboru by bylo dosaženo stejné funkce pomocí GetResource("name"), namísto řetězce.