Le besoin spécifique
Aujourd'hui, nous allons regardeer de plus pès un petit plugin qui, comme à mon habitude, correspond à un besoin professionnel. En effet, dans le cadre de mon intranet (donc aucune possibilité de vol de mon adresse mail dans ce que je vous présente aujourd'hui), j'ai besoin de rajouter dans le composant de Regular labs "Tabs", un lien hypertexte avec un mailto pour que mes utilisateurs puissent m'avertir d'erreurs dans le contenu de l'onglet.
Comme je suis un gros fainéant mais surtout un certain bon gadien de l'intégrité de mes données, j'ai opté pour un plugin. Ainsi, le jour ou d'adresse foctionnelle change (onn'est jamais à l'abris d'un changement de domaine), je n'ai qu'à procéder au changement une seule fois !
Fonctionnement
Une fois le plugin installé, l'adresse mail configuré dans sa partie administration, il n'y a plus rien à faire.
Notons toutefois que je m'appuie dans du commentaire HTML que je stipule systématiquement dans mon code, sur chacun de mes onglet, je comment en HTML le début et la fin de l'onglet. Ca me permet en un clin d'oeil de me répérer dans le code lorsque je rédige un article (je n'utilise pas, dans ce cas précis, d'editeur WYSIWYG, beaucoup trop compliqué à manipuler, du code suffit !)
Le début de chacun de mes onglets débute par <!-- START onglet_**** -->, où **** est une chaine de caractères qui nomme (dans les commentaire HTML toujours), l'onglet dans lequel on se trouve !
Ainsi, un onglet (dans le code) ressemble à
<p>{tab title="This tab is only for visitors" access="Guest"}</p>
<!-- START onglet_XXX -->
<ul>
<li>...</li>
<li>...</li>
<li>...</li>
</ul>
<!-- STOP onglet_XXX -->
Je peux donc m'appuyer sur mes commentaires HTML pour la suite de ce plugin
Le code métier de ce plugin va alors rechercher au moyen de regex, la chaine de caracères <!-- START onglet_xxx --> afin de pouvoir la remplacer. Ce rempalcement INTEGRE de méme code de remplacement afin de retrouver ce commentaire dans le code HTML généré !
La chaine de remplacement
Au moyen de régex et de la commande preg_replace, je recherche et remplace le commentaire que j'ai mis dans chacun des tab (prévoyant notre Seb...)
Ainsi le code de départ suivant :
<!-- START onglet_GTU -->
<ul>
<li>{tip title="[[[tiptitreapropos]]]" content="<span class="fic-auteur">[[[auteur]]].....</li>
</ul>
va conceptuellement devenir
<!-- START onglet_GTU -->
<div class="message-demande-ajout-fichier"><a href="mailto:Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.?subject=Demander l'ajout d un fichier à l article onglet GTU de l article 50">Message a afficher </a></div>
<ul>
<li>{tip title="[[[tiptitreapropos]]]" content="<span class="fic-auteur">[[[auteur]]].....</li>
</ul>
Dans les faits, le code va changer sûrement ailleurs à cause du code lui même utilisé par Régular Lab, mais là, ce n'est plus ma partie :)