<?php
-// $Id: back.inc.php,v 1.2 2003/02/28 02:40:52 panda Exp $
-/*
- * PukiWiki back ¥×¥é¥°¥¤¥ó
- * (C) 2002, Katsumi Saito <katsumi@jo1upk.ymt.prug.or.jp>
- *
- * [»ÈÍÑÎã]
- * #back(,,0)
- * #back(,left)
- * #back(,right,0)
- * #back(Ìá¤ë,center,0,http://localhost)
- *
- * [°ú¿ô]
- * 1 - ʸ¸À ¾Êά»þ:Ìá¤ë
- * 2 - left, center, right ¾Êά»þ:center
- * 3 - <hr> ¥¿¥°¤ÎÍ̵ ¾Êά»þ:½ÐÎÏ
- * 4 - Ä̾ï¤Ï¡¢Ìá¤ë¤Ê¤ï¤±¤Ê¤ó¤Ç¤¹¤¬¡¢¤É¤¦¤·¤Æ¤â¤Î¾ì¹ç¤ÎÈô¤ÓÀè¤ò»ØÄê²Äǽ
- */
+// $Id: back.inc.php,v 1.9 2005/06/20 14:57:34 henoheno Exp $
+// Copyright (C)
+// 2003-2004 PukiWiki Developers Team
+// 2002 Katsumi Saito <katsumi@jo1upk.ymt.prug.or.jp>
+//
+// back plugin
+// 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()
{
- $argv = func_get_args();
-
- // ½é´üÃÍÀßÄê
- $word = 'Ìá¤ë';
- $align = 'center';
- $hr = 1;
- $href = 'javascript:history.go(-1)';
- $ret = '';
-
- // ¥Ñ¥é¥á¡¼¥¿¤ÎȽÃÇ
- if (func_num_args() > 0) {
- $word = htmlspecialchars(trim(strip_tags($argv[0])));
- if ($word == '') $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)';
- }
+ global $_msg_back_word, $script;
- // <hr> ¥¿¥°¤ò½ÐÎϤ¹¤ë¤«¤É¤¦¤«
- if ($hr) {
- $ret = "<hr class=\"full_hr\" />\n";
+ if (func_num_args() > 4) return PLUGIN_BACK_USAGE;
+ list($word, $align, $hr, $href) = array_pad(func_get_args(), 4, '');
+
+ $word = trim($word);
+ $word = ($word == '') ? $_msg_back_word : htmlspecialchars($word);
+
+ $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.= "<div style=\"text-align:$align\">[ <a href=\"$href\">$word</a> ]</div>\n";
+ $hr = (trim($hr) != '0') ? '<hr class="full_hr" />' . "\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 . '<div style="text-align:' . $align . '">' .
+ '[ <a href="' . $href . '">' . $word . '</a> ]</div>' . "\n";
+ } else {
+ // Dangling link
+ return $hr . '<div style="text-align:' . $align . '">' .
+ '[ <span class="noexists">' . $word . '<a href="' . $href .
+ '">?</a></span> ]</div>' . "\n";
+ }
}
?>