ページ名変更時の挙動†
- ページ: BugTrack
- 投稿者: ちびじゃ
- 優先順位: 低
- 状態: 提案
- カテゴリー: 本体バグ
- 投稿日: 2004-04-25 (日) 13:35:19
- バージョン:
メッセージ†
ページ名変更時に何も変えずに「進む」を押すと$is_pageがtrueになってしまいます。編集メニューの表示項目を制御している場合などに影響があります。
実害は無いです。
- trueになるのかfalseになるのか、どちらが正しい挙動なんでしょうか?newpageやtemplateなど、別のページに関連する物はfalseに、editやdiffなどはtrueになっていますから、falseが正しいんでしょうね。どこに原因があるか私にはわかりませんので、誰かにパスします(汗 -- Ratbeta
- おぼろげな記憶ですが、is_pageやis_freezeはまだどことなく整理されていないところがあったような気がします。そのために、デフォルトの挙動ではその問題が表面化しないものの、項目の 表示する/しない をカスタマイズしたくなった方が、意図通りの結果を得られない、という場面に遭遇することがあるのです。 -- henoheno
- 編集・凍結周りの見直しをするにつれて、このような状況は少なくなって行くことでしょう。 -- henoheno
- 関連: BugTrack/695 -- henoheno
- スキンを設定する人のためのメモ
lib/html.php
// $Id: html.php,v 1.62 2007/05/12 14:24:42 henoheno Exp $
(中略)
$_page = isset($vars['page']) ? $vars['page'] : '';
(中略)
// Init flags
$is_page = (is_pagename($_page) && ! arg_check('backup') && $_page !== $whatsnew);
$is_read = (arg_check('read') && is_page($_page));
$is_freeze = is_freeze($_page);
これを見るに、$is_page ,$is_read ,$is_freeze は、「&page=ページ名」が設定されている*1ことが大前提になります。(なければ3つともFALSE を返す)
それに加えて、
- $is_page は、「ページ名が妥当(不正文字を含まない)である」、「コマンド(プラグイン)がbackup 以外である」、
「ページ名が$whatsnew 以外である」、以上3点をすべて満たすとTRUE
- $is_read は、「コマンド(プラグイン)がread である」*2、「ページ名のファイルがDATA_DIR に存在する」、以上2点をすべて満たすとTRUE
- $is_freeze は、「ページ名のファイルがDATA_DIR に存在し、なおかつ#freezeが存在する」*3とTRUE
がデフォルトです。
この3つを好みの動作になるように編集するか、新たなパラメータを書き足して*4、
既存のものと組み合わせてください。 --