<?php
-/////////////////////////////////////////////////
// PukiWiki - Yet another WikiWikiWeb clone.
//
-// $Id: ls2.inc.php,v 1.22 2004/08/12 15:28:58 henoheno Exp $
+// $Id: ls2.inc.php,v 1.23 2004/12/05 11:37:37 henoheno Exp $
//
+// List plugin 2
/*
-* ¥×¥é¥°¥¤¥ó ls2
-ÇÛ²¼¤Î¥Ú¡¼¥¸¤Î¸«½Ð¤·(*,**,***)¤Î°ìÍ÷¤òɽ¼¨¤¹¤ë
-
-* Usage
- #ls2(¥Ñ¥¿¡¼¥ó[,title|include|link|reverse|compact, ...],¥¿¥¤¥È¥ë)
-
-* ¥Ñ¥é¥á¡¼¥¿
-
-- ¥Ñ¥¿¡¼¥ó(ºÇ½é¤Ë»ØÄê)
-¾Êά¤¹¤ë¤È¤¤â¥«¥ó¥Þ¤¬É¬Í×
-
-- title
-¸«½Ð¤·¤Î°ìÍ÷¤òɽ¼¨¤¹¤ë
-
--include
-¥¤¥ó¥¯¥ë¡¼¥É¤·¤Æ¤¤¤ë¥Ú¡¼¥¸¤Î¸«½Ð¤·¤òºÆµ¢Åª¤ËÎóµó¤¹¤ë
-
--link
-action¥×¥é¥°¥¤¥ó¤ò¸Æ¤Ó½Ð¤¹¥ê¥ó¥¯¤òɽ¼¨
-
--reverse
-¥Ú¡¼¥¸¤Îʤӽç¤òȿž¤·¡¢¹ß½ç¤Ë¤¹¤ë
-
-- compact
-¸«½Ð¤·¥ì¥Ù¥ë¤òÄ´À°¤¹¤ë
-LS2_LIST_COMPACT¤¬TRUE¤Î»þ¤Ï̵¸ú(ÊѲ½¤·¤Ê¤¤)
-
-- ¥¿¥¤¥È¥ë
-¸«½Ð¤·¤Î¥¿¥¤¥È¥ë¤ò»ØÄꤹ¤ë (link¤ò»ØÄꤷ¤¿»þ¤Î¤ß)
-
-*/
-
-//¸«½Ð¤·¥¢¥ó¥«¡¼¤Î½ñ¼°
-define('LS2_CONTENT_HEAD', '#content_1_');
-
-//¸«½Ð¤·¥¢¥ó¥«¡¼¤Î³«»ÏÈÖ¹æ
-define('LS2_ANCHOR_ORIGIN', 0);
-
-//¸«½Ð¤·¥ì¥Ù¥ë¤òÄ´À°¤¹¤ë(¥Ç¥Õ¥©¥ë¥ÈÃÍ)
-define('LS2_LIST_COMPACT', FALSE);
+ * ÇÛ²¼¤Î¥Ú¡¼¥¸¤ä¡¢¤½¤Î¸«½Ð¤·(*,**,***)¤Î°ìÍ÷¤òɽ¼¨¤¹¤ë
+ * Usage
+ * #ls2(pattern[,title|include|link|reverse|compact, ...],heading title)
+ *
+ * pattern : ¾Êά¤¹¤ë¤È¤¤â¥«¥ó¥Þ¤¬É¬Í×
+ * 'title' : ¸«½Ð¤·¤Î°ìÍ÷¤òɽ¼¨¤¹¤ë
+ * 'include': ¥¤¥ó¥¯¥ë¡¼¥É¤·¤Æ¤¤¤ë¥Ú¡¼¥¸¤Î¸«½Ð¤·¤òºÆµ¢Åª¤ËÎóµó¤¹¤ë
+ * 'link ': action¥×¥é¥°¥¤¥ó¤ò¸Æ¤Ó½Ð¤¹¥ê¥ó¥¯¤òɽ¼¨
+ * 'reverse': ¥Ú¡¼¥¸¤Îʤӽç¤òȿž¤·¡¢¹ß½ç¤Ë¤¹¤ë
+ * 'compact': ¸«½Ð¤·¥ì¥Ù¥ë¤òÄ´À°¤¹¤ë
+ * PLUGIN_LS2_LIST_COMPACT¤¬TRUE¤Î»þ¤Ï̵¸ú(ÊѲ½¤·¤Ê¤¤)
+ * heading title: ¸«½Ð¤·¤Î¥¿¥¤¥È¥ë¤ò»ØÄꤹ¤ë (link¤ò»ØÄꤷ¤¿»þ¤Î¤ß)
+ */
+
+// ¸«½Ð¤·¥¢¥ó¥«¡¼¤Î½ñ¼°
+define('PLUGIN_LS2_ANCHOR_PREFIX', '#content_1_');
+
+// ¸«½Ð¤·¥¢¥ó¥«¡¼¤Î³«»ÏÈÖ¹æ
+define('PLUGIN_LS2_ANCHOR_ORIGIN', 0);
+
+// ¸«½Ð¤·¥ì¥Ù¥ë¤òÄ´À°¤¹¤ë(¥Ç¥Õ¥©¥ë¥ÈÃÍ)
+define('PLUGIN_LS2_LIST_COMPACT', FALSE);
function plugin_ls2_action()
{
- global $vars;
- global $_ls2_msg_title;
+ global $vars, $_ls2_msg_title;
$params = array();
- foreach (array('title', 'include', 'reverse') as $key) {
+ foreach (array('title', 'include', 'reverse') as $key)
$params[$key] = isset($vars[$key]);
- }
+
$prefix = isset($vars['prefix']) ? $vars['prefix'] : '';
- $body = ls2_show_lists($prefix, $params);
+ $body = plugin_ls2_show_lists($prefix, $params);
- return array(
- 'body'=>$body,
- 'msg'=>str_replace('$1', htmlspecialchars($prefix), $_ls2_msg_title)
- );
+ return array('body'=>$body,
+ 'msg'=>str_replace('$1', htmlspecialchars($prefix), $_ls2_msg_title));
}
function plugin_ls2_convert()
{
- global $script, $vars;
- global $_ls2_msg_title;
+ global $script, $vars, $_ls2_msg_title;
$params = array(
'link' => FALSE,
'title' => FALSE,
'include' => FALSE,
'reverse' => FALSE,
- 'compact' => LS2_LIST_COMPACT,
+ 'compact' => PLUGIN_LS2_LIST_COMPACT,
'_args' => array(),
'_done' => FALSE
);
$args = func_get_args();
$prefix = array_shift($args);
}
- if ($prefix == '') {
- $prefix = strip_bracket($vars['page']) . '/';
- }
+ if ($prefix == '') $prefix = strip_bracket($vars['page']) . '/';
- array_walk($args, 'ls2_check_arg', & $params);
+ array_walk($args, 'plugin_ls2_check_arg', & $params);
- $title = (! empty($params['_args'])) ?
- htmlspecialchars(join(',', $params['_args'])) : // Manual
+ $title = (! empty($params['_args'])) ? join(',', $params['_args']) : // Manual
str_replace('$1', htmlspecialchars($prefix), $_ls2_msg_title); // Auto
- if ($params['link']) {
- $tmp = array();
- $tmp[] = 'plugin=ls2&prefix=' . rawurlencode($prefix);
- if (isset($params['title'])) {
- $tmp[] = 'title=1';
- }
- if (isset($params['include'])) {
- $tmp[] = 'include=1';
- }
- return '<p><a href="' . $script . '?' . join('&', $tmp) . '">' . $title . '</a></p>' . "\n";
- } else {
- return ls2_show_lists($prefix, $params);
- }
+ if (! $params['link'])
+ return plugin_ls2_show_lists($prefix, $params);
+
+ $tmp = array();
+ $tmp[] = 'plugin=ls2&prefix=' . rawurlencode($prefix);
+ if (isset($params['title'])) $tmp[] = 'title=1';
+ if (isset($params['include'])) $tmp[] = 'include=1';
+
+ return '<p><a href="' . $script . '?' . join('&', $tmp) . '">' .
+ $title . '</a></p>' . "\n";
}
-function ls2_show_lists($prefix, & $params)
+function plugin_ls2_show_lists($prefix, & $params)
{
global $_ls2_err_nopages;
$pages = array();
- if (strlen($prefix)) {
- foreach (get_existpages() as $_page) {
+ if ($prefix != '') {
+ foreach (get_existpages() as $_page)
if (strpos($_page, $prefix) === 0)
$pages[] = $_page;
- }
} else {
$pages = get_existpages();
}
natcasesort($pages);
if ($params['reverse']) $pages = array_reverse($pages);
- foreach ($pages as $page) {
- $params["page_$page"] = 0;
- }
+ foreach ($pages as $page) $params["page_$page"] = 0;
- if (count($pages) == 0) {
+ if (empty($pages)) {
return str_replace('$1', htmlspecialchars($prefix), $_ls2_err_nopages);
} else {
$params['result'] = $params['saved'] = array();
- foreach ($pages as $page) {
- ls2_get_headings($page, $params, 1);
- }
+ foreach ($pages as $page)
+ plugin_ls2_get_headings($page, $params, 1);
return join("\n", $params['result']) . join("\n", $params['saved']);
}
}
-function ls2_get_headings($page, & $params, $level, $include = FALSE)
+function plugin_ls2_get_headings($page, & $params, $level, $include = FALSE)
{
global $script;
static $_ls2_anchor = 0;
$title = $s_page . ' ' . get_pg_passage($page, FALSE);
$href = $script . '?cmd=read&page=' . $r_page;
- ls2_list_push($params, $level);
+ plugin_ls2_list_push($params, $level);
$ret = $include ? '<li>include ' : '<li>';
if ($params['title'] && $is_done) {
- $ret .= "<a href=\"$href\" title=\"$title\">$s_page</a> ";
- $ret .= "<a href=\"#list_{$params["page_$page"]}\"><sup>↑</sup></a>";
+ $ret .= '<a href="' . $href . '" title="' . $title . '">' . $s_page . '</a> ';
+ $ret .= '<a href="#list_' . $params["page_$page"] . '"><sup>↑</sup></a>';
array_push($params['result'], $ret);
return;
}
- $ret .= "<a id=\"list_{$params["page_$page"]}\" href=\"$href\" title=\"$title\">$s_page</a>";
+ $ret .= '<a id="list_' . $params["page_$page"] . '" href="' . $href .
+ '" title="' . $title . '">' . $s_page . '</a>';
array_push($params['result'], $ret);
- $anchor = LS2_ANCHOR_ORIGIN;
+ $anchor = PLUGIN_LS2_ANCHOR_ORIGIN;
$matches = array();
foreach (get_source($page) as $line) {
if ($params['title'] && preg_match('/^(\*{1,3})/', $line, $matches)) {
$id = make_heading($line);
$level = strlen($matches[1]);
- $id = LS2_CONTENT_HEAD . $anchor++;
- ls2_list_push($params, $level + strlen($level));
- array_push($params['result'], "<li><a href=\"$href$id\">$line</a>");
- } else if ($params['include']
- and preg_match('/^#include\((.+)\)/', $line, $matches) and is_page($matches[1]))
+ $id = PLUGIN_LS2_ANCHOR_PREFIX . $anchor++;
+ plugin_ls2_list_push($params, $level + strlen($level));
+ array_push($params['result'],
+ '<li><a href="' . $href . $id . '">' . $line . '</a>');
+ } else if ($params['include'] &&
+ preg_match('/^#include\((.+)\)/', $line, $matches) &&
+ is_page($matches[1]))
{
- ls2_get_headings($matches[1], $params, $level + 1, TRUE);
+ plugin_ls2_get_headings($matches[1], $params, $level + 1, TRUE);
}
}
}
//¥ê¥¹¥È¹½Â¤¤ò¹½ÃÛ¤¹¤ë
-function ls2_list_push(& $params, $level)
+function plugin_ls2_list_push(& $params, $level)
{
global $_ul_left_margin, $_ul_margin, $_list_pad_str;
$open = '<ul%s>';
$close = '</li></ul>';
- while (count($saved) > $level ||
- (! empty($saved) && $saved[0] != $close)) {
+ while (count($saved) > $level || (! empty($saved) && $saved[0] != $close))
array_push($result, array_shift($saved));
- }
$margin = $level - count($saved);
- while (count($saved) < ($level - 1)) {
- array_unshift($saved, ''); //count($saved)¤òÁý¤ä¤¹¤¿¤á¤Îdummy
- }
+ // count($saved)¤òÁý¤ä¤¹
+ while (count($saved) < ($level - 1)) array_unshift($saved, '');
if (count($saved) < $level) {
$cont = FALSE;
if ($cont) array_push($result, '</li>');
}
-//¥ª¥×¥·¥ç¥ó¤ò²òÀϤ¹¤ë
-function ls2_check_arg($value, $key, & $params)
+// ¥ª¥×¥·¥ç¥ó¤ò²òÀϤ¹¤ë
+function plugin_ls2_check_arg($value, $key, & $params)
{
if ($value == '') {
$params['_done'] = TRUE;
$params['_done'] = TRUE;
}
- $params['_args'][] = $value; // Link title
+ $params['_args'][] = htmlspecialchars($value); // Link title
}
?>