¿Nuevo usuario?
Puedes registrarte aquí
 
       
Menú principal
 
 Navegación
Buscar
dpForo
dpFAQ
dpManuales
dpDescargas
dpThemes
Noticias por Temas
Recomiéndanos
Enlaces
Créditos
dzStaffStatus
Miembros:  Administradores
No Conectado  el_cuervo  
No Conectado  Dixso  
Miembros:  Colaboradores
No Conectado  AnyKiller  
No Conectado  nestormateo  
No Conectado  docser  
Miembros:  Moderadores
No Conectado  cardiru  
No Conectado  javiermisol  
Miembros:  Traductores
No Conectado  gnrx  
Miembros:  Miembros:
Ultimo:  Nuevos Hoy: 7
Ultimo:  Nuevos Ayer: 12
Ultimo:  Total: 71581
Ultimo:  Ultimo:
alvaro_
Miembros:  Conectados
Miembros:  Miembros: 2
Invitados:  Invitados: 51
Total:  Total: 53
Miembros:  Miembros Online
Conectado  Fixline  
Conectado  rjcas  
Sponsor
dp-Tools
 Generador de Menús
 Pop-Up Maker
 Generador de Bloques
 Generador de Módulos
Enlázanos


Texto del enlace:


Otros Banners:



Theme creado por
dev-postnuke.com

 Foro dev-postnuke.com
  Desarrollo dev-postnuke :: Peticiones
  pn_bbcode, ventana nueva si la URL es externa!

Bienvenido invitado

Moderado por: el_cuervo, Dixso, AnyKiller, cardiru, javiermisol, MrGer << Tema anterior   Tema siguiente >>
Imprimir tema
Autor Tema: pn_bbcode, ventana nueva si la URL es externa!
vayaingenieros
Enviado: 23/08/2007 a las 18:08
Posteador de Bronce
Posteador de Bronce

avatar

Karma: 6 (26 Votos)

Registrado: 23/08/04
Mensajes: 366

Estado: Desconectado
Ultima visita: 24/11/08
Hola a todos.
Creo que estaría genial una modificación del código pn_bbcode para que diferencie si la URL que insertemos entre las etiquetas [url][/url] es externa o interna a nuestro dominio.

(El siguiente ejemplo simularía este mismo foro, es decir, Dev-Postnuke.com)

Ejemplo con URL interna:

