[SPIP Zone] Attention : Nouveaux pipelines pour la BT V2 (et consoeurs ?)

Bonjour à tous,

Comme vous avez pu le lire sur d'autres messages, je m'apprête à apporter à la Barre Typo V2 de profonds changements concernant les pipelines.
L'histoire, on la connait, les pipelines actuels définis au départ pour SPIP 1.9 ne permettent pas la cohabitation de plusieurs pipelines.
voici les anciens pipelines en voie de disparition:
  - BarreTypoEnrichie_tous
  - BarreTypoEnrichie_avancees
  - BarreTypoEnrichie_ecrire (spécial backoffice)
  - BarreTypoEnrichie_forum (spécial forum)

Voici donc les nouveaux pipelines que je propose :
  - BT_caracteres,
  - BT_paragraphes,
  - BT_liens,
  - BT_structures,
  - BT_gadgets

Ils correspondent à des catégories de boutons dans lesquelles les
plugins pourront s'insérer. Je rappelle que deux types de boutons existent :
  - Boutons simples
  - Boutons dépliant une 'toolbox'

Voila les catégories que j'ai imaginées (BTV2 + enluminures) :
  - Raccourcis de caractères : italique & gras
  - Raccourcis de paragraphes : intertitres, formatages spéciaux
  - Gestion des liens, ancres, notes, glossaire
  - Gestion des structures : remplacement, tableaux, images
  - Place pour les gadgets : caractères difficiles à taper au clavier (guillemets, majuscules accentuées...), preview, stats

Voici les paramètres envoyés aux plugins :
      $params = array(
  'objet'=> objet sur lequel agit la barre
  'champ'=> champ javascript complet
  'help'=> texte d'aide au survol du bouton
  'lang'=> langue en cours
  'num'=> numéro de la barre
  'forum'=> true si c'est un forum (public ou privé)
  'ecrire'=> true si on est en partie privée
  'flux'=> à remplir par le plugin !
     );

Ce sont donc ces paramètres qui permettront aux plugins de tester notamment la présence ou non d'un forum ($params['forum']) ou d'un backoffice ($params['ecrire']).

Ce nouveau système me parait bien plus sain que l'ancien qui ne répondait à aucune logique claire (BarreTypoEnrichie_tous et BarreTypoEnrichie_avancees avaient la même fonction) et qui n'était pas conçu pour être utilisé par un plugin lambda.

Chaque plugin pourra désormais insérer un bouton dans la catégorie de son choix, en ayant toutes les possibilités de tester l'environnement dans lequel la barre typo est créée.En ce qui me concerne, Le Couteau Suisse aurait un seul bouton placé dans les gadgets... à voir selon l'usage.

Voila, toutes vos réactions sont les bienvenues.

Pat

* Pat tapuscrivait, le 27/12/2007 20:14:

Bonjour à tous,

Comme vous avez pu le lire sur d'autres messages, je m'apprête à apporter à la Barre Typo V2 de profonds changements concernant les pipelines.
L'histoire, on la connait, les pipelines actuels définis au départ pour SPIP 1.9 ne permettent pas la cohabitation de plusieurs pipelines.
voici les anciens pipelines en voie de disparition:
  - BarreTypoEnrichie_tous
  - BarreTypoEnrichie_avancees
  - BarreTypoEnrichie_ecrire (spécial backoffice)
  - BarreTypoEnrichie_forum (spécial forum)

Voici donc les nouveaux pipelines que je propose :
  - BT_caracteres,
  - BT_paragraphes,
  - BT_liens,
  - BT_structures,
  - BT_gadgets

Ils correspondent à des catégories de boutons dans lesquelles les
plugins pourront s'insérer. Je rappelle que deux types de boutons existent :
  - Boutons simples
  - Boutons dépliant une 'toolbox'

Voila les catégories que j'ai imaginées (BTV2 + enluminures) :
  - Raccourcis de caractères : italique & gras
  - Raccourcis de paragraphes : intertitres, formatages spéciaux
  - Gestion des liens, ancres, notes, glossaire
  - Gestion des structures : remplacement, tableaux, images
  - Place pour les gadgets : caractères difficiles à taper au clavier (guillemets, majuscules accentuées...), preview, stats

