Not logged in. · Lost password · Register
Forum: Non-English Discussion French discussion RSS
Aide pour la création d'un plugin
Avatar
Celtarcs #1
Member since Nov 2017 · 5 posts
Group memberships: Members
Show profile · Link to this post
Subject: Aide pour la création d'un plugin
Bonjour à tous,

Je souhaiterais pouvoir reproduire l'apparition d'une image un passant la souris sur un lien, comme présenté sur la page suivante :
http://peutetreunereponse.over-blog.com/article-2109067.ht…

J'aimerais créer un plugin dont la syntaxe serait :
{{nom_plugin>%IMAGE/TEXTE%?[%TAILLE%]&[%URL%]|[%TEXT/IMAGE%]}}

Et dont le code généré serait :
<a class="nom_plugin" href="URL">TEXT/IMAGE<span><img src="IMAGE" height="TAILLE" width="TAILLE" /> ou TEXTE</span></a>

N'ayant jamais créé de plugin sur Dokuwiki, je serais ravis d'avoir de l'aide.

En vous remerciant d'avance.

Cordialement
Celtarcs
Avatar
Digitalin #2
Member since Feb 2014 · 191 posts
Group memberships: Members
Show profile · Link to this post
Bonsoir,

Comme j'ai le projet de reprendre les traductions (remettre à jour ou traduire les pages manquantes en français) concernant le développement d'extensions, j'ai commencé par la page principale : Développement d'extension qui est à lire en priorité.  Le site https://pluginwizard.dokuwiki.org fournit une aide pour créer un squelette d'extension selon son type (syntaxe, administration,....). J'ai recopié dans un wiki local 9 pages plus 9 pages concernant les types à reprendre/traduire sur ce thème, sans compter Javacript et jQuery. Ce plan du site donne une idée de ce qui est disponible en français, soit pas grand chose malheureusement mais si vous êtes à l'aise en anglais, cela ne devra pas posé de problème.

Etant un gros consommateur de Wikipedia, j'adore cette nouveauté qui permet d'avoir au survol d'un lien un extrait de la page en question. J'avoue ne pas avoir fouillé la question et il y a peut-être déjà une extension existante qui fait cela sur DokuWiki.
Enfin, votre idée m'y fait repenser. Comme on peut faire un lien vers un fichier image sans l'afficher {{foo:image.png?linkonly|vers l'image, afficher la miniature de l'image au survol se ressemble un peu, puisqu'il s'agit d'afficher un contenu distant dans la page. Quand schplurtz passera, il pourra probablement vous donner plus d'aide à ce sujet.
Avatar
Celtarcs #3
Member since Nov 2017 · 5 posts
Group memberships: Members
Show profile · Link to this post
Bonjour,

Tout d'abord merci pour votre réponse.

J'ai commencé à regarder les pages que vous m'avez communiqué.
Effectivement le contenu est très enrichissant.
Malgré tout, beaucoup de chose me semble encore obscure.

Le principe des pages Wikipédia est tout à fait ce que je recherche, du moins sur le fonctionnement.
Je souhaite y mettre des pages, mais aussi des images, bref avoir le choix du contenu.

J'attends peut-être la réponse de Schplurtz, pour avoir une idée de la difficulté du projet.

Cordialement
Avatar
schplurtz (Moderator) #4
Member since Nov 2009 · 329 posts · Location: France, Finistère
Group memberships: Global Moderators, Members
Show profile · Link to this post
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}}
http://schplurtz.free.fr/wiki/
Avatar
Celtarcs #5
Member since Nov 2017 · 5 posts
Group memberships: Members
Show profile · Link to this post
Bonjour,

Merci beaucoup pour vos explications fort détaillées.
Je ne me doutais pas de l'ampleur de la tâche. Ne maitrisant pas le PHP, je découvre que le travail est ardue.

Je suis aussi surpris que la communauté de Dokuwiki ne propose pas de plugin similaire.
Cette fonctionnalité est disponible sur le Wikipédia, et Dokuwiki ne s'en inspire t-il pas ?

En tout cas merci Shplurtz pour votre aide et vos explications.

Cordialement
Celtarcs
Close Smaller – Larger + Reply to this post:
Verification code: VeriCode Please enter the word from the image into the text field below. (Type the letters only, lower case is okay.)
Smileys: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Special characters:
Go to forum
Imprint
This board is powered by the Unclassified NewsBoard software, 20150713-dev, © 2003-2015 by Yves Goergen
Current time: 2019-01-17, 20:22:57 (UTC +01:00)