CINXE.COM
fr:devel:events [DokuWiki]
<!DOCTYPE html> <html lang="fr" dir="ltr" class="no-js"> <head> <meta charset="utf-8" /> <title>fr:devel:events [DokuWiki]</title> <meta name="generator" content="DokuWiki"/> <meta name="theme-color" content="#008800"/> <meta name="robots" content="index,follow"/> <meta name="keywords" content="fr,devel,events"/> <link rel="search" type="application/opensearchdescription+xml" href="/lib/exe/opensearch.php" title="DokuWiki"/> <link rel="start" href="/"/> <link rel="contents" href="/fr:devel:events?do=index" title="Plan du site"/> <link rel="manifest" href="/lib/exe/manifest.php"/> <link rel="alternate" type="application/rss+xml" title="Derniers changements" href="/feed.php"/> <link rel="alternate" type="application/rss+xml" title="Catégorie courante" href="/feed.php?mode=list&ns=fr:devel"/> <link rel="edit" title="Modifier cette page" href="/fr:devel:events?do=edit"/> <link rel="alternate" type="text/html" title="HTML brut" href="/_export/xhtml/fr:devel:events"/> <link rel="alternate" type="text/plain" title="Wiki balise" href="/_export/raw/fr:devel:events"/> <link rel="canonical" href="https://www.dokuwiki.org/fr:devel:events"/> <link rel="stylesheet" href="/lib/exe/css.php?t=dokuwiki&tseed=f1005bad3d81fc9c803c7f93d32a390e"/> <link rel="alternate" hreflang="en" href="https://www.dokuwiki.org/devel:events"/> <link rel="alternate" hreflang="el" href="https://www.dokuwiki.org/el:devel:events"/> <link rel="alternate" hreflang="ru" href="https://www.dokuwiki.org/ru:devel:events"/> <link rel="alternate" hreflang="x-default" href="https://www.dokuwiki.org/devel:events"/> <script >var NS='fr:devel';var JSINFO = {"plugins":{"edittable":{"default columnwidth":""}},"id":"fr:devel:events","namespace":"fr:devel","ACT":"show","useHeadingNavigation":0,"useHeadingContent":0};(function(H){H.className=H.className.replace(/\bno-js\b/,'js')})(document.documentElement);</script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.4/jquery.min.js" defer="defer"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.13.2/jquery-ui.min.js" defer="defer"></script> <script src="/lib/exe/js.php?t=dokuwiki&tseed=f1005bad3d81fc9c803c7f93d32a390e&lang=fr" defer="defer"></script> <meta name="viewport" content="width=device-width,initial-scale=1" /> <link rel="shortcut icon" href="/lib/tpl/dokuwiki/images/favicon.ico" /> <link rel="apple-touch-icon" href="/lib/tpl/dokuwiki/images/apple-touch-icon.png" /> <meta name="verify-v1" content="OVxl3gsCv2MhZqh1cBQyl0JytWXSwXMjyvwc+4w3WtA=" /> <meta name="google-site-verification" content="YhTVK69hW94ZXUtc2zSLPxTkZKbZIn0zK67mz5WQB-E" /> <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-83791-1"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-83791-1', { 'anonymize_ip': true }); </script> </head> <body> <div id="dokuwiki__site"><div id="dokuwiki__top" class="site dokuwiki mode_show tpl_dokuwiki showSidebar hasSidebar"> <!-- ********** HEADER ********** --> <header id="dokuwiki__header"><div class="pad group"> <div class="headings group"> <ul class="a11y skip"> <li><a href="#dokuwiki__content">Aller au contenu</a></li> </ul> <h1 class="logo"><a href="/start" accesskey="h" title="Accueil [h]"><img src="/lib/tpl/dokuwiki/images/logo.png" width="64" height="64" alt="" /><span>DokuWiki</span></a></h1> <p class="claim">It's better when it's simple</p> </div> <div class="tools group"> <!-- USER TOOLS --> <div id="dokuwiki__usertools"> <h3 class="a11y">Outils pour utilisateurs</h3> <ul> <li class="action login"><a href="/fr:devel:events?do=login&sectok=" title="S'identifier" rel="nofollow"><span>S'identifier</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M10 17.25V14H3v-4h7V6.75L15.25 12 10 17.25M8 2h9a2 2 0 0 1 2 2v16a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2v-4h2v4h9V4H8v4H6V4a2 2 0 0 1 2-2z"/></svg></a></li> </ul> </div> <!-- SITE TOOLS --> <div id="dokuwiki__sitetools"> <h3 class="a11y">Outils du site</h3> <form action="/start" method="get" role="search" class="search doku_form" id="dw__search" accept-charset="utf-8"><input type="hidden" name="do" value="search" /><input type="hidden" name="id" value="fr:devel:events" /><div class="no"><input name="q" type="text" class="edit" title="[F]" accesskey="f" placeholder="Rechercher" autocomplete="on" id="qsearch__in" value="" /><button value="1" type="submit" title="Rechercher">Rechercher</button><div id="qsearch__out" class="ajax_qsearch JSpopup"></div></div></form> <div class="mobileTools"> <form action="/doku.php" method="get" accept-charset="utf-8"><div class="no"><input type="hidden" name="id" value="fr:devel:events" /><select name="do" class="edit quickselect" title="Outils"><option value="">Outils</option><optgroup label="Outils de la page"><option value="edit">Modifier cette page</option><option value="revisions">Anciennes révisions</option><option value="backlink">Liens de retour</option></optgroup><optgroup label="Outils du site"><option value="recent">Derniers changements</option><option value="media">Gestionnaire Multimédia</option><option value="index">Plan du site</option></optgroup><optgroup label="Outils pour utilisateurs"><option value="login">S'identifier</option></optgroup></select><button type="submit">></button></div></form> </div> <ul> <li class="action recent"><a href="/fr:devel:events?do=recent" title="Derniers changements [r]" rel="nofollow" accesskey="r">Derniers changements</a></li><li class="action media"><a href="/fr:devel:events?do=media&ns=fr%3Adevel" title="Gestionnaire Multimédia" rel="nofollow">Gestionnaire Multimédia</a></li><li class="action index"><a href="/fr:devel:events?do=index" title="Plan du site [x]" rel="nofollow" accesskey="x">Plan du site</a></li> </ul> </div> </div> <!-- BREADCRUMBS --> <div class="breadcrumbs"> <div class="trace"><span class="bchead">Piste :</span> <span class="bcsep">•</span> <span class="curid"><bdi><a href="/fr:devel:events" class="breadcrumbs" title="fr:devel:events">events</a></bdi></span></div> </div> <hr class="a11y" /> </div></header><!-- /header --> <div class="wrapper group"> <!-- ********** ASIDE ********** --> <nav id="dokuwiki__aside" aria-label="Panneau latéral"><div class="pad aside include group"> <h3 class="toggle">Panneau latéral</h3> <div class="content"><div class="group"> <div class="notify">Cette traduction est plus ancienne que <a href="/devel:events" class="wikilink1">la page originale</a> et est peut-être dépassée. Voir ce qui a <a href="/devel:events?do=diff&rev=1392685011" class="wikilink1">changé</a>.</div><div class="plugin_translation is-dropdown"><span class="title">Traductions de cette page<sup><a href="/localization" class="wikilink1" title="localization" data-wiki-id="localization">?</a></sup>: </span><ul><li class="a"><a class="wikilink1" title="English" href="/devel:events">English (en)</a></li><li class="a"><a class="wikilink2" title="|العربية" href="/ar:devel:events">|العربية (ar)</a></li><li class="a"><a class="wikilink2" title="Català" href="/ca:devel:events">Català (ca)</a></li><li class="a"><a class="wikilink2" title="Česky" href="/cs:devel:events">Česky (cs)</a></li><li class="a"><a class="wikilink2" title="Dansk" href="/da:devel:events">Dansk (da)</a></li><li class="a"><a class="wikilink2" title="Deutsch" href="/de:devel:events">Deutsch (de)</a></li><li class="a"><a class="wikilink1" title="Ελληνικά" href="/el:devel:events">Ελληνικά (el)</a></li><li class="a"><a class="wikilink2" title="Esperanto" href="/eo:devel:events">Esperanto (eo)</a></li><li class="a"><a class="wikilink2" title="Español" href="/es:devel:events">Español (es)</a></li><li class="a"><a class="wikilink2" title="فارسی" href="/fa:devel:events">فارسی (fa)</a></li><li class="span"><span class="wikilink1" title="Français">Français (fr)</span></li><li class="a"><a class="wikilink2" title="עברית" href="/he:devel:events">עברית (he)</a></li><li class="a"><a class="wikilink2" title="Magyar" href="/hu:devel:events">Magyar (hu)</a></li><li class="a"><a class="wikilink2" title="Italiano" href="/it:devel:events">Italiano (it)</a></li><li class="a"><a class="wikilink2" title="日本語" href="/ja:devel:events">日本語 (ja)</a></li><li class="a"><a class="wikilink2" title="한국어" href="/ko:devel:events">한국어 (ko)</a></li><li class="a"><a class="wikilink2" title="Lietuvių Kalba" href="/lt:devel:events">Lietuvių Kalba (lt)</a></li><li class="a"><a class="wikilink2" title="Nederlands" href="/nl:devel:events">Nederlands (nl)</a></li><li class="a"><a class="wikilink2" title="Norsk" href="/no:devel:events">Norsk (no)</a></li><li class="a"><a class="wikilink2" title="Polski" href="/pl:devel:events">Polski (pl)</a></li><li class="a"><a class="wikilink2" title="Português" href="/pt-br:devel:events">Português (pt-br)</a></li><li class="a"><a class="wikilink2" title="Română" href="/ro:devel:events">Română (ro)</a></li><li class="a"><a class="wikilink1" title="Русский" href="/ru:devel:events">Русский (ru)</a></li><li class="a"><a class="wikilink2" title="Српски Језик" href="/sr:devel:events">Српски Језик (sr)</a></li><li class="a"><a class="wikilink2" title="Svenska" href="/sv:devel:events">Svenska (sv)</a></li><li class="a"><a class="wikilink2" title="ไทย" href="/th:devel:events">ไทย (th)</a></li><li class="a"><a class="wikilink2" title="Українська" href="/uk:devel:events">Українська (uk)</a></li><li class="a"><a class="wikilink2" title="中文" href="/zh:devel:events">中文 (zh)</a></li><li class="a"><a class="wikilink2" title="繁體中文" href="/zh-tw:devel:events">繁體中文 (zh-tw)</a></li></ul></div> <p> <strong>Découvrir DokuWiki</strong> </p> <ul> <li class="level1"><div class="li"> <a href="/fr:features" class="wikilink1" title="fr:features" data-wiki-id="fr:features">Fonctionnalités</a> & <a href="/fr:blogroll" class="wikilink1" title="fr:blogroll" data-wiki-id="fr:blogroll">avis</a> </div> </li> <li class="level1"><div class="li"> <a href="/fr:install" class="wikilink1" title="fr:install" data-wiki-id="fr:install">Guide d'installation</a></div> </li> <li class="level1"><div class="li"> <a href="/fr:manual" class="wikilink1" title="fr:manual" data-wiki-id="fr:manual">Manuel utilisateur</a> & <a href="/fr:wiki:syntax" class="wikilink1" title="fr:wiki:syntax" data-wiki-id="fr:wiki:syntax">syntaxe</a></div> </li> <li class="level1"><div class="li"> <a href="/fr:changes" class="wikilink1" title="fr:changes" data-wiki-id="fr:changes">Notes de version</a></div> </li> <li class="level1"><div class="li"> <a href="/fr:faq" class="wikilink1" title="fr:faq" data-wiki-id="fr:faq">FAQ</a></div> </li> </ul> <p> <strong>Options avancées</strong> </p> <ul> <li class="level1"><div class="li"> <a href="/fr:extensions" class="wikilink1" title="fr:extensions" data-wiki-id="fr:extensions">Extensions</a></div> </li> <li class="level1"><div class="li"> <a href="/fr:development" class="wikilink1" title="fr:development" data-wiki-id="fr:development">Manuel du développeur</a></div> </li> </ul> <p> <strong>Pour les entreprises</strong> </p> <ul> <li class="level1"><div class="li"> <a href="/fr:faq:support" class="wikilink1" title="fr:faq:support" data-wiki-id="fr:faq:support">Assistance</a></div> </li> <li class="level1"><div class="li"> <a href="/fr:donate" class="wikilink1" title="fr:donate" data-wiki-id="fr:donate">Dons</a></div> </li> </ul> <p> <strong>Notre Communautée</strong> </p> <ul> <li class="level1"><div class="li"> <a href="/fr:teams:getting_involved" class="wikilink1" title="fr:teams:getting_involved" data-wiki-id="fr:teams:getting_involved">S'investir</a></div> </li> <li class="level1"><div class="li"> <a href="/fr:dokuinstall" class="wikilink1" title="fr:dokuinstall" data-wiki-id="fr:dokuinstall">Utilisateurs</a></div> </li> <li class="level1"><div class="li"> <a href="http://forum.dokuwiki.org" class="urlextern" title="http://forum.dokuwiki.org">Forum utilisateur</a></div> </li> <li class="level1"><div class="li"> <a href="https://t.me/dokuwiki_fr" class="urlextern" title="https://t.me/dokuwiki_fr">Canal Telegram</a></div> </li> <li class="level1"><div class="li"> <a href="/fr:newsletter" class="wikilink1" title="fr:newsletter" data-wiki-id="fr:newsletter">Lettre d'information</a></div> </li> <li class="level1"><div class="li"> <a href="/fr:mailinglist" class="wikilink1" title="fr:mailinglist" data-wiki-id="fr:mailinglist">Liste de diffusion des développeurs</a></div> </li> </ul> <hr /> <p> Suivez-nous sur <a href="http://www.facebook.com/pages/DokuWiki/52877633616" class="urlextern" title="http://www.facebook.com/pages/DokuWiki/52877633616">Facebook</a>, <a href="http://twitter.com/dokuwiki" class="urlextern" title="http://twitter.com/dokuwiki">Twitter</a> et les autres <a href="/fr:social" class="wikilink1" title="fr:social" data-wiki-id="fr:social">résaux sociaux</a>. </p> <p> <a href="/fr:privacy" class="wikilink1" title="fr:privacy" data-wiki-id="fr:privacy">Notre politique de confidentialité</a> </p> </div></div> </div></nav><!-- /aside --> <!-- ********** CONTENT ********** --> <main id="dokuwiki__content"><div class="pad group"> <div class="pageId"><span>fr:devel:events</span></div> <div class="page group"> <!-- wikipage start --> <!-- TOC START --> <div id="dw__toc" class="dw__toc"> <h3 class="toggle">Table des matières</h3> <div> <ul class="toc"> <li class="level1"><div class="li"><a href="#systeme_d_evenement">Système d'évènement</a></div> <ul class="toc"> <li class="level2"><div class="li"><a href="#objet_d_evenement">Objet d'évènement</a></div></li> <li class="level2"><div class="li"><a href="#enregistrement_pour_reception_du_signal_d_un_evenement">Enregistrement pour réception du signal d'un évènement</a></div></li> <li class="level2"><div class="li"><a href="#signalling_an_event">Signalling an Event</a></div></li> <li class="level2"><div class="li"><a href="#examples">Examples</a></div> <ul class="toc"> <li class="level3"><div class="li"><a href="#on_wiki_page_save">On Wiki page save</a></div></li> <li class="level3"><div class="li"><a href="#additional_replacement_do__actions">Additional/Replacement ?do=... actions</a></div></li> <li class="level3"><div class="li"><a href="#on_handler_instruction_list_completion">On handler instruction list completion</a></div></li> </ul> </li> <li class="level2"><div class="li"><a href="#see_also">See also</a></div></li> </ul></li> </ul> </div> </div> <!-- TOC END --> <h1 class="sectionedit1" id="systeme_d_evenement">Système d'évènement</h1> <div class="level1"> <p> <img src="/lib/images/smileys/fixme.svg" class="icon smiley" alt="FIXME" /> <strong>Traduction en cours</strong> </p> <p> Le système d'évènement permet une gestion personnalisée en plus ou à la place du fonctionnement standard de n'importe quel partie du moteur Dokuwiki qui signale son action par ce système d'évènement. Les gestionnaires personnalisés <code>handlers</code>, aussi appelés “hooks”, peuvent être utilisés dans n'importe quel plugin ou script de template (ou même dans Dokuwiki lui-même). Les <a href="/devel:action_plugins" class="wikilink1" title="devel:action_plugins" data-wiki-id="devel:action_plugins">plugins d'Action</a> sont spécifiquement prévus pour traiter les événements. Ils sont assurés d'être chargés au début de l’exécution et ont ainsi la possibilité de s'enregistrer avant qu'aucun événement ne soit généré. Other parts of DokuWiki may not be executed immediately or at all for any given page and execution pathway. </p> <p> Il est également permis à du contenu personnalisé de Dokuwiki de créé et généré un signal d'évènement le concernant. </p> <p> Le système d'évènement est composé de trois parties </p> <ul> <li class="level1"><div class="li"> L'<a href="#objet_d_evenement" title="fr:devel:events ↵" class="wikilink1">Objet d'évènement</a>.</div> </li> <li class="level1"><div class="li"> the main event handler or controller. This is a DokuWiki global, <code>$EVENT_HANDLER</code>. Les scripts qui souhaitent recevoir le signal d'un évènement doivent enregistrer leur intéret pour ce dernier. Lorsqu'un événement envoi son signal, les hooks (ou gestionnaires d'évènements) enregistrés sont exécutés les uns après les autres et reçoivent en paramètre l’évènement concerné. </div> </li> <li class="level1"><div class="li"> individual event handlers or hooks. These are functions that wish to receive a particular event. The <a href="/devel:action_plugins" class="wikilink1" title="devel:action_plugins" data-wiki-id="devel:action_plugins">Action Plugin</a> is a vehicle specifically for these functions, however they can also be part of templates, plugins of other types or the main DokuWiki scripts.</div> </li> </ul> <p> Detailed information describing existing events and when they occur is provided in the <a href="/fr:devel:events_list" class="wikilink2" title="fr:devel:events_list" rel="nofollow" data-wiki-id="fr:devel:events_list">events list</a>. </p> </div> <div class="secedit editbutton_section editbutton_1"><form class="button btn_secedit" method="post" action="/fr:devel:events"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1392996109" /><input type="hidden" name="summary" value="[Système d'évènement] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="systeme_d_evenement" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="1-1841" /><button type="submit" title="Système d'évènement">Modifier</button></div></form></div> <h2 class="sectionedit2" id="objet_d_evenement">Objet d'évènement</h2> <div class="level2"> <p> <strong>Nom de la classe : <code><a href="https://codesearch.dokuwiki.org/search?project=dokuwiki&defs=Event&path=inc%20Extension%20Event" class="interwiki plugin_xref" title="view definition for Doku_Event">Doku_Event</a></code></strong> </p> <p> Un Objet d'évènement est constitué de : </p> <ul> <li class="level1 node"><div class="li"> Propriétés <strong>publiques</strong> </div> <ul> <li class="level2"><div class="li"> <code>name</code>, (lecture seule) hooks must use this to register to process a particular event</div> </li> <li class="level2"><div class="li"> <code>data</code>, (lecture/écriture) data pertaining to the event, hooks have an opportunity to inspect and modify this</div> </li> <li class="level2"><div class="li"> <code>result</code>, (lecture/écriture) available after the default action has taken place to hooks that have registered for the <code>after</code> advise.</div> </li> <li class="level2"><div class="li"> <code>canPreventDefault</code>, (lecture seule) informs a hook whether or not the default action can be prevented</div> </li> </ul> </li> </ul> <ul> <li class="level1 node"><div class="li"> Propriétés <strong>privées</strong> </div> <ul> <li class="level2"><div class="li"> <code>_default</code> (booléen, initiée à <code>true</code>), whether or not the default action associated with the event should be carried out. Interact with this property via the <code>preventDefault()</code> method.</div> </li> <li class="level2"><div class="li"> <code>_continue</code> (booléen, initiée à <code>true</code>), whether or not to continue sending the event to registered hooks that have yet to receive it. Interact with this property via the <code>stopPropagation()</code> method.</div> </li> </ul> </li> </ul> <ul> <li class="level1 node"><div class="li"> Méthodes <strong>publiques</strong> </div> <ul> <li class="level2"><div class="li"> <code><a href="https://codesearch.dokuwiki.org/search?project=dokuwiki&defs=trigger&path=" class="interwiki plugin_xref" title="search definitions for trigger()">trigger()</a></code> - automated signalling of events. This method accepts two optional parameters, the default action (callback), and whether or not it may be prevented (bool) and returns the results of the event. It looks after the whole event process, signalling the “_BEFORE” advise, triggering the default action and signalling the “_AFTER” advise.</div> </li> <li class="level2"><div class="li"> <code><a href="https://codesearch.dokuwiki.org/search?project=dokuwiki&defs=stopPropagation&path=" class="interwiki plugin_xref" title="view definition for stopPropagation()">stopPropagation()</a></code> - stop any further processing of the event by event handlers this function does not prevent the default action taking place</div> </li> <li class="level2"><div class="li"> <code><a href="https://codesearch.dokuwiki.org/search?project=dokuwiki&defs=preventDefault&path=" class="interwiki plugin_xref" title="search definitions for preventDefault()">preventDefault()</a></code> - prevent the default action taking place</div> </li> </ul> </li> <li class="level1 node"><div class="li"> <code>advise_*()</code> methods - for use when the signalling script wishes to handle the complete event signalling process (perhaps when functionalising a default action is not appropriate).</div> <ul> <li class="level2"><div class="li"> <code><a href="https://codesearch.dokuwiki.org/search?project=dokuwiki&defs=advise_before&path=" class="interwiki plugin_xref" title="view definition for advise_before()">advise_before()</a></code> - accepts one parameter, a boolean indicating whether the default action can be prevented, issues the “_BEFORE” signal.</div> </li> <li class="level2"><div class="li"> <code><a href="https://codesearch.dokuwiki.org/search?project=dokuwiki&defs=advise_after&path=" class="interwiki plugin_xref" title="view definition for advise_after()">advise_after()</a></code> - issues the “_AFTER” signal.</div> </li> </ul> </li> </ul> </div> <div class="secedit editbutton_section editbutton_2"><form class="button btn_secedit" method="post" action="/fr:devel:events"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1392996109" /><input type="hidden" name="summary" value="[Objet d'évènement] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="objet_d_evenement" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="1842-3957" /><button type="submit" title="Objet d'évènement">Modifier</button></div></form></div> <h2 class="sectionedit3" id="enregistrement_pour_reception_du_signal_d_un_evenement">Enregistrement pour réception du signal d'un évènement</h2> <div class="level2"> <p> To register a hook to receive an event, call the <code>register_hook()</code> method of the <code>$EVENT_HANDLER</code>. Action plugins can do this using the <code>$controller</code> parameter from within their own <code>register()</code> method. Other parts of DokuWiki should ensure they are either in global scope or declare $EVENT_HANDLER as a global. e.g. </p> <pre class="code php"><span class="kw2">global</span> <span class="re0">$EVENT_HANDLER</span><span class="sy0">;</span> <span class="re0">$EVENT_HANDLER</span><span class="sy0">-></span><span class="me1">register_hook</span><span class="br0">(</span> <span class="sy0">...</span> <span class="br0">)</span></pre> <p> For up-to-date details of the <a href="https://codesearch.dokuwiki.org/search?project=dokuwiki&defs=register_hook&path=" class="interwiki plugin_xref" title="view definition for register_hook()">register_hook()</a> function and its parameters refer to its declaration in <code><a href="https://codesearch.dokuwiki.org/search?project=dokuwiki&defs=&path=inc%20events.php" class="interwiki plugin_xref plugin_xref_err" title="unknown definition">inc/events.php</a></code>. </p> <p> Use <code>register_hook($event, $advise, $obj, $method, $param=null, $seq=0)</code> with the arguments: </p> <ul> <li class="level1"><div class="li"> <code>$event</code> <em>string</em>, name used by the event</div> </li> <li class="level1"><div class="li"> <code>$advise</code> <em>string</em>, <code>BEFORE</code> or <code>AFTER</code>, the advise the hook wished to receive</div> </li> <li class="level1"><div class="li"> <code>$obj</code> <em>object</em>, object in whose scope method is to be executed. If <code>null</code> the method is assumed to be a globally available function</div> </li> <li class="level1"><div class="li"> <code>$method</code> <em>function</em>, event handler function. More info at the <a href="/fr:devel:event_handlers" class="wikilink2" title="fr:devel:event_handlers" rel="nofollow" data-wiki-id="fr:devel:event_handlers">Event handlers</a> page.</div> </li> <li class="level1"><div class="li"> <code>$param</code> <em>mixed</em> (optional), the data to be passed to the event handler. Default null.</div> </li> <li class="level1"><div class="li"> <code>$seq</code> <em>int</em> (optional), [<a href="/fr:devel:develonly" class="wikilink1" title="fr:devel:develonly" data-wiki-id="fr:devel:develonly">develonly</a>] sequence number used to control the order in which hooks are executed. Hooks are executed in ascending $seq order. If two or more hooks have the same $seq value, their order (relative to each other) is undefined. Hooks can use <code>-PHP_INT_MAX</code> or <code><a href="http://www.php.net/manual/en/reserved.constants.php#constant.php-int-max" class="urlextern" title="http://www.php.net/manual/en/reserved.constants.php#constant.php-int-max">PHP_INT_MAX</a></code>, in an attempt to be first or last. Be aware that these values provide no guarantee of being first/last as more than one plugin can use them.</div> </li> </ul> </div> <div class="secedit editbutton_section editbutton_3"><form class="button btn_secedit" method="post" action="/fr:devel:events"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1392996109" /><input type="hidden" name="summary" value="[Enregistrement pour réception du signal d'un évènement] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="enregistrement_pour_reception_du_signal_d_un_evenement" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="3958-5689" /><button type="submit" title="Enregistrement pour réception du signal d'un évènement">Modifier</button></div></form></div> <h2 class="sectionedit4" id="signalling_an_event">Signalling an Event</h2> <div class="level2"> <p> An event can be signalled in three ways. </p> <ol> <li class="level1 node"><div class="li"> The simplest is to use the function wrapper <code><a href="https://codesearch.dokuwiki.org/search?project=dokuwiki&defs=trigger_event&path=" class="interwiki plugin_xref" title="view definition for trigger_event()">trigger_event()</a></code>. This function takes all the parameters necessary to create an event object and trigger it. <br/> Use <code>trigger_event($name, &$data, $action=null, $canPreventDefault=true)</code> with the arguments: </div> <ul> <li class="level2"><div class="li"> <code>$name</code> <em>string</em>, name for the event</div> </li> <li class="level2"><div class="li"> <code>$data</code> <em>mixed</em>, event data</div> </li> <li class="level2"><div class="li"> <code>$action</code> <em>callback</em> (optional), default action given as php callback function. Default null.</div> </li> <li class="level2"><div class="li"> <code>$canPreventDefault</code> <em>boolean</em> (optional), can hooks prevent the default action. Default true.</div> </li> <li class="level2"><div class="li"> return <em>mixed</em>, the event result value after all event processing is complete. By default this is the return value of the default action. However it can be set or modified by event handlers hooks as it is stored in <code>result</code> attribute of the <code><a href="https://codesearch.dokuwiki.org/search?project=dokuwiki&defs=Event&path=inc%20Extension%20Event" class="interwiki plugin_xref" title="view definition for Doku_Event">Doku_Event</a></code> object, where the Doku_Event is available in handlers. <pre class="code php">trigger_event<span class="br0">(</span><span class="sy0"><</span>EVENT_NAME<span class="sy0">>,</span> <span class="sy0"><</span>event data<span class="sy0">>,</span> <span class="sy0"><</span>action callback<span class="sy0">>,</span> <span class="sy0"><</span>can prevent default<span class="sy0">></span><span class="br0">)</span> </pre> </div> </li> </ul> </li> <li class="level1"><div class="li"> using the <a href="https://codesearch.dokuwiki.org/search?project=dokuwiki&defs=trigger&path=" class="interwiki plugin_xref" title="search definitions for trigger()">trigger()</a> method. This isn't recommended as it is better to use the <code>trigger_event()</code> function wrapper described above. <pre class="code php"><span class="re0">$evt</span> <span class="sy0">=</span> <span class="kw2">new</span> Doku_Event<span class="br0">(</span><span class="sy0"><</span>EVENT_NAME<span class="sy0">>,<</span>event_data<span class="sy0">></span><span class="br0">)</span><span class="sy0">;</span> <span class="re0">$evt</span><span class="sy0">-></span><span class="me1">trigger</span><span class="br0">(</span><span class="sy0"><</span><span class="kw1">default</span> action<span class="sy0">>,<</span>can prevent default<span class="sy0">></span><span class="br0">)</span><span class="sy0">;</span> <a href="http://www.php.net/unset"><span class="kw3">unset</span></a><span class="br0">(</span><span class="re0">$evt</span><span class="br0">)</span><span class="sy0">;</span></pre> </div> </li> <li class="level1"><div class="li"> managing the whole event signalling process with <a href="https://codesearch.dokuwiki.org/search?project=dokuwiki&defs=advise_before&path=" class="interwiki plugin_xref" title="view definition for advise_before()">advise_before($enablePreventDefault = true)</a> and <a href="https://codesearch.dokuwiki.org/search?project=dokuwiki&defs=advise_after&path=" class="interwiki plugin_xref" title="view definition for advise_after()">advise_after()</a> on the <a href="https://codesearch.dokuwiki.org/search?project=dokuwiki&defs=Event&path=inc%20Extension%20Event" class="interwiki plugin_xref" title="view definition for Doku_Event">Doku_Event</a> object. Use this method when there is a default action but it not possible to package it as a PHP callback function. <pre class="code php"><span class="re0">$evt</span> <span class="sy0">=</span> <span class="kw2">new</span> Doku_Event<span class="br0">(</span><span class="sy0"><</span>EVENT_NAME<span class="sy0">>,</span> <span class="sy0"><</span>event data<span class="sy0">></span><span class="br0">)</span><span class="sy0">;</span> <span class="kw1">if</span> <span class="br0">(</span><span class="re0">$evt</span><span class="sy0">-></span><span class="me1">advise_before</span><span class="br0">(</span><span class="sy0"><</span>can prevent default<span class="sy0">></span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span> <span class="co1">// default action code block</span> <span class="br0">}</span> <span class="re0">$evt</span><span class="sy0">-></span><span class="me1">advise_after</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> <a href="http://www.php.net/unset"><span class="kw3">unset</span></a><span class="br0">(</span><span class="re0">$evt</span><span class="br0">)</span><span class="sy0">;</span></pre> </div> </li> </ol> </div> <div class="secedit editbutton_section editbutton_4"><form class="button btn_secedit" method="post" action="/fr:devel:events"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1392996109" /><input type="hidden" name="summary" value="[Signalling an Event] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="signalling_an_event" /><input type="hidden" name="codeblockOffset" value="1" /><input type="hidden" name="range" value="5690-7569" /><button type="submit" title="Signalling an Event">Modifier</button></div></form></div> <h2 class="sectionedit5" id="examples">Examples</h2> <div class="level2"> <p> (These are examples only and may not exist in DokuWiki.) </p> </div> <div class="secedit editbutton_section editbutton_5"><form class="button btn_secedit" method="post" action="/fr:devel:events"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1392996109" /><input type="hidden" name="summary" value="[Examples] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="examples" /><input type="hidden" name="codeblockOffset" value="4" /><input type="hidden" name="range" value="7570-7649" /><button type="submit" title="Examples">Modifier</button></div></form></div> <h3 class="sectionedit6" id="on_wiki_page_save">On Wiki page save</h3> <div class="level3"> <pre class="code php"><span class="co1">// event: 'IO_WIKIPAGE_SAVE'</span> <span class="co1">// data: array(file name, the raw wiki page)</span> <span class="co1">// action: save the raw wiki page to file name</span> <span class="co1">// return: bool, page saved</span> <span class="re0">$data</span> <span class="sy0">=</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">(</span><span class="re0">$id</span><span class="sy0">,</span><span class="re0">$wikitext</span><span class="br0">)</span><span class="sy0">;</span> <span class="re0">$ok</span> <span class="sy0">=</span> trigger_event<span class="br0">(</span><span class="st_h">'SAVE_WIKIPAGE'</span><span class="sy0">,</span> <span class="re0">$data</span><span class="sy0">,</span> io_savewikipage<span class="br0">)</span><span class="sy0">;</span></pre> <p> Possible handlers, indexers, translators. </p> </div> <div class="secedit editbutton_section editbutton_6"><form class="button btn_secedit" method="post" action="/fr:devel:events"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1392996109" /><input type="hidden" name="summary" value="[On Wiki page save] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="on_wiki_page_save" /><input type="hidden" name="codeblockOffset" value="4" /><input type="hidden" name="range" value="7650-7986" /><button type="submit" title="On Wiki page save">Modifier</button></div></form></div> <h3 class="sectionedit7" id="additional_replacement_do__actions">Additional/Replacement ?do=... actions</h3> <div class="level3"> <pre class="code php"><span class="co1">// events: 'ACTION_ACT_PREPROCESS' & 'TPL_ACT_UNKNOWN'</span> <span class="co1">// data: $ACT (value of the ''do'' query string variable)</span> <span class="co1">// action: none, handled by signalling script</span> <span class="co1">// in ''inc/actions.php act_dispatch()''</span> <span class="re0">$evt</span> <span class="sy0">=</span> <span class="kw2">new</span> Doku_Event<span class="br0">(</span><span class="st_h">'ACTION_ACT_PREPROCESS'</span><span class="sy0">,</span> <span class="re0">$ACT</span><span class="br0">)</span><span class="sy0">;</span> <span class="kw1">if</span> <span class="br0">(</span><span class="re0">$evt</span><span class="sy0">-></span><span class="me1">advise_before</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span> <span class="coMULTI">/* process $ACT normally */</span> <span class="br0">}</span> <span class="re0">$evt</span><span class="sy0">-></span><span class="me1">advise_after</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> <a href="http://www.php.net/unset"><span class="kw3">unset</span></a><span class="br0">(</span><span class="re0">$evt</span><span class="br0">)</span><span class="sy0">;</span> <span class="co1">// in ''inc/template.php tpl_content()''</span> <span class="kw1">default</span><span class="sy0">:</span> <span class="coMULTI">/* unrecognised $ACT value */</span> <span class="re0">$evt</span> <span class="sy0">=</span> <span class="kw2">new</span> Doku_Event<span class="br0">(</span><span class="st_h">'TPL_ACT_UNKNOWN'</span><span class="sy0">,</span> <span class="re0">$ACT</span><span class="br0">)</span><span class="sy0">;</span> <span class="kw1">if</span> <span class="br0">(</span><span class="re0">$evt</span><span class="sy0">-></span><span class="me1">advise_before</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span> <span class="kw1">print</span> <span class="st0">"unknown action"</span><span class="sy0">;</span> <span class="br0">}</span> <span class="re0">$evt</span><span class="sy0">-></span><span class="me1">advise_after</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> <a href="http://www.php.net/unset"><span class="kw3">unset</span></a><span class="br0">(</span><span class="re0">$evt</span><span class="br0">)</span><span class="sy0">;</span></pre> <p> Possible handlers, customer form processing, additional <code>do</code> commands from template UI. </p> </div> <div class="secedit editbutton_section editbutton_7"><form class="button btn_secedit" method="post" action="/fr:devel:events"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1392996109" /><input type="hidden" name="summary" value="[Additional/Replacement ?do=... actions] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="additional_replacement_do__actions" /><input type="hidden" name="codeblockOffset" value="5" /><input type="hidden" name="range" value="7987-8735" /><button type="submit" title="Additional/Replacement ?do=... actions">Modifier</button></div></form></div> <h3 class="sectionedit8" id="on_handler_instruction_list_completion">On handler instruction list completion</h3> <div class="level3"> <pre class="code php"> <span class="co1">// event: ''PARSER_HANDLER_DONE''</span> <span class="co1">// data: the handler, including the completed instruction list</span> <span class="co1">// action: none</span> <span class="co1">// in ''inc/parser/handler.php _finalize()</span> trigger_event<span class="br0">(</span><span class="st_h">'PARSER_HANDLER_DONE'</span><span class="sy0">,</span><span class="re0">$this</span><span class="br0">)</span><span class="sy0">;</span></pre> <p> possible handlers, footnote replacement plugins, enhanced <abbr title="Table of Contents">TOC</abbr> handlers </p> </div> <div class="secedit editbutton_section editbutton_8"><form class="button btn_secedit" method="post" action="/fr:devel:events"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1392996109" /><input type="hidden" name="summary" value="[On handler instruction list completion] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="on_handler_instruction_list_completion" /><input type="hidden" name="codeblockOffset" value="6" /><input type="hidden" name="range" value="8736-9092" /><button type="submit" title="On handler instruction list completion">Modifier</button></div></form></div> <h2 class="sectionedit9" id="see_also">See also</h2> <div class="level2"> <ul> <li class="level1"><div class="li"> <a href="/fr:devel:events_list" class="wikilink2" title="fr:devel:events_list" rel="nofollow" data-wiki-id="fr:devel:events_list">Events List</a> with existing events.</div> </li> <li class="level1"><div class="li"> Use <a href="/devel:action_plugins" class="wikilink1" title="devel:action_plugins" data-wiki-id="devel:action_plugins">Action plugins</a> to register handlers on events.</div> </li> <li class="level1"><div class="li"> More about <a href="/fr:devel:event_handlers" class="wikilink2" title="fr:devel:event_handlers" rel="nofollow" data-wiki-id="fr:devel:event_handlers">Event handlers</a></div> </li> <li class="level1"><div class="li"> Examples of <a href="/fr:devel:event_handlers_code" class="wikilink2" title="fr:devel:event_handlers_code" rel="nofollow" data-wiki-id="fr:devel:event_handlers_code">event handlers code</a></div> </li> </ul> </div> <div class="secedit editbutton_section editbutton_9"><form class="button btn_secedit" method="post" action="/fr:devel:events"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1392996109" /><input type="hidden" name="summary" value="[See also] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="see_also" /><input type="hidden" name="codeblockOffset" value="7" /><input type="hidden" name="range" value="9093-" /><button type="submit" title="See also">Modifier</button></div></form></div> <!-- wikipage stop --> </div> <div class="docInfo"><bdi>fr/devel/events.txt</bdi> · Dernière modification : <time datetime="2014-02-21T16:21:49+0100">2014-02-21 16:21</time> de <bdi>JohanGuilbaud</bdi></div> <hr class="a11y" /> </div></main><!-- /content --> <!-- PAGE ACTIONS --> <nav id="dokuwiki__pagetools" aria-labelledby="dokuwiki__pagetools__heading"> <h3 class="a11y" id="dokuwiki__pagetools__heading">Outils de la page</h3> <div class="tools"> <ul> <li class="edit"><a href="/fr:devel:events?do=edit" title="Modifier cette page [e]" rel="nofollow" accesskey="e"><span>Modifier cette page</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z"/></svg></a></li><li class="revs"><a href="/fr:devel:events?do=revisions" title="Anciennes révisions [o]" rel="nofollow" accesskey="o"><span>Anciennes révisions</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M11 7v5.11l4.71 2.79.79-1.28-4-2.37V7m0-5C8.97 2 5.91 3.92 4.27 6.77L2 4.5V11h6.5L5.75 8.25C6.96 5.73 9.5 4 12.5 4a7.5 7.5 0 0 1 7.5 7.5 7.5 7.5 0 0 1-7.5 7.5c-3.27 0-6.03-2.09-7.06-5h-2.1c1.1 4.03 4.77 7 9.16 7 5.24 0 9.5-4.25 9.5-9.5A9.5 9.5 0 0 0 12.5 2z"/></svg></a></li><li class="backlink"><a href="/fr:devel:events?do=backlink" title="Liens de retour" rel="nofollow"><span>Liens de retour</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M10.59 13.41c.41.39.41 1.03 0 1.42-.39.39-1.03.39-1.42 0a5.003 5.003 0 0 1 0-7.07l3.54-3.54a5.003 5.003 0 0 1 7.07 0 5.003 5.003 0 0 1 0 7.07l-1.49 1.49c.01-.82-.12-1.64-.4-2.42l.47-.48a2.982 2.982 0 0 0 0-4.24 2.982 2.982 0 0 0-4.24 0l-3.53 3.53a2.982 2.982 0 0 0 0 4.24m2.82-4.24c.39-.39 1.03-.39 1.42 0a5.003 5.003 0 0 1 0 7.07l-3.54 3.54a5.003 5.003 0 0 1-7.07 0 5.003 5.003 0 0 1 0-7.07l1.49-1.49c-.01.82.12 1.64.4 2.43l-.47.47a2.982 2.982 0 0 0 0 4.24 2.982 2.982 0 0 0 4.24 0l3.53-3.53a2.982 2.982 0 0 0 0-4.24.973.973 0 0 1 0-1.42z"/></svg></a></li><li class="top"><a href="#dokuwiki__top" title="Haut de page [t]" rel="nofollow" accesskey="t"><span>Haut de page</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"/></svg></a></li> </ul> </div> </nav> </div><!-- /wrapper --> <!-- ********** FOOTER ********** --> <footer id="dokuwiki__footer"><div class="pad"> <div class="license">Sauf mention contraire, le contenu de ce wiki est placé sous les termes de la licence suivante : <bdi><a href="https://creativecommons.org/licenses/by-sa/4.0/deed.en" rel="license" class="urlextern">CC Attribution-Share Alike 4.0 International</a></bdi></div> <div class="buttons"> <a href="https://creativecommons.org/licenses/by-sa/4.0/deed.en" rel="license"><img src="/lib/images/license/button/cc-by-sa.png" alt="CC Attribution-Share Alike 4.0 International" /></a> <a href="https://www.dokuwiki.org/donate" title="Donate" ><img src="/lib/tpl/dokuwiki/images/button-donate.gif" width="80" height="15" alt="Donate" /></a> <a href="https://php.net" title="Powered by PHP" ><img src="/lib/tpl/dokuwiki/images/button-php.gif" width="80" height="15" alt="Powered by PHP" /></a> <a href="//validator.w3.org/check/referer" title="Valid HTML5" ><img src="/lib/tpl/dokuwiki/images/button-html5.png" width="80" height="15" alt="Valid HTML5" /></a> <a href="//jigsaw.w3.org/css-validator/check/referer?profile=css3" title="Valid CSS" ><img src="/lib/tpl/dokuwiki/images/button-css.png" width="80" height="15" alt="Valid CSS" /></a> <a href="https://dokuwiki.org/" title="Driven by DokuWiki" ><img src="/lib/tpl/dokuwiki/images/button-dw.png" width="80" height="15" alt="Driven by DokuWiki" /></a> </div> <div style="margin-top: 2em; font-size:90%" class="dokuwiki"><div style="float:right"><a href="http://www.splitbrain.org/personal#imprint" style="float:right; text-decoration: none; color:#333">Imprint</a></div></div><!-- Include for DokuWiki site wide top bar --> <style type="text/css"> @media screen { body { padding-top: 30px; } #global__header { position: absolute; top: 0; left: 0; text-align: left; vertical-align: middle; line-height: 1.5; background-color: #333; box-shadow: 0 0 8px rgba(0,0,0,0.5); width: 100%; margin: 0; padding: 5px 20px; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; white-space: nowrap; overflow: hidden; } #global__header h2 { position: absolute; left: -99999em; top: 0; overflow: hidden; display: inline; } #global__header ul, #global__header li { margin: 0; padding: 0; list-style: none; display: inline; line-height: 1.5; } #global__header a { color: #bbb; text-decoration: none; margin-right: 20px; font-size: 14px; font-weight: normal; } #global__header a:hover, #global__header a:active, #global__header a:focus { color: #fff; text-decoration: underline; } #global__header form { float: right; margin: 0 0 0 20px; } #global__header input { background-color: #333; background-image: none; border: 1px solid #bbb; color: #fff; box-shadow: none; border-radius: 2px; margin: 0; line-height: normal; padding: 1px 0 1px 0; height: auto; } #global__header input.button { border: none; color: #bbb; } #global__header input.button:hover, #global__header input.button:active, #global__header input.button:focus { color: #fff; text-decoration: underline; } } /* /@media */ @media only screen and (min-width: 601px) { /* changes specific for www.dokuwiki.org */ #dokuwiki__header { padding-top: 3em; } #dokuwiki__usertools { top: 3em; } /* changes specific for bugs.dokuwiki.org */ div#container div#showtask { top: 40px; } } /* /@media */ @media only screen and (max-width: 600px) { body { padding-top: 0; } #global__header { position: static; white-space: normal; overflow: auto; } #global__header form { float: none; display: block; margin: 0 0 .4em; } } /* /@media */ @media print { #global__header { display: none; } } /* /@media */ </style> <div id="global__header"> <h2>Global DokuWiki Links</h2> <form method="get" action="https://search.dokuwiki.org/" target="_top"> <input type="text" name="q" title="Search all DokuWiki sites at once" class="input" /> <input type="submit" title="Search all DokuWiki sites at once" value="Search" class="button" /> </form> <ul> <li><a href="https://download.dokuwiki.org" title="Download the latest release" target="_top">Download</a></li> <li><a href="https://www.dokuwiki.org" title="Read the DokuWiki documentation" target="_top">Wiki</a></li> <li><a href="https://forum.dokuwiki.org" title="Ask questions in the DokuWiki forum" target="_top">Forum</a></li> <li><a href="https://irc.dokuwiki.org" title="Check IRC chat logs or join the chat" target="_top">IRC</a></li> <li><a href="https://github.com/splitbrain/dokuwiki/issues" title="Report and track bugs" target="_top">Bugs</a></li> <li><a href="https://translate.dokuwiki.org/" title="Help translating the DokuWiki interface" target="_top">Translate</a></li> <li><a href="https://github.com/splitbrain/dokuwiki" title="Access the most recent git commits" target="_top">Git</a></li> <li><a href="https://xref.dokuwiki.org/reference/dokuwiki/" title="Cross-Reference of the DokuWiki source code" target="_top">XRef</a></li> <li><a href="https://codesearch.dokuwiki.org/" title="Search through the sources of DokuWiki, plugins and templates" target="_top">Code Search</a></li> </ul> </div> <!-- end of DokuWiki top bar include --> </div></footer><!-- /footer --> </div></div><!-- /site --> <div class="no"><img src="/lib/exe/taskrunner.php?id=fr%3Adevel%3Aevents&1743446802" width="2" height="1" alt="" /></div> <div id="screen__mode" class="no"></div></body> </html>