Wikini

RendreModulaireLeFormateur

PagePrincipale :: DerniersChangements :: DerniersCommentaires :: ParametresUtilisateur :: Vous êtes ec2-3-236-145-110.compute-1.amazonaws.com

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
<?php
//vérification de sécurité
if (!WIKINI_VERSION) {
     die (
"acc&egrave;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 :
--BasHaq
Il n'y a pas de commentaire sur cette page. [Afficher commentaires/formulaire]