Přeskočit na hlavní obsah

Uživatelské tlačítko

Jak si přizpůsobit ABRA Flexi pomocí uživatelských tlačítek?

Autor: Petr Pech

Uživatelské tlačítko dává vývojářům i uživatelům možnost definovat v ABRA Flexi vlastní akci ve formě tlačítka. Po jeho stisku se zobrazí panel v aplikaci nebo se otevře webový prohlížeč — v obou případech s libovolnou webovou stránkou.


Možnosti použití

Uživatelským tlačítkem lze zobrazit relevantní část intranetového informačního systému, vyhledat zboží ve srovnávači cen, otevřít příslušnou část webového rozhraní ABRA Flexi nebo vyvolat akci přes REST API. Do adresy webové stránky je možné dynamicky vkládat parametry, například IČO právě upravované firmy nebo EAN zobrazeného zboží.


Způsob použití

Parametry tlačítka — text, cílové URL, umístění v aplikaci — se zapíší do jeho definice, souboru ve formátu XML. Vytvořená definice se do ABRA Flexi načte importem z XML a při opětovném připojení k firmě je tlačítko součástí uživatelského rozhraní, ať už klientské aplikace, nebo webového rozhraní.

Tlačítka jsou uložená v evidenci custom-button, takže se dají i běžně číst přes API:

GET https://demo.flexibee.eu/c/demo/custom-button.json?detail=full


Definice uživatelského tlačítka

Každý prvek může být v definici jednoho tlačítka uveden nanejvýš jednou (výjimkou je prvek id). Soubor může obsahovat definic více; při vícenásobném uvedení téhož tlačítka se jednotlivé definice považují za jeho aktualizaci a fakticky se projeví ta poslední. Nevyhovující definice bude odmítnuta už při importu.

Prvek

Povinný

Význam

id

ano

Identifikátor tlačítka.

url

ano

Adresa, která se po stisku otevře.

title

ano

Text zobrazený na tlačítku.

description

ano

Detailní popis zobrazovaný v bublině.

evidence

ano

Evidence, ve které se tlačítko zobrazuje.

location

ano

Umístění na přehledu nebo na kartě záznamu.

browser

ne

Prohlížeč, ve kterém se URL otevře.

id

Identifikátory záznamu slouží pro přidělení kódu při vytváření a pro přesné určení tlačítka při jeho pozdější aktualizaci či mazání. Použít lze:

  • Kód (zkratku) — uživatelské označení, prefix code:

  • Externí identifikátor — identifikátor z externí aplikace, prefix ext:

  • Identifikátor ABRA Flexi — číselný neměnný identifikátor přidělovaný aplikací, bez prefixu

Při vytváření tlačítka musí být prvek uveden s kódem.

url

Určuje adresu webové stránky či síťového zdroje, která se po stisku tlačítka otevře. Uvádějte ji v plném, absolutním tvaru — se schématem a doménovou adresou serveru, například https://www.flexibee.eu/.

⚠️ URL zadávejte v <![CDATA[ … ]]>, aby přítomnost znaku & nezpůsobila nevalidní XML.

🚨 Schéma file pro přístup k lokálně uloženým souborům podporováno není — definice s file:// se při importu odmítne chybou restrictedProtocol.

Při konstrukci URL je možné uvést proměnné, které za běhu aplikace vyhodnotí FreeMarker a zajistí předání hodnot z aplikace. Například zápis ${object.ic} vrátí IČO partnera v adresáři. Řetězec object je v názvu proměnných povinný — odkazuje se jím na aktuální záznam zobrazené evidence. Seznam dostupných atributů jednotlivých evidencí najdete ve webovém rozhraní na adresách jako /flexi/{firma}/adresar/properties.

Proměnná

Hodnota

object

Aktuální záznam — jeho vlastnosti se uvádějí za tečkou, například ${object.ic}.

objectIds

Seznam ID vybraných záznamů oddělených čárkou. U velkého počtu záznamů se nahrazuje parametrem data-url — viz níže.

user

Aktuálně přihlášený uživatel; dostupné vlastnosti viz /flexi/{firma}/uzivatel/properties.

url

Úplná adresa objektu, na kterém bylo tlačítko vyvoláno — například https://demo.flexibee.eu/c/demo/adresar/1.

companyUrl

Adresa API rozhraní firmy — například https://demo.flexibee.eu/c/demo/.

flexiUrl

Adresa webového rozhraní firmy — například https://demo.flexibee.eu/flexi/demo/.

evidence

Jméno evidence, na které je tlačítko umístěno.

authSessionId

Autentizační token k aktuálnímu sezení uživatele. Po dobu platnosti sezení jím lze autentizovat dotazy — viz Autentizace.

customerNo

Číslo zákazníka odpovídající licenci.

licenseId

Identifikátor licence.

language

Jazyk, ve kterém aplikace běží — cs, sk, en, de.

⚠️ Proměnné object a objectIds se vzájemně vylučují.

evidence

Určuje evidenci, popřípadě konkrétní vazbu (relaci) evidence, pro kterou má být tlačítko zobrazováno — například adresar pro obchodní partnery nebo faktura-vydana pro vydané faktury. Ve variantě pro vazby pak například faktura-vydana-polozka pro položky vydané faktury či majetek-zapujcka pro zápůjčky v evidenci majetku.

