OSDN Git Service

Correct credits only
[pukiwiki/pukiwiki.git] / plugin / back.inc.php
1 <?php
2 // $Id: back.inc.php,v 1.9 2005/06/20 14:57:34 henoheno Exp $
3 // Copyright (C)
4 //   2003-2004 PukiWiki Developers Team
5 //   2002      Katsumi Saito <katsumi@jo1upk.ymt.prug.or.jp>
6 //
7 // back plugin
8
9 // Allow specifying back link by page name and anchor, or
10 // by relative or site-abusolute path
11 define('PLUGIN_BACK_ALLOW_PAGELINK', PKWK_SAFE_MODE); // FALSE(Compat), TRUE
12
13 // Allow JavaScript (Compat)
14 define('PLUGIN_BACK_ALLOW_JAVASCRIPT', TRUE); // TRUE(Compat), FALSE, PKWK_ALLOW_JAVASCRIPT
15
16 // ----
17 define('PLUGIN_BACK_USAGE', '#back([text],[center|left|right][,0(no hr)[,Page-or-URI-to-back]])');
18 function plugin_back_convert()
19 {
20         global $_msg_back_word, $script;
21
22         if (func_num_args() > 4) return PLUGIN_BACK_USAGE;
23         list($word, $align, $hr, $href) = array_pad(func_get_args(), 4, '');
24
25         $word = trim($word);
26         $word = ($word == '') ? $_msg_back_word : htmlspecialchars($word);
27
28         $align = strtolower(trim($align));
29         switch($align){
30         case ''      : $align = 'center';
31                        /*FALLTHROUGH*/
32         case 'center': /*FALLTHROUGH*/
33         case 'left'  : /*FALLTHROUGH*/
34         case 'right' : break;
35         default      : return PLUGIN_BACK_USAGE;
36         }
37
38         $hr = (trim($hr) != '0') ? '<hr class="full_hr" />' . "\n" : '';
39
40         $link = TRUE;
41         $href = trim($href);
42         if ($href != '') {
43                 if (PLUGIN_BACK_ALLOW_PAGELINK) {
44                         if (is_url($href)) {
45                                 $href = rawurlencode($href);
46                         } else {
47                                 $array = anchor_explode($href);
48                                 $array[0] = rawurlencode($array[0]);
49                                 $array[1] = ($array[1] != '') ? '#' . rawurlencode($array[1]) : '';
50                                 $href = $script . '?' . $array[0] .  $array[1];
51                                 $link = is_page($array[0]);
52                         }
53                 } else {
54                         $href = rawurlencode($href);
55                 }
56         } else {
57                 if (! PLUGIN_BACK_ALLOW_JAVASCRIPT)
58                         return PLUGIN_BACK_USAGE . ': Set a page name or an URI';
59                 $href  = 'javascript:history.go(-1)';
60         }
61
62         if($link){
63                 // Normal link
64                 return $hr . '<div style="text-align:' . $align . '">' .
65                         '[ <a href="' . $href . '">' . $word . '</a> ]</div>' . "\n";
66         } else {
67                 // Dangling link
68                 return $hr . '<div style="text-align:' . $align . '">' .
69                         '[ <span class="noexists">' . $word . '<a href="' . $href .
70                         '">?</a></span> ]</div>' . "\n";
71         }
72 }
73 ?>