OSDN Git Service

BugTrack/2348 Remove limitation of Search box count
[pukiwiki/pukiwiki.git] / plugin / aname.inc.php
index 01eb4f2..56638af 100644 (file)
@@ -1,18 +1,17 @@
 <?php
 // PukiWiki - Yet another WikiWikiWeb clone
-// $Id: aname.inc.php,v 1.24 2005/06/16 15:04:08 henoheno Exp $
+// $Id: aname.inc.php,v 1.28 2011/01/25 15:01:01 henoheno Exp $
 // Copyright (C)
 //   2002-2005 PukiWiki Developers Team
 //   2001-2002 Originally written by yu-ji
 // License: GPL v2 or (at your option) any later version
 //
-// aname plugin - Set various anchor tag
-//   * A simple anchor <a id="key"></a>
-//   * A clickable link to the anchor <a href="#key">string</a>
-//   * Clickable anchor with the key itself <a id="key" href="#key">string</a>
+// aname plugin - Set various anchor tags
+//   * With just an anchor id: <a id="key"></a>
+//   * With a hyperlink to the anchor id: <a href="#key">string</a>
+//   * With an anchor id and a link to the id itself: <a id="key" href="#key">string</a>
 //
-// NOTE:
-//   Use 'id="key"' instead of 'name="key"' at XHTML 1.1
+// NOTE: Use 'id="key"' instead of 'name="key"' at XHTML 1.1
 
 // Check ID is unique or not (compatible: no-check)
 define('PLUGIN_ANAME_ID_MUST_UNIQUE', 0);
@@ -23,41 +22,48 @@ define('PLUGIN_ANAME_ID_MAX',   40);
 // Pattern of ID
 define('PLUGIN_ANAME_ID_REGEX', '/^[A-Za-z][\w\-]*$/');
 
+// Show usage
+function plugin_aname_usage($convert = TRUE, $message = '')
+{
+       if ($convert) {
+               if ($message == '') {
+                       return '#aname(anchorID[[,super][,full][,noid],Link title])' . '<br />';
+               } else {
+                       return '#aname: ' . $message . '<br />';
+               }
+       } else {
+               if ($message == '') {
+                       return '&amp;aname(anchorID[,super][,full][,noid]){[Link title]};';
+               } else {
+                       return '&amp;aname: ' . $message . ';';
+               }
+       }
+}
 
 // #aname
 function plugin_aname_convert()
 {
-       $args = func_get_args(); // Zero or more
-       return plugin_aname_tag($args);
+       $convert = TRUE;
+
+       if (func_num_args() < 1)
+               return plugin_aname_usage($convert);
+
+       return plugin_aname_tag(func_get_args(), $convert);
 }
 
 // &aname;
 function plugin_aname_inline()
 {
-       $args = func_get_args(); // ONE or more
+       $convert = FALSE;
 
-       $body = strip_autolink(array_pop($args));
-       array_push($args, $body);
+       if (func_num_args() < 2)
+               return plugin_aname_usage($convert);
 
-       return plugin_aname_tag($args, FALSE);
-}
+       $args = func_get_args(); // ONE or more
+       $body = strip_htmltag(array_pop($args), FALSE); // Strip anchor tags only
+       array_push($args, $body);
 
-// Show usage
-function plugin_aname_usage($convert = TRUE, $message = '')
-{
-       if ($message == '') {
-               if ($convert) {
-                       return '#aname(anchorID[[,super][,full][,noid],Link title])';
-               } else {
-                       return '&amp;aname(anchorID[,super][,full][,noid]){[Link title]}';
-               }
-       } else {
-               if ($convert) {
-                       return '#aname: ' . $message;
-               } else {
-                       return '&amp;aname: ' . $message . ';';
-               }
-       }
+       return plugin_aname_tag($args, $convert);
 }
 
 // Aname plugin itself
@@ -67,6 +73,7 @@ function plugin_aname_tag($args = array(), $convert = TRUE)
        static $_id = array();
 
        if (empty($args) || $args[0] == '') return plugin_aname_usage($convert);
+
        $id = array_shift($args);
        $body = '';
        if (! empty($args)) $body = array_pop($args);
@@ -87,15 +94,15 @@ function plugin_aname_tag($args = array(), $convert = TRUE)
                        return plugin_aname_usage($convert, 'ID too long');
                if (! preg_match(PLUGIN_ANAME_ID_REGEX, $id))
                        return plugin_aname_usage($convert, 'Invalid ID string: ' .
-                               htmlspecialchars($id));
+                               htmlsc($id));
                $_id[$id] = TRUE; // Set
        }
 
-       if ($convert) $body = htmlspecialchars($body);
-       $id = htmlspecialchars($id); // Insurance
+       if ($convert) $body = htmlsc($body);
+       $id = htmlsc($id); // Insurance
        $class   = $f_super ? 'anchor_super' : 'anchor';
        $attr_id = $f_noid  ? '' : ' id="' . $id . '"';
-       $url     = $f_full  ? get_script_uri() . '?' . rawurlencode($vars['page']) : '';
+       $url     = $f_full  ? get_page_uri($vars['page']) : '';
        if ($body != '') {
                $href  = ' href="' . $url . '#' . $id . '"';
                $title = ' title="' . $id . '"';
@@ -106,4 +113,4 @@ function plugin_aname_tag($args = array(), $convert = TRUE)
        return '<a class="' . $class . '"' . $attr_id . $href . $title . '>' .
                $body . '</a>';
 }
-?>
+