[comment]: # translation:outdated

[comment]: # aside:1

[comment]: # attributes: notoc

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

# manifest.json

Tout module a besoin du fichier manifest.json.
Le fichier doit être situé dans le répertoire principal du module (Par exemple, *zabbix/ui/modules/module_name/manifest.json*).

Au strict minimum, manifest.json doit spécifier ces champs :

```json
{
    "manifest_version": 2.0,
    "id": "mon_adresse_ip",
    "name": "Mon adresse IP",
    "namespace": "MonAdresseIP",
    "version": "1.0"
}
```

Paramètres pris en charge dans **manifest.json** (appuyez sur le nom du paramètre pour une description détaillée) :

|Paramètre |Description |Obligatoire |
|--|--------|--|
|[manifest_version](#manifest-version)|Version manifeste du module.| Oui |
|[id](#id) |ID de module unique. |^|
|[name](#name) |Nom du module qui sera affiché dans la section Administration. |^|
|[namespace](#namespace) |Espace de noms PHP pour les classes de modules.|^|
|[version](#version) |Version du module. |^|
|[type](#type) |Type du module. Pour le widget doit être défini sur *widget* | Oui pour les widgets, sinon non |
|[widget](#widget) |Configuration des widgets. Utilisé uniquement pour les widgets. |^|
|[actions](#actions) | Actions pour s'inscrire au module. |^|
|[assets](#actifs) | Styles CSS et fichiers JavaScript à inclure. | Non |
|[author](#auteur) |Auteur du module. |^|
|[config](#config) |Valeurs par défaut pour les options de module personnalisées. |^|
|[description](#description) |Description du module.|^|
|[url](#url) |Un lien vers la description du module. |^|

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

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

### manifest_version {#manifest-version}

Version manifeste du module. Actuellement, la version prise en charge est **2.0**.

*Type* : Double

*Exemple*:

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

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

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

### identifiant

ID du module. Doit être unique. Pour éviter de futurs conflits de noms, il est recommandé d'utiliser un préfixe pour les modules (nom de l'auteur ou de l'entreprise, ou tout autre).
Par exemple, si un module est un exemple de leçons et que le nom du module est « Mon module », alors l'ID sera « exemple_mon_module ».

*Type* : Chaîne

*Exemple*:

```json
"id": "exemple_mon_module"
```

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

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

### nom

Nom du module qui sera affiché dans la section Administration.

*Type* : Chaîne

*Exemple*:

```json
"name": "Mon module"
```

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

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

### namespace

Namespace PHP pour les classes de modules.

*Type* : Chaîne

*Exemple*:

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

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

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

### version

Version du module. La version sera affichée dans la section Administration.

*Type* : Chaîne

*Exemple*:

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

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

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

### type

Type du module. Obligatoire pour les widgets et doit être égal à « widget ».

*Type* : Chaîne

*Default* : "module"

*Exemple*:

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

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

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

### Actions

Actions pour s'inscrire avec le module.
La définition de la clé d'objet *class* pour chaque action est requise, les autres clés d'action sont facultatives.

*Type* : Objet

Clés d'objet prises en charge si *[type](#type)* est un *module* :

- **write.your.action.name** (object) - le nom de l'action, doit être écrit en minuscules [a-z], en séparant les mots par des points.
    Prend en charge les clés :
    - **class** (string ; obligatoire) - nom de la classe d'action.
    - **layout** (string) - disposition des actions. Valeurs prises en charge : *layout.json*, *layout.htmlpage* (par défaut), *null*.
    - **view** (string) - vue des actions.

*Exemple*:

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

Clés d'objet prises en charge si *[type](#type)* est un *widget* :

- **widget.{id}.view** (object) - nom de fichier et de classe pour la vue widget. Remplacez **{id}** par la valeur [id](#id) du widget (par exemple, *widget.example_clock.view*).
    Prend en charge les clés :
    - **class** (string ; obligatoire) - nom de la classe d'action pour le mode d'affichage du widget afin d'étendre la classe CControllerDashboardWidgetView par défaut.
      Le fichier source de la classe doit être situé dans le répertoire *actions*.
    - **view** (string) - vue widget. Doit être situé dans le répertoire *views*.
      Si le fichier de vue est *widget.view.php*, ce qui est attendu par défaut, ce paramètre peut être omis.
      Si vous utilisez un nom différent, spécifiez-le ici.
- **widget.{id}.edit** (object) - nom de fichier pour la vue de configuration du widget. Remplacez **{id}** par la valeur [id](#id) du widget (par exemple, *widget.example_clock.edit*).
    Prend en charge les clés :
    - **class** (string ; obligatoire) - nom de la classe d'action pour le mode d'affichage de la configuration du widget. Le fichier source de la classe doit être situé dans le répertoire *actions*.
    - **view** (string) - vue de configuration du widget. Doit être situé dans le répertoire *views*.
      Si le fichier de vue est *widget.edit.php*, ce qui est attendu par défaut, ce paramètre peut être omis.
      Si vous utilisez un nom différent, spécifiez-le ici.

*Exemple*:

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

### actifs

Styles CSS et fichiers JavaScript à inclure.

*Type* : Objet

*Clés d'objet prises en charge :*

- **css** (array) - Fichiers CSS à inclure. Les fichiers doivent être situés dans le répertoire *assets/css*.
- **js** (array) - Fichiers JavaScript à inclure. Les fichiers doivent être situés dans le répertoire *assets/js*.

*Exemple* :

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

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

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

### author

Auteur du module. L'auteur sera affiché dans la section Administration.

*Type* : Chaîne

*Exemple*:

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

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

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

### configuration

Valeurs par défaut pour les options du module. L'objet peut contenir des clés personnalisées.
Si spécifiées, ces valeurs seront écrites dans la base de données lors de l’inscription du module.
Les nouvelles variables ajoutées ultérieurement seront écrites lors du premier appel.
Ensuite, les valeurs des variables ne peuvent être modifiées que directement dans la base de données.

*Type* : Objet

*Exemple* :

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

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

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

### description

Descriptif des modules.

*Type* : Chaîne

*Exemple*:

```json
"description": "Ceci est un widget horloge."
```

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

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

### widget

Configuration des widgets. Utilisé si *[type](#type)* est défini sur *widget*.

*Type* : Objet

*Clés d'objet prises en charge :*

- **name** (string) - utilisé dans la liste des widgets et comme en-tête par défaut. S'il est vide, le paramètre "name" du module sera utilisé.

- ** size** (objet) - dimensions du widget par défaut. Clés prises en charge :
    - *width* (entier) - largeur du widget par défaut.
    - * height* (entier) - hauteur du widget par défaut.

- **form_class** (string) - classe avec formulaire de champs de widget. Doit être situé dans le répertoire *includes*.
    Si la classe est *WidgetForm.php*, ce qui est attendu par défaut, ce paramètre peut être omis.
    Si vous utilisez un nom différent, spécifiez-le ici.

- **js_class** (string) - nom d'une classe JavaScript pour le mode d'affichage des widgets afin d'étendre la classe CWidget par défaut.
    La classe sera chargée avec le tableau de bord.
    Le fichier source de la classe doit se trouver dans le répertoire assets/js. Voir aussi : [assets](#assets).

- **use_time_selector** (booléen) - détermine si le widget nécessite un sélecteur d'heure du tableau de bord.
    Valeurs prises en charge : *true*, *false* (par défaut).

- **refresh_rate** (entier) - taux de rafraîchissement du widget en secondes (par défaut : 60).

*Exemple*:

```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 lien vers la description du module.

*Type* : Chaîne

*Exemple*:

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

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