Pro evidence použijte řetězec, který se objevuje v URL webového rozhraní. Seznam všech evidencí vrátí:

GET https://demo.flexibee.eu/c/demo/evidence-list.json

Pro vazby evidencí použijte název evidence doplněný o pomlčku a řetězec vazby, který zjistíte na přehledu vazeb dané evidence:

GET https://demo.flexibee.eu/c/demo/cenik/relations.json

Neexistující evidence se při importu odmítne chybou validace.neplatnyCiselnik.

location

Určuje, zda se tlačítko zobrazí na přehledu záznamů, nebo na kartě konkrétního záznamu:

Hodnota

Umístění

list

Přehled záznamů.

detail

Karta konkrétního záznamu.

Má-li být tlačítko dostupné na přehledu záznamů i na kartě konkrétního záznamu, je nezbytné připravit dvě definice, které se budou lišit hodnotou location.

title

Text zobrazený na tlačítku.

description

Detailní popis tlačítka zobrazovaný v bublině. Je povinný — bez něj import skončí chybou validace.notNull.

browser

Určuje prohlížeč, ve kterém se URL otevře. Interní prohlížeč se zobrazí rychleji, ale nemusí obsahovat uživatelské přizpůsobení a data — hesla, cookies, data formulářů, navštívené odkazy. Externí prohlížeč je prostředím, na které je uživatel zvyklý.

Hodnota

Prohlížeč

automatic

Interní prohlížeč; není-li dostupný, otevře se externí. Výchozí hodnota.

desktop

Externí prohlížeč.

Ve webovém rozhraní je nastavení prvku browser z podstaty ignorováno. Neplatná hodnota u browser i location se odmítne chybou validace.notAvailableValue.


Příklad vytvoření

<?xml version="1.0"?>
<winstrom version="1.0">
<custom-button>
<id>code:JUSTICECZ</id>
<url><![CDATA[https://or.justice.cz/ias/ui/rejstrik-$firma?ico=${object.ic}&jenPlatne=VSECHNY]]></url>
<title>Obch. rejstřík</title>
<description>Zobraz záznam firmy v obchodním rejstříku justice.cz</description>
<evidence>adresar</evidence>
<location>detail</location>
<browser>desktop</browser>
</custom-button>
</winstrom>


Příklad aktualizace tlačítka

Uvedete-li v definici jednoznačnou identifikaci existujícího tlačítka, můžete jej aktualizovat. ABRA Flexi umožňuje částečné aktualizace záznamů, takže při změně adresy obchodního rejstříku stačí tlačítko identifikovat a uvést novou hodnotu URL:

<?xml version="1.0"?>
<winstrom version="1.0">
<custom-button>
<id>code:JUSTICECZ</id>
<url><![CDATA[https://or.justice.cz/ias/ui/rejstrik-$firma?ico=${object.ic}&jenPlatne=VSECHNY&polozek=500]]></url>
</custom-button>
</winstrom>


Příklad smazání tlačítka

Ke smazání existujícího tlačítka slouží atribut action — více o jeho použití v článku Provádění akcí:

<?xml version="1.0"?>
<winstrom version="1.0">
<custom-button action="delete">
<id>code:JUSTICECZ</id>
</custom-button>
</winstrom>


Dlouhé URL a parametr data-url

Při velkém počtu vybraných záznamů by URL s vyjmenovanými ID mohla překročit povolenou délku. V takovém případě ABRA Flexi seznam ID uloží do dočasného úložiště a do výsledné URL místo proměnné ${objectIds} vloží parametr data-url, který odkazuje na endpoint, odkud lze úplný seznam ID stáhnout.

Pro šablonu http://example.com/action?ids=${objectIds} tak může výsledná adresa vypadat takto:

http://example.com/action?ids=data-url&data-url=https%3A%2F%2Finstance.flexibee.eu%2Fc%2Fmojefirma%2Fcustom-button%2Fdata%3Fid%3D2f1c…

Stažení seznamu ID

Dočasně uložený seznam ID se stahuje metodou GET na adresu z parametru data-url:

GET https://demo.flexibee.eu/c/demo/custom-button/data?id=2f1c8b7e-1a2b-4c3d-9e0f-abcdef012345

Odpověď má Content-Type: application/json;charset=utf-8:

{
"objectIds": [101, 102, 103, 104, 105]
}

Záznam je dostupný pouze uživateli, který jej vytvořil, a jen po dobu své platnosti. Po expiraci — nebo pro jiného uživatele — vrací endpoint 404 s kódem adresaNeplatna. Vynechaný parametr id skončí chybou 400 missing_param_exception.

Konfigurace dočasného úložiště

Chování dočasného úložiště se řídí volbami v konfiguraci serveru flexibee-server.xml (kde jej najít):

Volba

Význam

Výchozí

objectStore.type

Typ úložiště.

LOCAL (lokální souborový systém)

objectStore.localDirectory

Adresář na serveru, do kterého se data ukládají při typu LOCAL.

objectStore.defaultTtlMinutes

Doba platnosti dočasného záznamu v minutách.

60

objectStore.maxUrlLength

Maximální délka URL, při jejímž překročení se použije data-url.

2000


Související

Dostali jste odpověď na svou otázku?