X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=plugin%2Fback.inc.php;h=76625e8341bc105470da41826b851b6d8a88f596;hb=0b74c719b1f4935da9688dad464207866b10b718;hp=201c720dcebba6b3207a4f324271be18f84bb786;hpb=db54803012d33536a32c6c48788c240dd1fb8cf3;p=pukiwiki%2Fpukiwiki.git diff --git a/plugin/back.inc.php b/plugin/back.inc.php index 201c720..76625e8 100644 --- a/plugin/back.inc.php +++ b/plugin/back.inc.php @@ -1,67 +1,73 @@ - * - * [»ÈÍÑÎã] - * #back(,,0) - * #back(,left) - * #back(,right,0) - * #back(Ìá¤ë,center,0,http://localhost) - * - * [°ú¿ô] - * 1 - ʸ¸À ¾Êά»þ:Ìá¤ë - * 2 - left, center, right ¾Êά»þ:center - * 3 -
¥¿¥°¤Î̵ͭ ¾Êά»þ:½ÐÎÏ - * 4 - Ä̾ï¤Ï¡¢Ìá¤ë¤Ê¤ï¤±¤Ê¤ó¤Ç¤¹¤¬¡¢¤É¤¦¤·¤Æ¤â¤Î¾ì¹ç¤ÎÈô¤ÓÀè¤ò»ØÄê²Äǽ - */ +// $Id: back.inc.php,v 1.10 2011/01/25 15:01:01 henoheno Exp $ +// Copyright (C) +// 2003-2004 PukiWiki Developers Team +// 2002 Katsumi Saito +// +// back plugin -function plugin_back_init() -{ - $messages = array( - '_msg_back_word' => 'Ìá¤ë' - ); - set_plugin_messages($messages); -} +// Allow specifying back link by page name and anchor, or +// by relative or site-abusolute path +define('PLUGIN_BACK_ALLOW_PAGELINK', PKWK_SAFE_MODE); // FALSE(Compat), TRUE + +// Allow JavaScript (Compat) +define('PLUGIN_BACK_ALLOW_JAVASCRIPT', TRUE); // TRUE(Compat), FALSE, PKWK_ALLOW_JAVASCRIPT +// ---- +define('PLUGIN_BACK_USAGE', '#back([text],[center|left|right][,0(no hr)[,Page-or-URI-to-back]])'); function plugin_back_convert() { - global $_msg_back_word; - - $argv = func_get_args(); + global $_msg_back_word, $script; - // ½é´üÃÍÀßÄê - $word = $_msg_back_word; - $align = 'center'; - $hr = 1; - $href = 'javascript:history.go(-1)'; - $ret = ''; + if (func_num_args() > 4) return PLUGIN_BACK_USAGE; + list($word, $align, $hr, $href) = array_pad(func_get_args(), 4, ''); - // ¥Ñ¥é¥á¡¼¥¿¤ÎȽÃÇ - if (func_num_args() > 0) { - $word = htmlspecialchars(trim(strip_tags($argv[0]))); - if ($word == '') $word = $_msg_back_word; - } - if (func_num_args() > 1) { - $align = htmlspecialchars(trim(strip_tags($argv[1]))); - if ($align == '') $align = 'center'; - } - if (func_num_args() > 2) { - $hr = trim(strip_tags($argv[2])); - } - if (func_num_args() > 3) { - $href = rawurlencode(trim(strip_tags($argv[3]))); - if ($href == '') $href = 'javascript:history.go(-1)'; - } + $word = trim($word); + $word = ($word == '') ? $_msg_back_word : htmlsc($word); - //
¥¿¥°¤ò½ÐÎϤ¹¤ë¤«¤É¤¦¤« - if ($hr) { - $ret = "
\n"; + $align = strtolower(trim($align)); + switch($align){ + case '' : $align = 'center'; + /*FALLTHROUGH*/ + case 'center': /*FALLTHROUGH*/ + case 'left' : /*FALLTHROUGH*/ + case 'right' : break; + default : return PLUGIN_BACK_USAGE; } - $ret.= "
[ $word ]
\n"; + $hr = (trim($hr) != '0') ? '
' . "\n" : ''; - return $ret; + $link = TRUE; + $href = trim($href); + if ($href != '') { + if (PLUGIN_BACK_ALLOW_PAGELINK) { + if (is_url($href)) { + $href = rawurlencode($href); + } else { + $array = anchor_explode($href); + $array[0] = rawurlencode($array[0]); + $array[1] = ($array[1] != '') ? '#' . rawurlencode($array[1]) : ''; + $href = $script . '?' . $array[0] . $array[1]; + $link = is_page($array[0]); + } + } else { + $href = rawurlencode($href); + } + } else { + if (! PLUGIN_BACK_ALLOW_JAVASCRIPT) + return PLUGIN_BACK_USAGE . ': Set a page name or an URI'; + $href = 'javascript:history.go(-1)'; + } + + if($link){ + // Normal link + return $hr . '
' . + '[ ' . $word . ' ]
' . "\n"; + } else { + // Dangling link + return $hr . '
' . + '[ ' . $word . '? ]
' . "\n"; + } } ?>