Przejdź do głównej treści

Dodatkowe zakładki

Ready_™ Developer TeamOkoło 2 minutzakładki

Dodatkowe zakładki

System eDokumenty umożliwia dodawanie customowych zakładek do kartotek:

  • sprawy
  • kontrahenta
  • urządzenia
  • dokumentu
  • modułu ewidencji
  • pracownika
  • produktu
  • profilu użytkownika

Definicje zakładek znajdują się w plikach XML znajdujących się w folderze public_html/apps/edokumenty/var/tpl/tabs. W definicji zakładki wykorzystuje się raporty.

Pliki XML definicji zakładek

Pliki xml-owe znajdują się w public_html/apps/edokumenty/var/tpl/tabs/

Na przykład:

public_html/apps/edokumenty/var/tpl/tabs/contact_tpl.xml

Nazwy obsługiwanych plików xml dla:

  • sprawy - process_tpl.xml
  • kontrahenta - contact_tpl.xml
  • urządzenia - device_tpl.xml
  • dokumentu - document_tpl.xml
  • ewidencji - evidence_tpl.xml
  • pracownik - user_tpl.xml
  • produkt - product_tpl.xml
  • profil użytkownika - user_profile_tpl.xml

Dodanie zakładki do kartoteki

W celu dodania dodatkowej zakładki do jednej z wyżej wymienionych kartotek należy utworzyć raport, który będzie treścią tej zakładki. Następnie należy wyedytować odpowiedni plik konfiguracyjny i dodać do sekcji tabs sekcję zakładki tab. Przykładową strukturę zakładki przedstawia poniższy kod

<?xml version="1.0" encoding="UTF-8"?>
<tabs>    
    <tab label="" rep_id="" grp_id="" def_tab="1" alwaysVisible="1" forceOpen="1" prior="0" showFilters="0">
        <buttons>
            <button>
                <id>
                    new
                </id>
                <label>
                    Nowa
                </label>
                <dscrpt>
                    Nowa
                </dscrpt>
                <onclick>                
                    App.openDialogByCls({CLSNAM}, {KEYVAL}, ({afterSubmit:'{AFTER_SUBMIT}', mode:'new'}).toJSONString())
                </onclick>
                <icon>                
                    new.png
                </icon>
            </button>
            <button>
                <id>
                    edit
                </id>
                <label>
                    Edycja
                </label>
                <dscrpt>
                    Edycja
                </dscrpt>
                <onclick>
                    App.openDialogByCls({CLSNAM}, {KEYVAL}, ({afterSubmit:'{AFTER_SUBMIT}', mode:'edit'}).toJSONString())
                </onclick>
                <icon>
                    edit.png
                </icon>
            </button>
            <button>
                <id>
                    delete
                </id>
                <label>
                    Usuń
                </label>
                <dscrpt>
                    Usuń
                </dscrpt>
                <onclick>
                    App.openDialogByCls({CLSNAM}, {KEYVAL}, ({afterSubmit:'{AFTER_SUBMIT}', mode:'del'}).toJSONString())
                </onclick>
                <icon>
                    delete.png
                </icon>
            </button>
            <separator/>       
            <button>
                <custom_widget>
                    3
                </custom_widget>
            </button>    
            <separator>
                <button>
                    <id>xls</id>
                    <label />
                    <dscrpt>XLS</dscrpt>
                    <onclick>{EXPORT_TO_XLS}</onclick>
                    <icon>xls.png</icon>
                </button>
                <button>
                    <id>ref</id>
                    <label>Odśwież</label>
                    <dscrpt>Odśwież</dscrpt>
                    <onclick>{AFTER_SUBMIT}</onclick>
                    <icon>refresh.png</icon>
                </button>
            </separator>
        </buttons>
    </tab>    
</tabs>

