Rendre modulaire le formateur
Pour faciliter la modification du formateur de page, il serait intéressant que le formateur soit un paramètre de l'installation.
Dans la fonction format on trouve wakka par défaut.
function Format($text, $formatter = "wakka")
Si on utilisait un paramètre dans la config, on pourrait plus facilement changer de formateur
(Je pense par exemple à
http://www.uzine.net/spip_contrib/spikini/index.php?wiki=PagePrincipale qui intègre le Wikini dans SPIP. Et même pourquoi pas tagguer une page lorsque l'on veut utiliser un autre formateur.
--
JeanYves
Solutions
[voir ce qu'il y a à faire ; ça devrait être assez léger]
Solution :
Remplacer les appels à
$this->Format($text) par
$this->Format($text,$nomDuFormateur) avec le nom du formateur définis dans la configuration. Le problème étant que le code deviendrait "incompatible". Il faut donc plutôt écrire :
<?php
function Format($text){
$formater = GetConfigValue('default_formatter'); //paramètre de coonfiguration default_formatter defini dans wakka.config.php
return $this->Format2($text,$formater);
}
function Format2($text, $formatter = "wakka") {
return $this->IncludeBuffered("formatters/".$formatter.".php", "<i>Impossible de trouver le formateur \"$formatter\"</i>", compact("text"));
}
?>
Pour spécifier un formateur particulier pour une page il suffit de créer une action qui modifierait la valeur du paramètre de configuration
default_formatter. Dès que cette action est appelée, le formateur par défaut change pour l'execution en cour (pas dans le fichier de configuration). La modification peut ne s'appliquée qu'a une partie de la page.
--
GarfieldFr
Discussions
A chaud, je suis assez partant pour cette modification : très légère, impact négligeable sur les performances. Il faudrait se mettre d'accord avec les gens de
SpikiNi pour assurer le maximum de compatibilité. (Je vais créer une page chez eux pour nouer contact et faire avancer cette proposition. Il est aussi possible qu'ils nous lisent ;)
--
CharlesNepote
Cela rejoint en partie la discussion sur le
DialecteWiki sur lequel on trouve d'autres idées.
--
JeanYves
En effet, cela irait dans le sens du développement de
WikiNi, après les handlers, les actions et la coloration syntaxique, je pense qu'il est possible de rendre le formateur modulaire et même de "tager" la page pour la forcer à utiliser un autre formateur que celui par défaut. Mais cela pose un problème, celui de la multiplicité de "langages
WikiNi" et des pages d'aides sur chaque formateur. De plus, changer de formateur selon la page rend le maniement de
WikiNi plus complexe. En effet, l'auteur d'une page ecrit en utilisant le formateur
PhpWiki, pour modifier la page il faudra connaitre la syntaxe de ce formateur.
Donc, rendre le formateur modulaire me semble une bonne idée, mais spécifier le formateur selon la page me semble une moins bonne idée.
--
GarfieldFr
Je suis tout à fait d'accord avec toi, sauf dans un cas : le formateur ne sert pas qu'à reconnaitre un langage ou un autre, c'est également lui qui décide du format de sortie.
Ainsi, avoir un formatteur par défaut pour l'affichage, mais pouvoir en préciser un autre pour par exemple exporter en
DocBook ou dans un format xml importable par ailleurs peut être intéressant, et ça n'est pas facilement faisable par un handler ou une action.
On pourrait donc avoir une gestion modulaire des formateurs, avec non pas un choix de formateur par taggage de page, mais un choix par paramètre d'url comme on peut le faire pour les handlers.
--
PiIf
- Donc quelque chose comme page/show&format=xml ? L'idée me plait assez... :) -- ProgFou
- Il me semble que ce que PiIf cherche existe déjà ... ce sont les handlers. Il doit être possible de créer un handler DocBook par exemple et de l'appeler via l'URL : NomDeLaPage/docbook. A mon avis ce n'est pas un changement de formatters qu'il faut mais bien un handlers qui récupère le texte "brut" de la page et qui l'interprète différement. --GarfieldFr
- Oops, effectivement. Je n'avais pas remarqué que c'est le handler qui est responsable de l'appel à la méthode Format. Du coup, on peut se contenter d'une entrée defaultFormater dans le config, positionnée à wakka par défaut. Pour utiliser un autre formateur au cas par cas,il suffit d'un handler issu d'un copier/coller de show -- PiIf
- Pas besoin de spécifier un formateur par défaut dans le fichier de config. Il suffit d'écrire un handler qui lit le texte brut de la page et qui fait un echo de la version mise en forme du texte brute. Tu n'as pas à appeler la méthode Format. Regarde plutôt le handler xml par exemple. Un exemple triviale (non testé) de handler qui crée une mise en forme "perso" :
<?php
//vérification de sécurité
if (!WIKINI_VERSION) {
die ("accès direct interdit");
}
echo $this->Header();
?>
<div class="page">
<?php
if ($HasAccessRead=$this->HasAccess("read"))
{
if ($this->page)
{
// Affiche la page en gras
echo "<b>".$this->page["body"]."</b>" ;
}
}
?>
</div>
<?php echo $this->Footer(); ?>
Ce handler affiche la page en gras. Comme tu voit, nul besoin d'appeler la fonction
Format. Pour un handler DocBook, il suffit d'écrire un code qui prend en entré un texte brute "à la syntaxe
WikiNi" et qui transforme ca en sortie DocBook. --
GarfieldFr
Ma version modifiée de wikini, dispo
ici, intègre cette modif (voir
cette page).
Avec un formatteur modulaire, est ce qu'on ne pourrait pas renommer le formateur wakka.php en un nom de fichier comme format_wikini.php ? Ca montrerais que :
- c'est bien la fonction format de wikini mais on peut en changer
- bien faire la difference avec le moteur wakka.php.
--
BasHaq