summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerrit Uitslag <klapinklapin@gmail.com>2014-02-15 11:11:15 +0100
committerGerrit Uitslag <klapinklapin@gmail.com>2014-02-15 11:11:15 +0100
commit2345e871e407dbece52f3181cd8b077f07cbb0c1 (patch)
tree96d4227cd8763a2147aed5cdf73d7cdbc1220d4d
parent2d6df7955d82d34f7a58b289fa04755c5ab9146e (diff)
downloadrpg-2345e871e407dbece52f3181cd8b077f07cbb0c1.tar.gz
rpg-2345e871e407dbece52f3181cd8b077f07cbb0c1.tar.bz2
wikilink creating refactored to _resolveinterwiki().
Added DOKU_BASE for local target
-rw-r--r--_test/tests/inc/parser/renderer_resolveinterwiki.test.php23
-rw-r--r--conf/interwiki.conf2
-rw-r--r--inc/common.php4
-rw-r--r--inc/parser/renderer.php5
-rw-r--r--inc/parser/xhtml.php8
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&amp;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}&amp;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'];
}