[url=http://www.dev-postnuke.com]www.dev-postnuke.com[/url]

sería esto:

<a href="http://www.dev-postnuke.com">www.dev-postnuke.com</a>

Ejemplo con URL externa:

[url=http://www.microsoft.com]www.microsoft.com[/url]

sería esto:

<a href="http://www.microsoft.com" target="_blank">www.microsoft.com</a>


Bueno, espero que con este ejmplo práctico entiendan lo que quiero decir...

Esto es lo que hay en el fichero /modules/pn_bbcode/pnuserapi.php
(Primera parte)
Código
  1. // [url ]xxxx://www.phpbb.com[/url] code..
  2.     $message = preg_replace_callback(
  3.                 "#\[url\]([a-z]+?://){1}(.*?)\[/url\]#si",
  4.                 'linktest_callback_0',
  5.                 $message);
  6.  
  7.     // [url ]www.phpbb.com[/url] code.. (no xxxx:// prefix).
  8.     $message = preg_replace_callback(
  9.                 "#\[url\](.*?)\[/url\]#si",
  10.                 'linktest_callback_1',
  11.                 $message);
  12.  
  13.     // [url =xxxx://www.phpbb.com]phpBB[/url] code..
  14.     $message = preg_replace_callback(
  15.                 "#\[url=([a-z]+?://){1}(.*?)\](.*?)\[/url\]#si",
  16.                 'linktest_callback_2',
  17.                 $message);
  18.  
  19.     // [url =www.phpbb.com]phpBB[/url] code.. (no xxxx:// prefix).
  20.     $message = preg_replace_callback(
  21.                 "#\[url=(.*?)\](.*?)\[/url\]#si",
  22.                 'linktest_callback_3',
  23.                 $message);


(Segunda parte)
Código
  1. /**
  2. * linktest_callback_0
  3. *
  4. */
  5. function linktest_callback_0($matches)
  6. {
  7.     static $is_allowed;
  8.     static $modname;
  9.     static $our_url;
  10.  
  11.     if(!isset($is_allowed)) {
  12.         $modname = pnModGetName();
  13.         $our_url = pnGetBaseURL();
  14.         $is_allowed = pnSecAuthAction(0, 'pn_bbcode:' . $modname . ':Links' , '::', ACCESS_READ);
  15.     }
  16.     if( ($is_allowed==false) && (strpos($matches[1] . $matches[2], $our_url)===false) ) {
  17.         // not allowed to see links and link is not on our site
  18.         if(pnUserLoggedIn()) {
  19.             return  pnVarPrepForDisplay(_PNBBCODE_NOTALLOWEDTOSEEEXTERNALLINKS);
  20.         } else {
  21.             return '<a href="user.php" title="' . pnVarPrepForDisplay(_PNBBCODE_NOTALLOWEDTOSEEEXTERNALLINKS) . '">' . pnVarPrepForDisplay(_PNBBCODE_NOTALLOWEDTOSEEEXTERNALLINKS) . '</a>';
  22.         }
  23.     } else {
  24.         $displayurl = pn_bbcode_minimize_displayurl($matches[1] . $matches[2]);
  25.         return '<a href="' . $matches[1] . $matches[2] . '">' . $displayurl . '</a>';
  26.     }
  27. }
  28.  
  29. /**
  30. * linktest_callback_1
  31. *
  32. */
  33. function linktest_callback_1($matches)
  34. {
  35.     static $is_allowed;
  36.     static $modname;
  37.     static $our_url;
  38.  
  39.     if(!isset($is_allowed)) {
  40.         $modname = pnModGetName();
  41.         $our_url = pnGetBaseURL();
  42.         $is_allowed = pnSecAuthAction(0, 'pn_bbcode:' . $modname . ':Links' , '::', ACCESS_READ);
  43.     }
  44.     if( ($is_allowed==false) && (strpos('http://' . $matches[1], $our_url)===false) ) {
  45.         // not allowed to see links and link is not on our site
  46.         if(pnUserLoggedIn()) {
  47.             return  pnVarPrepForDisplay(_PNBBCODE_NOTALLOWEDTOSEEEXTERNALLINKS);
  48.         } else {
  49.             return '<a href="user.php" title="' . pnVarPrepForDisplay(_PNBBCODE_NOTALLOWEDTOSEEEXTERNALLINKS) . '">' . pnVarPrepForDisplay(_PNBBCODE_NOTALLOWEDTOSEEEXTERNALLINKS) . '</a>';
  50.         }
  51.     } else {
  52.         $displayurl = pn_bbcode_minimize_displayurl($matches[1]);
  53.         return '<a href="http://' . $matches[1] . '">' . $displayurl . '</a>';
  54.     }
  55. }
  56.  
  57. /**
  58. * linktest_callback_2
  59. *
  60. */
  61. function linktest_callback_2($matches)
  62. {
  63.     static $is_allowed;
  64.     static $modname;
  65.     static $our_url;
  66.  
  67.     if(!isset($is_allowed)) {
  68.         $modname = pnModGetName();
  69.         $our_url = pnGetBaseURL();
  70.         $is_allowed = pnSecAuthAction(0, 'pn_bbcode:' . $modname . ':Links' , '::', ACCESS_READ);
  71.     }
  72.  
  73.     if( (pnVarValidate($matches[3], 'url')==true) && ($is_allowed==false) && (strpos($matches[3], $our_url)===false) ) {
  74.         $displayurl = pnVarPrepForDisplay(_PNBBCODE_NOTALLOWEDTOSEEEXTERNALLINKS);
  75.     } else {
  76.         $displayurl = $matches[3];
  77.         $title = strip_tags($displayurl);
  78.     }
  79.     if( ($is_allowed==false) && (strpos($matches[1] . $matches[2], $our_url)===false) ) {
  80.         // not allowed to see links and link is not on our site
  81.         if(pnUserLoggedIn()) {
  82.             return  '<span title="' . pnVarPrepForDisplay(_PNBBCODE_NOTALLOWEDTOSEEEXTERNALLINKS) . '">' . $displayurl . '</span>';
  83.         } else {
  84.             return '<a href="user.php" title="' . pnVarPrepForDisplay(_PNBBCODE_NOTALLOWEDTOSEEEXTERNALLINKS) . '">' . $displayurl . '</a>';
  85.         }
  86.     } else {
  87.         return '<a href="' . $matches[1] . $matches[2] . '" title="' . $title . '">' . $displayurl . '</a>';
  88.     }
  89. }
  90.  
  91. /**
  92. * linktest_callback_3
  93. *
  94. */
  95. function linktest_callback_3($matches)
  96. {
  97.     static $is_allowed;
  98.     static $modname;
  99.     static $our_url;
  100.  
  101.     if(!isset($is_allowed)) {
  102.         $modname = pnModGetName();
  103.         $our_url = pnGetBaseURL();
  104.         $is_allowed = pnSecAuthAction(0, 'pn_bbcode:' . $modname . ':Links' , '::', ACCESS_READ);
  105.     }
  106.  
  107.     if(pnVarValidate($matches[2], 'url')==true) {
  108.         $displayurl = pnVarPrepForDisplay(_PNBBCODE_NOTALLOWEDTOSEEEXTERNALLINKS);
  109.     } else {
  110.         $displayurl = $matches[2];
  111.         $title = strip_tags($displayurl);
  112.     }
  113.     if( ($is_allowed==false) && (strpos('http://' . $matches[1], $our_url)===false) ) {
  114.         // not allowed to see links and link is not on our site
  115.         if(pnUserLoggedIn()) {
  116.             return '<span title="' . pnVarPrepForDisplay(_PNBBCODE_NOTALLOWEDTOSEEEXTERNALLINKS) . '"><strong>' . $displayurl . '</strong></span>';
  117.         } else {
  118.             return '<a href="user.php" title="' . pnVarPrepForDisplay(_PNBBCODE_NOTALLOWEDTOSEEEXTERNALLINKS) . '">' . $displayurl . '</a>';
  119.         }
  120.     } else {
  121.         return '<a href="http://' . $matches[1] . '" title="' . $title . '">' . $displayurl . '</a>';
  122.     }
  123. }


A ver si a alguien se le ocurre como hacer esto...
Un saludo, y gracias!


vayaingenieros Enviar MP WwW






Powered by pnForum Version 2.6

Inicio  |  dpFaq  |  dpManuales  |  dpDescargas  |  dpThemes  |  Contacta

Web site powered by PostNuke MySQL PHP Postnuke Spain PHP RSSPixel Add to Technorati Favorites

Todos los logos y marcas registradas en este sitio son propiedad de sus respectivos dueños. Los comentarios son propiedad de sus autores, el resto es de este sitio Web (c) 2003, que fue creado con PostNuke, un sistema portal Web escrito en PHP. PostNuke es Software Libre liberado bajo la licencia GNU/GPL.

Dev-CMS.com :: Amplía tus horizontes.

HOSPEDAJE Y DOMINIOS -- Tu Hosting
Alojamiento Web --- Registro de Dominios