[spip-dev] problème avec raccourcis des liens

Avec SPIP 2 béta [12309] j'ai des problèmes avec les raccourcis des liens entrés de cette façon :

[->www.taizeinnederland.nl]

Voir en bas de la page http://www.taize.fr/nl_article4724.html comment ce lien inséré dans le texte est rendu ! Ce problème existe aussi sur d'autres pages.

Ce que je ne comprends pas est que sur encore d'autres pages, des liens du même format sont correctement rendus :

http://www.taize.fr/en_article1055.html

par exemple.

Paolo

Je ne reproduis pas le pb en copiant seulement ton raccourci, ça doit être autour du lien qu'il y a un problème, genre un [ non fermé ou qqch comme ça.

Committo,Ergo:Sum

Committo,Ergo:sum wrote:

Je ne reproduis pas le pb en copiant seulement ton raccourci, ça doit être autour du lien qu'il y a un problème

Je crois avoir trouvé : ce problème touche le premier lien qui suit un raccourci d'une ancre.

Par exemple, si tu mets comme texte d'un article :

[->www.monsite.org]

[uneancre<-]
[->www.monsite.org]

[->www.monsite.org]

le premier et le troisème lien marchent, mais le deuxième lien est cramé.
http://trac.rezo.net/trac/spip/ticket/1486

Paolo

Oui, là je reproduis. C'est la fonction autoliens_callback qui en fait trop, mais j'avoue n'avoir jamais essayé de comprendre la logique de cette fonction. Si son auteur peut intervenir...

Committo,Ergo:Sum

le premier et le troisème lien marchent, mais le deuxième lien est cramé.
http://trac.rezo.net/trac/spip/ticket/1486

Oui, là je reproduis. C’est la fonction autoliens_callback qui en fait trop, mais j’avoue n’avoir jamais essayé de comprendre la logique de cette fonction. Si son auteur peut intervenir…

Plus exactement c’est la partie « <[^<>]*>| » de la regexp ligne 1261 qui embrasse trop.

Introduit en http://trac.rezo.net/trac/spip/changeset/11672#file1 il voulait convertir en lien, mais c’était en effet un peu abuser.

Corrigé en [12310]

– Fil

Fil wrote:

Corrigé en [12310]

Quelle équipe !
Merci, Paolo

Fil wrote:

Plus exactement c'est la partie "<[^<>]*>|" de la regexp ligne 1261 qui embrasse trop.

Malheureusement ce changement à inc/texte.php qui résout le problème des liens suivants des ancres fait que les vidéos ne marchent plus.

Un raccourci sur la page http://new.taize.fr/fr_article4769.html
<flv|url=http://s179568725.onlinehome.fr/media/une_semaine_a_taize.flv;

appelle le modèle :

<object type="application/x-shockwave-flash" width="[(#ENV{largeur}|sinon{400})]" height="[(#ENV{hauteur}|sinon{300})]" data="squelettes/modeles/mediaplayer.swf?file=#ENV{url}">
<param name="allowFullScreen" value="true" />
<param name="movie" value="squelettes/modeles/mediaplayer.swf?file=#ENV{url}" />
<param name="autoStart" value="false" />
</object>

et devrait insérer le code suivant :

<object type="application/x-shockwave-flash" width="340" height="270" data="squelettes/modeles/mediaplayer.swf?file=http://s179568725.onlinehome.fr/media/une_semaine_a_taize.flv&quot;&gt;&lt;param name="allowFullScreen" value="true" />
<param name="movie" value="squelettes/modeles/mediaplayer.swf?file=http://s179568725.onlinehome.fr/media/une_semaine_a_taize.flv&quot; />
<param name="autoStart" value="false" /></object>

mais insère :

<object type="application/x-shockwave-flash" width="400" height="300" data="squelettes/modeles/mediaplayer.swf?file=%3Ca%20href=&quot;&quot;%20rel='nofollow'%20%3E%3C/a%3E"><param name="allowFullScreen" value="true" />
<param name="movie" value="squelettes/modeles/mediaplayer.swf?file=&lt;a href=&quot;&quot; rel='nofollow' &gt;&lt;/a&gt;" />
<param name="autoStart" value="false" /></object>

J'ai dû donc revenir en arrière pour le site en prod.

Paolo

Cette conversion auto des url en lien me semble une fausse bonne idée.
C'etait au départ un ajout pour les forums seuls qui a été généralisé. Mais là ou cela etait simple pour les forums, cela va nous générer un nombre de bugs important dans les articles à cause de tous les cas tordus d'utilisation des url que l'on imagine pas.
Je propose de revenir au cas initial : convertir les url en lien dans les forums uniquement.

Cédric

Je propose de revenir au cas initial : convertir les url en lien dans les forums uniquement.

Bonjour,
Je ne vois pas bien quels changements cela impliquerait.

J'ai réglé le problème actuel par un changement du paramètre du modèle, en mettant :

<flv|url=s179568725.onlinehome.fr/media/a_week_at_taize_2007.flv|largeur=340|hauteur=270>

au lieu de

