Przejdź do głównej treści

Tworzenie własnego przycisku


Przygotowanie grafiki/ikony

Ikona musi mieć rozmiar 24px x 24px format np. png

i być umieszczona w katalogu: public_html/framework/img/toolbarIcons/24x24/.

Menadżer Custom Widget

Przycisku definiowane są w Panel sterowania > Manager Custom Widget.

Gdzie pola:

  • parametry = {"script":"Test.inc","image":"24x24\/ikona.png"} - parametry dodatku w formacie JSON, w tym:

    • script - oznacza nazwa pliku z katalogu public_html/apps/edokumenty/scripts
    • image - oznacza ikonę z katalogu public_html/framework/img/toolbarIcons/24x24/ikona.png. Nazwa ikony musi być poprzedzona 24x24/nazwa.rozszerzenie, w tym przykładzie 24x24\/ikona.png.
  • params - może określać dodatkowe parametry przekazywane do skryptu, np. "params": "doc_id:{DOC_ID}" przekaże id dokumentu

  • onClick - akcja do wywołania po kliknięciu w widget np. App.openDialogByCls('PROCESS', 14376) czyli {"onClick": "App.openDialogByCls('PROCESS', 14376)"}

  • addAfter - parametr zamienny z addBefore. Wskazuje na miejsce w pasku zadań lub menu po którym (addAfter) lub przed którym (addBefore) ma się pojawić nasz custom widget,

  • Typ = button|JSMenuItem - typ: button = przycisk, JSMenuItem = opcja na menu dotyczy menu dokumentu i sprawy,

  • Tekst - Nazwa na pasku narzędziowym (może być pusta).

  • Pomoc - Opis, który pokaże się w tooltipie (dymku podpowiedzi)

  • Użycie - c_path - przyjmuje wartości:

    • contacts/toolbar dla modułu Klienci
    • employees/toolbar dla modułu Pracowicy
    • adocuments/toolbar dla modułu Dokumenty.
    • emails/toolbar dla modułu Poczta (email).
    • aisodocs/toolbar dla modułu ISO (funkcjonalność dostępna od wersji 5.0.87)
    • servicemod/toolbar dla modułu Serwis.
    • aregisters/toolbar dla modułu dzienniki.
    • custom/id_widgetu dla Custom Widgetu
    • task_trmtyp(TODO|PHONECALL|MEETING)}/toolbar dla kartoteki zdarzenia o podanym typie (trmtyp).
    • vatnote_costs_list_form/toolbar - lista pozycji na zakładce koszty w fakturze
    • document_products_form_{dctpid}/toolbar - lista pozycji (produkty) na danym dokumencie
    • process_products_form/toolbar - lista pozycji (produkty) na sprawie
    • document_{dctpid}/menu - menu na dokumencie pod przyciskiem Dokument
    • document_del_summary_{dctpid}/toolbar - lista rachunków na dokumencie delegacji
    • document/attachments_action_menu - menu Akcja na liście załączników w dokumencie
    • document_{dctpid}/attachments_action_menu - menu Akcja na liście załączników w dokumencie dla wybranego typu dokumentu
    • process/menu - menu na sprawie pod przyciskiem Dodatkowe zadania
    • process/menu::[{dos_id}] - pasek zadań dla rejestru konstrukcja ścieżki obejmuje dwie definicje:
      • process/menu - widget pokaże się na każdej teczce
      • process/menu::[{dos_id}] - widget pokaże się na wybranych teczkach. Zmienna {dos_id} może być w formie 1 lub 1,2,3 gdzie identyfikator numeryczne to dos_id z Ustawienia -> Panel sterowania -> Sprawy -> Kategorie spraw po najechaniu na wybraną teczkę pokaże się dos_id
    • processes/toolbar - menu w module Sprawy
    • process_documents/toolbar - pasek zadań w kartotece sprawy zakładka Dokumenty
    • process_tasks_form/menu - opcja w menu na zakładce terminarz w kartotece sprawy
    • process_tasks_form/toolbar - pasek zadań w kartotece sprawy na zakładce terminarz
    • product/toolbar - pasek zadań na kartotece produktu
    • custom/5 - (gdzie 1 jest równe cswgid z tabeli custom_widgets, czyli trzeba zobaczyć jaka jest największa wartość i wiemy że jak dodamy to nasz custom_widget będzie miał id np. 5) - taka konstrukcja pozwala używać później deklaracji w XML w CustomModule.
    • document_travelcosts_{dctpid}/toolbar - koszty delegacji
    • cregisterview/toolbar::[{cregids}] - pasek zadań dla rejestru konstrukcja ścieżki obejmuje 2 definicje:
      • cregisterview/toolbar - widget pokaże się na każdym rejestre
      • cregisterview/toolbar::[{cregids}] - widget pokaże się na wybranych rejestrach. Zmienna {cregids} może być w formie 1 lub 1,2,3 gdzie identyfikator numeryczne to id z cregisters.register
    • depository/toolbar dla modułu Produkty

