[comment]: # aside:1

[comment]: # attributes: notoc

[comment]: # ({fcf4f388-0ea8ed60})
# manifest.json

Każdy moduł wymaga pliku manifest.json.
Plik musi znajdować się w głównym katalogu (na przykład *zabbix/ui/modules/module_name/manifest.json*).

Jako minimum plik manifest.json powinien określać następujące pola:

```json
{
    "manifest_version": 2.0,
    "id": "my_ip_address",
    "name": "My IP Address",
    "namespace": "MyIPAddress",
    "version": "1.0"
}
```

Parametry obsługiwane w **manifest.json** (kliknij nazwę parametry, aby zobaczyć szczegółowy opis):

|Parametr |Opis |Wymagane |
|--|--------|--|
|[manifest_version](#manifestversion)|Wersja modułu manifestu.| Tak |
|[id](#id) |Unikalny identyfikator modułu. |^|
|[name](#name) |Nazwa modułu, która będzie wyświetlana w sekcji Administracja. |^|
|[namespace](#namespace) |Przestrzeń nazw PHP dla klas modułów.|^|
|[version](#version) |Wersja modułu. |^|
|[type](#type) |Typ modułu. Dla widgetu musi być ustawiony jako *widget* | Tak dla widgetów, w przeciwnym razie nie |
|[widget](#widget) |Konfiguracja widgetu. Używany tylko dla widgetów. |^|
|[actions](#actions) | Akcje umożliwiające rejestrację w module. |^|
|[assets](#assets) | Style CSS i pliki JavaScript do uwzględnienia. | No |
|[author](#author) |Autor modułu. |^|
|[config](#config) |Domyślne wartości niestandardowych opcji modułów . |^|
|[description](#description) |Opis modułu.|^|
|[url](#url) |Link do opisu modułu. |^|

[comment]: # ({/fcf4f388-0ea8ed60})

[comment]: # ({e6ddbfde-7863337e})
### manifest_version {#manifest-version}

Wersja manifestu modułu. Obecnie obsługiwana wersja to **2.0**.

*Typ*: Double

*Przykład*: 

```json
"manifest_version": 2.0
```

[comment]: # ({/e6ddbfde-7863337e})

[comment]: # ({4a354b32-40db7411})
### ID

Identyfikator modułu. Musi być unikalny. Aby uniknąć przyszłych konfliktów w nazewnictwie, zaleca się używanie przedrostków dla modułów (nazwa autora, firmy lub jakakolwiek inna).
Na przykład, jeśli moduł jest przykładem lekcji, a nazwa modułu to "Mój moduł", wówczas identyfikatorem będzie "przykład_mój_moduł".

*Typ*: String

*Przykład*:

```json
"id": "przykład_mój_moduł"
```

[comment]: # ({/4a354b32-40db7411})

[comment]: # ({6b60a366-1d94ce43})
### name

Nazwa modułu, która będzie wyświetlana w sekcji Administracja.

*Typ*: String

*Przykład*: 

```json
"name": "My module"
```

[comment]: # ({/6b60a366-1d94ce43})

[comment]: # ({346a79b5-b1e94eb0})
### namespace

Przestrzeń nazw PHP dla klas modułów.

*Typ*: String

*Przykład*: 

```json
"namespace": "ClockWidget"
```

[comment]: # ({/346a79b5-b1e94eb0})

[comment]: # ({2801cc8a-6669130f})
### version

Wersja modułu. Wersja zostanie wyświetlona w sekcji Administracja.

*Typ*: String

*Przykład*: 

```json
"version": "1.0"
```

[comment]: # ({/2801cc8a-6669130f})

[comment]: # ({3d827d1e-2f2ecfb4})
### type

Typ modułu. Wymagane w przypadku widgetów i musi być równe "widget".

*Typ*: String

*Domyślne*: "module"

*Przykład*:

```json
"type": "widget"
```

[comment]: # ({/3d827d1e-2f2ecfb4})

[comment]: # ({9f849f5d-85cbb8b0})

### działania

Akcje do zarejestrowania w module.
Wymagane jest zdefiniowanie klucza obiektu *class* dla każdej akcji, pozostałe klucze akcji są opcjonalne.

*Typ*: Obiekt

Obsługiwane klucze obiektu, jeśli *[typ](#type)* to *module*:

- **write.your.action.name** (obiekt) - nazwa akcji, należy zapisać małymi literami [a-z], oddzielając słowa kropkami.
    Obsługuje klucze:
    - **class** (string; wymagane) - nazwa klasy akcji.
    - **layout** (string) - układ akcji. Obsługiwane wartości: *layout.json*, *layout.htmlpage* (domyślnie), *null*.
    - **view** (string) - widok akcji.

*Przykład*:

```json
"actions": {
    "moduł.example.list": {
        "class": "ExampleList",
        "view": "example.list",
        "layout": "layout.htmlpage"
        }
    }
```

Obsługiwane klucze obiektu, jeśli *[type](#type)* to *widget*:

- **widget.{id}.view** (object) - nazwa pliku i klasy dla widoku widgetu. Zamień **{id}** na wartość [id](#id) widżetu (na przykład *widget.example_clock.view*).
    Obsługuje klucze:
    - **class** (string; wymagane) - nazwa klasy akcji dla trybu widoku widgetu w celu rozszerzenia domyślnej klasy CControllerDashboardWidgetView.
      Plik źródłowy klasy musi znajdować się w katalogu *actions*.
    - **view** (string) - widok widżetu. Musi znajdować się w katalogu *views*.
      Jeśli plik widoku to *widget.view.php*, co jest wartością domyślną, można pozostawić pustą wartość.
      Jeśli używasz innej nazwy, podaj ją tutaj.
- **widget.{id}.edit** (object) - nazwa pliku widoku konfiguracji widgetu. Zamień **{id}** na wartość [id](#id) widżetu (na przykład *widget.example_clock.edit*).
    Obsługuje klucze:
    - **class** (string; wymagane) - nazwa klasy akcji dla trybu widoku konfiguracji widgetu. Plik źródłowy klasy musi znajdować się w katalogu *actions*.
    - **view** (string) - widok konfiguracji widgetu. Musi znajdować się w katalogu *views*.
      Jeśli plik widoku to *widget.edit.php*, co jest wartością domyślną, można pozostawić pustą wartość.
      Jeśli używasz innej nazwy, podaj ją tutaj.

*Przykład*: 

```json
"actions": {
    "widget.tophosts.view": {
        "class": "WidgetView"
    },
    "widget.tophosts.column.edit": {
        "class": "ColumnEdit",
        "view": "column.edit",
        "layout": "layout.json"
    }
}
```

[comment]: # ({/9f849f5d-85cbb8b0})

[comment]: # ({29793a59-a0998fce})
### assets

Style CSS i pliki JavaScript do uwzględnienia.

*Typ*: Object

*Obsługiwane klucze obiektów:*

- **css** (tablica) - pliki CSS do dołączenia. Pliki muszą znajdować się w katalogu *assets/css*.
- **js** (tablica) - pliki JavaScript do dołączenia. Pliki muszą znajdować się w katalogu *assets/js*.

*Przykład*: 

```json
"assets": {
    "css": ["widget.css"],
    "js": ["class.widget.js"]
}
```

[comment]: # ({/29793a59-a0998fce})

[comment]: # ({199df252-0a7c568c})
### author

Autor modułu. Autor zostanie wyświetlony w sekcji Administracja.

*Typ*: String

*Przykład*: 

```json
"author": "John Smith"
```

[comment]: # ({/199df252-0a7c568c})

[comment]: # ({e21b146a-1})

### konfiguracja

Domyślne wartości opcji modułu. Obiekt może zawierać dowolne klucze niestandardowe.
Jeśli podane, wartości te zostaną zapisane do bazy danych podczas rejestracji modułu.
Nowe zmienne dodane później zostaną zapisane przy pierwszym wywołaniu.
Po zapisaniu, wartości zmiennych można zmieniać wyłącznie bezpośrednio w bazie danych.

*Typ*: Obiekt

*Przykład*:

```json
„config”: {
    "username": "Administrator",
    "password": "",
    "auth_url": "https://example.com/auth"
}
```

[comment]: # ({/e21b146a-1})

[comment]: # ({7be8b4c3-6a167d9e})
### description

Opis modułu.

*Typ*: String

*Przykład*: 

```json
"description": "To jest widget zegara."
```

[comment]: # ({/7be8b4c3-6a167d9e})

[comment]: # ({23438afa-cb9c7cd8})
### widget

Konfiguracja widgetu. Używana, jeśli *[type](#type)* jest ustawiony na *widget*.

*Typ*: Object

*Obsługiwane klucze obiektu:*

-   **name** (string) - używana na liście widgetów oraz jako domyślny nagłówek. Jeśli jest pusta, zostanie użyty parametr „name” z modułu.

-   **size** (object) - domyślne wymiary widgetu. Obsługuje klucze:
    - *width* (integer) - domyślna szerokość widgetu.
    - *height* (integer) - domyślna wysokość widgetu.

-   **form_class** (string) - klasa z formularzem pól widgetu. Musi znajdować się w katalogu *includes*.
    Jeśli klasą jest *WidgetForm.php*, oczekiwana domyślnie, ten parametr może zostać pominięty.
    W przypadku użycia innej nazwy należy ją tutaj określić.

-   **js_class** (string) - nazwa klasy JavaScript dla trybu widoku widgetu, rozszerzającej domyślną klasę CWidget.
    Klasa zostanie załadowana wraz z pulpitem.
    Plik źródłowy klasy musi znajdować się w katalogu assets/js. Zobacz także: [assets](#assets).

-   **use_time_selector** (boolean) - określa, czy widget wymaga selektora czasu pulpitu.
    Obsługiwane wartości: *true*, *false* (domyślnie).

-   **refresh_rate** (integer) - częstotliwość odświeżania widgetu w sekundach (domyślnie: 60).

*Przykład*: 

```json
"widget": {
    "name": "",
    "size": {
        "width": 12,
        "height": 5
    },
    "form_class": "WidgetForm",
    "js_class": "CWidget",
    "use_time_selector": false,
    "refresh_rate": 60
}
```

[comment]: # ({/23438afa-cb9c7cd8})

[comment]: # ({1530a296-ee0f6140})

### url
Link do opisu modułu. W przypadku widżetów ten link zostanie otwarty po kliknięciu ikony pomocy ![](../../../../assets/en/manual/web_interface/help_link.png){class="nozoom"} w oknie [Dodaj widżet](/manual/web_interface/frontend_sections/dashboards#adding-widgets)
lub
[Edytuj widżet](/manual/web_interface/frontend_sections/dashboards#widgets).
Jeśli nie określono **url**, kliknięcie ikony pomocy spowoduje otwarcie strony ogólnej [Widżety pulpitu nawigacyjnego](/manual/web_interface/frontend_sections/dashboards/widgets).

*Typ*: Łańcuch znaków

*Przykład*:

```json
"url": "http://example.com"
```

[comment]: # ({/1530a296-ee0f6140})
