画像のサムネールを表示し、クリックしたら拡大画像を表示したい場合、
[[http://hogehoge/thumb.jpg>http://hogehoge/larege.jpg]]
のようにすれば実現可能だが、添付ファイルをリンク先にしたり、テキストの回り込みをしたり、といったことはできない(と思われる)。refプラグインで、画像のリンク先として、別のURLや添付ファイルを指定できると良さそうである。
という訳で、このような改造を考えてみました BugTrack417a.diff(refプラグ印のリビジョンがr1.24以降の場合は、本ページ最後のパッチを適用してください)。
#ref(添付ファイル or URL,パラメータ,タイトルおよびリンク先 or URL) &ref(添付ファイル or URL,パラメータ,タイトルおよびリンク先 or URL);
例えば、
#ref(http://hogehoge/small.jpg,around,http://hogehoge/large.jpg,サンプル画像)
とすると、テキスト回り込み有りで small.jpg が表示され、画像をクリックすると large.jpg が表示されます。
ただ、refプラグインは複雑なので、いろいろとエンバグしていそうな気が・・・。
[[&ref(http://hogehoge/thumb.jpg,nolink);>http://hogehoge/larege.jpg]] [[&ref(http://hogehoge/small.jpg,nolink,サンプル画像);>http://hogehoge/large.jpg]]
[[&ref(small.jpg,around,nolink);>&ref(large.jpg);]] テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。 テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。 テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。 テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。[[
[[&ref(small.jpg,around,nolink);>http://pukiwiki.sourceforge.jp/dev/?cmd=attach&openfile=large.jpg&refer=BugTrack/417]]
テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。 テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。 テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。 テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。
←#ref(circle_large.png,left,around,20%) により表示。ブラウザにより違いますが、たいていは、ギザギザした画像になっていると思います。特に中央部は、崩れて見えるブラウザが多いと思います。
←まっとうなアルゴリズムで縮小した物を ref(circle_small.png,left,around) で表示。中央部の崩れはありません。
#img(): File not found:Index: plugin/ref.inc.php =================================================================== RCS file: /cvsroot/pukiwiki/pukiwiki/plugin/ref.inc.php,v retrieving revision 1.50 diff -u -r1.50 ref.inc.php --- plugin/ref.inc.php 24 Feb 2006 01:35:34 -0000 1.50 +++ plugin/ref.inc.php 23 Jul 2009 16:33:16 -0000 @@ -300,8 +300,30 @@ } else if (preg_match('/^([0-9.]+)%$/', $arg, $matches) && $matches[1] > 0) { $params['_%'] = $matches[1]; + } else if($is_image && is_url($arg)) { + // 画像で、拡張パラメータが URL なら、リンク + $url2 = htmlspecialchars($arg); } else { - $_title[] = $arg; + // ファイル名にページ名(ページ参照パス)が合成されているか + // (Page_name/maybe-separated-with/slashes/ATTACHED_FILENAME) + if (preg_match('#^(.+)/([^/]+)$#', $arg, $matches)) { + if ($matches[1] == '.' || $matches[1] == '..') { + $matches[1] .= '/'; // Restore relative paths + } + $tmp_name = $matches[2]; + $tmp_page = get_fullname(strip_bracket($matches[1]), $page); // strip is a compat + } else { + $tmp_name = $arg; + $tmp_page = $page; + } + $tmp_file = UPLOAD_DIR.encode($tmp_page).'_'.encode($tmp_name); + if ($is_image && is_file($tmp_file)) { + // 画像で、拡張パラメータが添付ファイルなら、リンク + $url2 = $script . '?plugin=attach' . '&refer=' . rawurlencode($tmp_page) . + '&openfile=' . rawurlencode($tmp_name); // Show its filename at the last + } else { + $_title[] = $arg; + } } }