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 katalogupublic_html/apps/edokumenty/scripts
image
- oznacza ikonę z katalogupublic_html/framework/img/toolbarIcons/24x24/ikona.png
. Nazwa ikony musi być poprzedzona 24x24/nazwa.rozszerzenie, w tym przykładzie24x24\/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 Klienciemployees/toolbar
dla modułu Pracowicyadocuments/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 Widgetutask_trmtyp(TODO|PHONECALL|MEETING)}/toolbar
dla kartoteki zdarzenia o podanym typie (trmtyp).vatnote_costs_list_form/toolbar
- lista pozycji na zakładce koszty w fakturzedocument_products_form_{dctpid}/toolbar
- lista pozycji (produkty) na danym dokumencieprocess_products_form/toolbar
- lista pozycji (produkty) na sprawiedocument_{dctpid}/menu
- menu na dokumencie pod przyciskiem Dokumentdocument_del_summary_{dctpid}/toolbar
- lista rachunków na dokumencie delegacjidocument/attachments_action_menu
- menu Akcja na liście załączników w dokumenciedocument_{dctpid}/attachments_action_menu
- menu Akcja na liście załączników w dokumencie dla wybranego typu dokumentuprocess/menu
- menu na sprawie pod przyciskiem Dodatkowe zadaniaprocess/menu::[{dos_id}]
- pasek zadań dla rejestru konstrukcja ścieżki obejmuje dwie definicje:process/menu
- widget pokaże się na każdej teczceprocess/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 Sprawyprocess_documents/toolbar
- pasek zadań w kartotece sprawy zakładka Dokumentyprocess_tasks_form/menu
- opcja w menu na zakładce terminarz w kartotece sprawyprocess_tasks_form/toolbar
- pasek zadań w kartotece sprawy na zakładce terminarzproduct/toolbar
- pasek zadań na kartotece produktucustom/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 delegacjicregisterview/toolbar::[{cregids}]
- pasek zadań dla rejestru konstrukcja ścieżki obejmuje 2 definicje:cregisterview/toolbar
- widget pokaże się na każdym rejestrecregisterview/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.
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:
clsnam = CONTACT
keyval = name_1
grp_id = 2
rights = 1 (3 jeśli ma być odczyt i zapis)
INSERT INTO access (clsnam, keyval, grp_id, rights)
VALUES ('CONTACT', 'name_1', 2, 1);
Przykład 2 - Ograniczenia widoczności pól
Przykład pokazania pola "Prognozowana wartość" w sprawie tylko dla grupy o id 5:
clsnam = CONTACT
keyval = name_1
grp_id = 2
rights = 1 (3 jeśli ma być odczyt i zapis)
INSERT INTO access (clsnam, keyval, grp_id, rights)
VALUES ('PROCESS', 'forepa', 5, 1);
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.
clsnam = CONTACT
keyval = saldo_
grp_id = 6
rights = 0
INSERT INTO access (clsnam, keyval, grp_id, rights)
VALUES ('PROCESS', 'forepa', 6, 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:
clsnam = FK_ELEMENTS_FEATURE.{fk_elements.fketpe np VATNOTE}
keyval = 12 - featid
grp_id = 6
rights = 0
INSERT INTO access (clsnam, keyval, grp_id, rights)
VALUES ('FK_ELEMENTS_FEATURE.VATNOTE', 12, 6, 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.
Po wybraniu opcji otrzymamy formularz na ja rysunku z możliwością wybrania przycisku do którego chcemy ograniczyć prawo:
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.