Parametry definicji modułu

  • label - tytuł zakładki. Sugeruje się ograniczenie do 1 słowa.

  • rep_id - (zastępowane przez phpRender) id raportu, który ma się wyświetlić. Więcej informacji w raportach.

  • phpRender - (zastępowane przez rep_id) przyjmuje nazwę klasy z widokiem. Informacje o phpRender.

  • grp_id - identyfikatory grup użytkowników, dla których zakładka będzie widoczna, np. grp_id="2,5,10".

  • def_tab - znacznik wskazujący, czy zakładka domyślnie ma się pokazywać na pasku zakładek, czy też ma być widoczna dopiero po kliknięciu linku więcej.

    Uwaga!

    Atrybut def_tab dla zakładki działa wyłącznie dla własnych modułów. Nie działa on dla dodatkowych zakładek na kartotekach.

  • forceOpen - wymusza otwarcie zakładki jako pierwszej. Przyjmuje wartość 0 lub 1. Atrybut ten można ustawić tylko dla 1 zakładki.

  • prior - ustawienie na odpowiedniej kolejności zakładek. Parametr przyjmuje wartość od 0 do n gdzie n <= liczbie zakładek. Atrybut ten w połączeniu z forceOpen umożliwia nam dodanie nowej domyślnie otwartej zakładki na pierwszej pozycji w kartotece.

  • showFilters - zwijanie panelu z filtrami, domyślnie panel jest zwinięty.
    Przyjmuje wartość 0 lub 1.

  • iframe - url do strony poza systemem, którą chcemy wyświetlić w zakładce. alwaysVisible - czy zakładka ma być zawsze widoczna. Przyjmuje wartość 0 lub 1.

  • right - prawa systemowe do wyświetlenia zakładki. Informacje jak dodać swoje prawa znajdziesz tutaj

  • filtersMode - za pomocą tego atrybutu można zmieniać położenie panela filtrów. Standardowo panel filtrów widoczny jest po lewej stronie (wartość atrybutu filtersMode = "left"). Dla wartości "right_abs" panel filtrów pojawi się z prawej strony i będzie on nachodził na listę umieszczoną w module.

  • visible - wskazuje, czy dany moduł ma być widoczny. Nie w każdym przypadku moduł powinien być widoczny. Czasami celem istnienia modułu jest bycie uruchomionym poprzez kliknięcie z innego miejsca w aplikacji, np. z Ustawień Aplikacji.

    Uwaga!

    Atrybut visible dla zakładki działa wyłącznie dla własnych modułów. Nie działa on dla dodatkowych zakładek na kartotekach.

    Przykład ukrytego modułu:

    <module id="ERPExchangeConfigurationTokens" name="Tokeny definicji" label="Tokeny definicji" icon="service.svg" color="#327DE6" visible="false" right="">...</module>
    

    lub inaczej:

    <module id="ERPExchangeConfigurationTokens" name="Tokeny definicji" label="Tokeny definicji" icon="service.svg" color="#327DE6" visible="0" right="">...</module>
    

    Obie postaci są prawidłowe.

    W przypadku, gdy widoczność zakładki modułu ma być uzależniona od ustawienia globalnego (w tabeli global_sys_conf), można wykorzystać funkcję getGlobalSystemConfig, która pobierze wartość logiczną (0,1). Zmienna wykorzystywana w tej funkcji musi mieć wartości 0 (FAŁSZ) lub 1 (PRAWDA) Parametrami tej funkcji są pola z ww. tabeli:

    • objnam - symbol aplikacji w global_sys_conf, np #FK#
    • varnam - nazwa zmiennej global_sys_conf, np #SHOW.OLD.COST.ANALYSIS.TAB#
<tab id="cost_analysis" visible="{getGlobalSystemConfig(#FK#,#SHOW.OLD.COST.ANALYSIS.TAB#)}" label="{translate(#ANALIZA KOSZTÓW#)}" licenceTypeAccessRule="Allow:REGULAR" rep_id="1802"  groupName="{translate(#ANALIZY#)}" showFilters="0">
  • groupName - pozwala na grupowanie zakładek. Przykładowy kod takiego atrybutu (z funkcją tłumaczenia):
<tab label="{translate(#Szyna#)} Azure" showFilters="0" groupName="{translate(#ADMINISTRACJA#)}"
     phpRender="ReadyApp\KSEF\View\Module\EventLog" right="bswfms.settings.level2">...</tab>
  • licenceTypeAccessRule - wskazuje, jakiego rodzaju użytkownicy mają możliwość zobaczenia zakładki modułu. Wyróżnia się następujące rodzaje:

    • REGULAR - Użytkownicy standardowi systemu,
    • PORTAL - Użytkownicy portalu

    Przykład definicji typu licencji:

    <tab label="{translate(#Moje#)}" rep_id="2042" licenceTypeAccessRule="Allow:REGULAR,PORTAL">...</tab>
    

