Les archives de FluxBB.fr
Vous n'êtes pas identifié(e).
Voila, je veux ouvrir les liens pointant vers l'extérieur de mon domaine dans une nouvelle fenêtre.
Contrairement à ceux de mon domaine qui eux doivent s'ouvrir dans la même fenêtre.
J'ai modifié un peux le parser de la facon suivante:
dans la fonction function handle_url_tag($url, $link = '') que j'ai modifié comme ceci:
function handle_url_tag($url, $link = '')
{
global $pun_user;
$full_url = str_replace(array(' ', '\'', '`'), array('%20', '', ''), $url);
if (strpos($url, 'www.') === 0) // If it starts with www, we add http://
$full_url = 'http://'.$full_url;
else if (strpos($url, 'ftp.') === 0) // Else if it starts with ftp, we add ftp://
$full_url = 'ftp://'.$full_url;
else if (!preg_match('#^([a-z0-9]{3,6})://#', $url, $bah)) // Else if it doesn't start with abcdef://, we add http://
$full_url = 'http://'.$full_url;
// Ok, not very pretty :-)
$link = ($link == '' || $link == $url) ? ((strlen($url) > 55) ? substr($url, 0 , 39).' … '.substr($url, -10) : $url) : stripslashes($link);
if (stristr($url, "anges-dechus.info") === false)
{
return '<a href="'.$full_url.'" onclick="window.open(this.href); return false;">'.$link.'</a>';
}
else
{
return '<a href="'.$full_url.'">'.$link.'</a>';
}
}Le problème c'est qu'un lien externe est bien ouvert dans une nouvelle fenêtre, mais aussi dans la fenêtre active.
Pourtant le code généré à l'air correcte.
<div class="postmsg">
<p>Teste d'un <a href="http://www.exemple.com" onclick="window.open(this.href); return false;">lien</a> externe.<br />Teste d'un <a href="http://www.anges-dechus.info">lien</a> interne.<br /><br /><em>ne fonctionne pas avec Internet Explorer</em></p>
</div>Vous pouvez comprendre ce que je veux dire ici : http://www.anges-dechus.info/punbb/view … 7041#p7041
Dernière modification par Xarkam (22-03-2006 13:30:24)
Hors ligne
euh ... non c'est bon pour moi (IE et FF)
Hors ligne
Étrange alors, moi sous linux ca ouvre les lien externe dans une nouvelle fenetre et la fenetre d'origine.
Dernière modification par Xarkam (22-03-2006 14:24:30)
Hors ligne
Bon ca fonctionne, c'est qu'une extention dans mon firefox met le dawa 
Sinon je me demandais si avec PHP_SELF sa fonctionnerait pour trouver le nom de domaine en lieu et place de mon "anges-dechus.info"
Hors ligne
Bon ca à l'air de fonctionner. Si quelqu'un pouvais tester pour me confirmer la chose que je publie le mod sur punbb.org.
Hors ligne
Voici le code exact et qui semble fonctionner dynamiquement.
Fichier à modifier: parser.php
rechercher:
function handle_url_tag($url, $link = '')
{
global $pun_user;
$full_url = str_replace(array(' ', '\'', '`'), array('%20', '', ''), $url);
if (strpos($url, 'www.') === 0) // If it starts with www, we add http://
$full_url = 'http://'.$full_url;
else if (strpos($url, 'ftp.') === 0) // Else if it starts with ftp, we add ftp://
$full_url = 'ftp://'.$full_url;
else if (!preg_match('#^([a-z0-9]{3,6})://#', $url, $bah)) // Else if it doesn't start with abcdef://, we add http://
$full_url = 'http://'.$full_url;
// Ok, not very pretty :-)
$link = ($link == '' || $link == $url) ? ((strlen($url) > 55) ? substr($url, 0 , 39).' … '.substr($url, -10) : $url) : stripslashes($link);
return '<a href="'.$full_url.'">'.$link.'</a>';
}remplacer par:
function handle_url_tag($url, $link = '')
{
global $pun_user;
$full_url = str_replace(array(' ', '\'', '`'), array('%20', '', ''), $url);
if (strpos($url, 'www.') === 0) // If it starts with www, we add http://
$full_url = 'http://'.$full_url;
else if (strpos($url, 'ftp.') === 0) // Else if it starts with ftp, we add ftp://
$full_url = 'ftp://'.$full_url;
else if (!preg_match('#^([a-z0-9]{3,6})://#', $url, $bah)) // Else if it doesn't start with abcdef://, we add http://
$full_url = 'http://'.$full_url;
// Ok, not very pretty :-)
$link = ($link == '' || $link == $url) ? ((strlen($url) > 55) ? substr($url, 0 , 39).' … '.substr($url, -10) : $url) : stripslashes($link);
//return '<a href="'.$full_url.'">'.$link.'</a>';
if (stristr($url, $_SERVER["SERVER_NAME"]) === false)
{
return '<a href="'.$full_url.'" onclick="window.open(this.href); return false;">'.$link.'</a>';
}
else
{
return '<a href="'.$full_url.'">'.$link.'</a>';
}
}Dernière modification par Xarkam (04-05-2006 16:05:31)
Hors ligne
Chez moi ça marche pas, ça m'agasse, j'ai tout essayé, modifier le parser, modifier aussi viewtopic et aucun resultat >_<
Ca ne fonctionne toujours pas ?
Hors ligne
Je remonte le topic, j'ai essayé vos codes, aucun ne marche pour moi 
Hors ligne
oh oui certainement mais il faut faire quelques tests qui engendrent "un coûts"
je préfère ma solution CSS même si elle ne fonctionne pas sous IE
Mika qu'est-ce que ça fait ? rien ?
Hors ligne
Mika qu'est-ce que ça fait ? rien ?
Tout à fait :'(
Hors ligne
remplace $_SERVER["SERVER_NAME"] par $pun_config['base_url'] (ou un truc du genre à vérifier dans le fichier cache config)
Hors ligne
pourquoi utiliser un code javascript ? l'option target="_blank" permet la meme fonctionalité et tu es sur que ça ne s'ouvrira pas dans la fenetre d'origine. 
Hors ligne
Il veut que le lien s'ouvre dans une nouvelle fenetre automatiquement SI il ne pointe pas vers son domaine, si il pointe vers l'extérieur donc (perspicace
)
Fallen Galaxy - http://fallengalaxy.com
Styles pour punBB - FallenCraft - BlueGalaxy
Hors ligne
oui c'est que j'avais compris 
Ma question est pourquoi :
return '<a href="'.$full_url.'" onclick="window.open(this.href); return false;">'.$link.'</a>';et pas
return '<a href="'.$full_url.'" target="_blank">'.$link.'</a>';?
Hors ligne
parce que PunBB est déclaré dans la variante strict de XHTML 1.0 et que l'attribut target n'est autorisé que dans les variantes transitional
ceci étant nous avons déjà débatu du sujet et ma conclusion est simple : ne mettez ni l'une ni l'autre des solutions, les utilisateurs n'ont pas à être obligé, laissez leur le choix d'ouvrir ou non une nouvelle fenêtre si ils le veulent comme ils le veulent quand il le veulent
Hors ligne
(Bon, j'avais commencé alors tant pis si vin100 a déjà répondu
..)
Parce que ça permet de garder une certaine conformitée, même si en en fait fait les recommendations du w3c de laisser l'utilisateur choisir la fenêtre dans laquelle va s'ouvrir le lien ne sont pas respectées..
=> Plugins | Modifications | Liens utiles <=
.._ -Pandark- _..
Serial Dreamer
Hors ligne
voilà l'astuce du javascript c'est un contournement de la norme, ça passe au validateur mais ça reste non conforme
soit on change la déclaration de type pour faire du transitional (ce qui est à mon avis très con) soit on laisse tel quel (ce qui est à mon avis la meilleure chose à faire)
Hors ligne
Merci 
Hors ligne
remplace $_SERVER["SERVER_NAME"] par $pun_config['base_url'] (ou un truc du genre à vérifier dans le fichier cache config)
Erf j'ai pas trouver ton $_SERVER["SERVER_NAME"]
Hors ligne
tu as mis quoi comme code ?
Hors ligne
function handle_img_tag($url, $is_signature = false)
{
global $lang_common, $pun_config, $pun_user;
$img_tag = '<a href="'.$url.'"><'.$lang_common['Image link'].'></a>';
if ($is_signature && $pun_user['show_img_sig'] != '0')
$img_tag = '<img class="sigimage" src="'.$url.'" alt="'.htmlspecialchars($url).'" />';
else if (!$is_signature && $pun_user['show_img'] != '0')
$img_tag = '<img class="postimg" src="'.$url.'" alt="'.htmlspecialchars($url).'" />';
return $img_tag;
}Hors ligne
ah ouais ? t'es sûr ? 
ce code c'est le code des balises IMG alors je ne vois pas trop ce que cela vient faire là
Hors ligne
Hors ligne
le premier post :
function handle_url_tag($url, $link = '')
{
global $pun_user;
$full_url = str_replace(array(' ', '\'', '`'), array('%20', '', ''), $url);
if (strpos($url, 'www.') === 0) // If it starts with www, we add http://
$full_url = 'http://'.$full_url;
else if (strpos($url, 'ftp.') === 0) // Else if it starts with ftp, we add ftp://
$full_url = 'ftp://'.$full_url;
else if (!preg_match('#^([a-z0-9]{3,6})://#', $url, $bah)) // Else if it doesn't start with abcdef://, we add http://
$full_url = 'http://'.$full_url;
// Ok, not very pretty :-)
$link = ($link == '' || $link == $url) ? ((strlen($url) > 55) ? substr($url, 0 , 39).' … '.substr($url, -10) : $url) : stripslashes($link);
if (stristr($url, "anges-dechus.info") === false)
{
return '<a href="'.$full_url.'" onclick="window.open(this.href); return false;">'.$link.'</a>';
}
else
{
return '<a href="'.$full_url.'">'.$link.'</a>';
}
}ton post :
function handle_img_tag($url, $is_signature = false)
{
global $lang_common, $pun_config, $pun_user;
$img_tag = '<a href="'.$url.'"><'.$lang_common['Image link'].'></a>';
if ($is_signature && $pun_user['show_img_sig'] != '0')
$img_tag = '<img class="sigimage" src="'.$url.'" alt="'.htmlspecialchars($url).'" />';
else if (!$is_signature && $pun_user['show_img'] != '0')
$img_tag = '<img class="postimg" src="'.$url.'" alt="'.htmlspecialchars($url).'" />';
return $img_tag;
}tu m'aurait dit le premier post dès le début sut été plus simple
essai plutôt ça :
function handle_url_tag($url, $link = '')
{
global $pun_user, $pun_config;
$full_url = str_replace(array(' ', '\'', '`'), array('%20', '', ''), $url);
if (strpos($url, 'www.') === 0) // If it starts with www, we add http://
$full_url = 'http://'.$full_url;
else if (strpos($url, 'ftp.') === 0) // Else if it starts with ftp, we add ftp://
$full_url = 'ftp://'.$full_url;
else if (!preg_match('#^([a-z0-9]{3,6})://#', $url, $bah)) // Else if it doesn't start with abcdef://, we add http://
$full_url = 'http://'.$full_url;
// Ok, not very pretty :-)
$link = ($link == '' || $link == $url) ? ((strlen($url) > 55) ? substr($url, 0 , 39).' … '.substr($url, -10) : $url) : stripslashes($link);
//return '<a href="'.$full_url.'">'.$link.'</a>';
if (stristr($url, $pun_config['o_base_url']))
return '<a href="'.$full_url.'">'.$link.'</a>';
else
return '<a href="'.$full_url.'" onclick="window.open(this.href); return false;">'.$link.'</a>';
}Hors ligne