Wstęp
Wtyczka umożliwia zarządzanie konfiguracjami (plikami konfiguracyjnymi) wtyczek zainstalowanych w systemie. Zamiast tworzenia dedykowanej zakładki do wgrywania/zmiany plików konfiguracyjnych dla każdej wtyczki z osobna, można zintegrować ją z PCM, która umożliwi użytkownikowi zmianę plików konfiguracyjnych dla wszystkich wtyczek w jednym miejscu.
Integracja z wtyczką
Aby zintegrować dowolną wtyczkę z PCM, należy dodać znacznik plugin-configuration w deskryptorze wtyczki - plik suncode-plugin.xml.
Przykładowy wpis w deskryptorze wtyczki:
<plugin-configuration key="plugin-configuration" template-provider="com.suncode.plugin.somepluginid.TemplateProviderImpl" change-listener="com.suncode.plugin.somepluginid.ChangeListenerImpl" allow-file-management="false" graphic-schema-provider="com.suncode.plugin.somepluginid.ConfigurationFileGraphicSchemaProviderImpl" init-configuration="com.suncode.plugin.somepluginid.InitConfigurationProviderImpl"/> <!-- key jest wymagany przez mechanizm modułów wtyczek. Nie ma związku z działaniem tej funkcjonalności -->
Atrybuty:
- template-provider (opcjonalny) - nazwa klasy implementującej interfejs ConfigurationFileTemplateProvider. Pozwala to na załadowanie szablonu pliku konfiguracyjnego w widoku edycji konfiguracji wtyczek. Wtyczka przez interfejs podaje własny szablon.
- change-listener (opcjonalny) - nazwa klasy implementującej interfejs ConfigurationFileChangeListener. Umożliwia obsługę reagowania na zdarzenie, gdy plik konfiguracyjny zostanie zmieniony (np. w celu cache'owania konfiguracji).
- allow-file-management (opcjonalny) - wartośc true/false (domyślnie true). Flaga określająca, czy użytkownik może zarządzać plikami konfiguracyjnymi wtyczki (dodawanie, usuwanie, modyfikacjia identyfikatorów/typów plików).
- graphic-schema-provider (opcjonalny) - nazwa klasy implementującej ConfigurationFileGraphicSchemaProvider. Pozwala na załadowanie konfiguracji schematu graficznego dzięki czemu będzie dostępna konfiguracja wtyczki w trybie graficznym.
- init-configuration (opcjonalny) - nazwa klasy implementującej InitConfigurationProvider. Pozwala na załadowanie gotowych plików konfiguracyjnych podczas instalacji wtyczki.
Tryb graficzny konfiguracji wtyczek
Po dodaniu wpisu graphic-schema-provider w deskryptorze wtyczki (dla której chcemy wyświetlić graficzną konfigurację) i prawidłowym napisaniu schematu do konfiguracji wtyczki pojawi się konfiguracja w trybie graficznym.
UWaga
Wtyczka w pomie powinna mieć zależność do plugin-configuration-manager w wersji minimum 4.0.0
Plik ze schematem powinien być w formacie js i musi posiadać skrypt przypisujący do window.vfgFileSchema konfigurację schematu graficznego
Dokumentacja do pisania schematu graficznego: https://vue-generators.gitbook.io
Przykładowy plik konfiguracyjny schematu graficznego do wtyczki Warermark:
Konfiguracja schematu graficznego przystosowana jest pod ten plik konfiguracyjny wtyczki Watermark w formacie JSON:
Tłumaczenia
Tłumaczenia działają na elementach o type:
- label
- legend
- name
- hint
- help
Jako wartość należy podać klucz tłumaczenia z pliku messages_browser wtyczki.
schema: { fields: [{ type: "field-array", label: "tree.view.table1", model: "table1", }] }
Konfiguracja schematu graficznego dla tablic
Poniżej przykłady:
1) Tablica
{ "table1": [ "EUR", "USD", "AUD" ] }
schema: { fields: [{ type: "field-array", label: "Waluty w tablicy", model: "table1", }] }
2) Tablica tablic
{ "table2": [ [ "EUR" ], [ "USD" ], [ "AUD" ] ] }
schema: { fields: [{ type: "field-array", label: "Waluty w tablicy", model: "table2", }] }
3) Tablica obiektów
{ "table3": [ { "id": 1, "wydatek": "Rodzaj wydatku 1" }, { "id": 2, "wydatek": "Rodzaj wydatku 2" } ] }
schema: { fields: [{ type: "field-array", label: "Tablica obiektów", model: "table3", schema: { fields: [{ type: "input", inputType: "text", label: "ID", model: "id" }, { type: "input", inputType: "text", label: "Rodzaj wydatku", model: "wydatek" } ] } }] }
4) Tablica tablic z obiektami
{ "table4": [ [ { "id": 1, "wydatek": "Rodzaj wydatku 1" } ], [ { "id": 2, "wydatek": "Rodzaj wydatku 2" } ] ] }
schema: { fields: [{ type: "field-array", label: "Tablica tablic z obiektami", model: "table4", maxHeight: "200", schema: { fields: [{ type: "input", inputType: "text", label: "ID", model: "id" }, { type: "input", inputType: "text", label: "Rodzaj wydatku", model: "wydatek" } ] } }] }
5) Tablica obiektów posiadających dane i tablicę obiektów
{ "table5": [ { "id": 1, "table5_1": [ { "id": 1, "wydatek": "Rodzaj wydatku 1" }, { "id": 2, "wydatek": "Rodzaj wydatku 2" } ] }, { "id": 2, "table5_1": [ { "id": 1, "wydatek": "Rodzaj wydatku 1" }, { "id": 2, "wydatek": "Rodzaj wydatku 2" } ] } ] }
schema: { fields: [{ type: "field-array", label: "Tablica obiektów posiadających dane i tablicę obiektów ", model: "table5", maxHeight: "200", schema: { fields: [{ type: "input", inputType: "text", label: "ID", model: "id" }, { type: "field-array", label: "table5_1", model: "table5_1", maxHeight: "200", schema: { fields: [{ type: "input", inputType: "text", label: "ID", model: "id" }, { type: "input", inputType: "text", label: "Rodzaj wydatku", model: "wydatek" } ] } } ] } }] }
6) Poperty posiadający tablicę obiektów posiadających dane i tablicę obiektów
{ "table6": { "table6_1": [ { "id": 1, "table6_2": [ { "id": 1, "wydatek": "Rodzaj wydatku 1" }, { "id": 2, "wydatek": "Rodzaj wydatku 2" } ] }, { "id": 2, "table6_2": [ { "id": 1, "wydatek": "Rodzaj wydatku 1" }, { "id": 2, "wydatek": "Rodzaj wydatku 2" } ] } ] } }
schema: { fields: [{ type: "field-array", label: "Popertis posiadający tablicę obiektów posiadających dane i tablicę obiektów ", model: "table6.table6_1", schema: { fields: [ { type: "input", inputType: "text", label: "ID", model: "id" }, { type: "field-array", label: "table6_2", model: "table6_2", schema: { fields: [{ type: "input", inputType: "text", label: "ID", model: "id" }, { type: "input", inputType: "text", label: "Rodzaj wydatku", model: "wydatek" } ] } } ] } }] }