1
0
mirror of https://tildegit.org/sbgodin/HtmGem.git synced 2023-08-25 13:53:12 +02:00
HtmGem/index.gmi
Christophe HENRY 859b0aad81 Deep refactoring: parsing, translating, classes
* Removes "^" to disable text decoration line-wise.
* Split HTML generation in two: parsing and translating.
* Create class to handle gemtext parsing.
* Create class to translate to HTML.
* Create class to generate back gemtext (for future test cases).
* Uses generators to parse then translate.
* Fix: 404 doesn't occur for an empty file.
* Page 404 fully generated by HtmGem itself.
* CSS is no longer incorporated in the HTML page.
* Handle CSS inclusion by addCss() calls.
2021-03-18 22:03:44 +01:00

134 lines
6.7 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# HtmGem, voir Gemini via le web
Ceci est la page dinstallation et de présentation d**HtmGem**.
=> tutogemtext.gmi Cliquez ici pour voir le tutoriel pour écrire des pages Gemini.
HtmGem permet dhéberger des pages Gemini et de les publier sur un serveur web muni de **Php**. À louverture dune page ***.gmi**, il la traduit pour le navigateur web. Cette présente page est affichée de cette façon. Gemini utilise son propre protocole, format, clients et serveurs ; HtmGem permet den utiliser le format (Gemtext) via le web.
```
Gemini est un nouveau protocole internet qui :
* est plus lourd que gopher,
* est plus léger que le web,
* nen remplacera aucun,
* vise le rapport puissance sur poids maximum,
* prend la vie privée très sérieusement.
```
=> https://gemini.circumlunar.space/
=> https://framagit.org/Sbgodin/htmgem/-/archive/master/htmgem-master.zip Téléchargez htmgem-master.zip pour linstaller
=> https://framagit.org/Sbgodin/htmgem Code source, rapports de bug, commentaires…
=> https://gmi.sbgodin.fr/htmgem Page principale de HtmGem via le web
=> gemini://gmi.sbgodin.fr/htmgem Page principale de HtmGem via Gemini
=> CHANGELOG.gmi Journal des modifications (//changelog//)
=> COPYING.gmi GNU Affero General Public License (AGPLv3)
———————————————————— ————————————————————
# Installation
Pour faire fonctionner HtmGem — après avoir copié les fichiers — il ne reste quà ajouter une règle de ré-écriture dURL (//URL Rewriting//). Si vous pouvez lire ce texte en ayant demandé //htmgem.php// avec le navigateur, il ne reste que cette dernière étape à franchir 😄
## Prérequis
* Php v7.3 minimum
* Module **Php-mbstring** pour gérer lunicode
* Un serveur web (Apache et Nginx testés)
* Module **mod-rewrite** pour intercepter les pages Gemini
### Nginx
```
# Ce texte doit être placé dans la configuration du serveur.
index index.php index.gmi index.html
rewrite ^(.+\.gmi)$ htmgem/?url=$1;
```
### Apache
```
# Ce texte peut se placer à la racine du site dans un fichier ".htaccess".
DirectoryIndex index.php index.gmi index.html
RewriteEngine on
RewriteRule ^(.+\.gmi)$ htmgem/?url=$1
```
Par la suite,
* Quand un fichier se terminant par **.gmi** sera demandé, HtmGem le traduira à la volée en HTML.
* Quand seul le répertoire sera demandé (http://site.tld/path) le fichier //index.gmi// sera automatiquement choisi.
Le paramétrage dApache et de Nginx est similaire. Par la suite, la syntaxe Nginx sera utilisée.
## Tester HtmGem
Il est supposé que HtmGem est installé à la racine du site dans un répertoire //HtmGem//. Sinon, il faudra simplement adapter les liens.
Chargez cette présente page directement, en cliquant ci-après.
=> index.gmi
Enfin, pour vérifier que le fichier //index.gmi// est automatiquement appelé quand le fichier **.gmi** nest pas indiqué :
=> /htmgem
Linstallation est terminée 🥳 La suite du texte donne des informations complémentaires, et nest pas nécessaire dans limmédiat. Les fichiers **.gmi** que vous créerez seront disponibles dès maintenant.
=> tutogemtext.gmi Inspirez-vous du tutoriel
———————————————————— ————————————————————
# Configuration avancée
Par défaut, le style est incorporé dans chaque page récupérée par le navigateur web. Le même style est utilisé pour toutes les pages, //htmgem/css/htmgem.css//, sauf lorsquun fichier ayant le même nom que la page mais avec lextension **.css** existe dans le même répertoire. Dans ce cas, il est utilisé.
Lorsque loption css est activé dans la configuration (voir //rewrite// plus haut) dautres comportements sont possibles. **Attention**, cela ne fonctionnera pas avec un client Gemini puisque HtmGem nest accessible que via un navigateur web.
* &style=**htmgem** : Utilise le style par défaut, mais en tant que fichier externe.
* &style=**none** : La page HTML est envoyée sans style.
* &style=**<autre nom>** : Le fichier htmgem/css/<autre nom>.css est utilisé en tant que style externe.
* &style=**/<path>** : Le fichier indiqué (chemin absolu) est utilisé en tant que style externe.
* &style=**source** : Le code source de la page est envoyée au navigateur, voir ci-après…
* &style=**pre** : Le code source de la page est envoyée au navigateur encadré par des //<pre>//, voir ci-après…
## Réécriture dURL pour préciser le style à utiliser
Modifier la configuration du serveur web fonctionne mais est assez lourd. On peut tester un style en particulier de la façon suivante :
> https://site.tld/htmgem/index.php?url=/url/page.gmi&style=<…>
Il est aussi possible de faire une réécriture dURL qui intègre le style :
> rewrite ^(.+\.gmi)$ /htmgem/?url=$1;
> rewrite ^(.+\.gmi)\ *\|\ *([\w_]+)$ /htmgem/?url=$1&style=$2;
Par exemple, lorsque ce sera activé :
=> index.gmi%20|%20source Le lien index.gmi | source Produit le code source, pas bien lisible à lécran. À utiliser avec //wget//.
=> index.gmi%20|%20pre Produit le code source de façon lisble à lécran en utilisant la balise **<pre>**.
=> index.gmi Ouvre la page avec le style par défaut, avec le style importé dans len-tête.
=> css Sélecteur de style : une page de démo pour essayer chaque style 😎
### Avec les styles déjà fournis
=> index.gmi%20|%20htmgem Ouvre la page avec le style par défaut (//htmgem.css//), mais le style est importé dans len-tête.
=> index.gmi%20|%20none Ouvre la page courante avec le style //none//. Aucune CSS utilisée.
=> index.gmi%20|%20terminal Style //terminal//
=> index.gmi%20|%20black_wide Style //black wide//
=> index.gmi%20|%20simple Style //simple//
## Décoration du texte
La décoration du texte, qui interprête le **gras** par exemple, ne fait pas partie de la définition de GemText. La décoration du texte sapplique partout sauf sur les titres et blocs préformatés.
### Désactiver la décoration du texte
On peut :
* désactiver et activer la décoration du texte avec une ligne **^^^**,
* ajouter ce qui suit à la **réécriture** dURL :
> &textDecoration=0
———————————————————— ————————————————————
# Quand tout marche…
Parmi les fichiers et répertoires distribués, seuls sont utiles pour le fonctionnement de HtmGem :
* **htmgem/index.php** : Il se charge de traduire le gemtext en HTML.
* **htmgem/css/htmgem.css** : Sil manque, laffichage sera dépourvu de style — littéralement.
* **htmgem/css/… : Conservez les styles que vous utilisez.
Les autres peuvent être supprimés (y compris ce présent fichier //index.gmi//) bien quils ne présentent aucun danger.