[comment]: # translation:outdated

[comment]: # aside:1

[comment]: # attributes: notoc

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

Tutti i moduli devono contenere il file manifest.json.
Il file deve essere posto nella cartella principale del modulo (ad esempio, *zabbix/ui/modules/module_name/manifest.json*).

Come minimo, manifest.json dovrebbe 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** (clicca 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à mostrato nella sezione Administration. |^|
|[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 a  *widget* | Yes per widgets, altimenti No |
|[widget](#widget) |Configurazione del Widget . Utilizzato solo per i Widget. |^|
|[actions](#actions) | Actions da registrare con il modulo. |^|
|[assets](#assets) | Stili CSS e file JavaScript da includere. | No |
|[author](#author) |Autore del modulo. |^|
|[config](#config) |Valori di default per le opzioni custom del modulo. |^|
|[description](#description) |Descrizione del modulo.|^|
|[url](#url) |Un link 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 link alla descrizione del modulo. Per i widget, questo link si aprirà cliccando sull'icona della guida ![](../../../../assets/en/manual/web_interface/help_link.png){class="nozoom"}
nella finestra [*Aggiungi widget*](/manual/web_interface/frontend_sections/dashboards#adding-widgets) o
[*Modifica widget*](/manual/web_interface/frontend_sections/dashboards#widgets).
Se l'**url** non viene specificato, cliccando sull'icona della guida si aprirà la pagina generale
[Widget della dashboard](/manual/web_interface/frontend_sections/dashboards/widgets).

*Tipo*: Stringa

*Esempio*:

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

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