2 // PukiWiki - Yet another WikiWikiWeb clone.
5 // 2003-2018 PukiWiki Development Team
6 // 2002 Katsumi Saito <katsumi@jo1upk.ymt.prug.or.jp>
10 // Allow specifying back link by page name and anchor, or
11 // by relative or site-abusolute path
12 define('PLUGIN_BACK_ALLOW_PAGELINK', PKWK_SAFE_MODE); // FALSE(Compat), TRUE
14 // Allow JavaScript (Compat)
15 define('PLUGIN_BACK_ALLOW_JAVASCRIPT', TRUE); // TRUE(Compat), FALSE
18 define('PLUGIN_BACK_USAGE', '#back([text],[center|left|right][,0(no hr)[,Page-or-URI-to-back]])');
19 function plugin_back_convert()
21 global $_msg_back_word, $script;
23 if (func_num_args() > 4) return PLUGIN_BACK_USAGE;
24 list($word, $align, $hr, $href) = array_pad(func_get_args(), 4, '');
27 $word = ($word == '') ? $_msg_back_word : htmlsc($word);
29 $align = strtolower(trim($align));
31 case '' : $align = 'center';
33 case 'center': /*FALLTHROUGH*/
34 case 'left' : /*FALLTHROUGH*/
36 default : return PLUGIN_BACK_USAGE;
39 $hr = (trim($hr) != '0') ? '<hr class="full_hr" />' . "\n" : '';
44 if (PLUGIN_BACK_ALLOW_PAGELINK) {
46 $href = htmlsc($href);
48 $refer = isset($vars['page']) ? $vars['page'] : '';
49 $array = anchor_explode($href);
50 $page = get_fullname($array[0], $refer);
51 if (! is_pagename($page)) {
52 return PLUGIN_BACK_USAGE;
54 $anchor = ($array[1] != '') ? '#' . rawurlencode($array[1]) : '';
55 $href = get_page_uri($page) . $anchor;
56 $link = is_page($page);
60 $href = htmlsc($href);
62 return PLUGIN_BACK_USAGE . ': Set a page name or an URI';
66 if (! PLUGIN_BACK_ALLOW_JAVASCRIPT)
67 return PLUGIN_BACK_USAGE . ': Set a page name or an URI';
68 $href = 'javascript:history.go(-1)';
73 return $hr . '<div style="text-align:' . $align . '">' .
74 '[ <a href="' . $href . '">' . $word . '</a> ]</div>' . "\n";
77 return $hr . '<div style="text-align:' . $align . '">' .
78 '[ <span class="noexists">' . $word . '<a href="' . $href .
79 '">?</a></span> ]</div>' . "\n";