Uživateľské tlačidlo dáva vývojárom aj používateľom možnosť definovať v ABRA Flexi vlastnú akciu vo forme tlačidla. Po jeho stlačení sa zobrazí panel v aplikácii alebo sa otvorí webový prehliadač — v oboch prípadoch s ľubovoľnou webovou stránkou.
Možnosti použitia
Uživateľským tlačidlom je možné zobraziť relevantnú časť intranetového informačného systému, vyhľadať tovar v porovnávači cien, otvoriť príslušnú časť webového rozhrania ABRA Flexi alebo vyvolať akciu cez REST API. Do adresy webovej stránky je možné dynamicky vkladať parametre, napríklad IČO práve upravovanej firmy alebo EAN zobrazeného tovaru.
Spôsob použitia
Parametre tlačidla — text, cieľové URL, umiestnenie v aplikácii — sa zapíšu do jeho definície, súboru vo formáte XML. Vytvorená definícia sa do ABRA Flexi načíta importom z XML a pri opätovnom pripojení k firme je tlačidlo súčasťou používateľského rozhrania, či už klientskej aplikácie, alebo webového rozhrania.
Tlačidlá sú uložené v evidencii custom-button, takže sa dajú aj bežne čítať cez API:
GET https://demo.flexibee.eu/c/demo/custom-button.json?detail=full
Definícia uživateľského tlačidla
Každý prvok môže byť v definícii jedného tlačidla uvedený nanajvýš raz (výnimkou je prvok id). Súbor môže obsahovať definícií viac; pri viacnásobnom uvedení toho istého tlačidla sa jednotlivé definície považujú za jeho aktualizáciu a fakticky sa prejaví tá posledná. Nevyhovujúca definícia bude odmietnutá už pri importe.
Prvok | Povinný | Význam |
| áno | Identifikátor tlačidla. |
| áno | Adresa, ktorá sa po stlačení otvorí. |
| áno | Text zobrazený na tlačidle. |
| áno | Detailný popis zobrazovaný v bubline. |
| áno | Evidencia, v ktorej sa tlačidlo zobrazuje. |
| áno | Umiestnenie na prehľade alebo na karte záznamu. |
| nie | Prehliadač, v ktorom sa URL otvorí. |
id
Identifikátory záznamu slúžia na pridelenie kódu pri vytváraní a na presné určenie tlačidla pri jeho neskoršej aktualizácii či mazaní. Použiť je možné:
Kód (skratku) — používateľské označenie, prefix
code:Externý identifikátor — identifikátor z externej aplikácie, prefix
ext:Identifikátor ABRA Flexi — číselný nemenný identifikátor prideľovaný aplikáciou, bez prefixu
Pri vytváraní tlačidla musí byť prvok uvedený s kódom.
url
Určuje adresu webovej stránky či sieťového zdroja, ktorá sa po stlačení tlačidla otvorí. Uvádzajte ju v úplnom, absolútnom tvare — so schémou a doménovou adresou servera, napríklad https://www.flexibee.eu/.
⚠️ URL zadávajte v <![CDATA[ … ]]>, aby prítomnosť znaku & nespôsobila nevalidné XML.
🚨 Schéma file na prístup k lokálne uloženým súborom podporovaná nie je — definícia s file:// sa pri importe odmietne chybou restrictedProtocol.
Pri konštrukcii URL je možné uviesť premenné, ktoré za behu aplikácie vyhodnotí FreeMarker a zaistí odovzdanie hodnôt z aplikácie. Napríklad zápis ${object.ic} vráti IČO partnera v adresári. Reťazec object je v názve premenných povinný — odkazuje sa ním na aktuálny záznam zobrazenej evidencie. Zoznam dostupných atribútov jednotlivých evidencií nájdete vo webovom rozhraní na adresách ako /flexi/{firma}/adresar/properties.
Premenná | Hodnota |
| Aktuálny záznam — jeho vlastnosti sa uvádzajú za bodkou, napríklad |
| Zoznam ID vybraných záznamov oddelených čiarkou. Pri veľkom počte záznamov sa nahrádza parametrom |
| Aktuálne prihlásený používateľ; dostupné vlastnosti pozri |
| Úplná adresa objektu, na ktorom bolo tlačidlo vyvolané — napríklad |
| Adresa API rozhrania firmy — napríklad |
| Adresa webového rozhrania firmy — napríklad |
| Meno evidencie, na ktorej je tlačidlo umiestnené. |
| Autentizačný token k aktuálnemu sedeniu používateľa. Počas platnosti sedenia ním možno autentizovať dotazy — pozri Autentizácia. |
| Číslo zákazníka zodpovedajúce licencii. |
| Identifikátor licencie. |
| Jazyk, v ktorom aplikácia beží — |
⚠️ Premenné object a objectIds sa vzájomne vylučujú.
evidence
Určuje evidenciu, prípadne konkrétnu väzbu (reláciu) evidencie, pre ktorú má byť tlačidlo zobrazované — napríklad adresar pre obchodných partnerov alebo faktura-vydana pre vydané faktúry. Vo variante pre väzby potom napríklad faktura-vydana-polozka pre položky vydanej faktúry či majetek-zapujcka pre výpožičky v evidencii majetku.
Pre evidencie použite reťazec, ktorý sa objavuje v URL webového rozhrania. Zoznam všetkých evidencií vráti:
GET https://demo.flexibee.eu/c/demo/evidence-list.json
Pre väzby evidencií použite názov evidencie doplnený o pomlčku a reťazec väzby, ktorý zistíte na prehľade väzieb danej evidencie:
GET https://demo.flexibee.eu/c/demo/cenik/relations.json
Neexistujúca evidencia sa pri importe odmietne chybou validace.neplatnyCiselnik.
location
Určuje, či sa tlačidlo zobrazí na prehľade záznamov, alebo na karte konkrétneho záznamu:
Hodnota | Umiestnenie |
| Prehľad záznamov. |
| Karta konkrétneho záznamu. |
Ak má byť tlačidlo dostupné na prehľade záznamov aj na karte konkrétneho záznamu, je nevyhnutné pripraviť dve definície, ktoré sa budú líšiť hodnotou location.
title
Text zobrazený na tlačidle.
description
Detailný popis tlačidla zobrazovaný v bubline. Je povinný — bez neho import skončí chybou validace.notNull.
browser
Určuje prehliadač, v ktorom sa URL otvorí. Interný prehliadač sa zobrazí rýchlejšie, ale nemusí obsahovať používateľské prispôsobenie a dáta — heslá, cookies, dáta formulárov, navštívené odkazy. Externý prehliadač je prostredím, na ktoré je používateľ zvyknutý.
Hodnota | Prehliadač |
| Interný prehliadač; ak nie je dostupný, otvorí sa externý. Predvolená hodnota. |
| Externý prehliadač. |
Vo webovom rozhraní je nastavenie prvku browser z podstaty ignorované. Neplatná hodnota pri browser aj location sa odmietne chybou validace.notAvailableValue.
Príklad vytvorenia
<?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>
Príklad aktualizácie tlačidla
Ak v definícii uvediete jednoznačnú identifikáciu existujúceho tlačidla, môžete ho aktualizovať. ABRA Flexi umožňuje čiastočné aktualizácie záznamov, takže pri zmene adresy obchodného registra stačí tlačidlo identifikovať a uviesť novú 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>
Príklad zmazania tlačidla
Na zmazanie existujúceho tlačidla slúži atribút action — viac o jeho použití v článku Vykonávanie akcií:
<?xml version="1.0"?>
<winstrom version="1.0">
<custom-button action="delete">
<id>code:JUSTICECZ</id>
</custom-button>
</winstrom>
Dlhé URL a parameter data-url
Pri veľkom počte vybraných záznamov by URL s vymenovanými ID mohla prekročiť povolenú dĺžku. V takom prípade ABRA Flexi zoznam ID uloží do dočasného úložiska a do výslednej URL namiesto premennej ${objectIds} vloží parameter data-url, ktorý odkazuje na endpoint, odkiaľ je možné úplný zoznam ID stiahnuť.
Pre šablónu http://example.com/action?ids=${objectIds} tak môže výsledná adresa vyzerať takto:
http://example.com/action?ids=data-url&data-url=https%3A%2F%2Finstance.flexibee.eu%2Fc%2Fmojefirma%2Fcustom-button%2Fdata%3Fid%3D2f1c…
Stiahnutie zoznamu ID
Dočasne uložený zoznam ID sa sťahuje metódou GET na adresu z parametra data-url:
GET https://demo.flexibee.eu/c/demo/custom-button/data?id=2f1c8b7e-1a2b-4c3d-9e0f-abcdef012345
Odpoveď má Content-Type: application/json;charset=utf-8:
{
"objectIds": [101, 102, 103, 104, 105]
}
Záznam je dostupný iba používateľovi, ktorý ho vytvoril, a len počas doby svojej platnosti. Po expirácii — alebo pre iného používateľa — vracia endpoint 404 s kódom adresaNeplatna. Vynechaný parameter id skončí chybou 400 missing_param_exception.
Konfigurácia dočasného úložiska
Správanie dočasného úložiska sa riadi voľbami v konfigurácii servera flexibee-server.xml (kde ho nájsť):
Voľba | Význam | Predvolené |
| Typ úložiska. |
|
| Adresár na serveri, do ktorého sa dáta ukladajú pri type | — |
| Doba platnosti dočasného záznamu v minútach. |
|
| Maximálna dĺžka URL, pri jej prekročení sa použije |
|
