Adds the style "pre"

This commit is contained in:
Christophe HENRY 2021-03-09 12:02:04 +01:00
parent 1a01e8bd81
commit 0f6e3467eb
3 changed files with 27 additions and 13 deletions

4
TODO
View File

@ -1,16 +1,12 @@
* manage url encoding: The filename fetched on disk may differ from that was asked by URL.
* check /etc/passwd not accessible: Perform sanity checks against unauthorized access.
* a way to get the source of a page, using urlrewriting
* options to activate the text decoration
* HTML caching: Nginx tries the html, if not found use this script to build it
* configuration: Fetch configuration in current dir, tries parents.
* css: file location or in-place or in config?
* Command line API for script and testing.
* Page menu on upper and lower sides: [parent dir] [root dir] [inline images] [raw response] [view cert]
* Check unicode capability, UTF16 input, etc…
* Manage different type of carriage return: CR CR/LF LF
* Do not output an empty line for the last carriage return of the document
* Test on a shared hosting
* Text localisation
* Manage logging (cache refresh, debug)
* Split the main loop in two: one part to decode the text to internal language, the other to make the HTML

View File

@ -37,21 +37,26 @@ Il est supposé que HtmGem est installé à la racine du site dans un répertoir
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 ce cas, il est utilisé.
Lorsque loption css est activé dans la configuration (voir //rewrite// plus haut) dautres comportements sont possibles :
* &style=source : le code source de la page est envoyée au navigateur, voir ci-après…
* &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=**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 afficher le code source
Par défaut, le code source du fichier **.gmi** nest pas accessible extérieurement puisquil est interprété à la volée par HtmGem. Il est possible cependant dajouter laffichage
Pour obtenir le source avec un lien du type
=> index.gmi.source
Il faut ajouter la ligne suivante pour la réécriture dURL :
=> index.gmi.source Envoie le code source, le navigateur laffichera comme une longue ligne. À utiliser en ligne commande avec **wget**!
=> index.gmi.pre Affiche le code source dans le navigateur, layant adapté avec la balise **<pre>**.
Il faut ajouter les lignes suivantes dans la réécriture dURL, ici pour Nginx :
> rewrite ^(.+\.gmi)\.source$ /htmgem/?url=$1&style=source;
> rewrite ^(.+\.gmi)\.pre$ /htmgem/?url=$1&style=pre;
# Quand tout marche…
Parmi les fichiers et répertoires distribués, seuls sont utiles :
* **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.
Les autres peuvent être supprimés (y compris ce présent fichier) bien quils ne présentent aucun danger. Ils restent nécessaires au développement du projet et son disponible sur le site de HtmGem.
* **htmgem/css/htmgem.css** : Sil manque, laffichage sera dépourvu de style — littéralement.
Les autres peuvent être supprimés (y compris ce présent fichier) bien quils ne présentent aucun danger. Ils restent nécessaires au développement du projet et sont disponibles sur le site de HtmGem.

View File

@ -295,6 +295,19 @@ $page_title = @$matches[1];
if ("source" == $style) {
echo $fileContents;
} elseif ("pre" == $style) {
$fileContents = htmlspecialchars($fileContents, ENT_HTML5|ENT_NOQUOTES, "UTF-8", false);
echo <<<EOL
<!DOCTYPE html>
<html>
<head>
<title>$page_title</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<pre>$fileContents</pre>
</body>
</html>
EOL;
} else {
$parts = pathinfo($filePath);
$localCss = $parts["filename"].".css";