BugTrack/2283
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
* ls2 プラグインで、常にget_source() を呼んでいる / inclu...
- ページ: [[BugTrack]]
- 投稿者: 名無しさん
- 優先順位: 普通
- 状態: 完了
- カテゴリー: プラグイン
- 投稿日: 2007-10-24 (水) 00:53:20
- バージョン: 1.4.7
- リリース予定バージョン: 1.5.2
#contents
** 修正 [#a354cb92]
- %%[[cvs:lib/file.php]] (1.90-1.92) -- file_head() のデ...
- %%[[cvs:plugin/ls.inc.php]] (1.10-1.11) -- まとめ直し。...
list($comment) = get_source($page); // list() に空の arr...
- %%[[cvs:plugin/ls2.inc.php]] (1.26-1.29) -- まだこれか...
PukiWiki 1.5.0 のタイミングで、以上の修正を含まないソース...
1.5.1 にも入っていなかったので改めて修正を行いました。
** メッセージ [#oec27970]
ls2 プラグインには、ページの内容をスキャンする必要のある...
しかし、これらのオプションを使わない時にもget_source() を...
なるようにしましょう。
[[cvs:plugin/ls2.inc.php]] (1.25) をベースに
function plugin_ls2_get_headings($page, & $params, $lev...
{
(中略)
$ret .= '<a id="list_' . $params["page_$page"] . '" hr...
'" title="' . $title . '">' . $s_page . '</a>';
array_push($params['result'], $ret);
- $anchor = PLUGIN_LS2_ANCHOR_ORIGIN;
- $matches = array();
- foreach (get_source($page) as $line) {
- if ($params['title'] && preg_match('/^(\*{1,3})/', $l...
- $id = make_heading($line);
- $level = strlen($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]))
- {
- plugin_ls2_get_headings($matches[1], $params, $level...
- }
- }
+ if ($params['title'] || $params['include']) {
+ $anchor = PLUGIN_LS2_ANCHOR_ORIGIN;
+ $matches = array();
+ foreach (get_source($page) as $line) {
+ if ($params['title'] && preg_match('/^(\*{1,3})/', $...
+ make_heading($line);
+ $level = strlen($matches[1]);
+ $id = PLUGIN_LS2_ANCHOR_PREFIX . $anchor++;
+ plugin_ls2_list_push($params, $level + 1);
+ array_push($params['result'],
+ '<li><a href="' . $href . $id . '">' . $line . '</...
+ } else if ($params['include'] &&
+ preg_match('/^#include\((.+)\)/', $line, $matches) &&
+ is_page($matches[1]))
+ {
+ plugin_ls2_get_headings($matches[1], $params, $leve...
+ }
+ }
+ }
}
--------
- パッチをありがとうございます。そのままイケルと思ったも...
-- 勘違いじゃないです、おもいっきり考慮から抜けてました。...
- 修正案を少しいじる。 -- &new{2007-10-26 (金) 02:14:29};
-- 同時指定の時のことが抜け落ちていた件 -- &new{2007-10-...
-- $level + strlen($level) の部分、$level には1~3 が入っ...
--make_heading($line) を呼び出すだけで、$line に修正がか...
- 「ls2 プラグインで、常にget_source() を呼んでいる」の修...
- titleやincludeが指定されたときの、リストのインデントレ...
#comment
--------
** 特定の条件で無限ループする [#qdcc7861]
同じページを複数回参照したときに抜け出す条件が、if ($para...
そこで、すでにページを読み取ったかだけで判定するようにし...
-[[cvs:plugin/ls2.inc.php]] (1.29)
if ($params['reverse']) $pages = array_reverse($pages);
- foreach ($pages as $page) {
- $params['page_ ' . $page] = 0;
- }
-
$params['result'] = $params['saved'] = array();
foreach ($pages as $page) {
plugin_ls2_get_headings($page, $params, 1);
}
return join("\n", $params['result']) . join("\n", $par...
}
function plugin_ls2_get_headings($page, & $params, $lev...
{
static $_ls2_anchor = 0;
- // ページが未表示のとき
- $is_done = (isset($params["page_$page"]) && $params["p...
- if (! $is_done) $params["page_$page"] = ++$_ls2_anchor;
$r_page = rawurlencode($page);
$s_page = htmlspecialchars($page);
$title = $s_page . ' ' . get_pg_passage($page, FALSE);
$href = get_script_uri() . '?cmd=read&page=' . $...
plugin_ls2_list_push($params, $level);
$ret = $include ? '<li>include ' : '<li>';
- if ($params['title'] && $is_done) {
+ if ($isset($params["page_$page"]) {
$ret .= '<a href="' . $href . '" title="' . $title . '...
$ret .= '<a href="#list_' . $params["page_$page"] . '"...
array_push($params['result'], $ret);
return;
}
+ // ページが未表示のとき
+ $params["page_$page"] = ++$_ls2_anchor;
$ret .= '<a id="list_' . $params["page_$page"] . '" hr...
'" title="' . $title . '">' . $s_page . '</a>';
- plugin_ls2_show_lists() で、条件を基に検索した結果に重...
- includeだけをしていた時の無限ループの解消と、ページ単位...
#comment
--------
** get_source() がFALSE を返してきた時の対策 [#le95500f]
[[BugTrack/2449]] に移動しました
--------
** ソース読み取り時のマルチライン対応(仮) [#w4c91ded]
[[BugTrack/2450]] に移動しました
** include の相対パスページ指定及びオプション指定への対応...
...
また、include を見つけた場合に、notitleなどのパラメータが...
- include の判定の部分ですが、preg_match('/^#include\((.+...
それと、マルチラインの終了チェック時以外は、処理速度向上...
- #includeの相対パス名対応、"..." で囲まれた名前対応、not...
#comment
--------
* 総合コメント [#vbb86581]
- その他、ls2はデータ構造(気になるのは $params["page_$pag...
-- ls.inc.php とまとめて見直さないと片付かない気配。 -- [...
-- [[cvs:lib/file.php]] (1.90-1.92) -- file_head()
-- [[cvs:plugin/ls.inc.php]] (1.10-1.11) -- 恐らくls2とコ...
-- [[cvs:plugin/ls2.inc.php]] (1.26-1.29) -- まだこれから
-- その他、同様の性質の物として、list/filelistも視野に入...
- 「ls2 プラグインで、常にget_source() を呼んでいる」につ...
- タイトルを変更しました「ls2 プラグインで、常にget_sourc...
#comment
--------
* 作業中のバグなど [#rb16f07e]
- [[cvs:plugin/ls2.inc.php]] (1.28)
--- ls2 プラグインは、2005年には更新がなかったはずなんで...
--- 失敬! [[cvs:plugin/ls2.inc.php]] (1.29) -- [[henoheno...
- [[cvs:lib/file.php]] (1.91) を入れるとページの更新がで...
-- 正確には、recent.dat の更新処理でこけているようです。...
lib/file.php (1.91) への修正案
// Open
pkwk_touch_file($file);
$fp = fopen($file, 'r+') or
die_message('Cannot open ' . 'CACHE_DIR/' . PKWK_MAXSHO...
set_file_buffer($fp, 0);
flock($fp, LOCK_EX);
// Read (keep the order of the lines)
$recent_pages = $matches = array();
- foreach(file_head($file, $maxshow + PKWK_MAXSHOW_ALLOW...
+ foreach(file_head($file, $maxshow + PKWK_MAXSHOW_ALLOW...
if (preg_match('/^([0-9]+)\t(.+)/', $line, $matches)) {
AutoLink がON の時はput_lastmodified() へ逃げるので、この...
-- コメントありがとうございます。これは r1.91 で、file_he...
--- [[cvs:lib/file.php]] (1.92)
-- lib/file.php (1.92)への修正ありがとうございます。apach...
終了行:
* ls2 プラグインで、常にget_source() を呼んでいる / inclu...
- ページ: [[BugTrack]]
- 投稿者: 名無しさん
- 優先順位: 普通
- 状態: 完了
- カテゴリー: プラグイン
- 投稿日: 2007-10-24 (水) 00:53:20
- バージョン: 1.4.7
- リリース予定バージョン: 1.5.2
#contents
** 修正 [#a354cb92]
- %%[[cvs:lib/file.php]] (1.90-1.92) -- file_head() のデ...
- %%[[cvs:plugin/ls.inc.php]] (1.10-1.11) -- まとめ直し。...
list($comment) = get_source($page); // list() に空の arr...
- %%[[cvs:plugin/ls2.inc.php]] (1.26-1.29) -- まだこれか...
PukiWiki 1.5.0 のタイミングで、以上の修正を含まないソース...
1.5.1 にも入っていなかったので改めて修正を行いました。
** メッセージ [#oec27970]
ls2 プラグインには、ページの内容をスキャンする必要のある...
しかし、これらのオプションを使わない時にもget_source() を...
なるようにしましょう。
[[cvs:plugin/ls2.inc.php]] (1.25) をベースに
function plugin_ls2_get_headings($page, & $params, $lev...
{
(中略)
$ret .= '<a id="list_' . $params["page_$page"] . '" hr...
'" title="' . $title . '">' . $s_page . '</a>';
array_push($params['result'], $ret);
- $anchor = PLUGIN_LS2_ANCHOR_ORIGIN;
- $matches = array();
- foreach (get_source($page) as $line) {
- if ($params['title'] && preg_match('/^(\*{1,3})/', $l...
- $id = make_heading($line);
- $level = strlen($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]))
- {
- plugin_ls2_get_headings($matches[1], $params, $level...
- }
- }
+ if ($params['title'] || $params['include']) {
+ $anchor = PLUGIN_LS2_ANCHOR_ORIGIN;
+ $matches = array();
+ foreach (get_source($page) as $line) {
+ if ($params['title'] && preg_match('/^(\*{1,3})/', $...
+ make_heading($line);
+ $level = strlen($matches[1]);
+ $id = PLUGIN_LS2_ANCHOR_PREFIX . $anchor++;
+ plugin_ls2_list_push($params, $level + 1);
+ array_push($params['result'],
+ '<li><a href="' . $href . $id . '">' . $line . '</...
+ } else if ($params['include'] &&
+ preg_match('/^#include\((.+)\)/', $line, $matches) &&
+ is_page($matches[1]))
+ {
+ plugin_ls2_get_headings($matches[1], $params, $leve...
+ }
+ }
+ }
}
--------
- パッチをありがとうございます。そのままイケルと思ったも...
-- 勘違いじゃないです、おもいっきり考慮から抜けてました。...
- 修正案を少しいじる。 -- &new{2007-10-26 (金) 02:14:29};
-- 同時指定の時のことが抜け落ちていた件 -- &new{2007-10-...
-- $level + strlen($level) の部分、$level には1~3 が入っ...
--make_heading($line) を呼び出すだけで、$line に修正がか...
- 「ls2 プラグインで、常にget_source() を呼んでいる」の修...
- titleやincludeが指定されたときの、リストのインデントレ...
#comment
--------
** 特定の条件で無限ループする [#qdcc7861]
同じページを複数回参照したときに抜け出す条件が、if ($para...
そこで、すでにページを読み取ったかだけで判定するようにし...
-[[cvs:plugin/ls2.inc.php]] (1.29)
if ($params['reverse']) $pages = array_reverse($pages);
- foreach ($pages as $page) {
- $params['page_ ' . $page] = 0;
- }
-
$params['result'] = $params['saved'] = array();
foreach ($pages as $page) {
plugin_ls2_get_headings($page, $params, 1);
}
return join("\n", $params['result']) . join("\n", $par...
}
function plugin_ls2_get_headings($page, & $params, $lev...
{
static $_ls2_anchor = 0;
- // ページが未表示のとき
- $is_done = (isset($params["page_$page"]) && $params["p...
- if (! $is_done) $params["page_$page"] = ++$_ls2_anchor;
$r_page = rawurlencode($page);
$s_page = htmlspecialchars($page);
$title = $s_page . ' ' . get_pg_passage($page, FALSE);
$href = get_script_uri() . '?cmd=read&page=' . $...
plugin_ls2_list_push($params, $level);
$ret = $include ? '<li>include ' : '<li>';
- if ($params['title'] && $is_done) {
+ if ($isset($params["page_$page"]) {
$ret .= '<a href="' . $href . '" title="' . $title . '...
$ret .= '<a href="#list_' . $params["page_$page"] . '"...
array_push($params['result'], $ret);
return;
}
+ // ページが未表示のとき
+ $params["page_$page"] = ++$_ls2_anchor;
$ret .= '<a id="list_' . $params["page_$page"] . '" hr...
'" title="' . $title . '">' . $s_page . '</a>';
- plugin_ls2_show_lists() で、条件を基に検索した結果に重...
- includeだけをしていた時の無限ループの解消と、ページ単位...
#comment
--------
** get_source() がFALSE を返してきた時の対策 [#le95500f]
[[BugTrack/2449]] に移動しました
--------
** ソース読み取り時のマルチライン対応(仮) [#w4c91ded]
[[BugTrack/2450]] に移動しました
** include の相対パスページ指定及びオプション指定への対応...
...
また、include を見つけた場合に、notitleなどのパラメータが...
- include の判定の部分ですが、preg_match('/^#include\((.+...
それと、マルチラインの終了チェック時以外は、処理速度向上...
- #includeの相対パス名対応、"..." で囲まれた名前対応、not...
#comment
--------
* 総合コメント [#vbb86581]
- その他、ls2はデータ構造(気になるのは $params["page_$pag...
-- ls.inc.php とまとめて見直さないと片付かない気配。 -- [...
-- [[cvs:lib/file.php]] (1.90-1.92) -- file_head()
-- [[cvs:plugin/ls.inc.php]] (1.10-1.11) -- 恐らくls2とコ...
-- [[cvs:plugin/ls2.inc.php]] (1.26-1.29) -- まだこれから
-- その他、同様の性質の物として、list/filelistも視野に入...
- 「ls2 プラグインで、常にget_source() を呼んでいる」につ...
- タイトルを変更しました「ls2 プラグインで、常にget_sourc...
#comment
--------
* 作業中のバグなど [#rb16f07e]
- [[cvs:plugin/ls2.inc.php]] (1.28)
--- ls2 プラグインは、2005年には更新がなかったはずなんで...
--- 失敬! [[cvs:plugin/ls2.inc.php]] (1.29) -- [[henoheno...
- [[cvs:lib/file.php]] (1.91) を入れるとページの更新がで...
-- 正確には、recent.dat の更新処理でこけているようです。...
lib/file.php (1.91) への修正案
// Open
pkwk_touch_file($file);
$fp = fopen($file, 'r+') or
die_message('Cannot open ' . 'CACHE_DIR/' . PKWK_MAXSHO...
set_file_buffer($fp, 0);
flock($fp, LOCK_EX);
// Read (keep the order of the lines)
$recent_pages = $matches = array();
- foreach(file_head($file, $maxshow + PKWK_MAXSHOW_ALLOW...
+ foreach(file_head($file, $maxshow + PKWK_MAXSHOW_ALLOW...
if (preg_match('/^([0-9]+)\t(.+)/', $line, $matches)) {
AutoLink がON の時はput_lastmodified() へ逃げるので、この...
-- コメントありがとうございます。これは r1.91 で、file_he...
--- [[cvs:lib/file.php]] (1.92)
-- lib/file.php (1.92)への修正ありがとうございます。apach...
ページ名: