couteau suisse et italiques automatiques

Bonjour

Dans ma version précédente de spip, je faisais ceci :

Italiques générées par les guillemets.

Le problème : pouvoir recopier du texte, où il y a déjà des citations, en faisant en sorte que ces citations soient mises en italique.

Concrètement il faut que le signe | « | entraîne l’inclusion de |<i class="spip"> |

et que le signe | » | entraîne l’inclusion de |</i> | pour fermer la mise en italique.

Le couteau suisse peut-il le faire ??

Merci

b.poiraud a écrit :

Bonjour

Dans ma version précédente de spip, je faisais ceci :

Italiques générées par les guillemets.

Le problème : pouvoir recopier du texte, où il y a déjà des citations, en faisant en sorte que ces citations soient mises en italique.

Concrètement il faut que le signe | « | entraîne l’inclusion de |<i class="spip"> |

et que le signe | » | entraîne l’inclusion de |</i> | pour fermer la mise en italique.

Le couteau suisse peut-il le faire ??

Oui absolument : depuis peu, il est possible d'insérer facilement des lames personnalisées.

Le code ressemblera à celui qui est proposé sur spip-contrib :
  [dev] Le Couteau Suisse à piloter - SPIP-Contrib

La ligne de remplacement (non testée !) pourrait être :

return preg_replace(',&laquo;\s*(.*?)\s*&raquo;,msS', '<i>$1</i>', $texte);

Pat

Réponse en dessous

Pat a écrit :

b.poiraud a écrit :
  

Bonjour

Dans ma version précédente de spip, je faisais ceci :

Italiques générées par les guillemets.

Le problème : pouvoir recopier du texte, où il y a déjà des citations, en faisant en sorte que ces citations soient mises en italique.

Concrètement il faut que le signe | « | entraîne l’inclusion de |<i class="spip"> |

et que le signe | » | entraîne l’inclusion de |</i> | pour fermer la mise en italique.

Le couteau suisse peut-il le faire ??

Oui absolument : depuis peu, il est possible d'insérer facilement des lames personnalisées.

Le code ressemblera à celui qui est proposé sur spip-contrib :
  [dev] Le Couteau Suisse à piloter - SPIP-Contrib

La ligne de remplacement (non testée !) pourrait être :

return preg_replace(',&laquo;\s*(.*?)\s*&raquo;,msS', '<i>$1</i>', $texte);

Pat

_______________________________________________

Merci mais ... je suis loin d'avoir compris !

D'abord, oui, je veux remplacer tous les textes qui sont entre guillemets par des italiques.
Et comme j'ai, dans un autre site, des textes très longs avec plein de citations, je ne peux pas utiliser le raccourci spip à chaque fois.
Je voudrais donc que ce soit au-to-ma-ti-que. (et je ne suis peut-être pas la seule dans ce cas).

Ya pas moyen d'avoir une tite-lame pour ça ? Il y en a déjà tellement !

Je crois bien que, si j'essaie moi-même, je n'y arriverai pas . Par exemple :
Faut-il que je mettre ça sans config/ mes_options.php ? :

############## COUTEAU SUISSE : LAME PERSO #################

// Installation d'une nouvelle lame personnalisee
$GLOBALS['mes_outils']['mise_evidence'] = array(
  'nom' => 'Mise en &eacute;vidence',
  'description' => 'Un nouveau raccourci pour mettre un texte en &eacute;vidence.',
  'auteur' => 'Moi-m&ecirc;me',
  'categorie' => 'typo-racc',
  'pipeline:pre_typo' => 'mise_evidence_pre_typo',
  'pipeline:BT_toolbox' => 'mise_evidence_BarreTypo',
);

// Fonction de remplacement
function mise_evidence_rempl($texte) {
  return preg_replace(',\[\*(.*?)\*\],', '<span style="color:orange;">$1</span>', $texte);
}

// Fonction de pipeline
function mise_evidence_pre_typo($texte) {
  if (strpos($texte, '[*')===false) return $texte;
  // appeler mise_evidence_rempl() une fois que certaines balises ont ete protegees
  return cs_echappe_balises('', 'mise_evidence_rempl', $texte);
}

// Fonction indiquant le nouveau raccourci
function mise_evidence_raccourcis() {
  return 'Mise en &eacute;vidence : <b>[*texte*]</b>';
}

