*refプラグインで画像のリンク先を指定可能に [#vd47dbb1]

-ページ: BugTrack
-投稿者: [[三浦克介]]
-優先順位: 低
-状態: 却下
-カテゴリー: プラグイン
-投稿日: 2003-07-07 (月) 18:55:10
-バージョン: 

**メッセージ [#nd437e32]
画像のサムネールを表示し、クリックしたら拡大画像を表示したい場合、
 [[http://hogehoge/thumb.jpg>http://hogehoge/larege.jpg]]
のようにすれば実現可能だが、添付ファイルをリンク先にしたり、テキストの回り込みをしたり、といったことはできない(と思われる)。refプラグインで、画像のリンク先として、別のURLや添付ファイルを指定できると良さそうである。
----
という訳で、このような改造を考えてみました &ref(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プラグインは複雑なので、いろいろとエンバグしていそうな気が・・・。

----
-画像のリンク先を別のURLや添付ファイルを指定するのは、現状のままでできますよ。 -- [[reimy]] &new{2003-07-07 (月) 19:47:53};
 [[&ref(http://hogehoge/thumb.jpg,nolink);>http://hogehoge/larege.jpg]]
 [[&ref(http://hogehoge/small.jpg,nolink,サンプル画像);>http://hogehoge/large.jpg]]

-[[reimy]] さんが [[BugTrack/379]] で書かれているのは拝見したのですが、その方法では、添付ファイルをリンク先にしたり、テキストを回りこませたりすることができなかったので、作ってんみたのですが、できます? -- [[三浦克介]] &new{2003-07-07 (月) 20:00:59};
 [[&ref(small.jpg,around,nolink);>&ref(large.jpg);]]
 テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。
 テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。
 テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。
 テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。
[[&ref(small.jpg,around,nolink);>&ref(large.jpg);]]
テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。
テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。
テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。
テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。
-あと、ブラケットと &ref の組み合わせで可能だとしても、ちょっとトリッキーかなと思ったので。[[BugTrack/379]] で [[morikawa]] さんも「思いつかなかった」と述べていらっしゃいますし。 -- [[三浦克介]] &new{2003-07-07 (月) 20:10:20};
-お、添付ファイルを参照するのは、こうですね? -- [[三浦克介]] &new{2003-07-07 (月) 20:16:30};
 [[&ref(small.jpg,around,nolink);>http://pukiwiki.sourceforge.jp/dev/?cmd=attach&openfile=large.jpg&refer=BugTrack/417]]
[[&ref(small.jpg,around,nolink);>http://pukiwiki.sourceforge.jp/dev/?cmd=attach&openfile=large.jpg&refer=BugTrack/417]]やはり、一般ユーザーレベルでは、無理なのでは? それと、テキストの回り込みはできませんよね?

----
#ref(large.jpg,left,around,17%)
~テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。
テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。
テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。
テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。テキストの回りこみ。
-↑#ref(large.jpg,left,around,17%) とされていますが、縮小率を設定した場合、全画像データがブラウザに転送され、ブラウザで縮小処理がなされます。拡大画像を見る必要の無い人に対しても、多量のデータが送信されますので、トラフィックの無駄だと思います。特に、多数の画像を張り込んだアルバムのようなページは激重になります。さらに、ブラウザの画像縮小アルゴリズムは、単純なサンプリングアルゴリズムの場合が多く、縮小画像がギザギザした物になります。 -- [[三浦克介]] &new{2003-07-07 (月) 21:24:23};
#ref(circle_large.png,left,around,20%)
~←#ref(circle_large.png,left,around,20%) により表示。ブラウザにより違いますが、たいていは、ギザギザした画像になっていると思います。特に中央部は、崩れて見えるブラウザが多いと思います。
#ref(circle_small.png,left,around)
~←まっとうなアルゴリズムで縮小した物を ref(circle_small.png,left,around) で表示。中央部の崩れはありません。
#img(,clear)
-需要が低いようなので、却下。 -- [[三浦克介]] &new{2003-07-29 (火) 18:20:33};
- 久しぶりに投稿します。状態は却下ですが、最新リビジョンのref.inc.php(r1.50)に対するパッチを作成しましたので、以下に掲載します。r1.24以降なら適用可能と思います。 -- [[三浦克介]] &new{2009-07-24 (金) 00:27:04};
 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 15:04:03 -0000
 @@ -300,8 +300,21 @@
 +++ 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;
 +				$tmp_file = UPLOAD_DIR.encode($page).'_'.encode($arg);
 +				if ($is_image && is_file($tmp_file))
 +				{
 +				// ファイル名にページ名(ページ参照パス)が合成されているか
 +				// (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)) {
 +					// 画像で、拡張パラメータが添付ファイルなら、リンク
 +					$tmp_url = $script.'?plugin=attach&openfile='.rawurlencode($arg).'&refer='.rawurlencode($page);
 +					$url2 = $tmp_url;
 +				}
 +				else
 +				{
 +					$url2 = $script . '?plugin=attach' . '&refer=' . rawurlencode($tmp_page) .
 +						'&openfile=' . rawurlencode($tmp_name); // Show its filename at the last
 +				} else {
 +					$_title[] = $arg;
 +				}
  			}
  		}

 
//#comment

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.3+ © 2001-2020 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.080 sec.

OSDN