Carnet Wiki

Masquer ou ajouter des raccourcis dans le porte-plume

Version 8 — 3 weeks ago jeanmarie

Préalable

Ce tutoriel nécessite de passer par un plugin, il faut donc remplacer modifier prefixe dans les des exemples suivants par avec le préfixe de votre plugin.

Les pipelines

Comme le précise la documentation, il existe 2 pipelines qui permettent de manipuler les boutons d’une barre d’outil existante :

  • porte_plume_barre_charger sert à afficher ou masquer certains boutons
  • porte_plume_barre_pre_charger sert à ajouter des boutons à une barre

Il faudra donc déclarer ces pipelines dans paquet.xml en ajoutant :

<pipeline nom="porte_plume_barre_charger" inclure="prefixe_pipelines.php" />
<pipeline nom="porte_plume_barre_pre_charger" inclure="prefixe_pipelines.php" />

Il faudra également créer un fichier prefixe_pipelines.php à la racine de votre plugin pour y ajouter les codes suivants.

Masquer certains raccourcis

Pour simplifier le barre d’édition du porte-plume de SPIP, il est possible de cacher certains raccourcis à partir de leurs classes.

Exemple : le bouton permettant d’ajouter des notes a la classe outil_notes, il faut donc utiliser notes.

Ajouter dans le fichier prefixe_pipelines.php

<cadre class=’php ’>
<code >
function prefixe_porte_plume_barre_charger($barres)
$barre = &$barres[’edition’];

// Masquer des boutons
$barre->cacher(’notes’);
$barre->cacher(’indenter’);
$barre->cacher(’desindenter’);
$barre->cacher(’barre_poesie’);
$barre->cacher(’guillemets’);
$barre->cacher(’sepCode’);
$barre->cacher(’grpCode’);

return $barres;

</cadre code >

Ajouter des raccourcis dans la barre d’édition

Note : Les styles CSS ne sont pas traités dans ce tutoriel, à vous de les gérer ajouter dans votre feuille de styles via les classes correspondantes . < code >. encadre et .emphase

Exemple 1 : encadrer un texte

Dans cet exemple, nous allons ajouter un raccourci <encadre> permettant d’avoir un encadré ( un élément < code>div</code > avec une classe < code>encadre</code >) dans le contenu d’un article et nous allons placer le bouton après le celui du lien dont la classe est outil_link.

Ajouter le bouton

<cadre class=’php ’>
<code >
// Ajouter un bouton
function prefixe_porte_plume_barre_pre_charger($barres)
$barre = &$barres[’edition’];

$barre->ajouterApres(’link’, array(
’id’ => ’encadre’,
’name’ => _T(’prefixe:barretypo_encadre’),
’className’ => ’barretypo_encadre’,
’openWith’ => ’’,
’closeWith’ => ’
’,
’display’ => true,
’selectionType’ => ’line’,
));

return $barres;

return $barres;

Ajouter le traitement

Pour que notre nouveau raccourci soit utilisable, il doit être traité par SPIP via une wheel : créer un fichier /wheels/prefixe.json (depuis SPIP 4) contenant :
<
code >
“encadre ”:
“_comment”:“Traitement du raccourci < encadre >”,
“match ”:[
“<encadre >”,
“</encadre >”
] ,
“replace”:[
“div class=\”encadre\“><p”,
“div”
]
,
“priority”:-50

{
    "encadre":{
        "_comment":"Traitement du raccourci <encadre>",
        "match":[
           "<encadre>",
           "</encadre>"
        ],
        "replace":[
           "div class=\"encadre\"><p",
           "div"
        ],
        "priority":-50
     }
 }

Note : le <p> en ouverture d’encadré est nécessaire.

Exemple 2 : du gras de couleur

Dans cet exemple, nous allons ajouter un raccourci {{** ... **}} permettant d’avoir du gras de couleur ( un élément < code>strong</code > avec une classe < code>emphase</code >) et nous allons placer le bouton sous celui du gras normal dont la classe est outil_bold.

Ajouter le bouton

<cadre class=’php’>function

function  prefixe_porte_plume_barre_pre_charger($barres) {
        $barre = &$barres['edition'];


$barre->set('bold', array(
                'dropMenu' => array(
                        array(
                                'id' => 'gras_emphase',
                                'name' => _T('prefixe:barretypo_gras_emphase'),
                                'className' => 'barretypo_gras_emphase',
                                'openWith' => '{{*',
                                'closeWith' => '*}}',
                                'display' => true,
                                'selectionType' => 'word',
                        ),
                ),
        ));


return $barres;
}</cadre>


return $barres;
}

Ajouter le traitement

{
    "emphase":{
       "_comment":"Traitement  du  raccourci  {{*  ...   "_comment":"surcharge  sq_sngpckda  pour  autoriser  les  br  successifs ",
        "match ":&#91;
           "/\\{\\{\\*/S ",
           "/\\*\\}\\}/S "
        ] *}}",
       "match":[
          "/\\{\\{\\*/S",
          "/\\*\\}\\}/S"
       ],
       "replace":[
          "<strong class=\"emphase\">",
          "</strong>"
       ],
       "priority":-50
    }
 }

Déclarer les wheels

Pour déclarer les wheels indiquer la wheel à SPIP, ajouter ce code code à votre fichier fonctions <code>prefixe_fonctions code>prefixe_foncitons .php :

$GLOBALS['spip_wheels']['raccourcis'][] = 'prefix';