= [wiki:DeployerGuide Przewodnik wdrożeniowca] > Konfiguracja Custom Widgets / Dodatku = #tytul == Wprowadzenie == W systemie eDokumenty istnieje możliwość definiowania własnych przycisków na pasku tzw. pluginów lub custom widgets - tzw. toolbarze. == Tworzenie własnego przycisku == Wszelkie informacja odnośnie dodatków są przechowywane w tabeli {{{custom_widgets}}}, która zawiera 9 kolumn. Zanim jednak wprowadzimy dane do tabeli należy przygotować skrypt oraz ikonę dla przycisku, który ten skrypt będzie uruchamiał. === Tworzenie skryptu === Skrypt ma postać pliku z rozszerzeniem ''.inc'' (np. Test.inc). Jest to klasa zapisana przy pomocy języka PHP. Listing przykładowej klasy został umieszczony poniżej: {{{ }}} Jak widać powyżej w skrypcie można wykorzystywać także język JavaScript. Jednakże należy mieć na uwadze, że błędny lub szkodliwy skrypt może wpłynąć negatywnie na stabilność systemu !!! Utworzony skrypt umieszczamy w katalogu {{{public_html/apps/edokumenty/scripts}}} === Przygotowanie grafiki/ikony === Ikona musi mieć rozmiar 24x24px 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}}} to 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 2 definicje: process/menu - widget pokaże się na każdej teczce lub 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 lub 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 == {{{ }}} == 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, kórej opis jest zamieszczony w artykule: [http://support.edokumenty.eu/trac/wiki/DeployerGuide/Others/SettingRightsForFields] Dane do ustawiania uprawnień dla przycisku: - clsnam = CUSTOM_WIDGET - keyval = custom_widgets.cswgid