De beaux liens hypertexte

...vus par le Couteau Suisse

Les outils décrits ici sont des fonctionnalités du plugin Le Couteau Suisse. « Liens orphelins » rend cliquable les liens bruts. « MailCrypt » protège les mails présents sur votre site contre les crawlers. « SPIP et les liens... » configure les liens externes et le glossaire externe. « Liens en clair » affiche les liens cachés en vue d’une impression.

Présentation

Les outils décrits ici sont des fonctionnalités du plugin Le Couteau Suisse que vous pouvez trouver ici : Le Couteau Suisse. Pour avoir accès aux nouvelles fonctions agissant sur les liens hypertexte de votre site, il vous faut donc avoir préalablement installé ce plugin.

Ensuite, une fois ces outils activés sur la page d’administration du plugin en espace privé, vous avez donc gestion étendue de tous les liens trouvés dans le corps des textes, aussi bien pour les articles, les brèves, les forums, etc. Bref, tous les textes de SPIP, car de façon plus technique, ces outils utilisent les pipelines de SPIP « pre_propre » ou « post_propre ».

Dépendances

-  La librairie jQuery est requise pour le fonctionnement des Liens externes, ainsi que pour l’outil MailCrypt dans la réalisation de la deuxième étape d’encodage. Ce jeu de fonctions JavaScript très utile a été intégré au core dès la version 1.9.2 de SPIP. Pour les versions inférieures, il vous faut installer et activer le plugin Jquery que vous pouvez télécharger ici : http://zone.spip.org/files/spip-zon....
-  Les styles CSS et les fonctions JavaScript du plugin sont insérés grâce à la balise #INSERT_HEAD qui doit absolument être présente (en un seul exemplaire) dans le header de vos squelettes (entre les balises <head> et </head> des fichiers HTML). Si vous ne trouvez pas cette balise dans vos codes et que les liens n’ont pas l’apparence voulue, alors l’outil « Balise #INSERT_HEAD » permet d’insérer automatiquement cette balise sans manipulation de votre part.

Apparté

Le mot hypertexte a été créé et publié pour la première fois en 1965, par Théodore Nelson. Il explique ainsi son idée :

« Elle m’est venue en octobre-novembre 1960, alors que je suivais un cours d’initiation à l’informatique qui, au début, devait m’aider à écrire mes livres de philosophie. Je cherchais un moyen de créer sans contrainte un document à partir d’un vaste ensemble d’idées de tous types, non-structurées, non-séquentielles, exprimées sur des supports aussi divers qu’un film, une bande magnétique ou un morceau de papier. » (entretien accordé à A. Baritault, SVM n°77 p. 190)

Rappel : les liens hypertextes de SPIP

Les liens sous SPIP sont facilement générés grâce à un raccourci [1] : mettre le texte et l’URL entre crochets, séparés par une flèche (comme ceci : [texte -> URL]). Le texte devient une zone cliquable, et renverra le lecteur sur la page
web indiquée par « URL ». Ex : [le site national de l'AITF->http://www.aivf.asso.fr] qui devient : le site national de l’AITF. Il existe plusieurs types de liens :

-  les liens à l’intérieur de votre propre site. Par exemple :
Le raccourci [->article2166] génère un lien interne, vers l’article 2166 de votre site, ainsi : Le Couteau Suisse.

-  les liens vers l’extérieur de votre site. Par exemple :
Le raccourci [uZine->http://www.uzine.net] affiche le lien externe suivant : uZine.

-  les adresses URL transformées en lien hypertexte. Par exemple :
Le raccourci [->http://www.uzine.net] affiche directement l’URL, avec un lien hypertexte vers cette adresse, ainsi : http://www.uzine.net.

-  les liens vers le glossaire externe (en l’occurrence l’encyclopédie en ligne Wikipédia). Par exemple :
Le raccourci [?SPIP] génére le lien suivant : SPIP.

L’outil « Belles URLs »

Les "liens corrects"

SPIP a pour habitude d’insérer un espace avant les points d’interrogation ou d’exclamation, typographie française oblige. Voici une option qui protège le point d’interrogation dans les URLs (cliquables ou non) de vos textes. Exemples :
-  http://www.spip-contrib.net/?article2166 au lieu de : http://www.spip-contrib.net/?article2166
-  http://www.spip-contrib.net/?article2166 au lieu de : http://www.spip-contrib.net/?article2166

Les « liens orphelins »

Cet outil remplace systématiquement tous les liens laissés en texte par les utilisateurs (notamment dans les forums) et qui ne sont donc pas cliquables, par des liens hypertexte au format SPIP. Par exemple : www.spip.net est remplacé par www.spip.net.

Sur la page de configuration des outils, vous pouvez choisir le type de remplacement :

-  Basique : sont remplacés les liens du type http://spip.net (tout protocole) ou www.spip.net.
-  Étendu : sont remplacés en plus les liens du type moi@spip.net, mailto:monmail ou news:mesnews.

Techniquement, les textes sont examinés selon cette procédure :
-  Protection 1 : toutes les balises html, code, cadre, frame, script, acronym et cite.
-  Protection 2 : toutes les balises <a></a> pour éviter les doublons
-  Protection 3 : tous les raccourcis de liens SPIP, au cas où...
-  Protection 4 : toutes les balises contenant des points, histoire de voir plus clair

Les caractères reconnus comme faisant partie des liens (chiffres, lettres et 20 caractères spéciaux) :

@define('_liens_orphelins_AUTORISE',
  '\!\#\$\%\&\'\*\+\-\/\=\?\^\_`\.\{\|\}\~a-zA-Z0-9');

Les caractères reconnus comme pouvant terminer un lien :

@define('_liens_orphelins_AUTORISE_FIN',
  '\#\$\&\'\*\+\-\/\=\^\_`\|\~a-zA-Z0-9');

Attention : la balise #EMAIL, qui renvoie un texte brut par défaut, renvoie un lien cliquable en bonne est due forme lorsque l’outil Liens orphelins est activé avec un type de remplacement étendu. Vérifiez bien le code HTML de vos squelettes.

L’outil « MailCrypt »

Cet outil est inspiré du plugin créé par paolo, dont l’article de documentation est ici.

Un raccourci e-mail [->quelquun@autre.part.org] est d’habitude converti en HTML de la façon suivante :

<a href="mailto:quelquun@autre.part.org" class="spip_out">quelquun@autre.part.org</span>autre.part.org</a>

— ce qui laisse le champ ouvert pour les robots spam.

Première étape :

Intercepté par « MailCrypt », ce lien va être réécrit pour devenir : <a class="spip_url spip_out" onclick="location.href=lancerlien('quelquun','autre.part.org'); return false;" title="quelquun..ât..autre.part.org" href="#">quelquun<span class="mcrypt"></span>autre.part.org</a>

Il n’y a plus d’arobase ni de « mailto» pour orienter les robots. Le style "mcrypt" affiche l’image de l’arobase :

span.mcrypt { 
  background:transparent
  url(plugins/couteau_suisse/img/mailcrypt/leure.gif)
  no-repeat scroll left center;
  color:#000099;
  padding-left:12px;
  text-decoration:none;
  float:none; 
  margin:0; 
  display:inline;
}

Seconde étape :

Si Javascript est activé, alors la librairie jQuery pourra changer le span-image, dont le principal défaut est d’être de taille et de couleur fixe, par un span-arobase tout simple : <span>@</span>. La protection des mails est donc transparente à l’écran et le lien ressemblera à :

<a class="spip_url spip_out" onclick="location.href=lancerlien('quelquun','autre.part.org'); return false;" title="quelquun..ât..autre.part.org" href="#">quelquun<span>@</span>autre.part.org</a>

.

Voici le code jQuery utilisé pour le remplacement :

$(document).ready(function(){
  $('span.mcrypt').after('<span>&#6'+'4;</span>');
  $('span.mcrypt').remove();
});

Lorsque le visiteur clique sur le lien c’est la fonction JavaScript lancerlien qui est exécutée, et ce script reconstitue le lien. Voici le code de la fonction :

function lancerlien(a,b){ return 'ma'+'ilto'+':'+a+'@'+b; }

Et si le visiteur n’a pas JavaScript ? (Il s’agit vraiment de très peu de personnes). C’est certain : ils ne pourront pas utiliser le lien. Ils peuvent pourtant lire l’adresse en survolant le lien avec la souris. Pour aider ceux qui ont ce problème, il vous est possible de mettre un mot explicatif sur la page « technique » du site qui ressemble à :

Parce que le spam est devenu un problème grandissant, nous sommes très prudents dans la manière de mettre publiquement à disposition des adresses e-mail. Celles-ci ne figurent pas sur les pages de ce site, mais sont créées uniquement au moment où le visiteur clique sur un lien. Les visiteurs qui n’ont pas Javascript ou un programme e-mail ne pourront pas utiliser le lien. Cependant, quand le curseur passe sur le lien, un « infobulle » apparaît avec l’adresse e-mail (sous une forme difficile à lire pour les robots spam, mais dont la plupart des visiteurs pourront faire usage).

Attention : la balise #EMAIL, qui renvoie un texte brut par défaut, renvoie un texte où l’arobase est remplacée par un span lorsque l’outil MailCrypt est activé. Vérifiez bien le code HTML de vos squelettes (voir le dernier paragraphe de cet article).

Protéger des mails placés directement dans les squelettes

L’outil « Mailcrypt » ne touche pas aux mails entrés en dur dans les squelettes (fichiers .html) : seules certaines balises SPIP sont traitées. Deux raisons à cela :
-  on fait confiance aux webmestres pour éviter d’offrir des proies si faciles aux robots de SPAM,
-  une vérification de la page finale à chaque hit serait un peu trop coûteux en temps serveur.

Le plugin est donc surtout destiné à protéger les mails stockés dans les textes de la base de données et introduits par les rédacteurs d’articles ou de messages de forum.

Plusieurs solutions s’offrent à vous

-  utiliser directement le filtre « cs_lien » du Couteau Suisse :
        #EVAL**{'cs_lien("moi@toto.com")'}
ou encore :
        #EVAL**{'cs_lien("moi@toto.com", "courriel")'}
-  utiliser la lourde fonction « propre » de SPIP :
        #EVAL**{'propre("moi@toto.com")'}
(attention : le paragraphage automatique de SPIP risque de désorganiser la mise en page et il faut configurer le Couteau Suisse pour que les liens deviennent cliquables avec « Liens orphelins »...)
-  Depuis SPIP 1.93, la balise #VAL permet facilement d’utiliser des filtres en simplifiant un peu le code :
        [(#VAL{moi@toto.com}|cs_lien)]
ou :
        [(#VAL{moi@toto.com}|cs_lien{courriel})]

Autres balises SPIP

L’outil « Mailcrypt » agit sur le pipeline post_propre de SPIP et sur le traitement de la balise #EMAIL. Par conséquent, toute balise nouvellement créée (par vous-même, par un champ de base de données ou par un autre plugin) ne sera pas protégée si son traitement n’est pas explicité dans mes_options.php, intégrant les fonctions mailcrypt() du Couteau Suisse OU propre() de SPIP.

A titre d’exemple, voici comment le Couteau Suisse compile le traitement de la balise #EMAIL, non concernée par la fonction propre() :

        $GLOBALS['table_des_traitements']['EMAIL'][]='mailcrypt(%s)';

Prenons par exemple un champ lesvaleurs présent dans une table de votre base de données. Si ce champ contient une adresse email, alors n’utilisez surtout pas directement dans vos squelettes l’expression suivante :
<a href="mailto:#LESVALEURS">#LESVALEURS</a>

Mais plutôt :
[(#LESVALEURS|cs_lien{#LESVALEURS})]

L’email brut non protégé sera alors transformé en un lien SPIP [->email] par le filtre cs_lien, puis traitée par MailCrypt.

Le filtre |maildecrypt

Ce filtre pourra être utilisé pour supprimer toute intervention de MailCrypt. Il pourrait être utile par exemple avant d’envoyer un mail.

Utilisation dans un squelette :
-  #FILTRE{maildecrypt} sur le fond entier
-  |maildecrypt sur une balise en particulier : [(#TEXTE|maildecrypt)]

L’outil « SPIP et les liens... »

Utiliser des liens externes :

Tous les liens du site s’ouvrent par défaut dans la fenêtre de navigation en cours. Mais il peut être utile d’ouvrir les liens externes au site dans une nouvelle fenêtre extérieure — cela revient à ajouter target="_blank" à toutes les balises <a> dotées par SPIP des classes spip_out, spip_url ou spip_glossaire.

Note : cette fonctionnalité utilise la librairie jQuery et voici son code :

$(document).ready(function(){ 
  $("a.spip_out,a.spip_url,a.spip_glossaire").attr("target", "_blank");
});

Lien vers le glossaire :

SPIP permet de relier des mots à leur définition grâce au raccourci typographique [?mot]. Par défaut (ou si vous laissez vide la case de configuration), le glossaire externe renvoie vers l’encyclopédie libre wikipedia.org : http://@lang@.wikipedia.org/wiki/ (pour le français, SPIP remplacera @lang@ par « fr »). À vous donc, de choisir l’adresse à utiliser.

Lien de test : SPIP

L’outil « Liens en clair »

Cet outil met à votre disposition le filtre : liens_en_clair.

Votre texte contient probablement des liens hypertexte qui ne sont pas visibles lors d’une impression, cachés dans un lien cliquable.... Ce filtre ajoute entre crochets la destination de chaque lien cliquable (liens externes ou mails). Voici un exemple de syntaxe SPIP : [(#TEXTE|liens_en_clair)].

Attention : en mode impression, cette fonctionnalité est appliquée automatiquement, sans filtre obligatoire.

Exemple : le lien caché "Un mail« est remplacé par : »Un mail [quelquun@autre.part.org]".

Précisions sur le mode impression du Couteau Suisse :

Le Couteau Suisse offre un mode utile pour l’impression en plaçant le paramètre « cs=print » dans le lien d’appel de la page. Ce mode est automatiquement activé si le squelette « print.html » est utilisé (donc ici : « page=print »).

Exemples d’appel :
-  Dans un navigateur : www.monsite.ici/spip?article999&cs=print
-  Dans un squelette : [(#SELF|parametre_url{cs,print})]
-  En PHP : parametre_url(self(), 'cs', 'print')

Cas de la balise #EMAIL

La balise #EMAIL, généralement utilisée dans une boucle AUTEURS, est complètement absente des squelettes d’origine, car il est déconseillé d’exposer des emails bruts à l’écran. Un crawler pourrait les utiliser à des fins mal intentionnées.

Voici donc un code à éviter : [<A HREF="mailto:#EMAIL">(#NOM)</A>].

Attention : bien qu’il soit valide, le code précédent est incompatible avec les outils MailCrypt et Liens orphelins qui agissent sur la balise #EMAIL.

A la base, cette balise renvoie un email brut, sans aucune protection. Mais :
-  MailCrypt remplace l’arobase du mail par un span, rendant donc impossible l’utilisation de cette balise dans un href !
-  Liens orphelins remplace l’email brut par un lien sur l’email, rendant également impossible l’utilisation de cette balise dans un href.

Bon, pour empêcher les traitements sur cette balise, vous pouvez toujours utiliser l’étoile : [<A HREF="mailto:#EMAIL*">(#NOM)</A>]. Mais aucune protection ne préservera alors vos auteurs face à la collecte des robots. Pour remédier à ce problème, et permettre quand même aux visiteurs d’envoyer directement des mails aux différents auteurs de votre site, le Couteau Suisse offre un filtre bien utile : cs_lien. Ce filtre très simple permet de créer un lien sur un texte.

La syntaxe à utiliser dans un squelette est donc désormais : [(#EMAIL*|cs_lien{#NOM})].

Ici, l’email brut non protégé est transformé en un lien SPIP [nom->email] par le filtre cs_lien, puis traitée par MailCrypt et éventuellement expansée par Liens en clair pour l’impression.

Eh oui, les outils du Couteau Suisse interagissent ensemble, en toute harmonie !

Notes

[1Si vous le souhaitez, vous pouvez naturellement utiliser du code HTML directement dans vos textes. Mais nous vous conseillons d’utiliser de préférence ces raccourcis, d’une part parce qu’ils sont plus simples à mémoriser, d’autre part parce qu’il font l’objet d’un traitement automatisé avantageux : SPIP les remplace par le code HTML approprié et valide, les dotant de plus de styles facilitant leur habillage graphique par le webmestre.

Discussion

20 discussions

  • MAILCRYPT : problème https
    Bonjour Patrice,
    sur un site passé en https, une erreur est signalée dans la mesure où l’appel à leure.gif se fait via le protocole http et non pas https.
    Un ajustement à faire quelque part ?
    Merci pour tout,

    Répondre à ce message

  • 1

    Bonjour

    J’ai activé la lame mais les liens externes qui devraient s’ouvrir vers une nouvelle fenêtre n’embarquent pas le « target=_blank ».

    Le lien de test dans l’espace privé ne fonctionne pas non plus.

    J’ai analysé le js généré par le couteau suisse et intégré dans le header, il ne ne semble rien avoir concernant les liens externes. Or ol y a bien quelque chose sur les mailto.

    Merci pour votre aide.

    • inaden

      Bonjour
      J’ai le même problème. Activation des liens externes dans le couteau suisses… et rien ne se passe !
      Vous avez trouvé une solution entre temps ?

    Répondre à ce message

  • 7

    Bonjour

    En activant l’outil Belles URLs du Couteau Suisse, cela génère des problèmes dans la configuration des outils du Couteau Suisse.

    Dans la partie dédiée à la configuration de chaque outil, je me retrouve avec ceci :

    Belles URLs
    Par défaut | Désactiver
    http://localhost/spip/ecrire/?exec=... onsubmit=« return AjaxSqueeze(this,’description_outil-420’,’’,event) » method=’post’ style=’margin : 0px ; border : 0px’>
    Cet outil a deux fonctions [...]

    Notez la présence de http://localhost/spip/ecrire/?exec=... onsubmit=« return AjaxSqueeze(this,’description_outil-420’,’’,event) » method=’post’ style=’margin : 0px ; border : 0px’> en haut de chaque bloc de configuration.

    Ceci ne serait pas trop grave (et encore, je n’ai pas vérifié ce que ça donnait sur le site) mais le deuxième effet Kiss cool, c’est que je ne peux plus valider la configuration des blocs de configuration des outils du Couteau Suisse. Si je clique sur le bouton Modifier ces paramètres, j’obtiens la page 403 (Forbidden) suivante :

    Forbidden

    You don’t have permission to access /spip/ecrire/<a href="http://localhost/spip/ecrire/ on this server.

    Ce comportement disparaît si je désactive l’outil Belles URLs.
    J’utilise la dernière version de SPIP (SPIP 2.1.12 [18732]) avec un WAMP (sous Windows donc).

    SPIPement

    Guillaume

    • Merci de retour. Quels autres plugins et outils utilises-tu ?

    • J’ai uniquement Thickbox v2 (v0.3.0) comme plugin activé.

      Je viens de faire le test et même en laissant uniquement Le Couteau Suisse activé, je reproduis le problème. Il s’agit d’un serveur de dev donc je peux faire des tests à volonté.

    • Comment as-tu configuré les « Belles URLs » ? Et quels sont les autres outils actifs du couteau suisse ? Je ne reproduis pas ton problème... D’après le code que tu reproduis, il semble qu’un morceau du code source de la page est « mangé » ...

    • Florence

      J’ai le même problème. Il vient du fait que le formulaire de description d’un outil du couteau-suisse utilise la fonction propre qui est modifiée par le pipeline post_propre de « Belles Urls ».

      Ce pipeline entoure toutes les urls d’une balise <a href> ; il semble qu’il le fait même sur celles qui sont déjà dans une balise <form action="http://...">
      ce qui donne <form action="<a href="http://....>http://...</a>" et le formulaire ne fonctionne plus.

      C’est ce que j’ai diagnostiqué avec le couteau-suisse Version locale : 1.8.114
      Révision : 71036

    • Merci du retour Florence.

      Je n’ai pas réussi à reproduire ton problème (tu en local ? avec quel SPIP ?), mais j’ai renforcé le protection des formulaires dans la version .116 du plugin.

      Tu me diras si c’est OK à présent...

    • Florence

      Merci c’est OK maintenant.

      J’utilisais « Belles Urls » sur un site spip 1.9.2 et le bug est apparu quand j’ai voulu migrer en 2.0.22.
      L’outil semble moins utile avec la version 2.0 mais merci tout de même de l’avoir renforcé.

    • Oh non, il peut être tout aussi utile car son paramétrage reste pertinent.

    Répondre à ce message

  • 12
    yannick-lee

    Comment interdire un traitement automatique spécifique ?

    Bonjour.

    Je cherche à empêcher SPIP d’effectuer un traitement automatique précis. Dans mon cas, il s’agit de désactiver MailCrypt (du Couteau suisse) dans le contenu des newsletters que je génère par un squelette.

    Je sais que je pourrais utiliser un truc du genre [(#BALISE*|tous|les|traitements|normalement|appliques|sauf|mailcrypt)] mais ça ne me branche pas (d’ailleurs, comment en avoir la liste ?)

    N’y a-t-il pas une solution simple, du genre [(#BALISE|pas_mailcrypt)] ?

    Merci d’avance.

    • Salut.

      Mailcrypt n’est pas un outil agissant au niveau du traitement d’une balise particulière, mais au niveau du pipeline post_propre. Il est donc ponctuellement plus difficile d’empêcher son action... Le glossaire par exemple est lui, bien un traitement des balises #TEXTE, #CHAPO et #TITRE.

      Cependant, 3 pistes me viennent à l’esprit...

      1. Simplement à l’aide des balises <code/>, <cadre/> ou <html/> à l’intérieur desquelles Mailcrypt n’agit pas.

      2. Un peu plus lourdement en effet grâce à une function pas_mailcrypt{ on revert tout ! }.

      3. Enfin, en y allant franco, du genre : [(#TEXTE*|replace{@,_AROB_}|cs_traitements{TEXTE,articles}|replace{_AROB_,@})]

      Explications : l’étoile de la balise empêche tout traitement SPIP et renvoie le texte brut stocké en base de données, le premier filtre ’|replace’ leure d’abord mailcrypt, le filtre ’|cs_traitement’ du Couteau Suisse rétablit les traitements originaux de SPIP correspondant à la balise ’#TEXTE’ et aux objets ’articles’ (dont ’|propre’ qui appelle le pipeline ’post_propre’), puis le second filtre ’|replace’ rétablit le tout.

      Pour revenir aux traitements et pour en inhiber un ou plusieurs ponctuellement, je m’apprête à corriger le filtre |cs_traitements pour lui ajouter un paramêtre d’exclusion. A voir si cela va t’intéresser.
      Alors, que choisis-tu finalement ?

    • Finalement, voila la fameuse possibilité d’exclusion : http://zone.spip.org/trac/spip-zone...

      Cela rend notamment caduque la notation :
      [(#TEXTE*|concat{#EVAL{_CS_SANS_GLOSSAIRE}}|cs_traitements{TEXTE,articles})]
      au profit de :
      [(#TEXTE*|cs_traitements{TEXTE,articles,cs_glossaire})]

    • voila la fameuse possibilité d’exclusion

      Magnifique ! J’ai été confronté avec exactement la même question que yannick il y a quelques mois. La solution que j’avais trouvée était de demander les rédacteurs/traducteurs d’écrire les liens email autrement dans les articles « newsletter ». Mais cette nouvelle possibilité est plus propre.

      Pour les lents (moi), où est-il possible de trouver une liste des traitements sur lesquels cs_traitements() peut agir ?

    • En regardant dans le fichier tmp/couteau-suisse/mes_options.php, il y a (tout à la fin) la liste compilée des traitements actifs. Par exemple :

      $GLOBALS['table_des_traitements']['TITRE'][]='typo(supprimer_numero(%s),"TYPO",$connect)';
      $GLOBALS['table_des_traitements']['TITRE']['mots']='cs_glossaire_titres(typo(supprimer_numero(%s),"TYPO",$connect))';
      $GLOBALS['table_des_traitements']['NOM'][]='typo(supprimer_numero(%s),"TYPO",$connect)';
      $GLOBALS['table_des_traitements']['TYPE']['mots']='typo(supprimer_numero(%s),"TYPO",$connect)';
      $GLOBALS['table_des_traitements']['TEXTE'][]='cs_nettoie(cs_decoupe(cs_glossaire(propre(cs_onglets(%s),$connect))))';

      On peut voir dans cet exemple les traitements généraux sur une balise donnée (par ex. : [’TITRE’][]) et les traitements particuliers sur une balise et un objets donnés (par ex. : [’TITRE’][’mots’])

    • OK. Merci bcp !

    • Mais non - je n’y arrive pas. Sur une page similaire à celle que décrit Yannick (contenu des newsletters que je génère par un squelette) je veux le texte de l’article avec les traitements habituels de SPIP, mais sans mailcrypt, qui est activé pour le site.

      Dans tmp/couteau-suisse/mes_options.php je vois $GLOBALS['table_des_traitements']['EMAIL'][]='mailcrypt(%s)';

      Dans le squelette j’essaie donc :
      [(#TEXTE*|propre|typo|cs_traitements{EMAIL,,mailcrypt})]

      qui ne marche pas du tout. L’un ou l’autre vous voyez ou je m’égare ?

      merci bcp.

    • Oh là, non !! Il y a trop de filtres...

      les filtres propre et typo ne doivent surtout pas être employés ensemble, sachant que cs_traitement applique lui-même les traitements appropriés. Dans une boucle ARTICLES, ce dernier doit être utilisé comme suit :

      [(#TEXTE*|cs_traitements{TEXTE,articles,mailcrypt})] (non testé...)

      Note : le 1er paramètre est le nom de la balise, le 2e est le type d’objet concerné, le 3e est le filtre à exclure.

      La ligne PHP que tu mentionnes indique que le traitement appliqué à la balise #EMAIL passe par mailcrypt. Rien à voir avec ce qui se passe pour la balise #TEXTE...

    • Merci de ta réponse, Pat. Mais non, cela ne fait pas l’affaire.
      mailcrypt embrouille l’adresse email (inséré dans le texte avec un raccourci type
      [->monemail.com], que j’utilise
      [(#TEXTE*|cs_traitements{TEXTE,articles,mailcrypt})]
      ou simplement : [(#TEXTE)]

    • Ah oui, toutes mes excuses... En fait mailcrypt utilise les traitements uniquement pour la balise #EMAIL.

      En ce qui concerne #TEXTE, cette lame passe par le pipeline post_propre qui est donc utilisé sur toutes les balises bénéficiant du traitement |propre. Du coup il faut ruser un peu. Vu que le texte entre les balises <html|code|cadre|frame|script/>, je propose qqchose du style (code non testé) :

      [(#TEXTE*|replace{@,<html>@</html>}|cs_traitements{TEXTE,articles})]

      En principe, toutes les adresses mail du texte ne seront pas touchées car protégées par un échappement avant d’envoyer tous les traitements de la balise #TEXTE/articles.

      C’est vrai que SPIP offre deux mécanismes disctincts (pipelines de typo et traitement de balises) qu’il n’est pas toujours facile de dissocier et de comprendre exactement ce qui fait quoi... Si cette astuce fonctionne, ça serait bien de l’ajouter à l’article ;-)

    • Mailcrypt trouve quand même ces <html>@</html> et les transforme aussi — exactement comme avant.

    • Pour le même problème rencontré dans un patron du plugin Spip-list, au final j’ai appliqué la solution 3 donnée par Patrick à savoir

      [(#TEXTE*|replace{@,_AROB_}|cs_traitements{TEXTE,articles}|replace{_AROB_,@})]

      Et ca marche !

    • Bonjour à tous. A titre d’info, un nouveau filtre a été créé : |maildecrypt

      Utilisation :
      -  #FILTRE{maildecrypt} sur le fond entier
      -  |maildecrypt sur une balise en particulier : [(#TEXTE|maildecrypt)]

      Commit en question : http://zone.spip.org/trac/spip-zone...

    Répondre à ce message

  • bonjour,

    Une petite suggestion pour la lame qui permet l’ouverture des liens dans une nouvelle fenêtre.
    En terme d’accessibilité et notamment vis à vis du respect du RGAA il est nécessaire d’indiquer l’ouverture dans les nouvelles fenêtres.

    Alors certes le rédacteur peut le faire à la main mais on pourrait lui faciliter la tache en allant récupérer le texte de chacun des liens avec le pipeline pre_liens et ajoutant un title (sauf si y en a déjà un de défini) = texte du lien - nouvelle fenêtre (et si besoin créer la chaine de langue).

    Répondre à ce message

  • 2

    Bonjour,

    Je cherche à différencier dans mon squelette les liens externes des liens internes, c’est à dire avoir une 2 blocs :
    Liens internes
    -  Lien interne 1
    -  Lien interne 2

    Liens externes
    -  Lien externe 1
    -  Lien externe 2

    Quelqu’un a-t-il déjà fait des choses comme ça ? Couteau Suisse peut-il m’y aider ?

    Merci pour vos retours

    • Si tu regardes le code de ta page, tu devrais trouver des classes différentes car SPIP différencie déjà les liens internes des liens externes. Le vérifies-tu ?

      Si c’est bien le cas, un petit style sur ces classes et le tour est joué !

    • Thx pour le tuyau, je suis bien court en CSS !

    Répondre à ce message

  • 1

    Bonjour et désolé par avance de poser une question aussi naïve...
    Comment dois-je procéder pour arriver à personnaliser les liens hypertexte qui sont dans le corps de l’article ? Je travaille sous Spip 2.08 et The Morning After. Idéalement, j’aimerai bien que mes liens ressemblent à ceux de ce site avec la petite image en fin de lien.
    J’imagine que la question a déjà été posée 100 fois, mais je n’arrive pas à trouver d’article ou de site qui traite la question. La seule piste que j’ai trouvée est de modifier spip_out, mais je n’arrive pas à trouver où il se trouve dans ma configuration...

    Répondre à ce message

  • 2

    Bonjour,

    Je travaille actuellement sur un site en français (une seule langue) pour des enseignants d’anglais.

    Lien vers le glossaire :
    SPIP permet de relier des mots à leur définition grâce au raccourci typographique mot. Par défaut (ou si vous laissez vide la case de configuration), le glossaire externe renvoie vers l’encyclopédie libre wikipedia.org : http://@lang@.wikipedia.org/wiki/ (pour le français, SPIP remplacera @lang@ par « fr »). À vous donc, de choisir l’adresse à utiliser.

    Savez-vous comment faire pour que nos liens vers wikipedia renvoie vers les pages anglaises ?
    un filtre dans le lien ?
    un réglage particulier ?

    Merci

    Répondre à ce message

  • pepperberry

    Ça marche ! génial, merci.

    Je suis toujours passé à côté de ces balises (une bonne partie de SPIP m’échappe encore)...

    Répondre à ce message

  • 1
    pepperberry

    Oui, il s’agit du site suivant.

    • Il semble que tu aies oublié la balise #INSERT_HEAD dans ton squelette... Ou alors, active l’outil correspondant du Couteau Suisse : « Balise #INSERT_HEAD ».

    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