Nouveaux raccourcis typographiques et antispam générique

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Utilisation des points d’entrée de inc_texte.php3 pour ajouter de nouveaux raccourcis à spip sans toucher au code : trois niveaux d’intertitres, tirets semi-cadratins dans le texte (et plus seulement en début de ligne), flèches, possibilité de passer une chaîne en petites majuscules (small-caps) et exposants. Est en outre mis en place un système de cryptage généralisé des adresses de courrier électronique sur tout le site.

Avec l’introduction des fonctions avant_propre() et apres_propre() dans ecrire/inc_texte.php3 (depuis la version 1.7.1), on peut maintenant ajouter de nouveaux raccourcis sans plus avoir besoin de modifier le source de spip [1].

Soient les raccourcis suivants :

{1{ Ouverture d’un intertitre de 1er niveau (synonyme de {{{) [2]
}1} Fermeture d’un intertitre de 1er niveau (synonyme de }}})
{2{ Ouverture d’un intertitre de 2e niveau
}2} Fermeture d’un intertitre de 2e niveau
{3{ Ouverture d’un intertitre de 3e niveau
}3} Fermeture d’un intertitre de 3e niveau
[*texte*] Texte en petites majuscules (small-caps) [3]
[^texte^] Texte en exposant
--> Flèche à droite (→)
<-- Flèche à gauche (←)
<--> Flèche bilatérale (↔)

Nous mettons en oeuvre leur utilisation en trois étapes :

1°- Configurer les variables de personnalisation [4] en insérant les lignes suivantes dans le fichier mes_fonctions.php3, à créer si nécessaire :

# On reprend les deux variables de personnalisation déjà existantes :
$GLOBALS['debut_intertitre'] = '<h3 class="monstyle">';
$GLOBALS['fin_intertitre'] = '</h3>';

# Et on y ajoute quatre nouvelles pour les intertitre :
$GLOBALS['debut_intertitre_2'] = '<h4 class="monstyle">';
$GLOBALS['fin_intertitre_2'] = '</h4>';
$GLOBALS['debut_intertitre_3'] = '<h5 class="monstyle">';
$GLOBALS['fin_intertitre_3'] = '</h5>';

On ajoute également les variables suivantes dans le fichier ecrire/mes_options.php3, à créer si nécessaire :

# Variables de personnalisation pour les petites majucules:
$GLOBALS['debut_smallcaps'] = '<span style="font-variant: small-caps">';
$GLOBALS['fin_smallcaps'] = '</span>';

# Variables de personnalisation pour le texte en exposant
$GLOBALS['debut_exposant'] = '<sup class="spip">';
$GLOBALS['fin_exposant'] = '</sup>';

Vous pouvez bien sûr adapter ces variables, par exemple remplacer <span style="font-variant: small-caps"> par <span style="nom"> (en définissant la classe nom dans votre feuille de style comme devant afficher les petites majucules).

2°- Ne pas oublier de configurer la feuille de style du site pour tenir compte de ces modifications (en fonction des variables de personnalisation que vous aurez choisies).

3°- Ajouter les fonctions suivantes dans le fichier ecrire/mes_options.php3 [5] :

function avant_typo($texte) {

	$chercher_raccourcis = array(
		/*  3 */	"/<-->/",
		/*  4 */	"/-->/",
		/*  5 */	"/<--/");

	$remplacer_raccourcis = array(
		/*  3 */	"&harr;",
		/*  4 */	"&rarr;",
		/*  5 */	"&larr;");

	return preg_replace($chercher_raccourcis, $remplacer_raccourcis, $texte);

}

function avant_propre($texte) {

	$chercher_raccourcis = array(
#		/*  1 */	"/\{0\{/",
#		/*  2 */	"/\}0\}/",
		/*  3 */	"/\{1\{/",
		/*  4 */	"/\}1\}/",
		/*  5 */	"/\{2\{/",
		/*  6 */	"/\}2\}/",
		/*  7 */	"/\{3\{/",
		/*  8 */	"/\}3\}/",
		/*  9 */	"/\[\*/",
		/* 10 */	"/\*\]/",
		/* 11 */	"/\[\^/",
		/* 12 */	"/\^\]/");

	$remplacer_raccourcis = array(
#		/*  1 */	"<@@SPIP_debut_intertitre_0@@>",
#		/*  2 */	"<@@SPIP_fin_intertitre_0@@>",
		/*  3 */	"<@@SPIP_debut_intertitre@@>",
		/*  4 */	"<@@SPIP_fin_intertitre@@>",
		/*  5 */	"<@@SPIP_debut_intertitre_2@@>",
		/*  6 */	"<@@SPIP_fin_intertitre_2@@>",
		/*  7 */	"<@@SPIP_debut_intertitre_3@@>",
		/*  8 */	"<@@SPIP_fin_intertitre_3@@>",
		/*  9 */	"__SPIP_debut_smallcaps__",
		/* 10 */	"__SPIP_fin_smallcaps__",
		/* 11 */	"__SPIP_debut_exposant__",
		/* 12 */	"__SPIP_fin_exposant__");

	return preg_replace($chercher_raccourcis, $remplacer_raccourcis, $texte);

}

