*include プラグインの挙動について [#v771bb4f] -ページ: BugTrack -投稿者: [[upk]] -優先順位: 低 -状態: 提案 -カテゴリー: プラグイン -投稿日: 2004-02-16 (月) 00:28:55 -バージョン: **メッセージ [#ne8d26ed] includeプラグインの挙動について、文書のトップに、オリジナル文書への リンクがありますが、それが編集でのリンクであり、なんとかならないものか? と思っています。 なぜ、includeを定義している箇所で、編集という行為を想定しているのか? が理解できません。単に参照したいから記述しているわけで、直接、編集できる 必要を感じません。せめても、単なるリンク(参照)程度かと考えています。 以下のパッチだと、それすらも捨てています。このパッチの是非はあると思いますが、 議論を行う上での一歩として付けておきます。 49c49 < $link = "<a href=\"$script?cmd=edit&page=$r_page\">$s_page</a>"; --- > $link = "<a href=\"$script?$r_page\">$s_page</a>"; 59c59,66 < $body = "<h1>$link</h1>\n$body\n"; --- > // $body = "<h1>$link</h1>\n$body\n"; > $body = <<<EOD > $body > <div id="note"> > <hr class="note_hr" />*</a> > <span class="small">$link</span> > <br /></div> > EOD; ---- -includeプラグインはけっこう個人で書き換えをしているプラグインじゃないかな。上記の「編集へのリンク」は[[見出し単位の編集>PukiWiki/1.4/ちょっと便利に/見出しごとの編集(fixed_anchor版)]]を導入している場合、見出し文字列にリンクを設定するより、editアイコンで統一的に表示したほうが美しいですしね。includeされたページへのtrackbackのリンクを付加したり、includeされたページの見出しのON/OFFを引数で指定できるようにしたり、includeされたページの更新日時を表示したり。改造のし甲斐のあるプラグインですね。 -- [[reimy]] &new{2004-02-16 (月) 00:56:15}; --- org\include.inc.php Mon Feb 16 00:45:16 2004 +++ include.inc.php Mon Jan 12 21:42:43 2004 @@ -14,51 +14,84 @@ { global $script,$vars,$get,$post,$hr,$WikiName,$BracketName; global $_msg_include_restrict; + global $_symbol_anchor2,$_symbol_edit; static $include_list = array(); //処理済ページ名の配列 - if (func_num_args() == 0) - { + global $trackback; + + $argnum = func_num_args(); + if ($argnum == 0) { return; } $include_list[$vars['page']] = TRUE; - list($page) = func_get_args(); - $page = strip_bracket($page); + list($page,$rev) = func_get_args(); + $page = get_fullname(strip_bracket($page), $vars['page']); - if (!is_page($page) or isset($include_list[$page])) - { - return ''; + $pages = array_values(get_existpages()); + for ( $i=0; $i<count($pages); $i++ ){ + if (!ereg( $page, $pages[$i])) { + array_splice( $pages, $i--, 1); + } } - $include_list[$page] = TRUE; - - $_page = $vars['page']; - $get['page'] = $post['page'] = $vars['page'] = $page; - - // includeのときは、認証画面をいちいち出さず、後始末もこちらでつける - if (check_readable($page, false, false)) { - $body = convert_html(get_source($page)); + + if ( $rev == "reverse" ) { + rsort( $pages); } else { - $body = str_replace('$1',$page,$_msg_include_restrict); + sort( $pages); } - - $get['page'] = $post['page'] = $vars['page'] = $_page; - - $s_page = htmlspecialchars($page); - $r_page = rawurlencode($page); - $link = "<a href=\"$script?cmd=edit&page=$r_page\">$s_page</a>"; - if ($page == 'MenuBar') - { - $body = <<<EOD + foreach ( $pages as $page ) { + if (!is_page($page) or isset($include_list[$page])) { + continue; + } + $include_list[$page] = TRUE; + + $_page = $vars['page']; + $get['page'] = $post['page'] = $vars['page'] = $page; + + // includeのときは、認証画面をいちいち出さず、後始末もこちらでつける + if (check_readable($page, false, false)) { + $body = convert_html(get_source($page)); + } else { + $body = str_replace('$1',$page,$_msg_include_restrict); + } + + $get['page'] = $post['page'] = $vars['page'] = $_page; + + $s_page = htmlspecialchars($page); + $r_page = rawurlencode($page); + $link = "<a href=\"$script?$r_page\">$s_page</a>"; + if ($page == 'MenuBar') + { + $body = <<<EOD <span align="center"><h5 class="side_label">$link</h5></span> <small>$body</small> EOD; + } + else + { + $head = ""; + if ($argnum > 0) + { + $head .= "\n<div class=\"jumpmenu\"><a href=\"#menu\">▲</a> <a href=\"#icon_menu\">▼</a></div>\n"; + if ($argnum == 1){ + $head .= "<h3>$link <a class=\"anchor_super\" href=\"$script?$r_page\">$_symbol_anchor2</a> <a class=\"anchor_super\" href=\"$script?cmd=edit&page=$r_page\" title=\"Edit\">$_symbol_edit</a></h3>\n"; + } else { + $head .= "<br />\n"; + } + $head .= "<div class=\"edit_right\">Last-modified : ".date("D, d M Y H:i:s T",filemtime(get_filename($page)))." ".get_pg_passage($page)."</div>\n"; + if ($trackback) { + $tb_id = tb_get_id($page); + $head .= "<div class=\"trackback\">[ <a href=\"$script?plugin=tb&__mode=view&tb_id=$tb_id\">Trackback(".tb_count($page).")</a> ]</div>"; + } + } else { +// $head .= "<div class=\"edit_right\">Last-modified : ".date("D, d M Y H:i:s T",filemtime(get_filename($page)))." ".get_pg_passage($page)."</div>\n"; + } + $body = "$head$body\n"; + } + $body_all .= $body; } - else - { - $body = "<h1>$link</h1>\n$body\n"; - } - - return $body; + return $body_all; } ?> -calendar_viewerなんかもいじり甲斐です。ページ名はその日のページへのリンク、脇に編集用の「編集」リンクを表示してます。 -- [[pubetem3]] &new{2004-02-16 (月) 01:52:13}; $link = "<a href=\"$script?$r_page\">$s_page</a> (<a href=\"$script?cmd=edit&page=$r_page\">編集</a>)"; #comment