diff options
-rw-r--r-- | _test/tests/inc/parser/renderer_resolveinterwiki.test.php | 23 | ||||
-rw-r--r-- | conf/interwiki.conf | 2 | ||||
-rw-r--r-- | inc/common.php | 4 | ||||
-rw-r--r-- | inc/parser/renderer.php | 5 | ||||
-rw-r--r-- | inc/parser/xhtml.php | 8 |
5 files changed, 19 insertions, 23 deletions
diff --git a/_test/tests/inc/parser/renderer_resolveinterwiki.test.php b/_test/tests/inc/parser/renderer_resolveinterwiki.test.php index 5ce54fac6..f17838f92 100644 --- a/_test/tests/inc/parser/renderer_resolveinterwiki.test.php +++ b/_test/tests/inc/parser/renderer_resolveinterwiki.test.php @@ -7,29 +7,28 @@ require_once DOKU_INC . 'inc/parser/renderer.php'; */ class Test_resolveInterwiki extends PHPUnit_Framework_TestCase { - function testDefaults() { $Renderer = new Doku_Renderer(); $Renderer->interwiki = getInterwiki(); $Renderer->interwiki['scheme'] = '{SCHEME}://example.com'; - $Renderer->interwiki['slash'] = '/test'; - $Renderer->interwiki['onlytext'] = 'onlytext'; - - //var_dump($Renderer->interwiki); + $Renderer->interwiki['withslash'] = '/test'; + $Renderer->interwiki['onlytext'] = 'onlytext{NAME}'; //with {URL} double urlencoded + $Renderer->interwiki['withquery'] = 'anyns:{NAME}?do=edit'; $tests = array( // shortcut, reference and expected - array('wp', 'foo @+%/', 'http://en.wikipedia.org/wiki/foo @+%/'), - array('amazon', 'foo @+%/', 'http://www.amazon.com/exec/obidos/ASIN/foo%20%40%2B%25%2F/splitbrain-20/'), - array('doku', 'foo @+%/', 'http://www.dokuwiki.org/foo%20%40%2B%25%2F'), + array('wp', 'foo @+%/#txt', 'http://en.wikipedia.org/wiki/foo @+%/#txt'), + array('amazon', 'foo @+%/#txt', 'http://www.amazon.com/exec/obidos/ASIN/foo%20%40%2B%25%2F/splitbrain-20/#txt'), + array('doku', 'foo @+%/#txt', 'http://www.dokuwiki.org/foo%20%40%2B%25%2F#txt'), //ToDo: Check needed, is double slash in path desired array('coral', 'http://example.com:83/path/naar/?query=foo%20%40%2B%25%2F', 'http://example.com.83.nyud.net:8090//path/naar/?query=foo%20%40%2B%25%2F'), - array('scheme', 'ftp://foo @+%/', 'ftp://example.com'), + array('scheme', 'ftp://foo @+%/#txt', 'ftp://example.com#txt'), //relative url - array('slash', 'foo @+%/', '/testfoo%20%40%2B%25%2F'), + array('withslash', 'foo @+%/#txt', '/testfoo%20%40%2B%25%2F#txt'), //dokuwiki id's - array('onlytext', 'foo @+%/', 'onlytextfoo%20%40%2B%25%2F'), - array('user', 'foo @+%/', 'wiki:users:foo%20%40%2B%25%2F') + array('onlytext', 'foo @+%#txt', '/tmp/doku.php?id=onlytextfoo%20%40%2B%25#txt'), + array('user', 'foo @+%#txt', '/tmp/doku.php?id=wiki:users:foo%20%40%2B%25#txt'), + array('withquery', 'foo @+%#txt', '/tmp/doku.php?id=anyns:foo%20%40%2B%25&do=edit#txt') ); foreach($tests as $test) { diff --git a/conf/interwiki.conf b/conf/interwiki.conf index 68367d0bd..2d83043ef 100644 --- a/conf/interwiki.conf +++ b/conf/interwiki.conf @@ -30,7 +30,7 @@ sb http://www.splitbrain.org/go/ skype skype:{NAME} google.de http://www.google.de/search?q= go http://www.google.com/search?q={URL}&btnI=lucky -user wiki:users:{URL} +user wiki:users:{NAME} # To support VoIP/SIP links callto callto://{NAME} diff --git a/inc/common.php b/inc/common.php index 22e57b2c5..e991375f5 100644 --- a/inc/common.php +++ b/inc/common.php @@ -1497,9 +1497,7 @@ function userinfo($username = null) { $xhtml_renderer->interwiki = getInterwiki(); } $shortcut = 'user'; - $url = $xhtml_renderer->_resolveInterWiki($shortcut, $username); - list($url, $urlparam) = explode('?', $url, 2); - $data['link']['url'] = wl($url, $urlparam); + $data['link']['url'] = $xhtml_renderer->_resolveInterWiki($shortcut, $username); } } else { $data['link'] = false; diff --git a/inc/parser/renderer.php b/inc/parser/renderer.php index e3401fd48..66a106b11 100644 --- a/inc/parser/renderer.php +++ b/inc/parser/renderer.php @@ -321,6 +321,11 @@ class Doku_Renderer extends DokuWiki_Plugin { //default $url = $url.rawurlencode($reference); } + //url without slashes is handled as a pageid + if(strpos($url,'/') === false) { + list($url, $urlparam) = explode('?', $url, 2); + $url = wl($url, $urlparam); + } if($hash) $url .= '#'.rawurlencode($hash); return $url; diff --git a/inc/parser/xhtml.php b/inc/parser/xhtml.php index 957dd992b..f0a507721 100644 --- a/inc/parser/xhtml.php +++ b/inc/parser/xhtml.php @@ -699,12 +699,6 @@ class Doku_Renderer_xhtml extends Doku_Renderer { //get interwiki URL $url = $this->_resolveInterWiki($wikiName,$wikiUri); - if(strpos($url,'/') === false) { - list($url, $urlparam) = explode('?', $url, 2); - $url = wl($url, $urlparam); - $link['target'] = $conf['target']['wiki']; - } - if ( !$isImage ) { $class = preg_replace('/[^_\-a-z0-9]+/i','_',$wikiName); $link['class'] = "interwiki iw_$class"; @@ -713,7 +707,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer { } //do we stay at the same server? Use local target - if( strpos($url,DOKU_URL) === 0 ){ + if( strpos($url,DOKU_URL) === 0 OR strpos($url,DOKU_BASE) === 0){ $link['target'] = $conf['target']['wiki']; } |