Parametry zakładki dla formularza dokumentu

  • dctpid - (identyfikator typu dokumentu) zakładka pojawi się tylko w dokumentach o wskazanym typie dokumentu np. dctpid = 1. Brak tego parametru spowoduje dodanie zakładki dla wszystkich typów. Można też podać więcej identyfikatorów typu po przecinku (np. dctpid="1,3,5,6,9").

  • dcctid - (identyfikator kategorii dokumentu) zakładka pojawi się tylko w dokumentach o wskazanym kategorii dokumentu np. dcctid = 2. Brak tego parametru spowoduje dodanie zakładki dla wszystkich kategorii. Można też podać więcej identyfikatorów kategorii po przecinku (np. dcctid="1,3,5,6,9").

Parametry zakładki dla kartoteki sprawy

  • dos_id - zakładka dla sprawy dodatkowo przyjmuje parametr dos_id (identyfikator teczki z wykazu akt). Zakładka pojawi się tylko w sprawach o wskazanym identyfikatorze teczki np. dos_id = 1. Brak tego parametru spowoduje wyświetlanie zakładki na kartotekach wszystkich spraw. Można też podać więcej identyfikatorów teczek po przecinku (np. dos_id="1,3,5,6,9").

Tokeny dla zakładek

W definicji zakładek można stosować tokeny, które pozwalają na stosowanie pewnych funkcjonalności bez konieczności pisania kodu. Jest to m.in.:

  • możliwość otwarcia okna dokumentu danego typu,
  • odświeżanie listy
  • eksport do pliku arkusza kalkulacyjnego Excel (xlsx).
<tab label="Zdjęcia" iframe="http://www.moj.serwer/produkty/?symbol={symbol}"></tab>

Token {symbol} zostanie zamieniony na symbol produktu z aktualnie otwartej kartoteki.

Dodatkowe tokeny do użycia w tagu onclick

TokenOpis
{CLSNAM}klasa zaznaczonego elementu na liście jeśli zostało podane pole w raporcie
{KEYVAL}identyfikator zaznaczonego elementu na liście jeśli zostało podane pole w raporcie
{KEYVALS}identyfikatory zaznaczonych elementów - w przypadku dokumentów: {doc_id:{KEYVALS}}
{AFTER_SUBMIT}akcja odświeżenia widoku po edycji wpisu lub np. jako dodatkowa akcji na pasku zadań
{MODE}wartość pobierana z taga używać jako new, edit, del, delete
{EXPORT_TO_XLS}uruchamia eksport elementów z widocznej listy na zakładce do pliku Excel-a (xlsx)

Przycisk jako Custom Widget

Istnieje możliwość zadeklarowania przyciski jako custom widget. (Szczegółowe informacje odnośnie mechanizmów CustomWidget). Przycisk musi zawierać informację w postaci taga custom_widget o wartości będącej identyfikatorem danego widgeta (kolumna cswgid w tabeli custom_widgets).

Przykładowy kod przycisku opartego o CustomWidget przedstawia się następująco:

<button>
    <custom_widget>4</custom_widget>
</button>

Własny widok w module Zestawienie

W domyślnej formie moduł Zestawienie zawiera portlety, na których można wyświetlić predefiniowane typy widgetów.

Czasami jednak taki widok nie jest wystarczający, (np. istnieje potrzeba widoku podsumowania bez możliwości edycji (zmiany położenia etc)).

Dodanie takiego widoku można dokonać poprzez mechanizm dodatkowych zakładek (modułów) oraz szablon xml welcome_tpl.xml. Domyślnie szablon nie zawiera żadnych zakładek, co umożliwia wyświetlenie domyślnego widoku.

W szablonie tym można definiować zakładki na tej samej zasadzie, jak wcześniej omówiono w tym artykule.

Uwaga!

W przypadku dodania co najmniej 1 zakładki, do której zalogowany pracownik ma prawo, to wtedy wyświetli się własny widok zamiast domyślnego zestawienia portletów.

Wskazówka

W przypadku braku szablonu xml welcome_tpl.xml w lokalizacji var\tpl\tabs należy go skopiować z var\tpl_default\tabs.