Category::Plugin

refプラグイン(インライン型)でファイル名だけを指定する書式が使えなくなっている

  • ページ: BugTrack
  • 投稿者: jjyun
  • 優先順位: 重要
  • 状態: 提案
  • カテゴリー: プラグイン
  • 投稿日: 2004-08-29 (日) 18:02:23
  • バージョン: 1.4.4

メッセージ

あるページに添付したファイルを、同じページから参照する際に、 refプラグインを以下のように使っています。

&ref(添付ファイル名);

1.32 までは、この表記でリンク表示されていたのですが、 1.33 以降からは、以下のようなエラーメッセージが表示されるようになりました。(添付ファイル名やページ名を抽象的に書きたかったのですが、よりわかりづらくなるかもしれないと思い、そのままにしています)

  • 現象発生条件:ref.inc.php(1.32→1.33)
  • 添付ファイル名:datefield.inc.php-0.7.2
  • refプラグインを使用したページ名:実験室/datefield.inc.php
  • 表記内容
    &ref(): The same file name "datefield.inc.php-0.7.2" at both page:
    実験室/datefield.inc.php and 実験室/datefield.inc.php.
    Try ref(pagename/filname) to specify one of them;

「両方のページに~」というエラー内容はわからないものの、 指定されている表記に従って、以下のように書き直せば、 これまで通りに、リンク表記がなされます。

&ref(./添付ファイル名);

refプラグインは、添付先のページ指定に関する修正がなされていると 思いますが、この挙動は意図されたもの(refの仕様の変更)なのでしょうか?それともバグですか?(^^;


  • む、確認します。該当のページはWebに露出しているページ(今私が確認できる状態)ですか? => 補足しました。プレビューで様子を見ています -- henoheno 2004-08-29 (日) 18:05:15
  • 現在、公開サイトでは最新版(1.36)を導入しています。ローカル側でバージョン関連の切り分けは行いました。 -- jjyun 2004-08-29 (日) 18:12:36
  • 上記エラーは A というページに ref(foo.tgz,B) という(現状では推奨されない)表記をした際に、foo.tgz というファイルが A にも B にも存在していると出すエラーとして用意したものです。つまり意図した状況ではありません-- henoheno 2004-08-29 (日) 18:13:43
  • む。手元ではまだ再現できず。 -- henoheno 2004-08-29 (日) 18:19:09
  • 再現しました。 #ref では再現せず、&と; で囲むインライン型の表記でのみ再現しました。 -- henoheno 2004-08-29 (日) 18:20:33
    • あ、タイトルに (インライン型) って書いてあるや・・・ pukiwiki.orz -- henoheno 2004-08-29 (日) 18:32:59
  • これはインラインプラグインを呼ぶ関数 do_plugin_inline() が、引数としてひとつ余計な値を渡して来るのが直接の原因の様で、ref自身はあまり悪くなさそうです。 -- henoheno 2004-08-29 (日) 18:26:46
  • do_plugin_inline() のこの挙動は r(リビジョン)1.3 のころからこうで、なぜこうなのかが良く解っていないので、コメントを添えたのみで特に手を加えていないんですよね -- henoheno 2004-08-29 (日) 18:31:44
    • (FYI)インラインプラグインの作成はさっぱりなのですが、このdo_plugin_inline()の挙動の件は、PukiWiki/Plug-inの仕様とかBugTrack/404あたりが関係してそうじゃないでしょうか。 -- jjyun 2004-08-29 (日) 19:37:00
    • ご指摘ありがとうございます。これですね。 -- henoheno
diff -r1.36 ref.inc.php
181c181
<               } else if (isset($args[0]) &&  ! isset($params[$args[0]])) {
---
>               } else if (isset($args[0]) && $args[0] != '' && ! isset($params[$args[0]])) {
  • cvs:plugin/ref.inc.php (v1.4:1.37)
  • refプラグインの(第二引数の)引数チェックをより厳密にする方向の修正を行いました。これで第二引数が空だった時の挙動も確定します -- henoheno 2004-08-29 (日) 19:27:56
  • いつもいつも、迅速な対応を頂きありがとうございます。
    私の方でも動作確認し、1.32以前と同様の動作をすることを確認しましたので、状態を「完了」にしたいと思います。 -- jjyun 2004-08-29 (日) 19:49:30

再提案

  • これ、ファイル名のみを指定した記述に対する対処なんですね。&ref(添付ファイル名,拡大率); など他のオプションを指定していた場合は同じ症状になる事に今更気付きました。ウチは該当箇所が少なかったので「./ファイル名」に直しましたが、困る人が出てくる可能性がある点を書いておきますです。 -- にぶんのに 2004-09-05 (日) 23:41:45
    • うちも1.4.4で同じ現象にはまりました。 -- teanan 2004-09-06 (月) 00:40:00
  • お知らせありがとうございます :) 手元では ref(filename,right) のような組み合わせで確認していたのですが、固定文字列でないオプションのチェックが抜けている様ですね。簡単に修正できるかと思ったら、refプラグインの内部では拡大率(50%など)のオプションを判定している所だけ、オプション判定をする部分と同じ場所にはない様です。ちょっと考えないといけません -- henoheno 2004-09-06 (月) 20:53:26


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2004-09-06 (月) 20:53:26
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.332 sec.

OSDN