aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--_test/tests/inc/pageutils_resolve_id.test.php16
-rw-r--r--inc/pageutils.php2
2 files changed, 11 insertions, 7 deletions
diff --git a/_test/tests/inc/pageutils_resolve_id.test.php b/_test/tests/inc/pageutils_resolve_id.test.php
index 23a2405d4..661f3fe28 100644
--- a/_test/tests/inc/pageutils_resolve_id.test.php
+++ b/_test/tests/inc/pageutils_resolve_id.test.php
@@ -3,7 +3,7 @@
class init_resolve_id_test extends DokuWikiTest {
- function test1(){
+ function test(){
// we test multiple cases here
// format: $ns, $page, $output
$tests = array();
@@ -23,10 +23,14 @@ class init_resolve_id_test extends DokuWikiTest {
$tests[] = array('','..:page','page');
// relative upper in namespace
- $tests[] = array('lev1:lev2','..page','lev1:page');
- $tests[] = array('lev1:lev2','..:page','lev1:page');
- $tests[] = array('lev1:lev2','..:..:page','page');
- $tests[] = array('lev1:lev2','..:..:..:page','page');
+ $tests[] = array('lev1:lev2:lev3','..page','lev1:lev2:page');
+ $tests[] = array('lev1:lev2:lev3','..:page','lev1:lev2:page');
+ $tests[] = array('lev1:lev2:lev3','..:..page','lev1:page');
+ $tests[] = array('lev1:lev2:lev3','..:..:page','lev1:page');
+ $tests[] = array('lev1:lev2:lev3','..:..:..page','page');
+ $tests[] = array('lev1:lev2:lev3','..:..:..:page','page');
+ $tests[] = array('lev1:lev2:lev3','..:..:..:..page','page');
+ $tests[] = array('lev1:lev2:lev3','..:..:..:..:page','page');
// strange and broken ones
$tests[] = array('lev1:lev2','....:....:page','lev1:lev2:page');
@@ -35,7 +39,7 @@ class init_resolve_id_test extends DokuWikiTest {
$tests[] = array('lev1:lev2','..:..:lev3:..:page:....:...','page');
foreach($tests as $test){
- $this->assertEquals(resolve_id($test[0],$test[1]),$test[2]);
+ $this->assertEquals($test[2], resolve_id($test[0],$test[1]), $test[0].' >'.$test[1]);
}
}
diff --git a/inc/pageutils.php b/inc/pageutils.php
index 6bbfdb7cf..8540d227e 100644
--- a/inc/pageutils.php
+++ b/inc/pageutils.php
@@ -466,7 +466,7 @@ function resolve_id($ns,$id,$clean=true){
// relative stuff
if($id && $id[0] == '.'){
// normalize initial dots without a colon
- $id = preg_replace('/^(\.+)(?=[^:\.])/','\1:',$id);
+ $id = preg_replace('/^((\.+:)*)(\.+)(?=[^:\.])/','\1\3:',$id);
// prepend the current namespace
$id = $ns.':'.$id;