質問箱/4046

カテゴリ
サマリtracker_listで表組み表示にしない場合の改行の扱いについて
バージョン1.4.6
投稿者okd
状態保留
投稿日2007-04-09 (月) 15:26:30

質問

以上を参考にして、 textarea内容を改行つきでtracker_listで表示させようとしているのですが(もちろん、 pukiwiki.ini.phpの$line_breakを1に設定済みです。) tracker_listの内容を以下のようなリスト表組みではなく、

|[title]|[Summary]|[_date]|h
|[title]|[Summary]|[_date]|

単なるWhat's newのような扱いで

-[title]([_date])
--[Summary]

と箇条書きで表示させている場合、改行つきで表示されません。
[summary]がtextareaに該当します。
できればtextarea内の改行にあわせて箇条書きにしたいので、現在はtextarea内の2行目以降に「--」を記入してらもう形で運用していて、pageには改行と箇条書きが反映されているのですが、listには改行も箇条書きも反映されておらず、「~ます。--二行目は~」というような表示になる状態です。何か方法ありますでしょうか。

回答

  • &br;(半角で)は駄目かな? -- 2007-04-09 (月) 16:58:29
  • &br;も試してみましたが、改行はされますが冒頭の「--」が箇条書きに変換されず、そのまま「--」と表示されてしまいます。 -- okd? 2007-04-10 (火) 09:04:26
  • 改行をそのままlistでも改行として表示できればよい、てことでしょうか?
    やっつけ仕事で応用性がなくなるんですが、tracker.inc.phpの352行を変更すればいけるような気がします。外していたらごめんなさい。 -- 2007-05-16 (水) 23:38:22
    function format_cell($str)
    {
    -	$str = preg_replace('/[\r\n]+/','',$str);
    +	$str = preg_replace('/[\r\n]+/','&br;',$str);
     	if (!empty($this->values[2]) and strlen($str) > ($this->values[2] + 3))
  • こっちの方法はどうでしょう。
    class Tracker_list
    {
    (中略)
    	function replace_item($arr)
    	{
    		$params = explode(',',$arr[1]);
    		$name = array_shift($params);
    		if ($name == '')
    		{
    			$str = '';
    		}
    		else if (array_key_exists($name,$this->items))
    		{
    			$str = $this->items[$name];
    			if (array_key_exists($name,$this->fields))
    			{
    -				$str = $this->fields[$name]->format_cell($str);
    +				if($this->pipe or !(strcasecmp(get_class($this->fields[$name]), 'tracker_field_textarea') === 0) ) {
    +					$str = $this->fields[$name]->format_cell($str);
    +				}
    			}
    		}
    		else

    これなら下の$this->pipe で設定したパターンが、TRUE ならtextarea が1行表示に変換され、 FALSE ならtextarea は変換されずそのまま表示されます。
    (textarea 以外は、$this->pipe がどちらでもこれまでと同じ処理)

    class Tracker_list
    {
    (中略)
    	function toString($limit=NULL)
    	{
    (中略)
    				$this->pipe = ($line{0} == '|' or $line{0} == ':');
    				$source .= preg_replace_callback('/\[([^\[\]]+)\]/',array(&$this,'replace_item'),$line);
    			}
    		}
    		return convert_html($source);
    	}
    }

    デフォルトでは「ベースページ名/list」 ページで、表組みと定義リストの行がTRUE になります。
    $this->pipe のパターンを増やした時にどうなるか、まではテストしてません。

    こちらの方法だとプラグイン1つで、表組みのtracker_list と共存できるようになります。 -- 2007-06-04 (月) 14:27:40
  • dev:BugTrack2/243 -- 2007-09-20 (木) 11:27:22

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

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

OSDN