// Aide le Couteau Suisse a calculer la balise #INTRODUCTION
function mise_evidence_nettoie($texte) {
  return preg_replace(',\[\*(.*?)\*\],', '$1', $texte);
}
$GLOBALS['cs_introduire'] = 'mise_evidence_nettoie';

// Fonction qui renvoie une ligne de tableau entre <tr></tr>
// afin de l'inserer dans la Barre Typo V2, si elle est presente
function mise_evidence_BarreTypo($tr) {
  return $tr.'<tr><td><a title="Mise en &eacute;vidence" href="javascript:barre_raccourci(\'[*\',\'*]\',@@champ@@)">Mise en &eacute;vidence</a></td></tr>';}

##############
  
ou bien faut-il que je mette tout ce qui est indiqué (en encadré) dans : Le Couteau Suisse pour les développeurs <http://www.spip-contrib.net/Le-Couteau-Suisse-pour-les&gt;\.

et où faut-il mettre la ligne .....

return preg_replace(',&laquo;\s*(.*?)\s*&raquo;,msS', '<i>$1</i>', $texte);

J'ai bien besoin de lumières, puissance 200 w au moins !

Merci.

Bernadette

b_poiraud a écrit :

J'ai bien besoin de lumières, puissance 200 w au moins !

mdr :wink:

Voici le code à insérer dans config/mes_options.php, il est très court :

############## COUTEAU SUISSE : LAME PERSO #################

// Installation d'une nouvelle lame personnalisee
$GLOBALS['mes_outils']['mes_citations'] = array(
  'nom' => 'Citations en italique',
  'description' => 'Une lame qui transforme toutes les citations <html>&laquo; toto &raquo;</html> en simple {italique}.',
  'auteur' => 'Bernadette',
  'categorie' => 'typo-racc',
  'pipeline:pre_typo' => 'mes_citations_pre_typo',
);

// Fonction de remplacement
function mes_citations_rempl($texte) {
  return preg_replace(',«\s*(.*?)\s*»,msS', '{$1}', $texte);
}

// Fonction de pipeline
function mes_citations_pre_typo($texte) {
  if (strpos($texte, '«')===false) return $texte;
  // appeler mes_citations_rempl() une fois que certaines balises ont ete protegees
  return cs_echappe_balises('', 'mes_citations_rempl', $texte);
}

Attention : à tester... et voir si les paragraphes sont bien convertis...

Pat

ou si c'est ponctuel, tu édites le fichier dump et fais un gros chercher/remplacer et tu réinjectes dans ton site.
Claude

Le 9 déc. 07 à 16:43, Pat a écrit :

b_poiraud a écrit :

J'ai bien besoin de lumières, puissance 200 w au moins !

mdr :wink:

Voici le code à insérer dans config/mes_options.php, il est très court :

############## COUTEAU SUISSE : LAME PERSO #################

// Installation d'une nouvelle lame personnalisee
$GLOBALS['mes_outils']['mes_citations'] = array(
  'nom' => 'Citations en italique',
  'description' => 'Une lame qui transforme toutes les citations <html>&laquo; toto &raquo;</html> en simple {italique}.',
  'auteur' => 'Bernadette',
  'categorie' => 'typo-racc',
  'pipeline:pre_typo' => 'mes_citations_pre_typo',
);

// Fonction de remplacement
function mes_citations_rempl($texte) {
  return preg_replace(',«\s*(.*?)\s*»,msS', '{$1}', $texte);
}

// Fonction de pipeline
function mes_citations_pre_typo($texte) {
  if (strpos($texte, '«')===false) return $texte;
  // appeler mes_citations_rempl() une fois que certaines balises ont ete protegees
  return cs_echappe_balises('', 'mes_citations_rempl', $texte);
}

Attention : à tester... et voir si les paragraphes sont bien convertis...

Pat

_______________________________________________
liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Documentation de SPIP : http://www.spip.net/
irc://irc.freenode.net/spip
FAQ : FAQ webmestre - SPIP

Bonjour du lundi

Je ne vois pas de nouvelle lame au Couteau Suisse.!
Donc je ne peux l'activer !

Désolée !
BP

Patrice Vanneufville a écrit :

J'oubliais... fo aussi activer la nouvelle lame !

b_poiraud a écrit :

Bonjour du lundi

Je ne vois pas de nouvelle lame au Couteau Suisse.!
Donc je ne peux l'activer !

Ah oui, parce que la version de ton CS est 1.7.9.17, il faut la .19
Pat