Voici les paramètres envoyés aux plugins :
      $params = array(
  'objet'=> objet sur lequel agit la barre
  'champ'=> champ javascript complet
  'help'=> texte d'aide au survol du bouton
  'lang'=> langue en cours
  'num'=> numéro de la barre
  'forum'=> true si c'est un forum (public ou privé)
  'ecrire'=> true si on est en partie privée
  'flux'=> à remplir par le plugin !
     );

Ce sont donc ces paramètres qui permettront aux plugins de tester notamment la présence ou non d'un forum ($params['forum']) ou d'un backoffice ($params['ecrire']).

Ce nouveau système me parait bien plus sain que l'ancien qui ne répondait à aucune logique claire (BarreTypoEnrichie_tous et BarreTypoEnrichie_avancees avaient la même fonction) et qui n'était pas conçu pour être utilisé par un plugin lambda.

Chaque plugin pourra désormais insérer un bouton dans la catégorie de son choix, en ayant toutes les possibilités de tester l'environnement dans lequel la barre typo est créée.En ce qui me concerne, Le Couteau Suisse aurait un seul bouton placé dans les gadgets... à voir selon l'usage.

Voila, toutes vos réactions sont les bienvenues.

ça me plaît !

Si tu peux en plus donner quelques exemple de syntaxe, ça sera super pratique !

--
RealET

RealET a écrit :

ça me plaît !

Si tu peux en plus donner quelques exemple de syntaxe, ça sera super pratique !

Hello :wink:

Très bonnes fêtes à toi !
Stéphane n'est pas très content, j'ai été un peu dur.
Je vais committer les changements dans quelques minutes, histoire de pouvoir étendre mes tests en 1.92 et 1.91
Tous les retours d'expériences me seront utiles au cas où un petit pb se serait glissé...
J'ai remarqué que l'aspect de la nouvelle barre est (très !) légèrement différent. Tu me diras si c ok.
En tout cas je suis content que les plugin peuvent désormais ajouter des boutons qui seront placés ailleurs qu'en 3ème position immuable !

Je corrigerai les syntaxes du Couteau Suisse, des Enluminures et peut-être d'autres plugins...
Mais lesquels doivent être remis au goût du jour ?

Pat

RealET a écrit :

Si tu peux en plus donner quelques exemple de syntaxe, ça sera super pratique !

Voila le code des enluminures, il est assez simple :

// toolbox pour les paragraphes
function afficher_boutonsavances($champ, $champhelp) {
  $reta = bouton_barre_racc("barre_raccourci('\n\n{2{','}2}\n\n',$champ)", _DIR_BTE_IMG.'intertitre2.png', _T('enlumtypo:barre_intertitre2'), $champhelp);
  $reta .= bouton_barre_racc("barre_raccourci('\n\n{3{','}3}\n\n',$champ)", _DIR_BTE_IMG.'intertitre3.png', _T('enlumtypo:barre_intertitre3'), $champhelp);
  $reta .= bouton_barre_racc("barre_raccourci('[|','|]',$champ)", _DIR_BTE_IMG.'center.png', _T('enlumtypo:barre_centrer'), $champhelp);
  $reta .= bouton_barre_racc("barre_raccourci('[/','/]',$champ)", _DIR_BTE_IMG.'right.png', _T('enlumtypo:barre_alignerdroite'), $champhelp);
  $reta .= bouton_barre_racc("barre_raccourci('[(',')]',$champ)", _DIR_BTE_IMG.'cadretexte.png', _T('enlumtypo:barre_encadrer'), $champhelp);
  $reta .= bouton_barre_racc("barre_raccourci('<del>','</del>',$champ)", _DIR_BTE_IMG.'text_strikethrough.png', _T('enlumtypo:barre_texte_barre'), $champhelp);
    
  $tableau_formulaire = '
<table class="spip_barre" style="width: auto; padding: 1px!important; border-top: 0px;" summary="">
  <tr class="spip_barre">
    <td>'._T('enlumtypo:barre_avances').'</td>
    <td>'.$reta.'
    </td>
  </tr> </table>
';
  return produceWharf('tableau_boutonsavances','',$tableau_formulaire);
}

