On 11 March at 13:47, Alex Wang wrote: > I start a new DokuWiki installation, on the home page I create a link > [[ns1:]]. This link will create a page called ns1 under the root > namespace. Then in this ns1 page, I need to use [[ns1:page1]] to create > "page1" under ns1. > > Doesn't this seem counter-intuitive? I would have thought the ns1 page > itself to be logically under the ns1 namespace already. That's because the internal link [[ns1:]] gets trimmed to [[ns1]] by the parser and thus the page name is ns1.txt in the root namespace. How could dokuwiki choose the name of the page if the [[ns1:]] link was not cleaned up? There is no default page name for namespace (except for the root namespace which has $conf['start']). The attached patch changes this behavior of dokuwiki defining $conf['start'] as the default page for any namespace and not trimming [[ns1:]] alike links (which get expanded to [[ns1:$conf['start']]]). > So I go and instead create the link [[ns1:intro]] as the "home" page for > that namespace. Then on the intro page, I can just use [[page1]] to > create the ns1:page1 page. But...now if I use the "you are here" > breadcrumbs, it will show "home >> ns1 >> intro" with the "ns1" in red. ns1 is probably red because ns1.txt page in the root namespace does not exist. -- gb
--- ../../current/inc/pageutils.php Fri Mar 3 09:56:13 2006 +++ pageutils.php Fri Feb 24 23:07:20 2006 @@ -23,6 +23,14 @@ $id = $_REQUEST[$param]; + //globalstart + if($conf['globalstart']) { + if((substr($_REQUEST['id'], -1) == "/") || (substr($_REQUEST['id'], -1) == ":")) { + $id .= $conf['start']; + } + } + + //construct page id from request URI if(empty($id) && $conf['userewrite'] == 2){ //get the script URL @@ -99,7 +107,11 @@ //clean up $id = preg_replace($sepcharpat,$sepchar,$id); $id = preg_replace('#:+#',':',$id); - $id = trim($id,':._-'); + if($conf['globalstart']) { + $id = trim($id,'._-'); + } else { + $id = trim($id,':._-'); + } $id = preg_replace('#:[:\._\-]+#',':',$id); return($id);