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

  • 1
    pepperberry

    Bonsoir,
    la fonctionnalité du Couteau Suisse gérant les liens externes ne fonctionne plus du tout depuis mon passage à Spip 2.0 (cad que les liens externes ne s’ouvrent plus dans de nouvelles fenêtres : tant mieux me direz-vous, sauf que non justement, pas dans mon cas...) : comment régler ce problème svp ?

    • Pourtant, je viens de faire le test, tout fonctionne très bien. Il s’agit d’un fonctionnalité JavaScript, ta page comporte peut-être une erreur bloquante... Tu as un lien public à donner ?

    Répondre à ce message

  • pour les liens externes qui ouvre dans une nouvelle fenetre il faut indiquer dans le title que cela ouvre dans une nouvelle fenetre il faudrait donc rajouter à la fonction js qqchose comme :

    jQuery("a.spip_out,a.spip_url,a.spip_glossaire").each(function (i) {jQuery(this).attr("title", function(){ return $(this).text()+" - nouvelle fenêtre"; });});

    Répondre à ce message

  • 1

    Bonjour,
    Je voudrais savoir s’il était possible par un raccourci de créer une infobulle quand on survole un lien.

    Mon idée précise est de faire apparaître une infobulle contenant une courte définition lorsque un Internaute survole un mot difficile.

    Le html me semble la seule solution. Ai-je tort ?
    Merci.

    • Je me réponds à moi-même mais ça peut servir à d’autres. Il existe cette solution. Merci à moi (et aux auteurs François Schreuer et Patrice Vanneufville).

    Répondre à ce message

  • 1

    Hello,

    le couteau suisse crée bien des liens sur les url de type www.site.fr toutefois, il en remplace le texte par interro_liens_callback

    C’est normal Docteur ? J’ai l’impression après avoir cherché un peu que ça arrive à pas mal de monde, mais que c’est récent (je suis apparemment l’un des seuls à soulever le problème) ...

    Ma version de spip : SPIP 1.9.2d [11132]

    • Après avoir coché et décoché les options dans le back office, tout est rentré dans l’ordre (il me semble aussi avoir vidé le cache, j’ignore si ça peut avoir un rapport)...

    Répondre à ce message

  • 14

    Mailcrypt fonctionne bien dans le corps des articles, mais pas dans les forums. Les adresses e-mail sont remplacées par une balise du genre :

    <a href="#" title="prenom_nom..&aring;t..yahoo.fr" class="spip_out">prenom_nom<span class="spancrypt">&nbsp;</span>yahoo.fr</a>
    • tu as un lien à montrer ? Le code que tu montres est pourtant le bon résultat de la première étape d’encodage...

    • Pour l’instant, je teste en local (EasyPHP), avec SPIP 1.9.2c [10268] brut de fonderie, squelettes dist, et un seul plugin activé, le Couteau Suisse Version : 1.7.14.02, avec Mailcrypt et Balise #INSERT_HEADER seulement. Je peux donner d’autres informations à la demande, si nécessaire.

    • Je te conseille de regarder le code créé à la volée avec Firefox muni de l’extension Firebug. C’est là que tu verras si Mailcrypt fonctionne bien ou non.

    • Pourrais-tu expliciter STP ?

      Je ne vois pas bien comment Mailcrypt pourrait fonctionner dans le corps des articles et pas dans les forums, pour un probleme de script coté client. D’ailleurs, dans le HTML généré, on n’a pas d’attribut onclick, comme on devrait normalement avoir.

    • Visiblement, jQuery a du mal à transformer le lien. Il y a probablement une erreur javaScript que FireBug pourra te montrer. Une idée cependant, l’outil « balise #INSERT_HEAD » n’est pas nécessaire dans le squelette « dist » de SPIP... Peut-être tu as une double déclaration ?

      Sinon, le « onclick » n’apparait que si tu as coché les liens orphelins en mode étendu, ou que tu as explicitement écrit un mail du genre : [->moi@world.com]

      Et puis, ne te prive surtout pas d’une mise à jour du Couteau Suisse, j’ai corrigé un tout petit bug dans mailcrypt.

    • Il est possible aussi que le DOM ne soit pas tout à fait bien construit et que jQuery ne trouve pas tes forums. C’est le cas si certaines balises HTML ne sont pas utilisées comme il faut. Par exemple : des balises non fermées, ou plusieurs exemplaire de <body> ou <head>...

    • je constate un problème du genre dans le champ email des forum Gafospip ou s’affiche un bout de code , voir

      <input name="email" class="forml" value="abelass&lt;span class=" spancrypt="" type="text">&nbsp;gmx.net" size='40'&gt;</p>

      Merci
      Rainer

    • Il est possible aussi que le DOM ne soit pas tout à fait bien construit et que jQuery ne trouve pas tes forums. C’est le cas si certaines balises HTML ne sont pas utilisées comme il faut

      HTML Tidy me donne 0 errror 0 warning, et ce sont les squelettes de la dist.

    • Visiblement, jQuery a du mal à transformer le lien. Il y a probablement une erreur javaScript que FireBug pourra te montrer.

      Comment faire : toute indication, ou tout lien vers une page donnant des explications pour un débutant sur le déboguage javascript avec FireBug serait apprécié.

      Une idée cependant, l’outil « balise #INSERT_HEAD » n’est pas nécessaire dans le squelette « dist » de SPIP... Peut-être tu as une double déclaration ?

      J’ai désactivé cette fonction du Couteau Suisse, même problème.

      Sinon, le « onclick » n’apparait que si tu as coché les liens orphelins en mode étendu, ou que tu as explicitement écrit un mail du genre : moi@world.com

      Oui, j’ai activé les liens orphelins dans la fonction « Belles URLs », mais j’ai toujours un code sans onclick :

      <a class="spip_out" title="domi..åt..yahoo.fr" href="#">
      domi
      <span class="cryptOK">@</span>
      yahoo.fr
      </a>
    • Ah oui, ça c’est parceque le plugin veut transformer le mail qui est passé en value... on pourrait protéger les balises <input>, mais bon, ya pas moyen de modifier un peu le code du squelette ?

      Quel est le code original ?

    • Le « onclick » est ajouté par jQuery sur le poste client. Firebug pourra te montrer le code final. Si tu avais un lien public, ça serait plus facile de t’aider je pense...

    • Je te donne les deux code complet :

      formulaire_bb_profile.html :

      <!-- debut code pour fichier profile.html -->
      		<BOUCLE_recap(AUTEURS){id_auteur=#SESSION{id_auteur}}{tout}>
      	<INCLURE(session.php){fond=inc_teteforum}{id_rubrique}>
      	<p class="space_20"></p>
      	<table class="spipforum" id="profile">
      		<tr>
      				<th colspan="2">#NOM</th>
      			</tr>
      			<tr class="inter">
      				<td colspan="2">&nbsp;</td>
      			</tr>
      			<tr class="ligne_sujet">
      				<td class="aff_avatar">
      					[(#NOM|afficher_avatar|reduire_image{100})]
      				</td>
      				<td>
      					#FORMULAIRE_BB_PROFILE
      				</td>
      			</tr>
      			<tr class="inter">
      			<td colspan="2">&nbsp;</td>
      		</tr>
      		</table>
      		<INCLURE(session.php){fond=inc_piedforum}{id_rubrique}>
      		</BOUCLE_recap>
      		</B_recap>
      		[(#REM) si visiteur non identifie : form login ]
      		[(#SESSION{id_auteur}|=={''}|?{' ',''})<div class="login"><p class="login"><:forg:login:></p>]
      		#LOGIN_PUBLIC
      
      		[(#SESSION{id_auteur}|=={''}|?{' ',''})
      
      		&#91;<a[ href="(#URL_PAGE{spip_pass})"] target="spip_pass" onclick="javascript:window.open(this.href, 'spip_pass', 'scrollbars=yes, resizable=yes, width=480, height=280'); return false;"><:login_motpasseoublie:></a>&#93;
      
      		</div>
      
      		]
      
      		<//B_recap>

      puis

      forum.html

      <div class="formulaire_spip formulaire_profil">
      [<p style="color:red">(#ENV*{echec})</p>]
      <form action="[(#ENV{self})]" method="post">
      	
      <BOUCLE_AUTEUR(AUTEURS){id_auteur=#SESSION{id_auteur}}{tout}>
      	<fieldset>
      	<legend><:forg:modif_parametre:></legend>
      	<input type='hidden' name='nom' value='[(#NOM)]'>
      	<input type='hidden' name='id_auteur' value="[(#ID_AUTEUR)]">
      	<input type='hidden' name='modif' value="1">
      
      		
      	<p><label for="email"><:forg:votre_email:></label>
      	<input type='text' name='email' class='forml' value="[(#EMAIL)]" size='40'></p>
      	
      	
      	<p><label for="bio"><:forg:votre_bio:></label>
      	<textarea name='bio' class='forml' rows='4' cols='40'>[(#BIO*)]</textarea>
      	</p><br />
      
      	<input type='hidden' name='pgp' value="[(#PGP)]">
      
      	<p><label for="nom_site"><:forg:votre_site:></label>
      	<input type='text' name='nom_site' class='forml' value="[(#NOM_SITE)]" size='40'></p>
      	<p><label for="url_site"><:forg:votre_url_site:></label>
      	<input type='text' name='url_site' class='forml' value="[(#URL_SITE)]" size='40'></p><br/>
      
      	[(#SESSION{statut}|=={'6forum'}|?{'
      	<p><label for="avatar"><:forg:votre_url_avatar:></label>
      	<input type="text" name="avatar" class="forml" value="'[(#EXTRA|extra{avatar})]" size="40">
      	</p><br />
      	,''})]
      
      	<p><label for="new_pass"><:forg:votre_nouveau_passe:></label>
      	<span style="color:red"><:forg:info_plus_cinq_car:></span><br />
      	<input type='password' name='new_pass' class='forml' value="" size='40' /></p>
      	<p><label for="new_pass2"><:forg:info_confirmer_passe:></label>
      	<input type='password' name='new_pass2' class='forml' value="" size='40'></p>
      	
      	
      	<div class="spip_bouton"><input type="submit" name="valider_auteur" value="<:valider:>" /></div>
      
      	</fieldset>
      </BOUCLE_AUTEUR>
      
      </form>
      </div>

      Merci
      Rainer

    • c’est forum.html le fautif : le mail est automatiquement inséré dans le formulaire si l’auteur est connecté. Il vaut mieux transformer "[(#EMAIL)]" en "[(#EMAIL*)]". Cela évitera tout traitement sur cette balise.

    • Merci, ça marche

    Répondre à ce message

  • 1

    Bonjour, j’ai des pb avec liens externes qui doivent s’ouvrir en ’blank’. Ca ne marche pas et j’ai pourtant suivi ce qui est détaillé ici pour le couteau suisse (dans cet article et dans le forum) ... j’ai activé « inserthead » et « SPIP et les liens… » mais pas de blank ...

    UNE AIDE CONCERNANT CELA :

    Il est parfois nécessaire d’ajouter l’une de ces classes aux liens du squelette du site (fichiers html) afin d’étendre au maximum cette fonctionnalité.

    Pourrais je avoir plus d’ infos ? MERCI !!

    Thierry :)

    • Salut,

      Peut-être devrais-tu nous donner un lien public, ça nous aiderait mieux pour voir ce qui ne va pas.

      Quant à la citation, les classes en question sont : a.spip_out, a.spip_url et a.spip_glossaire.

      Ca doit vouloir dire que, puisque jQuery ajoute target="_blank" à toutes ces classes, alors simplement ajouter à la main ces classes aux liens du site en général (y compris dans les fichiers html du squelette eux-mêmes) provoquera leur ouverture dans une fenêtre différente...

      Dans le texte des articles, je crois que SPIP décide tout seul de la classe à attribuer à un lien en distinguant les liens interne des liens externes.

    Répondre à ce message

  • Christian Fernandez

    Bonjour,

    J’ai un problème avec Firefox et MailCrypt. Le codage de la balise #EMAIL avec le filtre cs_lien fonctionne bien (codage correct dans le source généré) :

    <a href="#" title="xxx.yyy..&aring;t..zzz.fr" onclick="location.href=lancerlien('xxx.yyy','zzz.fr'); return false;" class="spip_out">YYY xxx</a></div></a>

    Mais la fonction lancerlien ne semble fonctionner que sous IE (IE7) (ouvre mon programme de mail) mais pas avec Firefox pour lequel il ne se passe rien mais une erreur est générée dans Firebug ?

    Messages de Firebug :

    [Exception... "'Permission refusée d'obtenir la propriété Object.protocolFlags' when calling method: [nsIProtocolHandler::protocolFlags]" nsresult: "0x8057001e (NS_ERROR_XPC_JS_THREW_STRING)" location: "JS frame :: http://localhost/spip.php?rubrique13&lang=fr&var_mode=recalcul# :: onclick :: line 1" data: no]
    [Break on this error]
    spip.php (line 1)
    uncaught exception: [Exception... "'Permission refusée d'obtenir la propriété Object.protocolFlags' when calling method: [nsIProtocolHandler::protocolFlags]" nsresult: "0x8057001e (NS_ERROR_XPC_JS_THREW_STRING)" location: "JS frame :: http://localhost/spip.php?rubrique13&lang=fr&var_mode=recalcul# :: onclick :: line 1" data: no]

    Quelqu’un a-t’il le même problème ? Merci de votre aide.

    Répondre à ce message

  • 3

    Je poursuis mon exploration... Nous avons sur notre site un seul article où nous avons laissé « en clair » les adresses mails des intervenants du forum tout ceci avec « le code à éviter » !

    Comme cela n’allait plus avec la fonction MailCrypt, j’ai donc - cette fois-ci - relu la page avant de vous écrire, j’ai pu ainsi faire avancer les choses !

    http://www.bldt.net/Om/spip.php?art...

    Mais il me reste deux soucis :

    -  dans « le code à éviter », j’arrivais à « cacher » le mot « par » qui ne s’affichait donc que s’il y avait un nom d’internaute pour l’intervention et n’apparaissait pas s’il n’y avait pas de nom. Là, cela ne semble pas fonctionner si je « cache » le « par » dans la syntaxe que vous proposez... Pour l’instant, je l’ai donc supprimé partout, mais j’aimerais le remettre selon le même principe qu’avant si vous pouvez me dire où...

    -  lorsque l’internaute signe son intervention dans le forum d’un nom seul (sans e-mail), le nom sur la page publique renvoie quand même un lien qui est... le recalcul de la page !!! (voir sur la page citée plus haut la 7e intervention signée Cerf d’Or) Comment peut-on éviter cela ?

    Merci d’avance pour les pistes que vous pourrez me donner ;-)

    • Les deux points soulevés sont en fait une même chose. Le filtre cs_lien renvoyait un lien dans tous les cas. Je viens de publier un correctif pour qu’il ne renvoie rien quand il n’y a pas de lien.

      Du coup [par (#EMAIL*|cs_lien{#NOM})] devrait fonctionner...

    • je me corrige... à 19h04, la mise à jour du plugin permettra au filtre cs_lien($lien, $texte=’’) de renvoyer $texte le $lien est vide...

    • Tout est parfait ! Mille mercis à nouveau ;-)

    Répondre à ce message

  • 7

    Lorsque j’active la fonction MailCrypt du Couteau Suisse, les liens qui doivent ouvrir le logiciel de messagerie du visiteur fonctionnent parfaitement dans la partie privée mais pointent seulement sur un # dans la page publique.

    Les Baladins de la Tradition

    Je suis sûr que c’est tout bête à arranger mais je ne vois pas...
    Quelqu’un peut-il m’éclairer ?
    Grand merci d’avance ;-)

    • Oui, c’est tout bête. Tu n’as pas bien lu le paragraphe « dépendances » au début du présent article à propos du head. De plus, je te conseille d’utiliser des balises minuscules.

    • Merci. Je viens de lire attentivement. Et dans le Couteau Suisse, j’ai activé la Balise #INSERT_HEAD. Est-ce bien ce qu’il fallait faire ? Parce qu’il me semble que rien n’a changé pour autant : ni quand je regarde mes liens vers des adresses mails, ni quand je regarde le code source de mes pages...

      Pardon vraiment si ma question est naïve, mais elle est sincère : mes connaissances sont limitées encore... Merci de votre aide à nouveau, sincèrement.

    • Oui, il faut activer cette balise si #INSERT_HEAD n’est pas présente ’en dur’ dans tous les squelettes. Mais sur le lien que tu donnes, je ne vois rien entre <head> et <head> , ce qui confirme que les plugin ne peuvent rien insérer à cet endroit...

      Après quelques tests, je viens de mettre à jour le plugin avec un petit correctif qui devrait résoudre ton problème. Fichier Zip disponible vers 18h04.

      Tente ensuite de réactiver « balise #INSERT_HEAD ».

    • oups, le fichier de 19h04.

    • J’ai téléchargé et installé le nouveau dossier du Couteau Suisse, désactivé puis réactivé la balise en question... Recalculé la page mentionnée plus haut... Mêmes effets, pas de changements... Aurais-je raté une étape ? Merci de votre patience !

    • Refaites une mise à jour après 20h05 ?

    • Tout semble parfait ! Mille mercis pour votre réactivité, votre efficacité et votre courtoisie ;-)

    Répondre à ce message

  • 11

    Bonjour,

    Pourriez-vous donner plus d’explications sur la manière de créer un lien externe à partir d’une fenêtre d’édition d’articles( ce qu’on doit rajouter autour du lien, du texte etc...).
    Je pédale dans la semoule depuis un moment et j’aimerais vraiment pouvoir utiliser ce plugin.
    Merci d’avance.

    • Bonjour.

      Pour créer un lien dans un article, il faut mettre le texte et l’URL entre crochets, séparés par une flèche ([texte -> URL]). Le texte devient une zone cliquable, et renverra le lecteur sur la page web indiquée par « URL ».

      Un lien externe est un lien pointant sur un autre site que celui en cours. Par exemple : [un site externe->http://spip-contrib.net] ou tout simplement : [->http://spip-contrib.net].

    • Suite à votre question, je viens d’ajouter un paragraphe rappelant les raccourcis SPIP concernant les liens.

    • Merci pour la réponse super rapide.

      Mais bon, je suis toujours dans le noir ; j’ai dû rater qquechose !

      j’ai installé le plugin, je l’ai activé via l’interface d’admin, j’ai coché Affichage public>SPIP et les liens… externes, j’ai validé

      je vais dans la fenêtre d’édition de l’article, je sélectionne un texte et je clic sur le bouton « Transformer en lien hypertexte »... et après comment je fais pour que ce lien ouvre une fenêtre externe ou pop-up ?

      Merci d’avance

    • Il n’y a rien d’autre à faire. Le lien créé sera cliquable en externe, en partie publique, une fois l’article publié.

    • cela veut dire que si j’installe le plugin, TOUS les liens crées dans mon site s’ouvriront en pop-up, même ceux qui mènent à une autre page dans mon site ?

    • Non, ceux-là sont internes. As-tu essayé au moins !?

    • OK, je fais la manip :
      -  je vérifie que le plugin est activé ; seul « Spip et les liens externes » est activé.
      -  je vais à cette adresse : http://www.emploi-bordeaux.fr/pageGp.php?id_rubrique=15
      sous le Sommaire, dans la partie « Site ressource »

      • le lien « www.apce.com » est ancien et conduit vers un site extérieur mais dans la même page de navigateur (pas de pop-up donc)
      • le lien « www.apce.com/apce3/syndication/actualite.rss.php » a été crée après l’activation du plugin donc maintenant, et cela me crée TOUJOURS un lien qui s’ouvre dans la même page du navigateur (pas de pop-up donc).

      Ces 2 liens ont la même forme :
      [www.apce.com->http://www.apce.com]
      [www.apce.com/apce3/syndication/actualite.rss.php->www.apce.com/apce3/syndication/actualite.rss.php]

      c’est bien ce que tu indiques de faire plus haut dans le forum :
      [un site externe->http://spip-contrib.net]

      C’est là que je me dis que j’ai dû rater qquechose ; comment vérifier que le plugin est bien activé pour cette fonction, doit-on activer toutes la partie « Affichage Public » du plugin pour activer la fonction « Spip et les liens externes »...

      Jusqu’ici pour créer un lien en pop-up j’utilisais la fonction suivante :
      <a href="http://www.nomsite.com" target="_blank">lien</a>

      et j’aimerais me simplifier la vie... Merci pour ta patience ;-)

    • Merci de ce message détaillé.

      Il semble que tu n’aies pas de balise #INSERT_HEAD dans ton squelette. Du coup, le code jQuery ne peut pas s’insérer et modifier tous tes liens externes. Active également l’outil « balise #INSERT_HEAD » du plugin.

      Relis le paragraphe « Dépendances » de cet article, ça va sans doute débloquer l’affaire.

      Par ailleurs, le raccourci [http://www.apce.com->http://www.apce.com] peut être simplifié par : [->http://www.apce.com]

    • Ouaouuuu ! ça marche, c nickel. J’ai activé l’outil « balise #INSERT_HEAD » du plugin et ça marche.

      Petit bémol, après essai : tous les liens de mon site sont devenus externes ; tous les liens commençant par "http://www.." ouvrent une pop-up.
      C’est comme ça que je crée mes liens internes vu que mon site utilise différents squelettes de pages (sommaire.php, pagesGp.php, pagesEts.php, rubriqueGp, ...) donc du coup quand j’appelle une autre page interne elle s’ouvre également en pop-up.
      Je n’ai pas d’autre moyen de rapatrier un contenu (par ex : article42) dans un squelette (pagesGp.php). Tu confirmes ?

      MAis l’un dans l’autre, c’est une fonctionnalité que j’attendais depuis longtemps le lien "externe" donc à moi de m’organiser. Il y aura bien un jour un plugin qui proposera le choix entre "lien interne" ou "lien externe" à force de harceler les contributeurs ;-)

      Merci pour le coup de pouce.

    • Je n’ai pas d’autre moyen de rapatrier un contenu (par ex : article42) dans un squelette (pagesGp.php). Tu confirmes ?

      Pour ça, il faudrait poser la question directement aux devs sur la liste spip.devel (gmane.org). Paske là, c’est du domaine de SPIP, plus trop du plugin...

    • Stanislas

      Je n’ai pas d’autre moyen de rapatrier un contenu (par ex : article42) dans un squelette (pagesGp.php). Tu confirmes ?

      Bah si, la nomenclature des squelettes prévoit que l’on peut dédier un squelette article aux articles d’une rubrique avec un fichier article-XX.html (XX étant le numéro de la rubrique). voir : http://www.spip.net/fr_article3437.html paragraphe « Une interface différente dans le même site ».

    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