Skip to content
Snippets Groups Projects
Commit 35a00f69 authored by Andreas Gohr's avatar Andreas Gohr
Browse files

Merge branch 'sidebar'

* sidebar:
  Improved sidebar inclusion
parents 578b2c23 e66d3e6d
No related branches found
No related tags found
No related merge requests found
<?php
class pageutils_findnearest_test extends DokuWikiTest {
function testNoSidebar() {
global $ID;
$ID = 'foo:bar:baz:test';
$sidebar = page_findnearest('sidebar');
$this->assertEquals(false, $sidebar);
}
function testExistingSidebars() {
global $ID;
saveWikiText('sidebar', 'topsidebar-test', '');
$ID = 'foo:bar:baz:test';
$sidebar = page_findnearest('sidebar');
$this->assertEquals('sidebar', $sidebar);
$ID = 'foo';
$sidebar = page_findnearest('sidebar');
$this->assertEquals('sidebar', $sidebar);
saveWikiText('foo:bar:sidebar', 'bottomsidebar-test', '');
$ID = 'foo:bar:baz:test';
$sidebar = page_findnearest('sidebar');
$this->assertEquals('foo:bar:sidebar', $sidebar);
$ID = 'foo:bar:test';
$sidebar = page_findnearest('sidebar');
$this->assertEquals('foo:bar:sidebar', $sidebar);
$ID = 'foo';
$sidebar = page_findnearest('sidebar');
$this->assertEquals('sidebar', $sidebar);
}
}
<?php
class template_sidebar_test extends DokuWikiTest {
function testNoSidebar() {
global $ID;
$ID = 'foo:bar:baz:test';
$sidebar = tpl_sidebar(false);
$this->assertEquals('',$sidebar);
}
function testExistingSidebars() {
global $ID;
saveWikiText('sidebar', 'topsidebar-test', '');
$ID = 'foo:bar:baz:test';
$sidebar = tpl_sidebar(false);
$this->assertTrue(strpos($sidebar, 'topsidebar-test') > 0);
$ID = 'foo';
$sidebar = tpl_sidebar(false);
$this->assertTrue(strpos($sidebar, 'topsidebar-test') > 0);
saveWikiText('foo:bar:sidebar', 'bottomsidebar-test', '');
$ID = 'foo:bar:baz:test';
$sidebar = tpl_sidebar(false);
$this->assertTrue(strpos($sidebar, 'bottomsidebar-test') > 0);
$ID = 'foo:bar:test';
$sidebar = tpl_sidebar(false);
$this->assertTrue(strpos($sidebar, 'bottomsidebar-test') > 0);
$ID = 'foo';
$sidebar = tpl_sidebar(false);
$this->assertTrue(strpos($sidebar, 'topsidebar-test') > 0);
}
}
......@@ -622,3 +622,27 @@ function utf8_decodeFN($file){
return urldecode($file);
}
/**
* Find a page in the current namespace (determined from $ID) or any
* higher namespace
*
* Used for sidebars, but can be used other stuff as well
*
* @todo add event hook
* @param string $page the pagename you're looking for
* @return string|false the full page id of the found page, false if any
*/
function page_findnearest($page){
global $ID;
$ns = $ID;
do {
$ns = getNS($ns);
$pageid = ltrim("$ns:$page",':');
if(page_exists($pageid)){
return $pageid;
}
} while($ns);
return false;
}
......@@ -1394,6 +1394,18 @@ function tpl_include_page($pageid,$print=true){
if(!$print) return $html;
echo $html;
return $html;
}
/**
* Include the sidebar, will check current namespaces first
*/
function tpl_sidebar($print=true){
global $conf;
$sidebar = page_findnearest($conf['sidebar']);
if($sidebar) return tpl_include_page($sidebar, $print);
return '';
}
/**
......
......@@ -10,7 +10,7 @@
// must be run from within DokuWiki
if (!defined('DOKU_INC')) die();
$showSidebar = $conf['sidebar'] && page_exists($conf['sidebar']) && ($ACT=='show');
$showSidebar = page_findnearest($conf['sidebar']) && ($ACT=='show');
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $conf['lang']?>"
......
......@@ -10,7 +10,7 @@
if (!defined('DOKU_INC')) die(); /* must be run from within DokuWiki */
$showSidebar = $conf['sidebar'] && page_exists($conf['sidebar']) && ($ACT=='show');
$showSidebar = page_findnearest($conf['sidebar']) && ($ACT=='show');
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $conf['lang'] ?>"
......@@ -41,7 +41,7 @@ $showSidebar = $conf['sidebar'] && page_exists($conf['sidebar']) && ($ACT=='show
<div class="content">
<?php tpl_flush() ?>
<?php tpl_includeFile('sidebarheader.html') ?>
<?php tpl_include_page($conf['sidebar']) ?>
<?php tpl_sidebar() ?>
<?php tpl_includeFile('sidebarfooter.html') ?>
</div>
</div></div><!-- /aside -->
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment