SPIP - Contrib

SPIP - Contrib

[ar] [en] [es] [fr] [it]

170 visiteurs en ce moment

fontsizeup fontsizedown
Accueil du site > Contribs > Administration > Le Couteau Suisse > Le Couteau Suisse à piloter
[6 commentaires]

Le Couteau Suisse à piloter

... ou comment le pré-configurer et/ou lui ajouter des outils à la volée

samedi 8 décembre 2007, par Patrice Vanneufville

  • Digg
  • Del.icio.us
  • Facebook
  • Google
  • Technorati
0 vote

Ici est décrit la façon de pré-configurer facilement le Couteau Suisse, tout en lui ajoutant éventuellement vos propres lames personnalisées...

Le Couteau Suisse est un plugin qui propose d’introduire facilement de simples fonctionnalités supplémentaires à SPIP, et que vous pouvez trouver ici. Le présent article est destiné à tous ceux qui créent leurs propres squelettes et pensent trouver avec ce plugin une amélioration notable de leurs sites.

Le but de cet article est d’indiquer comment mieux associer un jeu de squelettes avec Le Couteau Suisse.

Tous les exemples de code ci-dessous sont à placer dans le fichier mes_options.php que vous trouverez/placerez dans le dossier config/.

Pré-configuration du Couteau Suisse

Une pré-configuration est la mise en place d’un pack permettant en un seul clic de configurer Le Couteau Suisse. Il permettra ensuite de choisir les outils à activer, de définir la valeur de certaines de leurs variables ainsi que certains define() surchargeables.

Voici un exemple qui s’allie avec le squelette "Alternatives" :

  1. ######## CONFIGURATION COUTEAU SUISSE ########
  2. // Installation des outils par defaut
  3. $GLOBALS['cs_installer']['Alternatives']['outils'] =
  4.         'supprimer_numero|decoupe|sommaire';
  5. // Installation des variables par defaut
  6. $GLOBALS['cs_installer']['Alternatives']['variables'] = array(
  7.         'auto_sommaire' => 1,
  8.         'balise_sommaire' => 1, // ou 0, si on n'utilise pas la balise #CS_SOMMAIRE
  9. );
  10. // Compatibilite ascendante avec l'ancien filtre 'decoupe'
  11. @define('_decoupe_COMPATIBILITE', '-----');

Observez le résultat sur la page de configuration du Couteau Suisse (ecrire/?exec=admin_couteau_suisse), dans le cadre de gauche, sous la mention "Réinitialisations". Un lien cliquable "pour Alternatives" est apparu et vous permet de réinitialiser le plugin, tout en :

Astuce : Le fichier tmp/couteau-suisse/config.php contient la configuration en cours de votre Couteau Suisse.

Ajouter une lame personnalisée

Il vous est possible d’ajouter à la volée un outil au Couteau Suisse. La syntaxe ressemble à celle utilisée par les outils déjà présents au sein du plugin, et expliquée ici : Le Couteau Suisse pour les développeurs.

Les lames personnalisées apparaissent en italique sur la page de configuration du plugin (ecrire/?exec=admin_couteau_suisse) et doivent être activée comme toutes les autres fournies par défaut.

Voici un premier exemple qui remplace toutes les citations entre (vrais !) guillemets par des italiques simples. Exemple : « une citation » est changé en une citation :

  1. ############## COUTEAU SUISSE : LAME PERSO #################
  2.  
  3.  // Installation d'une nouvelle lame personnalisee
  4.  $GLOBALS['mes_outils']['mes_citations'] = array(
  5.         'nom'         => 'Citations en italique',
  6.         'description' => 'Une lame qui transforme toutes les citations <html>&laquo; toto &raquo;</html> en simple {italique}.',
  7.         'categorie'   => 'typo-racc',
  8.         'pipeline:pre_typo'   => 'mes_citations_pre_typo',
  9.  );
  10.  
  11.  // Fonction de remplacement
  12.  function mes_citations_rempl($texte) {
  13.         return preg_replace(',«\s*(.*?)\s*»,msS', '{$1}', $texte);
  14.  }
  15.  
  16.  // Fonction de pipeline
  17.  function mes_citations_pre_typo($texte) {
  18.         if (strpos($texte, '«')===false) return $texte;
  19.         // appeler mes_citations_rempl() une fois que certaines balises ont ete protegees
  20.         return cs_echappe_balises('', 'mes_citations_rempl', $texte);
  21.  }