Istotą działania modułu dodatkowego jest przekazywanie danych z zaznaczonych elementów pod kluczami

  • contid dla modułu Klienci

  • doc_id dla modułu Dokumenty

Wstawienie do pliku xml - CustomModules.xml

<buttons>
  <button>
    <custom_widget>
      3
    </custom_widget>
  </button>
</buttons>

Uprawnienia

Domyślnie każdy użytkownik ma dostęp do utworzonego w ten sposób przycisku. Ograniczenie dostępu jest realizowane poprzez tabelę access, której opis jest zamieszczony tutaj

Dane do ustawiania uprawnień dla przycisku:

  • clsnam = CUSTOM_WIDGET

  • keyval = custom_widgets.cswgid

Ograniczanie widoczności pól formularzy

Wszystkie pola formularzy domyślnie dostępne są dla wszystkich użytkowników systemu (widoczność oraz prawo do edycji). Dostęp może zostać ograniczony poprzez funkcjonalność zarządzania uprawnieniami do pól. Niektóre formularze (dane kontrahenta na karcie Kontakt, dane sprawy lub dane urządzeni w serwisie) można modyfikować w tym zakresie z interfejsu użytkownika (Administrator może klikać prawym klawiszem na label póla jak pokazano poniżej), pozostałe wymienione poprzez edycję tabeli access.

Wyświetlenie przycisku Zarządzaj uprawnieniami do pól
Zarządzanie uprawnieniami do pól
Zarządzanie uprawnieniami do pól

Lista formularzy gdzie można znaleźć

Formularze w których zostało zaimplementowane sprawdzanie uprawnień do pól podstawowych (widoczne/niewidoczne/edycja) to:

  • zdarzenie karta ogólne (clsnam = EVENT.TODO lub inne w zależności od rodzaju koluman trmtyp),
  • sprawa karta ogólne,
  • dokument karta ogólne,
  • kartoteka kontrahenta - karta ogólne (również z interfejsu),
  • kartoteka urządzenia (również z interfejsu),

Ograniczenie widoczności pól

Aby móc ograniczyć widoczność pól w powyższych formularzach należy do tabeli access dodać odpowiedni wpis. Szczególną uwagę należy zwrócić na kolumnę rights, gdyż to ona przechowuje poziom uprawnień, który jest zdefiniowany następująco:

  • 0 oznaczać będzie zabronienie pola
  • 1 oznaczać będzie udostępnienie bez prawa do zapisu
  • 3 oznaczać będzie udostępnienie z prawem do zapisu

Przykład 1 - Ograniczenia widoczności pól

Np. aby ograniczyć widoczność pola name_1 (nazwa kolumny z bazy, tabela contacts) tak aby tylko grupa o id 2 miała prawo tylko do odczytu tego pola, należy dodać wpis:

Text
clsnam = CONTACT
keyval = name_1
grp_id = 2
rights = 1 (3 jeśli ma być odczyt i zapis)

Przykład 2 - Ograniczenia widoczności pól

Przykład pokazania pola "Prognozowana wartość" w sprawie tylko dla grupy o id 5:

Text
clsnam = CONTACT
keyval = name_1
grp_id = 2
rights = 1 (3 jeśli ma być odczyt i zapis)