<flv|url=http://s179568725.onlinehome.fr/media/a_week_at_taize_2007.flv;

Enlever le "http://" du paramètre pour le mettre en dur dans le modèle résout le prob.

Mais je ne sais pas si c'est un bug qu'il faut signaler ?

En tout cas un paramètre
  >url=Allemagne — Wikipédia
est donner en exemple sur Utiliser les modèles - SPIP et cela ne marche pas.

Paolo

C’est gênant de ne pas pouvoir saisir d’url dans les paramètres de modèles, ce n’est pas forcément que http, tu peux déjà avoir https

Pour pas que ce soit intrusif ce traitement devrait être fait en dernier non ?

a+

Malheureusement ce changement à inc/texte.php qui résout le problème
des liens suivants des ancres fait que les vidéos ne marchent plus.

Un raccourci sur la page http://new.taize.fr/fr_article4769.html
<flv|url=http://s179568725.onlinehome.fr/media/une_semaine_a_taize.flv>

Corrigé par [12323], et complété d’un test automatique :
http://zone.spip.org/trac/spip-zone/changeset/22044

2008/8/11 Paolo <paolo2@taize.fr>

Fil wrote:

Plus exactement c’est la partie « <[^<>]*>| » de la regexp ligne 1261 qui embrasse trop.

Mon analyse était fausse, cette partie était indispensable pour éviter les urls dans les balises (par ex. <flv|url=http:…> ; mais c’est la reconnaissance des liens, un cran auparavant, qui ne repérait pas les liens « ancre ».

– Fil

C’etait au départ un ajout pour les forums seuls qui a été généralisé. Mais là ou cela etait simple pour les forums, cela va nous générer un nombre de bugs important dans les articles à cause de tous les cas tordus d’utilisation des url que l’on imagine pas.
Je propose de revenir au cas initial : convertir les url en lien dans les forums uniquement.

Je préfère qu’on conserve la même fonction propre() pour tous les objets ; par contre si ce filtre pose problème, on peut la basculer en plugin (ou lame de couteau suisse). Perso je crois qu’il marche, il n’y a eu qu’un seul bug remonté depuis son introduction (le bug qui a suivi venait d’une mauvaise correction du premier).

– Fil

Salut,

Si j'avais remarqué que spip 2 faisait les liens automatiques (chouette) mais depuis la version beta d'hier (peut etre avant) le lien est oublié le code retourné contient bien <a> </a> mais pas de lien, ni de texte :

Pour le public :
une url de type http://toto.com est traduite de la façon suivante :
<a href="" rel="nofollow"></a>

et pour le flv cité dans les messages précédents, j'obtiens ceci :
<flv|url=><a href="" rel="nofollow"></a>&gt;</flv|url=>

Et le phénomène se produit aussi dans le privé.

Est ce que chez vous c'est pareil ?

Merci

Fil a écrit :

Phil a écrit :

et pour le flv cité dans les messages précédents, j'obtiens ceci :
<flv|url=><a href="" rel="nofollow"></a>&gt;</flv|url=>

Ne pas tenir compte je n'ai pas le modele mediaplayer

<flv|url=><a href="" rel="nofollow"></a>&gt;</flv|url=>

Ne pas tenir compte je n'ai pas le modele mediaplayer

par contre oui
je confirme

- http://www.toto.com
- http://toto.com
- https://toto.com
- https://www.toto.com
- [->http://www.toto.com]
- [->http://toto.com ]
- [->https://toto.com ]
- [->https://www.toto.com ]

Les 4 permiers ne font pas ce qu'il faut en 12323 sur http://demo.spip.org/dev

Ben. . a écrit :

- http://www.toto.com
- http://toto.com
- https://toto.com
- https://www.toto.com
- [->http://www.toto.com]
- [->http://toto.com ]
- [->https://toto.com ]
- [->https://www.toto.com ]

Les 4 permiers ne font pas ce qu'il faut en 12323 sur http://demo.spip.org/dev

www.titi.com ne fonctionne pas non plus.

Sur une version beta $spip_version_code = 12208 ca fonctionnait sauf en https alors j'ai un peu melanger les 2 !
(mais je ne sais pas si ca resout le probleme de url=http

function autoliens_callback($r) {
  if (strlen($l = $r[1])) {
      
    // reperer le protocole
    $protocol = 'http';
    if (preg_match(',^((https?):/*),S', $l, $m)) {
      $l = substr($l, strlen($m[1]));
      $protocol = $m[2];
    }
    
    if (preg_match(
    '/^(?:[^\W_]((?:[^\W_]|-){0,61}[^\W_])?\.)+[a-zA-Z]{2,6}\b/S', $l)) {
      $l = inserer_attribut(expanser_liens('[->'.$protocol.'://'.$l.']'),
        'rel', 'nofollow');
      // si le texte ne contenait pas le 'http:’ on le supprime aussi
      if (!$m)
        $l = str_replace('>http://', '>', $l);
      return $l;
    }
  }
  return $r[0];
}

Ca ne regle pas non plus l histoire de la ponctuation a la fin des url...

desolé.

Phil a écrit :

Corrigé en [12324]