Ce petit plugin sur lequel je travaille depuis plusieurs semaines, de manière très épisodique car je n'ai pas le temps, m'a désormais l'air d'etre fonctionnel. Vous avez peut-être remarqué sur mon suivi github, que j'avais déjà eu des commit sur ce petit plugin mais son fonctionnement n'était que parcellaire.
Rappel : un code d'état fonctionnel ?
Principe de fonctionnement
Fonctionnement
- les balises {cef} et {/cef} déterminent l'enseble du système d'affichage de l'ensemble des codes. C'est pour cette raison que je préconise l'utilisation de content templater pour "coller" un modele d'utilisation de mon système dans vos articles
- Tous l:es codes d'états fonctionnels sont affichés les un derriere les autres, dans l'ordre de votre workflow
- L'état fonctionnel dans lequel se trouve votre élément est entouré de "crochets droits" [ et ]
Résultat graphique
J'ai fait très simple et reste ouver à vos personnalisétion du CSS que je vous fournis. Je ne suis pas infographiste est suis particulièrement nul dans le domaine, le résultat est donc très simple. Vous remarquerez que les étatt passés sont en gris, l'état courant en rouge, et les prochaines étapes en bleu pâle à peine visibles. C'est volontaire, charge à vous de styliser votre (mon !) CSS
Personnalisation
cdeetatftl.php
<?php
defined('_JEXEC') or die('Access deny');
class plgContentCdeetatftl extends JPlugin //Concatener à "plg" le nom du groupe (ici Content) puis le nom du plugin ( que l'on trouve ds le XML ligne extension) : plg<Plugin Group><Plugin name>
{
function onContentPrepare($content, $article, $params, $limit){
$document = JFactory::getDocument();
$document->addStyleSheet('plugins/content/cdeetatftl/stylecdeetatftl.css');
$re = '/{cef}(|.*){\/cef}/m';
preg_match_all($re, $article->text, $matches, PREG_SET_ORDER, 0);
$b = explode('|',$matches[0][1]);
$a = '<div class="container-fluid">';
$a .= '<div class="titre">Etapes du projet</div>';
$a .= '<div class="explications">Vous trouverez ici l\'étape d\'avancement du projet. En passant la souris sur la dénomination de l\'étape, vous saurez à quoi elle se réfère</div>';
$a .= '<ul class="list-unstyled multi-steps">';
$pass = 0;//bool
foreach ($b as $ligne)
{
if ((substr($ligne,-1,1)=="]") && (substr($ligne,0,1)=="["))
{
if ($c=count($b)) //pour ne pas afficher le dernier ">"
{
$a .= "<li class=\"is-active\">".substr($ligne,1,-1) ."<span class=\"separateur\" id=\"separateur\"> > </span></li>\r\n";
}
else
{
$a .= "<li class=\"is-active\">".substr($ligne,1,-1) ."</li>\r\n";
}
$pass=1;
}
else
{
if ($pass == 0)
{
if ($c=count($b)) //pour ne pas afficher le dernier ">"
{
$a .= "<li class=\"avant\">".$ligne."<span class=\"separateur\" id=\"separateur-".$ligne."\"> > </span></li>\r\n";
}
else
{
$a .= "<li class=\"avant\">".$ligne."<span class=\"separateur\" id=\"separateur-".$ligne."\"> > </span></li>\r\n";
}
}
else
{
if ($c=count($b)) //pour ne pas afficher le dernier ">"
{
$a .= "<li class=\"apres\">".$ligne."<span class=\"separateur\" id=\"separateur-".$ligne."\"> > </span></li>\r\n";
}
else
{
$a .= "<li class=\"apres\">".$ligne."</li>\r\n";
}
}
}
}
$a .= "</ul>";
$a .= "</div>";
$article->text = preg_replace($re, $a, $article->text);
}
}
?>
cdeetatftl.xml
<?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="Content">
<name>Code d'état fonctionnel</name>
<author>Sebastien LHUILLIER</author>
<creationDate>Janvier 2023</creationDate>
<copyright>Sébastien LHUILLIER</copyright>
<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
<authorEmail>Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.</authorEmail>
<authorUrl>www.sebastien-lhuillier.com</authorUrl>
<version>1.0</version>
<description>Affiche les stats des meilleurs articles</description>
<files>
<filename plugin="cdeetatftl">cdeetatftl.php</filename>
<filename>cdeetatftl.xml</filename>
<filename>style.css</filename>
</files>
<config>
<fields name="params">
<fieldset name="basic">
<field name="separateur" type="text" default="" label="Caractere séparateur" description="" size="1" />
</fieldset>
</fields>
</config>
</extension>
style.css
.multi-steps li {
display: inline;
}
.multi-steps .is-active {
color: red;
font-weight: bolder;
}
.multi-steps .is-active .separateur{
color: black;
font-weight:normal;
}
.multi-steps .avant {
color: gray;
}
.multi-steps .apres {
color: lightblue;
}
.multi-steps #separateur-8{ /*Pour masquer le dernier ">" */
display:none;
}