function TypoEnluminee_BT_toolbox($params) {
  $params['flux'] .= afficher_boutonsavances($params['champ'], $params['help']);
  return $params;
}

function TypoEnluminee_BT_caracteres($params) {
  $params['flux'] .= bouton_barre_racc("barre_raccourci('[*','*]',$params[champ])", _DIR_BTE_IMG.'miseenevidence.png', _T('enlumtypo:barre_miseenevidence'), $params['help'])
    . bouton_barre_racc("barre_raccourci('&lt;sup&gt;','&lt;/sup&gt;',$params[champ])", _DIR_BTE_IMG.'exposant.png', _T('enlumtypo:barre_exposant'), $params['help'])
    . bouton_barre_racc("barre_raccourci('&lt;sc&gt;','&lt;/sc&gt;',$params[champ])", _DIR_BTE_IMG.'petitescapitales.png', _T('enlumtypo:barre_petitescapitales'), $params['help']);
    return $params;
}

// bouton qui controle la toolbox 'tableau_boutonsavances'
function TypoEnluminee_BT_paragraphes($params) {
  if(!$params['forum']) $params['flux'] .= bouton_barre_racc("swap_couche('".$GLOBALS['numero_block']['tableau_boutonsavances']."','');", _DIR_BTE_IMG.'avances.png', _T('enlumtypo:barre_boutonsavances'), $params['help']);
    return $params;
}

Bonjour à tous,

Pat, tes changements me font gigoter la cervelle :wink: J'essaie ça dès que j'ai
une minute.
Je débute encore encore en pipelines et plugins etc... mais est ce qu'on peut
par exemple imaginer inclure un plugin d'insertion de modèles dans
BT_gadgets ? ou alors il vaut mieux passer par une barre supplémentaire ?
Je pense à quelque chose comme le croisement du plugin de cerdic d'insertion
de modèles avec une barre avec des boutons :wink:

Autre chose, comment pourrait-on éviter à l'utilisateur de taper trop de
choses lors de l'insertion d'un modèle ? les paramètres transmis aux modèles
ne sont pas décrits dans le modèle, donc c'est dur de prévoire les boutons...

A bientôt,

ashaszin

Autre chose, comment pourrait-on éviter à l'utilisateur de taper trop de choses lors de l'insertion d'un modèle ? les paramètres transmis aux modèles ne sont pas décrits dans le modèle, donc c'est dur de prévoire les boutons...

Bonjour,

je me demande si ça pourrait pas se faire en javascript avec jquery
dans le modèle on insère un metaobjet (voir le plugin jquery metaobject)
et c'est un script qui traite la description récupérée.
Comme on est dans de l'afichage, ça pourrait le faire ...

Bon travail
RB

rburton a écrit :

Autre chose, comment pourrait-on éviter à l'utilisateur de taper trop de choses lors de l'insertion d'un modèle ? les paramètres transmis aux modèles ne sont pas décrits dans le modèle, donc c'est dur de prévoire les boutons...

Bonjour,
je me demande si ça pourrait pas se faire en javascript avec jquery
dans le modèle on insère un metaobjet (voir le plugin jquery metaobject)
et c'est un script qui traite la description récupérée.
Comme on est dans de l'afichage, ça pourrait le faire ...

Bon travail
RB

oui, il faudrait voir comment sont traités les tableaux par la BTV2 par exemple. Il s'agit là d'un traitement JavaScript (ou jQuery peut-être) complexe, qui au final insère la bonne syntaxe dans le texte.

Pat

ashaszin a écrit :

Bonjour à tous,

Pat, tes changements me font gigoter la cervelle :wink: J'essaie ça dès que j'ai une minute. Je débute encore encore en pipelines et plugins etc... mais est ce qu'on peut par exemple imaginer inclure un plugin d'insertion de modèles dans BT_gadgets ? ou alors il vaut mieux passer par une barre supplémentaire ? Je pense à quelque chose comme le croisement du plugin de cerdic d'insertion de modèles avec une barre avec des boutons :wink:

C'est pas mal d'utiliser BT_gadgets et BT_toolbox pour créer une zone propre à tes modèles... C'est ce que fait le Couteau Suisse.
Attention à tester si tu es dans un forum ou non... Tes modèles n'intéressent peut-être pas les simples visiteurs.

Pat