[comment]: # aside:1

[comment]: # attributes: notoc

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

Ogni modulo necessita del file manifest.json.
Il file deve trovarsi nella directory principale del modulo (ad esempio, *zabbix/ui/modules/module_name/manifest.json*).

Come minimo indispensabile, manifest.json deve specificare questi campi:

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

Parametri supportati in **manifest.json** (premi sul nome del parametro per una descrizione dettagliata):

|Parameter |Description |Required |
|--|--------|--|
|[manifest_version](#manifest-version)|Versione del manifest del modulo.| Yes |
|[id](#id) |ID univoco del modulo. |^|
|[name](#name) |Nome del modulo che verrà visualizzato nella sezione Amministrazione. |^|
|[namespace](#namespace) |Namespace PHP per le classi del modulo.|^|
|[version](#version) |Versione del modulo. |^|
|[type](#type) |Tipo del modulo. Per i widget deve essere impostato su *widget* | Yes for widgets, otherwise no |
|[widget](#widget) |Configurazione del widget. Usata solo per i widget. |^|
|[actions](#actions) | Azioni da registrare con il modulo. |^|
|[assets](#assets) | Fogli di stile CSS e file JavaScript da includere. | No |
|[author](#author) |Autore del modulo. |^|
|[config](#config) |Valori predefiniti per le opzioni personalizzate del modulo. |^|
|[description](#description) |Descrizione del modulo.|^|
|[url](#url) |Un collegamento alla descrizione del modulo. |^|

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

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

Versione manifest del modulo. Attualmente, la versione supportata è **2.0**.

*Type*: Double

*Esempio*:

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

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

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

Module ID. Deve essere univoco. Al fine di evitare futuri conflitti di nome, è raccomandato utilizzare prefissi per i moduli (autore, nome della società o altro).
Per esempio, se il modulo è un esempio per lezioni e il nome del modulo è "My module", allora l'ID sarà "example_my_module".

*Type*: String

*Example*:

```json
"id": "example_my_module"
```

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

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

Nome del modulo che verrà mostrato nella sezione Administration.

*Type*: String

*Example*: 

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

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

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

PHP Namespace per le classi del modulo.

*Type*: String

*Example*: 

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

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

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

Versione del modulo. La versione verrà mostrata nella sezione Administration.

*Type*: String

*Example*: 

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

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

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

Tipo del modulo. Obbligatorio per i Widget e deve contenere la stringa "widget".

*Type*: String

*Default*: "module"

*Example*:

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

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

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

Azioni da registrare con il modulo.
La definizione di una  *class* object key per ciascuna azione è obbligatoria, altre action keys sono opzionali.

*Type*: Object

Object keys supportate se *[type](#type)* è *module*:

-   **write.your.action.name** (object) - nome dell'azione, deve essere scritto in minuscolo [a-z], separando le parole con dei punti.
    Supporta le chiavi:
    - **class** (string; required) - nome della classe dell'azione.
    - **layout** (string) - layout dell'azione. Valori supportati: *layout.json*, *layout.htmlpage* (default), *null*.
    - **view** (string) - view dell'azione.

*Esempio*:

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

Object keys supportate se *[type](#type)* è *widget*:

-   **widget.{id}.view** (object) - file e nome della classe per la widget view. Sostituisci **{id}** con il valore [id](#id) del widget (per esempio, *widget.example_clock.view*).
    Supporta le chiavi:
    - **class** (string; required) - nome della classe dell'azione per la modalità di visualizzazione widget da utilizzare per estendere la classe di default CControllerDashboardWidgetView.
      Il file sorgente della classe deve essere posto nella cartella *actions*.
    - **view** (string) - vista widget. Deve essere posto nella cartella *views*.
      Se il file di vista è chiamato *widget.view.php*, che è il default atteso, questo parametro può essere omesso.
      Se invece si usa un nome differente, specificatelo qui.
-   **widget.{id}.edit** (object) - nome del file per la configurazione della vista widget. Sostituisci **{id}** con il valore [id](#id) del widget (ad esempio, *widget.example_clock.edit*).
    Supporta le chiavi:
    - **class** (string; required) - nome della classe action per la vista della modalita di configurazione del widget. Il sorgente della classe deve essere posto nella cartella *actions*.
    - **view** (string) - vista configurazione del widget. Deve essere posta nella cartella *views*.
      Se il nome del file di vista è *widget.edit.php*, che è il default atteso, allora questo parametro può essere omesso.
      Se invece si usa un nome differente, specificatelo qui.

*Esempio*: 

```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

File CSS e JavaScript da includere

*Tipo*: Object

*Object keys supportate:*
- **css** (array) - File CSS da includere. I file devono essere posizionati in *assets/css*.
- **js** (array) - File JavaScript da includere. I file devono essere posizionati in *assets/js*.

*Esempio*:

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

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

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

Autore del modulo. L'autore verrà mostrato nella sezione Amministrativa.

*Type*: String

*Example*: 

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

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

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

Valori predefiniti per le opzioni del modulo. L'oggetto può contenere qualsiasi chiave personalizzata.
Se specificati, questi valori verranno scritti nel database durante la registrazione del modulo.
Le nuove variabili aggiunte successivamente verranno scritte alla prima chiamata.
Successivamente, i valori delle variabili potranno essere modificati solo direttamente nel database.

*Tipo*: Oggetto

*Esempio*:

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

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

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

Descrizione del modulo.

*Type*: String

*Esempio*: 

```json
"description": "This is a clock widget."
```

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

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

Configurazione del widget. Utilizzata se *[type](#type)* è impostato su *widget*.

*Tipo*: Oggetto

*Chiavi dell'oggetto supportate:*

- **name** (stringa) - utilizzato nell'elenco dei widget e come intestazione predefinita. Se vuoto, verrà utilizzato il parametro "nome" del modulo.

- **size** (oggetto) - dimensioni predefinite del widget. Chiavi supportate:
- *width* (intero) - larghezza predefinita del widget.
- *height* (intero) - altezza predefinita del widget.

- **form_class** (stringa) - classe con il form dei campi del widget. Deve trovarsi nella directory *includes*.
Se la classe è *WidgetForm.php*, come previsto per impostazione predefinita, questo parametro può essere omesso.
Se si utilizza un nome diverso, specificarlo qui.

- **js_class** (stringa) - nome di una classe JavaScript per la modalità di visualizzazione del widget per estendere la classe CWidget predefinita. La classe verrà caricata con la dashboard.
Il file sorgente della classe deve trovarsi nella directory assets/js. Vedi anche: [assets](#assets).

- **use_time_selector** (booleano) - determina se il widget richiede un selettore di tempo per la dashboard.
Valori supportati: *true*, *false* (predefinito).

- **refresh_rate** (intero) - frequenza di aggiornamento del widget in secondi (predefinita: 60).

*Esempio*:

```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

Un collegamento alla descrizione del modulo. Per i widget, questo collegamento verrà aperto facendo clic sull'icona di aiuto ![](../../../../assets/en/manual/web_interface/help_link.png){class="nozoom"}
nella finestra [*Add widget*](/manual/web_interface/frontend_sections/dashboards#adding-widgets) o
[*Edit widget*](/manual/web_interface/frontend_sections/dashboards#widgets).
Se **url** non è specificato, facendo clic sull'icona di aiuto si aprirà la pagina generale
[Dashboard widgets](/manual/web_interface/frontend_sections/dashboards/widgets).

*Type*: String

*Example*: 

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

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