*plugin内でconvert_htmlを使用すると<div><input type=\"hidden\" name=\"encode_hint\" value=\"ぷ\" /></div>が重複出力される [#v6bb30ae]
RIGHT:&size(12){Category:[[:Plugin]]};
*include プラグインの挙動について [#v771bb4f]

-ページ: BugTrack
-投稿者: [[reimy]]
-優先順位: 重要
-投稿者: [[upk]]
-優先順位: 低
-状態: 提案
-カテゴリー: 本体バグ
-投稿日: 2004-02-14 (土) 23:42:25
-カテゴリー: プラグイン
-投稿日: 2004-02-16 (月) 00:28:55
-バージョン: 

**メッセージ [#n6fa58e7]
function convert_html()をプラグイン内から呼び出している場合、
 <div><input type=\"hidden\" name=\"encode_hint\" value=\"ぷ\" /></div>
が二重に出力されてしまう。
**メッセージ [#ne8d26ed]
includeプラグインの挙動について、文書のトップに、オリジナル文書への
リンクがありますが、それが編集でのリンクであり、なんとかならないものか?
と思っています。
なぜ、includeを定義している箇所で、編集という行為を想定しているのか?
が理解できません。単に参照したいから記述しているわけで、直接、編集できる
必要を感じません。せめても、単なるリンク(参照)程度かと考えています。
以下のパッチだと、それすらも捨てています。このパッチの是非はあると思いますが、
議論を行う上での一歩として付けておきます。

do_plugin_convert()が二重に実行されるため、
 return preg_replace('/(<form[^>]*>)/',"$1\n<div><input type=\"hidden\" name=\"encode_hint\" value=\"ぷ\" /></div>",$retvar);
で重複出力されてしまう。
 49c49
 <       $link = "<a href=\"$script?cmd=edit&amp;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&amp;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>&nbsp;<a href=\"#icon_menu\">▼</a></div>\n";
 +				if ($argnum == 1){
 +					$head .= "<h3>$link <a class=\"anchor_super\" href=\"$script?$r_page\">$_symbol_anchor2</a>&nbsp;<a class=\"anchor_super\" href=\"$script?cmd=edit&amp;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&amp;__mode=view&amp;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&amp;page=$r_page\">編集</a>)";

#comment

//#comment


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.070 sec.

OSDN