W przypadku sprawy rzecz ma się nieco inaczej. Oprócz identyfikatora klasy "DOCUMENT" należy dodać identyfikator typu dokumentu types_of_documents.dctpid dla właściwego typu. I tak jeśli chcemy aby pole "Sprawa" w dokumencie typu Notatka służbowa było pokazywane tylko dla grupy o id = 2 to do tabeli access dodajemy wpis, jak poniżej.

clsnam = DOCUMENT.5
keyval = prc_id
grp_id = 2
rights = 1

Przy domyślnej instalacji Notatka służbowa ma dctpid = 5 w tabeli types_of_documents.

Zabronienie widoczności

Wpisanie w kolumnie rights = 0 oznacza zabronienie widoczności danego pola dla użytkownika albo grupy.

Przykład

Aby grupa o id 6 nie mogła widzieć pola saldo_ na kartotece kontrahenta wystarczy do tabeli access dodać wpis.

Text
clsnam = CONTACT
keyval = saldo_
grp_id = 6
rights = 0

Zarządzanie cechami

Pola dynamiczne (cechy) mogą być zabraniane we wszystkich miejscach w których występują. Zarządzanie jest udostępnione poprzez panel sterowania. Przycisk Uprawnienia umieszczony poniżej nazwy pola przy edycji cechy.

Zarządzanie cechami dla pozycji

W przypadku cech pozycji (np. faktury są kopiowane z cech produktów mają te same featid jednak różne tblnam przy powiązaniu) należy wykonać poniższe polecenie:

Text
clsnam = FK_ELEMENTS_FEATURE.{fk_elements.fketpe np VATNOTE}
keyval = 12 - featid
grp_id = 6
rights = 0

Ograniczenie widoczności cech pozycji uwzględnia typy dokumentów na jakich te pozycję się znajdują. Typu można poznać dodając pozycje dla poszczególnych dokumentów i podglądnąć tabelę fk_elements.fketpe.

Widoczność zakładek w dokumentach

Aby wyłączyć zakładkę w dokumencie konkretnego typu (dctpid) należy do tabeli access dodać wpis w postaci:

clsnam = DOCUMENT.1 (1 to dctpid z tabeli types_of_documents dla pisma)
keyval = RIGHTSPLUGIN
grp_id = 2
rights = 0

Wpis taki oznacza, iż grupa o identyfikatorze (grp_id) = 2 nie posiada uprawnień do zakładki "Uprawnieni" dla dokumentu typu pismo.

Pole keyval w tym przypadku to identyfikator klasy zakładki i tak:

  • komentarze = DOCCOMMENTSPLUGIN
  • uprawnieni = RIGHTSPLUGIN
  • kopie = COPYINFOPLUGIN
  • instrukcje = ORDERSPLUGIN
  • po zapisie = AFTERSAVEPLUGIN
  • powiązania = DOCLINKSPLUGIN
  • dokument (mail) = EMAILPREVIEWPLUGIN
  • szczegóły (mail) = EMAILPLUGIN
  • historia = DOCHISTORYPLUGIN
  • załączniki = ATTACHMENTSPLUGIN (lista załączników musi być dostępna na osobnej zakładce)
  • pozycje (faktura) = PRODUCTS
  • koszty (faktura) = COSTS

W przypadku zakładki produkty (dla dokumentów na której ona występuje) należy dodać wpis:

clsnam = DOCUMENT.10 (1 to dctpid z tabeli types_of_documents dla danego dokumentu)
keyval = PRODUCTS -- nazwa taka sama niezależnie od dctpid
grp_id = 2
rights = 0

Dodatkowo istnieje możliwość całkowitego wyłączenia zakładki Szczegóły dla customowego dokumentu.

Aby tego dokonać należy dodać wpis:

clsnam = DOCUMENT.100_PLUGINS (100 to dctpid z tabeli types_of_documents dla danego customowego dokumentu)
keyval = CUSTOMDOCUMENTPLUGIN -- nazwa taka sama niezależnie od dctpid
grp_id = 2
rights = 0

