Bonjour,
Bonne nouvelle, c'est pas très difficile quand on maîtrise un minimum PHP, mais c'est quand même du boulot, faut pas rêver. Surtout quand on découvre juste la programmation DokuWiki. Ce greffon est un greffon de syntaxe. Il y a effectivement une page de création d'un squelette de greffon avec un magicien sur
https://pluginwizard.dokuwiki.org/ comme l'a mentionné Digitalin. Il faut définitivement partir de là.
Ensuite se référer à la page en anglais concernant les greffons de syntaxe, car la page en français est pour l'instant incomplète.
https://www.dokuwiki.org/devel:syntax_plugins . Pour savoir comment placer le css dans le greffon, voir
https://www.dokuwiki.org/devel:css (de mémoire il suffit de créer dans le dossier du greffon un fichier style.css, et ce fichier sera joint aux autres fichiers css servis par DW)
Ce qu'il faut bien comprendre initialement, Ce sont les étapes du traitement d'une page.
1 - D'abord DW analyse la page, reconnait les diverses syntaxes.
L'analye est guidée par des modes dans lesquels certaines
syntaxes sont reconnues grâce à des expresssions régulières.
l'initialisation du greffon donne les renseignements nécessaires.
méthodes du greffon : gettype, getptype getsort, getAllowedTypes
et connectTo
2 - Quand la syntaxe du greffon est reconnue, le texte trouvé est
passé au greffon qui doit la décortiquer finement et rendre à
DW le résultat pour qu'il le mémorise.
méthode du greffon : handle
3 - Il faut maintenant produire le rendu html, (ou odt, optionnel,
ou que-sais-je-encore...) à partir du résultat mémorisé.
méthode du greffon : render
Comme dans ce cas précis, on est exactement dans la situation du
greffon d'exemple 1 de la page en anglais on a au final quelque chose d'assez simple (si si). Une fois généré un squelette de greffon avec l'aide du magicien, il faut passer en revue les méthodes du greffon de syntaxe :
gettype -> 'substition', (oui y'a une faute, mais c'est le mot clé maintenant)
getptype : supprimer la méthode, inutile dans ce cas
getAllowedptypes : pas besoin d'écrire cette méthode.
getsort -> 42 . ça ne sert qu'en cas de conflit entre greffons. Mais il n'y en aura pas d'autre en conflit sur la même syntaxe.
connectto -> addSpecialPattern( '{{nom_greffon>.*?[|](?:{{.*?}}|.*?)}}' ) ou truc dans le genre
handle -> là il faut décortiquer le texte, pour en extraire les divers composants sans doute la partie la plus compliquée. Pour traiter les diverses forme de syntaxe d'image il doit bien y avoir des fonctions toutes prêtes dans DokuWiki; je ne sais pas trop lesquelles... Mais chaque chose en son temps.
render -> ajouter du html, c'est facile. Prévoir quelque chose pour le rendu odt est à peine plus compliqué (et totalement optionnel) et relativement bien documenté
ici.
Voilà, clairement la seule difficulté réside dans le décorticage de la chaine
{{nom_plugin>%IMAGE/TEXTE%?[%TAILLE%]&[%URL%]|[%TEXT/IMAGE%]}}, dans la fonction handle. dokuwiki fait tout le reste.
Bon courage,
Schplurtz.
PS
une remarque sur la syntaxe. Pourquoi choisir d'ajouter la taille
de l'image après l'image et derrière un ? alors que DokuWiki permet déjà
de donner des tailles dans sa syntaxe d'image ?
ie pourquoi ceci :
{{nom_greffon>{{:wiki:dokuwiki.png}}?100x300&https://pouet.com|Bla bla bla}}
et pas cela :
{{nom_greffon>{{:wiki:dokuwiki.png?100x300}}|https://pouet.com|Bla bla bla}}
qui présente l'avantage de pouvoir être inséré d'un clic
par le gestionnaire d'image.
Car du coup, on pourrait simplifier la syntaxe :
{{nom_greffon>TEXTE-OU-IMAGE|LIEN-URL|IMAGE/TEXT}}