2 // PukiWiki - Yet another WikiWikiWeb clone
5 // 2004-2018 PukiWiki Development Team
6 // 2003 reimy (Some bug fix)
7 // 2003 t.m (Migrate to 1.3)
8 // 2003 Nibun-no-ni (Originally written for PukiWiki 1.4.x)
9 // License: GPL v2 or (at your option) any later version
11 // 'topicpath' plugin for PukiWiki
13 // Show a link to $defaultpage or not
14 define('PLUGIN_TOPICPATH_TOP_DISPLAY', 1);
16 // Label for $defaultpage
17 define('PLUGIN_TOPICPATH_TOP_LABEL', 'Top');
19 // Separetor / of / topic / path
20 define('PLUGIN_TOPICPATH_TOP_SEPARATOR', '<span class="topicpath-slash">/</span>');
22 // Show the page itself or not
23 define('PLUGIN_TOPICPATH_THIS_PAGE_DISPLAY', 1);
25 // If PLUGIN_TOPICPATH_THIS_PAGE_DISPLAY, add a link to itself
26 define('PLUGIN_TOPICPATH_THIS_PAGE_LINK', 0);
28 function plugin_topicpath_convert()
30 return '<div>' . plugin_topicpath_inline() . '</div>';
33 function plugin_topicpath_parent_links($page)
35 $parts = explode('/', $page);
37 for ($i = 0, $pos = 0; $pos = strpos($page, '/', $i); $i = $pos + 1) {
38 $p = substr($page, 0, $pos);
41 'leaf' => substr($p, $i),
42 'uri' => get_page_uri($p),
48 function plugin_topicpath_inline()
50 global $vars, $defaultpage;
51 $page = isset($vars['page']) ? $vars['page'] : '';
52 if ($page == '' || $page == $defaultpage) return '';
53 $parents = plugin_topicpath_parent_links($page);
54 $topic_path = array();
55 foreach ($parents as $p) {
56 if (PKWK_READONLY && !is_page($p['page'])) {
58 $topic_path[] = htmlsc($p['leaf']);
60 // Page exists or not exists
61 $topic_path[] = '<a href="' . $p['uri'] . '">' .
66 if (PLUGIN_TOPICPATH_THIS_PAGE_DISPLAY) {
67 $leaf_name = preg_replace('#^.*/#', '', $page);
68 if (PLUGIN_TOPICPATH_THIS_PAGE_LINK) {
69 $topic_path[] = '<a href="' . get_page_uri($page) . '">' .
72 $topic_path[] = htmlsc($leaf_name);
75 $s = join(PLUGIN_TOPICPATH_TOP_SEPARATOR, $topic_path);
76 if (PLUGIN_TOPICPATH_TOP_DISPLAY) {
77 $s = '<span class="topicpath-top">' .
78 make_pagelink($defaultpage, PLUGIN_TOPICPATH_TOP_LABEL) .
79 PLUGIN_TOPICPATH_TOP_SEPARATOR . '</span>' . $s;