Si vous n'êtes pas familier avec GitHub, il y a un bouton "Éditer" en haut de chaque page qui vous redirigera vers l'éditeur en ligne de GitHub et qui vous aidera à proposer vos modifications (appelées *Pull Requests*).
Puisque l'éditeur en ligne ne permet pas d'ajouter des fichiers, utiliser Git par la ligne de commande est la méthode recommandée si vous voulez ajouter des médias (comme des images).
Sous le capot, la documentation est déployée avec le [CMS Grav](https://getgrav.org/?target=_blank).
La structure du dépôt est décrite ici:
```bash
+-- config
+-- site.yaml
+-- system.yaml
+-- themes
+-- yunohost-docs.yaml
# Quelques paramètres pour le thème de la documentation
+-- images
# Contains the images used in the documentation pages.
+-- pages
# The directory containing the documentation pages.
# The pages hierarchy is reflected by the directory hierarchy.
+-- 00.home
+-- 01.administrate
+-- 02.applications
+-- 03.community
+-- 04.contribute
+-- themes
+-- learn4
+-- yunohost-docs
# Contient le code du thème, qui est une extension du thème Learn4
+-- .gitignore
# Contient les instructions pour ne pas envoyer de fichier
# sensible ou inutile vers le dépôt Git
+-- README.md
```
!!!! Pour en apprendre plus sur les fonctionnalités de Grav, vous pouvez consulter sa [documentation](https://learn.getgrav.org?target=_blank) (en anglais). Le reste de cette page donne quelques consignes spécifiques pour contribuer à la documentation de YunoHost.
Chaque page commence par un en-tête qui donne les instructions à Grav sur comment la traiter. Regardons l'en-tête de cette page :
```
---
title: Rédaction de la documentation
template: docs
taxonomy:
category: docs
routes:
default: '/write_documentation'
---
```
1. L'en-tête commence et finit par une ligne contenant `---` ;
2. La clé `title` gère le premier titre de la page, son nom dans le menu de navigation à gauche, et son nom dans l'onglet du navigateur ;
3. Les clés `template` et `taxonomy` doivent toujours être inclues et laissées telles quelles. Elles informent Grav sur quel thème appliquer aux pages, et permettent de les ordonner correctement.
4. La clé `routes` et son enfant `default` font que la page est accessible par défaut à l'adresse `https://yunohost.org/docs/write_documentation` au lieu de devoir la chercher à l'adresse `https://yunohost.org/docs/contribute/write_documentation`, qui correspond à son emplacement réel dans la hiérarchie des dossiers.
Vous pouvez utiliser la syntaxe Markdown, consultez la page de [documentation dédiée](/doc_markdown_guide) pour plus d'information.
Pour étendre les fonctionnalités de Markdown, des extensions ont été ajoutées à Grav. Vous pouvez consulter leur propre documentation sur GitHub pour découvrir comment vous en servir.
```text
anchors
external_links
flex-objects
highlight
image-captions
markdown-notices
presentation
presentation-deckset
shortcode-core
```
## Pages spéciales
Quelques pages de la documentation sont générées automatiquement ou dynamiquement.
| Page | Chemin | Notes |
|---------------|--------|-------|
| Catalogue d'applications | `/pages/02.applications/01.catalog/apps.md` | Récupère et traite le fichier [app.json](https://github.com/YunoHost/apps/blob/master/apps.json?target=_blank) |
| Apps helpers | `pages/04.contribute/04.packaging_apps/11.helpers/packaging_apps_helpers.md` | Générée par ce [script](https://github.com/YunoHost/yunohost/blob/dev/doc/generate_helper_doc.py?target=_blank), à partir de ce [canevas](https://github.com/YunoHost/yunohost/blob/dev/doc/helper_doc_template.md?target=_blank) |
| Documentation des apps | `pages/02.applications/02.docs/docs.md` | Liste les sous-pages du même dossier qui ont les clés `taxonomy.category: docs, apps` dans leur en-tête |
## Hébergez votre propre documentation de test
! Ces instructions ne sont pas encore complètement testées. Aidez-nous en nous rapportant tout problème que vous rencontriez.
0.*Fork* le dépôt de la documentation YunoHost sur GitHub
12. Renseignez les adresses dans les clés `commits` et `tree` dans `config/themes/yunohost-docs.yaml` pour quelles pointent vers l'adresse de votre *fork* sur GitHub
4. Assurez-vous que les dossiers `user/pages/01.home` et `user/pages/02.typography` sont supprimés.
5. Dans l'administration de Grav, dans "Configuration" > "System" :