W przypadku jeśli chcemy zabronić dowolnej widoczności innej zakładki nie wymienionej na tej liście należy skontaktować się z programistami 😃

Widoczność zakładek w sprawach

Aby wyłączyć zakładkę w sprawie, która jest w teczce określonej kategorii (dos_id) należy do tabeli access dodać wpis w postaci:

clsnam = PROCESS_1_TABS (1 to dos_id z tabeli doss_extract_list)
keyval = PROCESSPRODUCTSFORM
grp_id = 2
rights = 0

Wpis taki oznacza, iż grupa o identyfikatorze grp_id = 2 nie posiada uprawnień do zakładki "Produkty" dla sprawy w teczce o dos_id 1.

Pole keyval w tym przypadku to identyfikator klasy zakładki z tabeli proc_types_tabs_definition kolumna clsnam. Ważne jest aby do tabli access wpisać nazwę clsnam z dużych lier.

Mechanizm jest dostępny poprzez GUI po kliknięciu prawym przyciskiem myszy na pasku zakładek.

Widoczność zakładek w zdarzeniach

Aby wyłączyć zakładkę w zadaniu, rozmowie telefonicznej lub innym obiekcie typu zdarzenie należy do tabeli access dodać wpis w postaci:

clsnam = TODO_TABS
keyval = EVENTCOMMENTSFORM
grp_id = 2
rights = 0

Wpis taki oznacza, iż grupa o identyfikatorze grp_id = 2 nie posiada uprawnień do zakładki "Komentarze" dla zadania.

Mechanizm jest dostępny poprzez GUI po prawym przyciskiem myszy na pasku zakładek.

Widoczność pól na formatce płatności

clsnam = DOC_PAYMENT_POS
keyval = (nazwa kolumny z tabeli fk_doc_payment_pos)
grp_id = 2
rights = 0

Widoczność pól na formatce kosztu podróży w delegacji

clsnam = DELEGATION_TRAVEL_COST
keyval = (nazwa kolumny z tabeli delegation_travel_costs)
grp_id = 2
rights = 0

Zarządzanie widocznością przycisków

Obsługa umożliwia chowanie przycisków Paska zadań (na chwilę obecną działa tylko dla zakładki Produkty w Sprawie - kolejne realizowane będą po zgłoszeniu).

Insert do tabeli access, który aktywuje to:

clsnam = PROCESSPRODUCTSFORM
keyval = Demand
usr_id = 2
rights = 0

Powyższy insert wycina opcję Generuj -> Zapotrzebowanie.

Aby dodać dla innych przycisków/opcji z tego toolbara należy wykonać podobne inserty z innym keyval.

Keyval do przycisków toolbara to fraza znajdująca się z nawiasach [] dla atrybutu id (użyć należy Firebug, lub prawy klawisz myszy w Chrome i opcja Inspect Element 😉).

Dla menu to fraza dodatkowa różna od nazwy menu (element nadrzędny)

Order = Zamówienie obce (od klienta)
FS = Faktura sprzedaży
Demand = Zapotrzebowanie

UWAGA!

Dla przycisków Custom Widget uprawnienia ustawiamy w definicji Custom Widget (dolny lewy róg formatki).

Zarządzanie przyciskami na pasku narzędzi

Uprawnieniami może zarządzać tylko osoba mająca poziom uprawnień bswfms.settings.level2. Po kliknięciu prawym przyciskiem myszy na pasku otrzymamy menu kontekstowe podobne jak poniżej. Rysunki 1

Po wybraniu opcji otrzymamy formularz na ja rysunku z możliwością wybrania przycisku do którego chcemy ograniczyć prawo:

Rysunki 2
Rysunki 2

Zarządzanie zakładkami na kartotekach

Obecnie jedynym miejscem gdzie da się ograniczyć widoczność zakładek jest kartoteka Klienta (nie tryb edycji danych). Uprawnienia edytujemy poprzez klikniecie prawym przyciskiem myszy na pasku zakładek. Powinno pojawić się menu jak na rysunku 1. Po kliknięciu pojawi się formularz zarządzania uprawnieniami z listą pól jako lista zakładek.