function apres_propre($texte) {

/*
	# Intertitre -1 (intertitre de niveau supérieur à l'intertitre usuel de spip)
	global $debut_intertitre_0, $fin_intertitre_0;
	tester_variable('debut_intertitre_0', "\n<h2 class=\"spip\">");
	tester_variable('fin_intertitre_0', "</h2>");
	$texte = ereg_replace('(<p class="spip">)?[[:space:]]*<@@SPIP_debut_intertitre_0@@>', $debut_intertitre_0, $texte);
	$texte = ereg_replace('<@@SPIP_fin_intertitre_0@@>[[:space:]]*(</p>)?', $fin_intertitre_0, $texte);
*/

	# Intertitre de deuxième niveau
	global $debut_intertitre_2, $fin_intertitre_2;
	tester_variable('debut_intertitre_2', "\n<h4 class=\"spip\">");
	tester_variable('fin_intertitre_2', "</h4>");
	$texte = ereg_replace('(<p class="spip">)?[[:space:]]*<@@SPIP_debut_intertitre_2@@>', $debut_intertitre_2, $texte);
	$texte = ereg_replace('<@@SPIP_fin_intertitre_2@@>[[:space:]]*(</p>)?', $fin_intertitre_2, $texte);

	# Intertitre de troisième niveau
	global $debut_intertitre_3, $fin_intertitre_3;
	tester_variable('debut_intertitre_3', "\n<h5 class=\"spip\">");
	tester_variable('fin_intertitre_3', "</h5>");
	$texte = ereg_replace('(<p class="spip">)?[[:space:]]*<@@SPIP_debut_intertitre_3@@>', $debut_intertitre_3, $texte);
	$texte = ereg_replace('<@@SPIP_fin_intertitre_3@@>[[:space:]]*(</p>)?', $fin_intertitre_3, $texte);

	# Traitement des petites majuscules
	global $fin_smallcaps, $debut_smallcaps;
	tester_variable('debut_smallcaps', '<span style="font-variant: small-caps">');
	tester_variable('fin_smallcaps', '</span>');
	$texte = str_replace('__SPIP_debut_smallcaps__', $debut_smallcaps, $texte);
	$texte = str_replace('__SPIP_fin_smallcaps__', $fin_smallcaps, $texte);

	# Traitement des exposants
	global $fin_exposant, $debut_exposant;
	tester_variable('debut_exposant', '<sup class="spip">');
	tester_variable('fin_exposant', '</sup>');
	$texte = str_replace('__SPIP_debut_exposant__', $debut_exposant, $texte);
	$texte = str_replace('__SPIP_fin_exposant__', $fin_exposant, $texte);

	global $activer_antispam;
	if($activer_antispam && function_exists('anti_spam'))
		return anti_spam($texte);
	else
		return $texte;
}

#
# Fonctions anti-spam
#
function crypter ($texte) {
	include_ecrire ("inc_acces.php3");
	$masque = creer_pass_aleatoire(3);
	$texte = ereg_replace("@", "_(".$masque.")_", $texte);
	$s="";
	for ($i=0;$i<strlen($texte);$i++)
		$s .= "&#".ord($texte{$i}).";";
	return $s;
}

# Autre possibilité: simplement utiliser la fonction antispam native de spip
# function crypter ($texte) {
#	return antispam($texte);
#}

# Attention PHP 4.05 ou supérieur est nécessaire pour la fonction preg-replace-callback
# Voir http://be2.php.net/manual/fr/function.preg-replace-callback.php
function anti_spam ($texte) {
	return preg_replace_callback('|(mailto:)?[-\w.]{2,}@[-\w.]{2,}|',
		create_function('$match', 'return crypter($match[0]);'),
		$texte);
}

4°- Filtre anti-spam générique. Dernière chose à faire : activer, si vous le souhaitez, le filtre anti-spam. Avec la fonction de cryptage proposé ici (que vous pouvez changer très simplement), dans tout lien vers une adresse mail présente dans votre site, l’arobase sera transformé en chaîne aléatoire et le mail sera chiffré. Pour activer cette fonction, il vous suffit d’ajouter la ligne suivante dans votre fichier ecrire/mes_options.php3 :

$activer_antispam = true;

Et voilà, en principe, tout doit fonctionner. Tout ce que vous devez placer dans votre fichier ecrire/mes_options.php3 se trouve dans ce fichier :

Si des gens accrochent à cette contrib et qu’ils ont envie de poursuivre, ce serait bien de modifier la barre d’outils pour qu’elle intègre ces nouveaux raccourcis.

Notes

