*#relatedの出力でタグの不整合 [#vc6cea0c] -ページ: BugTrack -投稿者: [[reimy]] -優先順位: 重要 -状態: 着手 -カテゴリー: 本体バグ -投稿日: 2003-06-26 (木) 02:07:33 -バージョン: 1.3.x/1.4rc3 **メッセージ [#n47bbdc1] ~#relatedの出力でHTMLのタグ出力が不整合を起こしてます。 ~1.4系と1.3系の両方で不整合が起きますが、その出力は微妙に異なります。 -[[1.3.4のサンプル>pukiwiki:kawara#content_1_1]] <ul> <li>....</li> <li>....</li> ............ <li>....</li> <li>....</li> </ul> となるべきところが、 .....</li> <li>....</li> ........... <li>....</li> <li>.... と出力されてしまっている。開始部分の<ul><li>と終了部分の</li></ul>が欠落。 -[[1.4rc3のサンプル>雑談#v771ff81]] <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]] &new{2003-06-26 (木) 05:17:21}; -#related -そういう仕様だと思っていました。#relatedはリストの中で使うものだと。たとえば以下のように。 -- [[ぱんだ]] &new{2003-06-26 (木) 23:45:30}; - 関連するページ名 -- #related -どこにもそういう注意書がないので、旧PukiWiki.orgサイト内で#relatedを行頭で使ってる人が何人もいました。ヘルプでは#relatedや#norelatedはわざと書いてないからなあ… -- [[reimy]] &new{2003-06-27 (金) 01:09:04}; -それっぽいコメントが残っているので、動くようにするなら下のような感じでしょうか。 -- [[masao]] &new{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]]さんのコードを取り込みました。 -- [[ぱんだ]] &new{2003-06-30 (月) 09:38:58}; -- [[cvs:convert_html.php]](v1.4:r1.47) -- [[cvs:html.php]](v1.4:r1.84) -あぅ。ごめんなさい。下手にロジックをいじったせいでバグを入れ込んだみたいです。今度は 「-#related」 の方がうまくいかなくなってしまってますね。 -- [[masao]] &new{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 { #comment