Článek: AN0002365Aktualizováno:: 04.11.2018
V této případové studii si ukážeme, jak v ObjectGears na pár kliknutí vytvoříme funkcionalitu Ankety. Tato případová studie nemá demonstrovat ObjectGears jako systém pro nejlepší možné řešení v oblasti anket a dotazníků, ale jako obecnou platformu, na níž lze lehce vytvořit nejrůznější řešení i uživatelem bez znalosti programování. A ukážeme si to právě na příkladu ankety.
Výhody ankety v ObjectGears proti podobným internetovým službám:
- vaše data zůstanou ve firmě
- implementace během pár minut
- není třeba nic kupovat/pronajímat
- možno propojit s již existujícími daty v ObjectGears
- možnost vytvoření průběžných reportů a sledování, jak uživatelé odpovídají
Popis požadavků
Anketu použijeme pro firemní účely, kdy potřebujeme od všech nebo vybrané skupiny uživatelů získat odpovědi na několik otázek.Vytvoříte třídu se skripty a rozešlete uživatelům emailem odkaz. Tento odkaz je stejný pro všechny uživatele, což vám značne zjednodušuje práci.
Uživatel klikne na odkaz a zobrazí se mu nový záznam. Pokud uživatel již dříve vytvořil záznam, pak bude přesměrován na tento záznam.
Správce ankety může procházet již vytvořené záznamy, kontrolovat, kdo ještě neodpověděl či provádět opravy při omylech uživatelu.
Implementace
Pro dané řešení potřebuje vytvořit jednu třídu, sloupce dle otázek, které potřebujeme zodpovědět a jedno pravidlo. To je v ObjectGears na pár kliknutí. Sloupce pojmenujeme dle toho, co by v nich uživatelé měli vyplnit. Ke každému sloupci můžeme přidat vysvětlující popisek a tooltip, který se zobrazí po najetí myši. To vše v jednotlivých jazykových verzích, takže uživatel vidí veškeré názvy a popisy ve svém jazyce.
Jeden ze sloupců musí být typu Odkaz na uživatele a níže uvedené skripty předpokládají, že jeho kód je assigned_to.
Na třídě nastavíme přístupová oprávnění pro vestavěnou roli ObjectGears:Všichni autetizovaní uživatelé - číst/vytvářet/měnit.
Pokud potřebuje přístup jen pro vybrané uživatele, pak lze použít novou roli a do ní uživatele přiřadit. Ostatním uživatelům, tak bude přístup odepřen.
Na třídě vytvoříme Pravidlo typu Skript: Před zobrazení záznamu
Ve třídě použijeme následující dva skripty:
Skript pro seznam záznamů
Uvedený kód prostě zkopírujte do vámi vytvořené třídy. Níže uvedený příklad pracuje s rolí admin. Vy uveďte kód role, kterou ve vaší instance reálně bude mít vlastník ankety.
function OnLoad()
{
if (!OG.Person.IsUserInModelRoleByCode('admin', OGModel.Id)) //Zde uveďte kód role, kterou má vlastník ankety
{
OGForm.RedirectTo(OGClassDef.NewDetailUrl); //Uživatel bez výše uvedené role bude při pokusu o přístup na seznam záznamů přesměrován na svůj záznam.
}
}
Skript pro detail záznamu
Uvedený kód prostě zkopírujte do vámi vytvořené třídy. Níže uvedený příklad pracuje s rolí admin. Vy uveďte kód role, kterou ve vaší instanci reálně bude mít vlastník ankety.
function OnLoad()
{
OGEditOptions.EnabledCreate = false;
OGEditOptions.EnabledCreateAsNew = false;
OGEditOptions.EnabledDelete = false;
var p = OG.Person.GetLoginPerson();
//pro novy zaznam zjistit, zda pro uzivatele jiz neni vytvoren zaznam, a pokud je, zobrazit tento existujici zaznam
if ( OGDataRowId == null)
{
var f = OG.DataRow.GetDataRowFilter(OGClassDef.Id);
f['assigned_to'] = p;
var drl = OG.DataRow.GetDataByFilter(f);
if ( drl.Count > 0)
{
OGForm.RedirectTo(drl[0].DetailUrl);
}
}
else
{
//pro editaci kontrola, zda edituje stejny uzivatel nebo uzivatel ma roli Administrator - Zde uvedte roli, kterou ve vasi instanci realne ma vlastnik ankety
if (!OG.Person.IsUserInModelRoleByCode('admin', OGModel.Id))
{
var dr = OG.DataRow.GetDataById(OGClassDef.Id, OGDataRowId);
if ( dr['assigned_to'].Id != p.Id)
{
//pokud se uzivatel pokousi editovat jiny nez jeho zaznam, prejit na jeho novy zaznam
OGForm.RedirectTo(OGClassDef.NewDetailUrl);
}
}
}
}