<?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);
// 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 '&aname(anchorID[,super][,full][,noid]){[Link title]};';
+ } else {
+ return '&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 '&aname(anchorID[,super][,full][,noid]){[Link title]}';
- }
- } else {
- if ($convert) {
- return '#aname: ' . $message;
- } else {
- return '&aname: ' . $message . ';';
- }
- }
+ return plugin_aname_tag($args, $convert);
}
// Aname plugin itself
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);
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 . '"';
return '<a class="' . $class . '"' . $attr_id . $href . $title . '>' .
$body . '</a>';
}
-?>
+