[1La contrib précédente sur le sujet est donc dépassée.

[2Notez que les actuels raccourcis d’intertitre ne sont évidemment pas affectés par la présente contrib : {{{ produira exactement le même résulat que {1{

[3Très utile pour les permettre de distinguer les prénoms de noms de famille des personnes par la seule typographie. Un exemple de ce que ça donne sur http://tchouktchouk.eu.org/presse/1.html.

[4Au sujet des variables de personnalisation, voir http://www.spip.net/fr_article1825.html.

[5Notez qu’il est possible d’ajouter très simplement (en activant les lignes mises en commentaire dans les deux deux fonctions suivantes) un quatrième raccourci {0{/}0} si vous souhaitez pouvoir disposer d’un raccourci supérieur au raccourci d’intertitre usuel.

De la même manière, vous pouvez créer de très nombreux raccourcis typographiques selon vos besoins. Quelques idées sur le wiki de Spip Lab.

9/7/2004. La version CVS et Spip-lab intègrent désormais le tiret semi-cadratin.

10/7/2004. Ajout d’un nouveau raccourci : le texte en exposant.

3/4/2005 Mise à jour de cette contrib pour la rendre compatible avec la version 1.8. (suppression du traitement des semi-cadratins, désormais entièrement gérés par SPIP en natif et

Discussion

18 discussions

  • 3

    Très bonne contrib. Elle fonctionne sans problème chez moi.

    J’aurais par contre besoin d’un coup de main pour pouvoir utiliser deux fonctions différentes de cryptage : une pour le texte et une pour l’action (href).

    Je ne suis pas très doué avec les expression régulières.

    Est-ce envisageable d’effectuer deux preg_replace_callback en cascade ou y a-t-il une façon plus élégante ?

    En gros j’ai besoin d’utiliser une fonction crypter_texte($texte) et une crypter_action($action). La première avec du texte moi@ici.com ne contenant pas de mailto: au début et la deuxième avec du texte mailto:moi@ici.com.

    Merci d’avance

    • Très bonne contrib. Elle fonctionne sans problème chez moi.

      Merci

      J’aurais par contre besoin d’un coup de main pour pouvoir utiliser deux fonctions différentes de cryptage : une pour le texte et une pour l’action (href).

      Euh, je vois pas exactement l’utilité, mais tu peux sans doute remplacer la fonction anti_spam par quelque chose comme ceci :

      function anti_spam ($texte) {
      
      $texte =  preg_replace_callback('|(mailto:)[-\w.]{2,}@[-\w.]{2,}|',
      create_function('$match', 'return crypter1($match[0]);'),
      $texte);
      
      $texte =  preg_replace_callback('|[-\w.]{2,}@[-\w.]{2,}|',
      create_function('$match', 'return crypter2($match[0]);'),
      $texte);
      
      return $texte;
      
      }

      où les deux fonctions de cryptage s’appelle crypter1 et crypter2.

      Je ne suis pas très doué avec les expression régulières.

      Moi non plus ;-)

    • Merci pour ton aide, c’est OK ça marche.

      Le but était (il est atteint maintenant) de :
      -  Afficher le texte d’une adresse e-mail sous la forme : nom.prenom chez ici.fr
      -  Crypter le mailto du lien pour lui faire exécuter un bout de code javascript (pour pouvoir cliquer sur le lien et envoyer un mail)

      Je l’ai implémenté sur mon site ça marche nickel

    • Salut,

      Ben, moi, j’essaie et ça ne marche pas (sppip 1.8.1) Peux-tu me dire comment tu as fait ?

      Merci.

    Répondre à ce message

  • 1
    Philippe G.

    Je me trompe peut-être, ùais après un moment, j’ai voulu reprendre cette contrib (très au demeurant !) telle qu’elle et ça ne marchait pas. Il fallu que je rajoute dans ecrire/mes_options.php3 la fonction suivante :

    function ereg_remplace($cherche_tableau, $remplace_tableau, $texte) {
    	global $flag_pcre;
    	if ($flag_pcre) return preg_replace($cherche_tableau, $remplace_tableau, $texte);
    	$n = count($cherche_tableau);
    	for ($i = 0; $i < $n; $i++) {
    		$texte = ereg_replace(substr($cherche_tableau[$i], 1, -1), $remplace_tableau[$i], $texte);
    	}
    	return $texte;
    }

    Et là ça marche...
    J’ai faux docteur ??

    • Philippe G.

      Désolé pour les fôôôtes, il fallait lire : très bien au demeurant...
      (J’utilise la 1.8pr1 sur le site concerné).

    Répondre à ce message

  • 1

    Bonjour,

    J’avais utilisé jusqu’à présent la contrib de Jacques Pyrat (1/8/2003) concernant les raccourcis v2 de SPIP.
    Je sais qu’elles modifiaient le code de SPIP (shame on me), et maintenant, ce n’est plus nécessaire.
    Mais, elles intégraient d’autres raccourcis intéressants :
    -  aligner le texte à gauche, droite ou au centre.
    -  encadrer du texte

    Il me semble que ces raccourcis pourraient enrichir cette contrib qui est très intéressante.

    Merci

    • Voici le code à remplacer pour retrouver ces raccourcis :

      function avant_propre($texte) {
      
      	$chercher_raccourcis = array(
      		/*  1 */	"/\{0\{/",
      		/*  2 */	"/\}0\}/",
      		/*  3 */	"/\{1\{/",
      		/*  4 */	"/\}1\}/",
      		/*  5 */	"/\{2\{/",
      		/*  6 */	"/\}2\}/",
      		/*  7 */	"/\{3\{/",
      		/*  8 */	"/\}3\}/",
      		/*  9 */	"/\[\*/",
      		/* 10 */	"/\*\]/",
      		/* 11 */	"/\[\^/",
      		/* 12 */	"/\^\]/",
      // Rajout Jack 2003/08/01 et modifié par Regis 2005/03/22
      		/* 15 */ 	"/\[\//",
      		/* 16 */	"/\/\]/",
      		/* 17 */ 	"/\[\|/",
      		/* 18 */	"/\|\]/",
      		/* 19 */ 	"/\[\(/",
      		/* 20 */	"/\)\]/",
      		/* 21 */ 	"/\[1\(/",
      		/* 22 */	"/\)1\]/"
      // Fin Rajout Jack 2003/08/01
      		);
      
      	$remplacer_raccourcis = array(
      		/*  1 */	"<@@SPIP_debut_intertitre_0@@>",
      		/*  2 */	"<@@SPIP_fin_intertitre_0@@>",
      		/*  3 */	"<@@SPIP_debut_intertitre@@>",
      		/*  4 */	"<@@SPIP_fin_intertitre@@>",
      		/*  5 */	"<@@SPIP_debut_intertitre_2@@>",
      		/*  6 */	"<@@SPIP_fin_intertitre_2@@>",
      		/*  7 */	"<@@SPIP_debut_intertitre_3@@>",
      		/*  8 */	"<@@SPIP_fin_intertitre_3@@>",
      		/*  9 */	"__SPIP_debut_smallcaps__",
      		/* 10 */	"__SPIP_fin_smallcaps__",
      		/* 11 */	"__SPIP_debut_exposant__",
      		/* 12 */	"__SPIP_fin_exposant__",
      // Rajout Jack 2003/08/01 et modifié par Regis 2005/03/22
      		/* 15 */ 	"<div style=\"text-align:right;\">",
      		/* 16 */	"</div>",
      		/* 17 */ 	"<div style=\"text-align:center;\">",
      		/* 18 */	"</div>",
      		/* 19 */ 	"<div class=\"texteencadre-spip\">",
      		/* 20 */	"</div>",
      		/* 21 */ 	"<span class=\"caractencadre-spip\">",
      		/* 22 */	"</span>"
      // Fin Rajout Jack 2003/08/01
      		);
      
      	return ereg_remplace($chercher_raccourcis, $remplacer_raccourcis, $texte);
      
      }

      Raccourcis désormais disponibles

      [/texte/] : aligner le texte à droite
      [|texte|] : centrer le texte
      [(texte)] : encadrer le texte (occupe toute la largeur de la page, à mettre autour d'un paragraphe)
      [1(texte)1] : encadrer/surligner le texte (une partie à l'intérieur d'un paragraphe) : ce raccourci est différent de celui d'origine pour être compatible avec cette contrib.
      [^texte^] : mettre en exposant le texte sélectionné

      Le style pour les encadrements

      .texteencadre-spip {
              background: #FFE;
              border-bottom-color: #999999;
              border-bottom-style: solid;
              border-bottom-width: 2px;
              border-left-color: #EEEEEE;
              border-left-style: solid;
              border-left-width: 1px;
              border-right-color: #999999;
              border-right-style: solid;
              border-right-width: 2px;
              border-top-color: #EEEEEE;
              border-top-style: solid;
              border-top-width: 1px;
              padding: .25em;       
      }
      .caractencadre-spip {
              border: 1px solid #666;
              padding: 0px .5em 0px .5em;
      }

    Répondre à ce message

  • 1

    Bonjour,

    Je viens d’installer cette fonction très intéressante, tout marche (petites capitales, exposant, tiret quadratin)... sauf les niveaux d’intertitres. J’ai installé, parallèlement, la fonction qui permet de découper les articles en pages.

    Celle-ci implique d’écrire la balise #TEXTE avec un astérisque : #TEXTE*|decouper_en_page|propre.

    Existe-t-il une incompatibilité entre les deux fonctions ?

    Merci.

    • François Schreuer

      Aucune idée. J’ai pas testé (par contre, je compte intégrer une fonction similaire générant une table des matières dans la prochaine version de cette contrib, que je publierai dès que la 1.8 définitive sera publiée).

      Tu utilises quelle version de spip ?

    Répondre à ce message

  • 1

    Est-il prevu une mise à jour de cet article pour la 1.8 et son système de plugin ?

    • François Schreuer

      Oui, oui. Mais j’attends la sortie officielle de la 1.8 ou, au minimum, la publication de spécifications définitives pour les plugins (qui ne sont encore, à ma connaissance, qu’une fonctionnalité expérimentale susceptible d’être fortement modifiée) avant d’adapter le script.

    Répondre à ce message

  • 2

    Merci pour cette petite merveille, et plutôt que chacun n’y aille avec sa mixture perso de racourcis typo, ne serait-il pas sympa de voir l’intégration de cette contrib directement dans la prochaine version de spip ?

    En plus, elle peut permettre d’utiliser avec intelligence la contrib nommée « découper un article + sommaire » elle aussi d’une très grande utilité. On peut donc, grâce aux deux, avoir un vrai sommaire qui reprenne les seuls réels gros titres de l’article, tout en ayant la possibilité d’avoir d’autres titres divers dans l’article.

    La prochaine version SPIP en est où des points d’entrée, quelque chose a été décidé ?

    Bien à toi

    Soÿ

    • P.S.
      je pose la question suite à la lecture de ceci.

    • François Schreuer

      Bonsoir,

      plutôt que chacun n’y aille avec sa mixture perso de racourcis typo, ne serait-il pas sympa de voir l’intégration de cette contrib directement dans la prochaine version de spip ?

      Tu peux toujours le demander sur les listes. S’il y a plein d’utilisateurs qui demandent certaines fonctionnalitéss (et s’ils argumentent bien), il se peut qu’elles soient implémentées par les core-dev (même si c’est absolument pas garanti).

      Cela dit, je ne suis pas sûr que ça soit la tendance dans le développement de SPIP d’intégrer de nouvelles fonctionnalités dans la distribution officielle. An contraire, il est plutôt question pour le moment de viser un noyau le plus simple possible et d’organiser un maximum de trucs en plugins autour. Perso, je suis pas sûr que SPIP y ait plus à gagner qu’à perdre, mais ce n’est qu’un avis.

      Cela dit, le cas des raccourcis typographiques est un peu particulier puisqu’il est surtout question d’une norme commune qu’il s’agit de préserver (plus même que l’implémentation de cette norme sur toutes les installations de spip). Si l’on se dirige vers des spip qui peuvent communiquer entre eux (et on y va clairement), y’a salement intérêt à ce qu’ils parlent tous le même langage. Donc, m’est avis qu’il serait au moins souhaitable de publier une norme de raccourcis pour toute une série de besoins standards (les intertitres de différents en font assurément partie, mais aussi, dans un moindre mesure, les exposants et les petites majuscules), histoire que les gens qui veulent les utiliser les implémentent de la même façon.

      Cela dit, une idée que j’ai déjà vu passer à certains endroits et qui vaut peut-être la peine qu’on s’y penche serait d’abandonner la syntaxe des raccourcis spip pour créer une syntaxe commune avec d’autres outils du même type (wiki, cms,...), ce qui faciliterait grandement la vie aux utilisateurs de plusieurs de ces outils.

      La prochaine version SPIP en est où des points d’entrée, quelque chose a été décidé ?

      On se dirige clairement vers un mécanisme standardisé de plugins (et donc vers la disparition des points d’entrée qui sont ne sont qu’un petit hack sympa et qui n’auront plus de raison d’être). Mais quand ? Ca, je sais pas.

      François

    Répondre à ce message

  • 3

    Est-ce que cela fonctionne avec SPIP 1.8b2. Quand je m’essaie à ces scripts, j’ai le message suivant sur mes pages :

    Fatal error: Call to undefined function: ereg_remplace() in /var/www/html/biospip/ecrire/mes_options.php3 on line 26

    et à la ligne 26 j’ai ceci :
    return ereg_remplace($chercher_raccourcis, $remplacer_raccourcis, $texte);

    • Est-ce que cela fonctionne avec SPIP 1.8b2.

      Non, effectivement, cette contrib est écrite pour une 1.7.2 et ne fonctionne pas sur la version cvs actuelle.

      Le problème avec la 1.8 est qu’on ne sait pas encore si les points d’entrée seront conservés ou s’ils seront remplacés par un système plus général de plugin. Dans ces conditions, il n’est pas évident de publier des contribs pour la 1.8.

      Mais dès qu’on saura quoi, je proposerai une version de cette contrib mise à jour pour la 1.8.

    • bonjour,

      l’antispam seul ne tourne pas non plus sur la 1.8b2 ? hum ?

      Les entrées (propre) dans inc_texte ne sont pas impléméntées ? hum ?

      j’vais l’tester quand meme... :0)

      j’ai essayé de déclarer la variable

      $dossier_squelettes = "./biospip_xl";

      dans ecrire/mes_options.php3

      CA CARBURE UN MAX

    • l’antispam seul ne tourne pas non plus sur la 1.8b2 ? hum

       ?

      En tout cas, c’est pas garanti.

      Les entrées (propre) dans inc_texte ne sont pas impléméntées ? hum ?

      C’est pas parce que le code est toujours dans la cvs qu’il y sera encore à la sortie de la 1.8. ARNO* a annoncé un système de plugins destinés à remplacer le mécanisme des points d’entrée (entre autres choses). Depuis, ça a beaucoup discuté sur les listes. Donc, en ce qui me concerne, j’ignore ce qu’il va advenir de tout ça. Par conséquent, je le signale ici. Point barre.

      FS

    Répondre à ce message

  • 1

    Faut-il rajouter <?php [...] ?> en début et fin de mes_options.php3 ? Parce que si je ne les mets pas le contenu de mes_options.php3 vient gentiment habiller mon code html. Sympa comme fond d’écran, très geek ;)
    Si je les mets, aucun effet sur mes arobases en regardant le code source et si j’appelle crypter sur ma balise #texte un charabia s’affiche.

    • Oui, il faut ajouter les <?php ... ?> (ou intégrer ce code dans un fichier mes_options.php3 existant).

      Pour l’antispam, l’as-tu bien activé comme indiqué dans l’article ?

    Répondre à ce message

  • 1

    à priori ça ne marche pas chez moi :( j’ai tout fait comme il faut pourtant (charger directement le contenu de l’archive dans mon fichiers mes_options.php3 à moi).
    je continue à chercher...

    • Bigre.

      Peux-tu m’en dire un peu plus sur les éventuels messages d’erreurs que tu reçois ?

      NB : cette contrib n’est pas (encore) adaptée à la version 1.8 de SPIP.

    Répondre à ce message

  • 3

    Ces nouvelles possibilités m’intéressent beaucoup, mais je ne parviens pas à les installer. Oui, je sais, je suis loin d’être un expert !

    Si j’ai bien compris l’article, les lignes pour les intertitres sont installés dans mes_fonctions.php3, celles pour les petites capitales dans mes_options.php3, les function dans ecrire/mes_options.php3 et l’activation de l’antispam à nouveaux dans mes_options.php3. On est donc en présence de trois fichiers différents.

    Pourtant le fichier txt joint place tout, à l’exception des premiers $Globals d’intertitres, dans le fichier ecrire/mes_options.php3.

    Je suis un peu perdu dans tout ça !...
    Vous pourriez m’aider ?
    Merci !

    • Ces nouvelles possibilités m’intéressent beaucoup, mais je ne parviens pas à les installer. Oui, je sais, je suis loin d’être un expert !

      Le plus simple à faire, si tu as du mal à l’installation, c’est d’uploader le fichier fourni dans le répertoire ecrire/, sans oublier de le renommer mes_fonctions.php3 (sans le .txt). Le reste, c’est de l’habillage (les variables de personnalisation sont facultatives et tu verras bien s’il faut ou non modifier les styles en fonction de ta feuille de style).

      Si j’ai bien compris l’article, les lignes pour les intertitres sont installés dans mes_fonctions.php3, celles pour les petites capitales dans mes_options.php3, les function dans ecrire/mes_options.php3 et l’activation de l’antispam à nouveaux dans mes_options.php3.

      C’est bien ça.

      On est donc en présence de trois fichiers différents.

      Non, mes_fonctions.php3 et ecrire/mes_fonctions.php3, c’est le même fichier (qui se place dans ecrire/).

      Pourtant le fichier txt joint place tout, à l’exception des premiers $Globals d’intertitres, dans le fichier ecrire/mes_options.php3.

      Non.

      Bon amusement

      FS

    • Le plus simple à faire, si tu as du mal à l’installation, c’est d’uploader le fichier fourni dans le répertoire ecrire/, sans oublier de le renommer mes_fonctions.php3 (sans le .txt). Le reste, c’est de l’habillage (les variables de personnalisation sont facultatives et tu verras bien s’il faut ou non modifier les styles en fonction de ta feuille de style).

      L’article dit pourtant que c’est dans ecrire/mes_options.php3... Dans lequel finalement ?

      Non, mes_fonctions.php3 et ecrire/mes_fonctions.php3, c’est le même fichier (qui se place dans ecrire/).

      Mais nulle part il n’est question, dans l’article d’un fichier ecrire/mes_fonctions.php3...

      Pourtant le fichier txt joint place tout, à l’exception des premiers $Globals d’intertitres, dans le fichier ecrire/mes_options.php3. Non.

      Je dois être aveugle, mais il me semble bien que si...

      Bref, tout est pour moi toujours aussi flou. Serait-il possible de corriger l’article ? (à moins que je me fourvoie totalement)

      Merci !

    • Brièvement :

      • Il existe deux fichiers de personnalisation : mes_fonctions.php3 et mes_options.php3. Vu la proximité qui existe entre les deux, il arrive souvent que l’on écrive l’un en pensant l’autre. Ca m’est arrivé plusieurs fois, toutes mes excuses.
      • mes_fonctions.php3 se place à la racine du site. Il contient des fonctions et variables qui n’affectent que le site public.
      • mes_options.php3 se place dans la répertoire ecrire/. Il n’existe pas de fichier mes_options.php3 à la racine du site. Il contient des fonctions et variables qui affectent aussi bien le site public que l’interface privée. L’usage de la littérature spipienne le désigne aussi bien par mes_options.php3 que par ecrire/mes_options.php3.
      • La plupart des modifications présentées dans cette contribution affecte mes_options.php3. Les modifications de mes_fonctions.php3 sont facultatives (comme toutes les variables de personnalisation). Il suffit en principe d’uploader le fichier mes_options.php3 fourni en pièce jointe de la présente contrib pour faire fonctionner les nouvelles fonctionnalités.

    Répondre à ce message

  • 1

    Bonjour,

    Félicitation pour cette contrib, très bien, que j’ai voulu installer pour le « cryptage » des adresses, antispam.

    Une question : j’ai lu à la fin du code qu’il faut utiliser php4, est-ce vraiment nécessaire ?

    De mon côté, sans trop savoir, j’ai créé un fichier php, qui appelle (inclut) un fichier php3, et ceci :
    -  parce que mon hébergeur Free permet php4.3.4 mais n’autorise pas « l’envoi de mails depuis php4 », « pour lutter contre le spam » (alors que cela semble être le cas pour php3)
    -  parce que mes squelettes actuels sont un répertoire spécifique et que j’ai eu l’impression qu’il fallait faire ainsi pour que ça marche (il y avait une raison je crois, peut-être avais je essayé autrement, mais j’ai oublié)

    En tout cas cela semble marcher, puisque les adresses mél sont transformées (@ n’apparaît plus dans le corps du texte)

    Mais tout avis sur ce j’écris ici m’intéresse bien, y compris mes craintes qu’avec le passage (de spip) à php4, Free ne permettrait plus l’envoi de méls ??

    • Salut,

      Une question : j’ai lu à la fin du code qu’il faut utiliser php4, est-ce vraiment nécessaire ?

      C’est pour la fonction preg_replace_callback(). Il y a moyen de s’en passer mais il faut réécrire la fonction anti_spam.

      De mon côté, sans trop savoir, j’ai créé un fichier php, qui appelle (inclut) un fichier php3, et ceci : parce que mon hébergeur Free permet php4.3.4 mais n’autorise pas « l’envoi de mails depuis php4 », « pour lutter contre le spam » (alors que cela semble être le cas pour php3)

      Je suis pas spécialiste et je ne connais pas le hosting de free mais il me semble que ça n’a rien à voir. Un fichier php ou php3 est considéré de manière indifférente par php.

      Les limitations d’usage de la fonction mail() sont propres à l’hébergeur (et, à ma connaissance, concernent tous les scripts php).

      Donc, pas besoin de jouer avec des fichiers php ou php3 ni avec des include.

    Répondre à ce message

  • 4
    Guillaume

    Dans ecrire/mes_options2.php3, il manque peut-être la déclaration des globales et des valeurs par défauts pour les petites majuscules...

    	# Traitement des petites majuscules
    	global $fin_smallcaps, $debut_smallcaps;
        if(!$debut_smallcaps) { $debut_smallcaps = '<span style="font-variant: small-caps">'; }
        if(!$fin_smallcaps)   { $fin_smallcaps = '</span>'; }
    • Philippe G.

      Argh ! (Merci Guillaume !) c’est pour cela que ça a marché et que cela n’a plus marché ! Tu as du supprimer la ligne sans le vouloir ! :-)
      Maintenant ça remarche ! :)

    • Franck SG

      A quel endroit faut il ajouter ces lignes ? au début du fichier ?
      à la place ou en plus de :
      # Variables de personnalisation pour les petites majucules :
      $GLOBALS[’debut_smallcaps’] = ’ ;
      $GLOBALS[’fin_smallcaps’] = ’
       ;

       ??
      Ou bien le fichier téléchargeable a-t-il déjà été corrigé ??
      J’ai en fait l’impression que c’est plutôt cette deuxième hypothèse qui est la bonne, merci de confirmer

      PS Excusez de mon incompétence en php, qui fait que je ne peux tout de suite voir ce qu’il en est.

    • François Schreuer

      Le fichier est corrigé. Il vous suffit de suivre les instructions données dans l’article.

    Répondre à ce message

  • 1

    Le tiret demi-cadratin est intégré dans spip-lab et dans spip-cvs.

    Répondre à ce message

  • 1

    Peut-être suis-je bouché, mais... serait-il possible d’avoir un exemple de code (ça peut être très court !) de l’utilisation de l’antispam ? Désolé, mais il y a quelque chose qui m’échappe...
    Mercu d’avance ! :-)

    • François Schreuer

      Salut,

      Ce qui est fourni ici, c’est un antispam qui — s’il est activé — va s’appliquer automatiquement aux adresses de courrier électronique présentes dans du texte (en fait aux éléments sur lesquels est passé le filtre propre()).

      Si tu veux l’utiliser (ce n’était pas prévu mais pourquoi pas) pour des mails appelés directement (par exemple avec la balise #EMAIL dans une boucle AUTEURSà, il faut appeler le filtre de la façon suivante :

      [(#EMAIL|crypter)]

    Répondre à ce message

  • 1

    Bonsoir

    J’ai suivi la marche à suivre pour installer les
    nouveaux raccourcis typographiques mais je ne
    comprends pas comment modifer les intertitres h4 et h5
    dans ma feuille de style CSS. (étape n°2)

    J’ai modifié mes_fonctions.php en remplaçant <h3 class="monstyle"> par <h3 class="spip"> (idem pour h4 et h5).

    J’ai réussi à modifer l’intertitre h3 comme c’était
    écrit dans la doc officielle en modifiant h3.spip,
    mais en incluant h4.spip et h5.spip dans ma feuille de
    style CSS, ça ne me donne rien du tout.

    J’ai du louper un truc quelque part... mais je ne sais
    pas où... Merci pour votre aide et merci d’avoir créer
    Spip =)

    Galad_ébutante_en_Spip

    • Salut,

      La feuille de style doit correspondre à la classe. Trois possibilités donc :

      -  change « monstyle » par « spip » dans les variables de personnalisation et laisse ta feuille de style comme elle est ;

      -  change « h4.spip » par « h4.monstyle » et « h5.spip » par « h5.monstyle » dans la feuille de style ;

      -  change la feuille de style et les variables de personnalisation en utilisant le nom que tu veux (<h4 class="blabla"> et h4.blabla) ;

      Bon courage,

      François

    Répondre à ce message

  • 5

    Bonjour,

    Très bien, c’est chouette et sympa.
    Mais comme cela ne remet pas en cause les raccourcis existant, pourquoi ne pas l’intégrer à Spip directement ?

    Je sais c’est encore le long débat intégration ou contrib ou mods etc... mais là, c’est tout de même un peu différent, puisque cela vient compléter et améliorer une fonction existante...

    A+

    • Salut,

      Très bien, c’est chouette et sympa. Mais comme cela ne remet pas en cause les raccourcis existant, pourquoi ne pas l’intégrer à Spip directement ?

      Je sais c’est encore le long débat intégration ou contrib ou mods etc... mais là, c’est tout de même un peu différent, puisque cela vient compléter et améliorer une fonction existante...

      Perso, j’ai rien contre à ce que tout ou partie de cette contrib soit intégrée à spip (les semi-cadratins devraient d’ailleurs l’être sous peu, dès qu’un dev aura ajouté les deux lignes nécessaires dans inc_texte.php3) mais :

      -  publié en contrib, le truc est disponible plus tôt pour ceux que ça intéresse (rien n’empêche son intégration ultérieure à spip) ;

      -  publié en contrib, il y a un retour des utilisateurs avant intégration ou non dans spip (si 25 personnes trouvent une contrib hyper-utile et postent sur les listes pour demander son intégration, au moins, l’équipe de développement saura qu’il y une demande pour la fonctionnalité en question) ;

      -  publié en contrib avant, si ça doit être intégré, la qualité du code sera sans doute meilleure, car testée par beaucoup de monde dans des conditions variées ;

      Voilà,

      François

    • Pour ma part, je l’ai testé et ça marche, je l’ai installé dans un site sur lequel je travaille. Seul bémol pour l’instant, je n’ai pas réussi à faire fonctionner l’antispam générique, mais si tout le monde par ailleurs dout que ça marche, c’est que j’ai du oublier quelque chose ! :-0
      Ce srait bien en effet que ce soit dans SPIP en standard.

    • c’est que j’ai du oublier quelque chose ! :-0

      La ligne $activer_antispam = true; dans mes_fonctions.php3 peut-être ?

    • D’après l’article, elle est censée se trouver dans « mes_options.php3 » !!
      (Bon, c’est dimanche après-midi... ;-)) )

    • Oups. Autant pour moi. C’est effectivement dans le fichier ecrire/mes_options.php3 que doit se trouver cette ligne.

      Toutes mes excuses.

    Répondre à ce message

  • 1

    Attention,quand on mêle note de bas de page et petites capitales, on a un problème si le texte en petites capitales démarre la note de bas de page : on se retrouve avec le code suivent :

    [[[*texte_en_petites_capitale*], suite de la note]]

    L’affichage donne cela :

    Notes :
    [span style="font-variant: small-caps"]texte_en_petites_capitales, suite de la note.

    Pour éviter cela - et si on ne veut ou ne peut toucher au code - il faut insérer un espace insécable entre la marque de note de bas de page et la marque de petites capitales, comme cei :
    [[&nbsp;[*texte_en_petites_capitales*], suite de la note]]

    Peut-être est-il possible de modifier la code d’origine, mais je ne m’y risque pas pour l’instant...

    • Attention,quand on mêle note de bas de page et petites capitales, on a un problème si le texte en petites capitales démarre la note de bas de page

      Salut,

      Merci de cette excellente remarque (d’autant plus pertinente que les petites majuscules risquent d’être régulièrement utilisées en notes de bas de page.

      Peut-être est-il possible de modifier la code d’origine, mais je ne m’y risque pas pour l’instant...

      Je viens de modifier le code et ça fonctionne : en principe [[[*texte_en_petites_capitale*], suite de la note]] devrait renvoyer le résultat attendu.

      Le problème était du à la fonction native de spip dite des « notes non automatiques », qui reconnaît un note du type [[<xxx> suite] comme devant être numérotée « xxx ».

      J’ai donc utilisé un format format intermédiaire (__SPIP_debut_smallcaps et __SPIP_fin_smallcaps) que je ne convertis dans le format définitif que dans apres_propre().

      Je viens de tester et ça à l’air de fonctionner correctement. N’hésitez pas à signaler tout problème : le moteur typographique de spip est tellement compliqué qu’on est jamais sûr d’être à l’abri d’une interférence quelque part.

    Répondre à ce message

  • 1

    Qd même, j’ai quelques questions :

    -  est-ce que les

    déjà dans mon site seront encore valables après ces modifs ?
    -  est-ce que les contribs de Coupure en pages et création de sommaire seront impactés ?

    etc.

    Merci

    A+

    • Salut,

      est-ce que les

      déjà dans mon site seront encore valables après ces modifs ?

      Je crois qu’il faudrait que tu réécrives ta question en utilisant les balises <code>.

      est-ce que les contribs de Coupure en pages et création de sommaire seront impactés ?

      Peux-tu préciser à quel script tu fais référence ? A priori, les raccourcis présents ici fonctionnent exactement comme les raccourcis spip. Donc pas de problème.

      Par rapport à la création d’un sommaire, je n’ai jamais vu ça sous spip (mais il est vrai que c’est peu pertinent avec un seul niveau d’intertitre), mais ce serait une fonctionnalité très complémentaire à la présente contrib. Genre, un truc à la wikipedia, où un sommaire de chaque page complexe est automatiquement généré (i.e. http://fr.wikipedia.org/wiki/Chemin...). Dans cette perspective, il est envisageable, assez facilement, d’afficher de longs articles sur plusieurs pages, en générant de façon complètement automatique des liens entre eux et un sommaire du tout.

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom