1. Anketa - případová studie

    Č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);
          }
        }
      }
    }

×