AutoAlias が、AutoLink 用のConfig 設定をそのまま使っている

  • ページ: BugTrack2
  • 投稿者: 名無しさん
  • 優先順位: 低
  • 状態: 提案
  • カテゴリー: 本体バグ
  • 投稿日: 2009-03-31 (火) 19:33:54
  • バージョン:

メッセージ

AutoLink, AutoAlias ともにget_autolink_pattern() を経由して正規表現を作っていますが、本来AutoLink 用として用意されたConfig 設定をAutoAlias でもそのまま使っているので、不都合な場合があります。

例えば、IgnoreList に登録されていてAutoAliasName には登録されていない単語があった場合、Link_autoalias::toString() でreturn ''; されてしまい閲覧時にその文字が表示されなくなります。
意図してそれをしているのならまだいいのですが、AutoLink とAutoAlias を同時に運用している場合は、AutoAlias に登録していないのにAutoLink にならず、文字が表示されないという状況になってしまいます。

そこで、$min_len のようにget_autolink_pattern() を呼び出す時に、使うConfig 設定ページ(あるいは、使わないこと)を指定するようにして、省略された場合は互換動作させる(AutoLink の設定を使う)か、
ForceIgnoreList は共有してIgnoreList を利用するかを切り替えられるようにするか、
というようにできればいいなと思い提案します。


  • 設定ページを共有している問題と、AutoAlias でIgnoreList を使うと登録した文字が表示されなくなる場合がある問題は、別です。AutoAlias が「:config/AutoAliasName」を見るようになったとしても、IgnoreList の問題が残ってしまいます。 -- 2010-01-31 (日) 08:34:39
    • AutoLink の場合は、
      		if (in_array($name, $this->forceignorepages) || ! is_page($name))
      			return FALSE;
      ForceIgnoreList に一致するか、IgnoreList に一致したなどで存在しないページ名にマッチした場合に、リンクの対象外になっています。
      ところが、AutoAlias の場合は、
      		if (in_array($name, $this->forceignorepages)) {
      			return FALSE;
      		}
      ForceIgnoreList に一致した場合は対象外となっているのですが、IgnoreListにマッチした場合は AutoAliasName のルールを確認せずに処理を続行してしまいます。AutoLink と処理をあわせるのなら、
      get_autoaliases($name) == ''
      を条件に追加すればいいですし、違ってもいいのなら「Link_autoalias::toString() で該当ルールなしの場合はreturn '';」している処理をreturn make_line_rules(htmlspecialchars($this->name)); するように変える方法もあります。 -- 2010-01-31 (日) 08:34:39


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-01-31 (日) 08:34:39
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.244 sec.

OSDN