#relatedの出力でタグの不整合

  • ページ: BugTrack
  • 投稿者: reimy
  • 優先順位: 重要
  • 状態: 完了
  • カテゴリー: 本体バグ
  • 投稿日: 2003-06-26 (木) 02:07:33
  • バージョン: 1.3.x/1.4rc3

メッセージ

#relatedの出力でHTMLのタグ出力が不整合を起こしてます。

1.4系と1.3系の両方で不整合が起きますが、その出力は微妙に異なります。

  • 1.3.4のサンプル
    <ul>
      <li>....</li>
      <li>....</li>
       ............
      <li>....</li>
      <li>....</li>
    </ul>
    となるべきところが、
         .....</li>
      <li>....</li>
       ...........
      <li>....</li>
      <li>....
    と出力されてしまっている。開始部分の<ul><li>と終了部分の</li></ul>が欠落。
  • 1.4rc3のサンプル
    <ul>
      <li>....</li>
      <li>....</li>
       ............
      <li>....</li>
      <li>....</li>
    </ul>
    となるべきところが、
      <p>.....</li>
      <li>....</li>
       ...........
      <li>....</li>
      <li>....</p>
    と出力されてしまっている。開始部分の<ul><li>が<p>に、終了部分の</li></ul>が</p>に化けている。

  • とりあえず現状は、#relatedは下記のように使うしかない。仕様とするなら、注意書が必要かも。 -- reimy 2003-06-26 (木) 05:17:21
    -#related
  • そういう仕様だと思っていました。#relatedはリストの中で使うものだと。たとえば以下のように。 -- ぱんだ 2003-06-26 (木) 23:45:30
    - 関連するページ名
    -- #related
  • どこにもそういう注意書がないので、旧PukiWiki-officialサイト内で#relatedを行頭で使ってる人が何人もいました。ヘルプでは#relatedや#norelatedはわざと書いてないからなあ… -- reimy 2003-06-27 (金) 01:09:04
  • それっぽいコメントが残っているので、動くようにするなら下のような感じでしょうか。 -- masao 2003-06-28 (土) 08:03:02
    Index: convert_html.php
    ===================================================================
    RCS file: /cvsroot/pukiwiki/pukiwiki/convert_html.php,v
    retrieving revision 1.45
    diff -u -r1.45 convert_html.php
    --- convert_html.php	12 Jun 2003 00:44:30 -0000	1.45
    +++ convert_html.php	27 Jun 2003 23:00:13 -0000
    @@ -831,7 +831,8 @@
     		
     		// 関連するページ
     		// <p>のときは行頭から、<del>のときは他の要素の子要素として存在
    -		$text = preg_replace('/<(p|del)>#related<\/\1>/e','make_related($vars[\'page\'],\'$1\')',$text);
    +		$text = preg_replace('/<p><del>#related<\/del><\/p>/',make_related($vars['page'],'p'),$text);
    +		$text = preg_replace('/<del>#related<\/del>/',make_related($vars['page']),$text);
     		return $text;
     	}
     	function block(&$lines,$start,$end,$class)
    Index: html.php
    ===================================================================
    RCS file: /cvsroot/pukiwiki/pukiwiki/html.php,v
    retrieving revision 1.82
    diff -u -r1.82 html.php
    --- html.php	22 Jun 2003 05:47:17 -0000	1.82
    +++ html.php	27 Jun 2003 23:00:13 -0000
    @@ -244,16 +244,11 @@
     			"<a href=\"$script?$r_page\">$s_page</a>$passage";
     	}
     	
    -	if ($tag) {
    -		$retval = join($rule_related_str,$_links);
    -		if ($tag == 'p') {
    -			$margin = $_ul_left_margin + $_ul_margin;
    -			$style = sprintf($_list_pad_str,1,$margin,$margin);
    -			$retval =  "\n<ul class=\"list1\" style=\"$style\">\n<li>$retval</li>\n</ul>\n";
    -		}
    -	}
    -	else {
    -		$retval = join($related_str,$_links);
    +	$retval = join($rule_related_str,$_links);
    +	if ($tag == 'p') {
    +		$margin = $_ul_left_margin + $_ul_margin;
    +		$style = sprintf($_list_pad_str,1,$margin,$margin);
    +		$retval =  "\n<ul $style>\n<li>$retval</li>\n</ul>\n";
     	}
     	return $retval;
     }
  • あ。そういえばそんなコードを仕込んだ記憶が。動かなくなってたんですね。失礼しました。masaoさんのコードを取り込みました。 -- ぱんだ 2003-06-30 (月) 09:38:58
  • あぅ。ごめんなさい。下手にロジックをいじったせいでバグを入れ込んだみたいです。今度は 「-#related」 の方がうまくいかなくなってしまってますね。 -- masao 2003-07-04 (金) 19:08:36
diff -u -r1.47 convert_html.php
--- convert_html.php	30 Jun 2003 00:38:21 -0000	1.47
+++ convert_html.php	4 Jul 2003 10:10:31 -0000
@@ -832,7 +832,7 @@
 		// 関連するページ
 		// <p>のときは行頭から、<del>のときは他の要素の子要素として存在
 		$text = preg_replace('/<p><del>#related<\/del><\/p>/',make_related($vars['page'],'p'),$text);
-		$text = preg_replace('/<del>#related<\/del>/',make_related($vars['page']),$text);
+		$text = preg_replace('/<del>#related<\/del>/',make_related($vars['page'], 'del'),$text);
 		return $text;
 	}
 	function block(&$lines,$start,$end,$class)

diff -u -r1.86 html.php
--- html.php	30 Jun 2003 06:12:28 -0000	1.86
+++ html.php	4 Jul 2003 10:10:31 -0000
@@ -244,11 +244,15 @@
 			"<a href=\"$script?$r_page\">$s_page</a>$passage";
 	}
 	
-	if ($tag == 'p')
+	if ($tag)
 	{
-		$margin = $_ul_left_margin + $_ul_margin;
-		$style = sprintf($_list_pad_str,1,$margin,$margin);
-		$retval =  "\n<ul $style>\n<li>".join($rule_related_str,$_links)."</li>\n</ul>\n";
+		$retval = join($rule_related_str,$_links);
+		if ($tag == 'p')
+		{
+			$margin = $_ul_left_margin + $_ul_margin;
+			$style = sprintf($_list_pad_str,1,$margin,$margin);
+			$retval =  "\n<ul $style>\n<li>".join($rule_related_str,$_links)."</li>\n</ul>\n";
+		}
 	}
 	else
 	{

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2005-11-16 (水) 04:07:14
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.302 sec.

OSDN