カテゴリ | |
---|---|
サマリ | 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には改行も箇条書きも反映されておらず、「~ます。--二行目は~」というような表示になる状態です。何か方法ありますでしょうか。
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))
こちらの方法だとプラグイン1つで、表組みのtracker_list と共存できるようになります。 -- 2007-06-04 (月) 14:27:40class 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 のパターンを増やした時にどうなるか、まではテストしてません。