Voici un second exemple qui permet d’offrir un nouveau raccourci à vos rédacteurs pour mettre un texte en évidence :

  1. ############## COUTEAU SUISSE : LAME PERSO #################
  2. // Installation d'une nouvelle lame personnalisee
  3. $GLOBALS['mes_outils']['mise_evidence'] = array(
  4.         'nom'         => 'Mise en &eacute;vidence',
  5.         'description' => 'Un nouveau raccourci pour mettre un texte en &eacute;vidence. Syntaxe : [*un texte*]',
  6.         'auteur'      => 'Moi-m&ecirc;me',
  7.         'categorie'   => 'typo-racc',
  8.         'pipeline:pre_typo'   => 'mise_evidence_pre_typo',
  9.         'pipeline:BT_toolbox' => 'mise_evidence_BarreTypo',
  10. );
  11. // Fonction de remplacement
  12. function mise_evidence_rempl($texte) {
  13.         return preg_replace(',\[\*(.*?)\*\],', '<span style="color:orange;">$1</span>', $texte);
  14. }
  15. // Fonction de pipeline
  16. function mise_evidence_pre_typo($texte) {
  17.         if (strpos($texte, '[*')===false) return $texte;
  18.         // appeler mise_evidence_rempl() une fois que certaines balises ont ete protegees
  19.         return cs_echappe_balises('', 'mise_evidence_rempl', $texte);
  20. }
  21. // Fonction indiquant le nouveau raccourci
  22. function mise_evidence_raccourcis() {
  23.         return 'Mise en &eacute;vidence : <b>[*texte*]</b>';
  24. }
  25. // Aide le Couteau Suisse a calculer la balise #INTRODUCTION
  26. function mise_evidence_nettoie($texte) {
  27.         return preg_replace(',\[\*(.*?)\*\],', '$1', $texte);
  28. }
  29. $GLOBALS['cs_introduire'][] = 'mise_evidence_nettoie';
  30. // Fonction qui renvoie une ligne de tableau entre <tr></tr>
  31. // afin de l'inserer dans la Barre Typo V2, si elle est presente
  32. function mise_evidence_BarreTypo($tr) {
  33.         return $tr.'<tr><td><a title="Mise en &eacute;vidence" href="javascript:barre_raccourci(\'[*\',\'*]\',@@champ@@)">Mise en &eacute;vidence</a></td></tr>';}
Retour en haut de la page

6 Messages de forum

Voir toute la discussion

  • Répondre à ce message

    27 décembre 2008 00:38 , par Patrice Vanneufville

    Mais en fait le plugin le fait déjà, ça m’était sorti de la tête... Un message d’avertissement met en garde contre la réinitialisation du plugin avant l’installation du pack.

    Dans l’idéal, il faudrait ajaxer la boîte info pour lister les outils inclus dans le pack avant la confirmation de l’utilisateur... Dès que j’ai un peu de temps...

  • Répondre à ce message

    27 décembre 2008 00:07 , par André Vincent

    Oui, je conçois assez facilement les risques de collisions d’un tel mécanisme. Mais, effectivement, un message avant l’écrasement serait hautement souhaitable.

    Merci encore pour tout cela.

  • Répondre à ce message

    26 décembre 2008 15:07 , par Patrice Vanneufville

    Eh oui, pour l’instant les choses sont très basiques : une configuration réinitialise totalement le Couteau Suisse pour le remettre dans l’état exact où il était lors de la sauvegarde en question, ou conformément à la configuration spécifiée à la main dans mes_options.php.

    Le sujet des collisions est une question délicate, car que doit-on faire des variables actives et existant avant ce clic ? Un petit formulaire ajax permettant de détailler un peu ses choix serait pas mal en effet... Au moins pour l’instant, un message d’avertissement avant "l’écrasement général"...

  • Répondre à ce message

    25 décembre 2008 19:28 , par André Vincent

    J’ai ajouté au squelette Ahuntsic (évolution du squelette Alternatives) une pré-configuration du Couteau Suisse, très semblable à celle recommandée dans le présent article. J’ai placé le code dans ahuntsic_options.php du jeu de squelettes Ahuntsic. Ça fonctionne parfaitement. Un petit soucis toutefois. Si des outils sont déjà activé lors de la réinitialisation du pack pour Ahuntsic , tous les autres outils déjà activés sont désactivés.

    Y a-t-il un moyen de conserver les outils déjà activés et installer ou réinitialiser uniquement ceux de la pré-configuration du pack Ahuntsic ?

  • Répondre à ce message

    29 décembre 2007 14:52 , par seed666

    c’est génial ce couteau !

  • Répondre à ce message

    11 décembre 2007 21:49 , par Fred

    Très pratique ça pour aider à la configuration d’un squelette.
    Merci pour cette contrib.

Répondre à cet article

Retour en haut de la page

Ça discute par ici