トップ 差分 一覧 Farm ソース 検索 ヘルプ RSS ログイン

BugTrack-plugin/264

ページの作成や編集にはユーザ登録が必要です。

イメージをリンクラベルにする改造のプラグイン化(Rev03.2)

  • 投稿者: ZON
  • カテゴリ: 新規
  • 優先度: 低
  • 状態: 着手
  • 日時: 2006年03月06日 13時22分26秒

 内容

この改造プラグインは、

  • BugTrack-plugin/91 (紅猫 氏)の「リンクラベルがイメージを示すURL(httpで始まる)の場合、イメージを表示してリンクラベルにする改造」
  • BugTrack-plugin/237(拙作)の「Wikiページへのリンクラベルがイメージを示すURL(httpで始まる)の場合、イメージを表示してリンクラベルにする改造」

……この二つの改造を合わせてプラグイン化したものをベースに、更なる改良とプラグインとしての充実をはかったものです。

※プラグイン化につきましては、BugTrack-plugin/235 (あき 氏)の手法を参考にさせていただきました。ありがとうございます。(プラグイン名も準拠させていただきました)

  三種類のプラグインについて

イメージアンカー機能拡張プラグインは、その動作によって三つの種類に分けています。次の段の解説を読まれて必要なものを一種類だけインストールしてください。

この種類のプラグイン(あるいは標準機能の書き換え)は、FSWikiのバージョン変化の影響を受けやすいものです。特にこのプラグインは、もともとが配布物の改造・書き換えからスタートしていますので更新に追従する必要があります。

三種類とも Wiki::HtmlParser の内容を書き換えるプラグインですが、該当部分だけを交換するので Wiki::HtmlParser の更新による影響については受けにくくなっています。

※プラス版とマイナス版はたった一行の改造なのですが Wiki::Parser に手を加えているため、本体が更新されるときは書き直す必要が生じやすくなっています

 バージョンアップ

初版
元となった改造(パッチ)をプラグイン化したもの。尚、Rev02を作ったときにわかったことですが、この改造の記述は既に現在のものとは違っていて、これをそのまま利用するとパッチが公開された当時のスクリプトに書き戻すことになってしまいます
試験プラス版
自サイト上に既に大量の画像がアップロードされていたのでこれを容易に使えないかという判断で開発を始めたもの。出来は今一つです
Rev02
開発は3.5.10で行いました。FSWiki3.5.11での動作を確認しています(3.5.10でも動作します)もちろん3.6.0以降でも動作はしますが、minus版とplus版の場合、Wiki::Parserが3.5.11のサブルーチンに書き戻されてしまいます
Rev03と03.1
FSWiki3.6.0での更新に対応しました。3.6.0をお使いの方はこちらをどうぞ(3.5.11でも動く事を確認しています。それ以前のバージョンでも恐らく動くでしょうが、その場合、3.6.0のサブルーチンが使用されることになります)……3.6.2での動作を確認しました。

※3.6.0でWiki::HtmlParserの該当部分の変更が無かったのでプラス版とマイナス版だけがRev03となります。ノーマル版は3.6.0以降でも問題なく使用できます

Rev02.1と03.2
WikiName使用環境での表示異常 を修正しました。三種類のプラグインを並行して作業中にミスしたようです。

  機能一覧表

Wikiソースに出現するもの FSWiki本来の動作 ノーマル版 minus版 plus版
http(s)で始まる文節 テキストラベルリンク テキストラベルリンク テキストラベルリンク テキストラベルリンク
http(s)で始まり画像を示す 画像表示 画像表示 (制限)テキストラベルリンク 画像表示
ページ添付画像ファイル名 何もしない 何もしない 何もしない 何もしない
[ ]使用のラベル付き任意アンカ ラベル名を使用してリンク ラベル名を使用してリンク ラベル名を使用してリンク ラベル名を使用してリンク
[ ]使用の画像URL指定任意アンカ URLテキストをラベルにリンク ラベル名がhttp(s)で始まる画像を示していればイメージラベルとしてリンクを作成する(Rev01で実現) (制限)URLテキストをラベルにリンク ラベル名がhttp(s)で始まる画像を示していればイメージラベルとしてリンクを作成する(ノーマル版に同じ Rev02で実現)
[ ]使用のページ添付画像ファイル名指定任意アンカ ファイル名テキストをラベルにリンク ラベル名がそのページに添付された画像名を示していればイメージラベルとしてリンクを作成する (Rev01で実現) ラベル名がそのページに添付された画像名を示していればイメージラベルとしてリンクを作成する (ノーマル版に同じRev02で実現) ラベル名がそのページに添付された画像名を示していればイメージラベルとしてリンクを作成する (ノーマル版に同じRev02で実現)
存在するWikiページ名 Wikiページ名をラベルとするリンク Wikiページ名をラベルとするリンク Wikiページ名をラベルとするリンク Wikiページ名をラベルとするリンク
[ [ ] ]使用のラベル付き任意アンカ ラベル名使用リンク ラベル名使用リンク ラベル名使用リンク ラベル名使用リンク
[ [ ] ]使用の画像URL指定任意アンカ URLテキストをラベルにリンク ラベル名がhttp(s)で始まる画像を示していればイメージラベルとしてリンクを作成する (Rev01で実現) (制限)URLテキストをラベルにリンク ラベル名がhttp(s)で始まる画像を示していればイメージラベルとしてリンクを作成する(ノーマル版に同じRev02で実現)
[ [ ] ]使用のページ添付画像ファイル名指定任意アンカ ファイル名テキストをラベルにリンク ラベル名がそのページに添付された画像名を示していればイメージラベルとしてリンクを作成する (Rev02で実現) ラベル名がそのページに添付された画像名を示していればイメージラベルとしてリンクを作成する(ノーマル版に同じ Rev02で実現) ラベル名がそのページに添付された画像名を示していればイメージラベルとしてリンクを作成する(ノーマル版に同じ Rev02で実現)
./image/で始まり画像を示して終わる文節 何もしない 何もしない 画像表示(Rev02で実現) 画像表示(Rev02で実現)
[ ]使用の./image/で始まり画像を示すラベル付きアンカ 何もしない 何もしない ./image/で始まり画像拡張子で終わる文節を変換して画像表示を行う (Rev02で実現) ./image/で始まり画像拡張子で終わる文節を変換して画像表示を行う (Rev02で実現)
[ ]使用でリンク先が./image/ で始まる画像を示すとき 何もしない 何もしない リンク先画像として文節変換したリンクを作成する (Rev03.1で実現) リンク先画像として文節変換したリンクを作成する (Rev03.1で実現)
[ [ ] ]使用の./image/で始まり画像を示すラベル付きアンカ 何もしない 何もしない ラベル名が ./image/ で始まる画像を示していればイメージラベルとしてリンクを作成する (Rev02で実現) ラベル名が ./image/ で始まる画像を示していればイメージラベルとしてリンクを作成する (Rev02で実現)

  動作

FSWiki本来のアンカとイメージに対する動作は次のようになっています

  1. http(s)で始まるような文節が表れたとき
    • 文節をテキストラベルとしたリンクを作成する
    • 文節末が画像を示すときはリンクを作らずに画像表示を行う
  1. [ と ] で囲まれ | でラベル名を付けられた任意のアンカが表れたとき
    • ラベル名をテキストのラベルとするリンクを作成する
    • ラベル名が画像か何かを示していてもテキストとしてリンクを作成する
  1. 存在するWikiページ名が表れたとき
    • Wikiページ名をテキストのラベルとするリンクを作成する
  1. [ [ と ] ] で囲まれ | でラベル名を付けられたWikiページへの任意のアンカが表れたとき
    • ラベル名をテキストのラベルとするリンクを作成する
    • ラベル名が画像か何かを示していてもテキストとしてリンクを作成する

拡張イメージアンカー(ノーマル版)

標準のFSWikiの動作を拡張します。普通の使用でしたらこれが一番便利でしょう

  1. http(s)で始まるような文節が表れたとき(標準通りです)
    • 文節をテキストラベルとしたリンクを作成する
    • 文節末が画像を示すときはリンクを作らずに画像表示を行う
  1. [ と ] で囲まれ | でラベル名を付けられた任意のアンカが表れたとき
    • ラベル名がhttp(s)で始まる画像を示していればイメージラベルとしてリンクを作成する (Rev01で実現)
    • ラベル名がそのページに添付された画像名を示していればイメージラベルとしてリンクを作成する (Rev01で実現)
  1. [ [ と ] ] で囲まれ | でラベル名を付けられたWikiページへの任意のアンカが表れたとき
    • ラベル名がhttp(s)で始まる画像を示していればイメージラベルとしてリンクを作成する (Rev01で実現)
    • ラベル名がそのページに添付された画像名を示していればイメージラベルとしてリンクを作成する (Rev02で実現)

制限つき拡張イメージアンカー(minus版)

標準の動作を変更し、他の機能を拡張します。

これは「自サイト以外の画像は表示したくない(リンクは良い)」という場合にどうぞ。やや設置が面倒です。子Wikiにも対応しています。

  1. http(s)で始まるような文節が表れたとき
    • (制限)文節末が画像を示す場合でも、常にテキストラベルのリンクを作る
  1. 代わりに ./image/ で始まるような文節が表れたときにURL処理を開始する
    • ./image/で始まり画像拡張子で終わる文節を変換して画像表示を行う (Rev02で実現)
  1. [ と ] で囲まれ | でラベル名を付けられた任意のアンカが表れたとき
    • ラベル名がhttpで始まる画像か何かを示していてもテキストとしてリンクを作成する(標準の動作と同じ)
    • ラベル名が ./image/ で始まる画像を示していればイメージラベルとしてリンクを作成する (Rev02で実現)
      • 加えてリンク先を示す値が ./image/ で始まる画像を示していれば、リンク先画像として文節変換したリンクを作成する (Rev03.1で実現)
    • ラベル名がそのページに添付された画像名を示していればイメージラベルとしてリンクを作成する (Rev01で実現)
  1. [ [ と ] ] で囲まれ | でラベル名を付けられたWikiページへの任意のアンカが表れたとき
    • ラベル名がhttpで始まる画像か何かを示していてもテキストとしてリンクを作成する(標準の動作と同じ)
    • ラベル名が ./image/ で始まる画像を示していればイメージラベルとしてリンクを作成する (Rev02で実現)
    • ラベル名がそのページに添付された画像名を示していればイメージラベルとしてリンクを作成する (Rev02で実現)

./image/ という指定方法ですが、実際にそういうディレクトリを作っても良いですし、別の名前のディレクトリでも構いません。ただ、ソースに書くときは必ず ./image/から書きはじめて画像ファイル名を指定してください。子wikiにも対応していて、その場合でも同じように ./image/ で書きはじめてください。../../image/などと書くと無視されるように制限しています。サブディレクトリはいくつあっても構いません。つまり ./image/section01/foods/poteto.png という書き方はオッケーです

※実体のディレクトリ位置は、wiki.cgi からの相対位置をプラグイン内に二箇所記述してあたえます。

ノーマルとマイナスを合わせた拡張イメージアンカー(plus版)

minus版にノーマル版と同じくhttp(s)で始まる画像表示も許すバージョンがplus版です。

比較的リスクが高いように思いますので設置される場合は良く考えてください。 自サイト画像判定を ./image/ であたえる方法は minus版と同じです。

  1. http(s)で始まるような文節が表れたとき
    • 文節をテキストラベルとしたリンクを作成する(標準通りです)
    • http(s)で始まり文節末が画像を示すときはリンクを作らずに画像表示を行う
  1. 加えて、./image/ で始まるような文節が表れたときにURL処理を開始する(Rev02で実現)
    • ./image/で始まり画像拡張子で終わる文節を変換して画像表示を行う (Rev02で実現)
  1. [ と ] で囲まれ | でラベル名を付けられた任意のアンカが表れたとき
    • ラベル名がhttp(s)http(s)か ./image/ で始まる画像を示していればイメージラベルとしてリンクを作成する (Rev02で実現)
      • 加えてリンク先を示す値が ./image/ で始まる画像を示していれば、リンク先画像として文節変換したリンクを作成する (Rev03.1で実現)
    • ラベル名がそのページに添付された画像名を示していればイメージラベルとしてリンクを作成する (Rev02で実現)
  1. [ [ と ] ] で囲まれ | でラベル名を付けられたWikiページへの任意のアンカが表れたとき
    • ラベル名がhttp(s)か ./image/ で始まる画像を示していればイメージラベルとしてリンクを作成する (Rev02で実現)
    • ラベル名がそのページに添付された画像名を示していればイメージラベルとしてリンクを作成する (Rev02で実現)

 ダウンロード

※ご注意※

Rev02、03、03.1 はWikiName使用環境で該当ページが存在しないときに表示がおかしくなるというエラーを持っています。(ページが存在すれば問題ないようです)

Rev02 -> Rev02.1、Rev03や03.1 -> Rev03.2 への更新をお願いします。なお、表示に関わるプラグインなので動作には影響はありません。

 インストールや使い方

インストール
解凍して得られる _ex_image_anchor ディレクトリを所定の plugin ディレクトリに含めます。管理者ログインの後 _ex_image_anchor プラグインを有効にしてください
アンインストール
_ex_image_anchor 無効にするだけで良いはずです。3.6.0環境ではこれで問題なく「有効・無効」が働いています
使い方
上記の 三種類の動作の違いを良く読んで、実際にいろいろとためしてください。基本的には本文内かリンク作成時にhttp(s)で始まる画像URLや添付画像ファイル名が、表示として扱われるだけです。共通の注意点は、例えばURLの場所に画像が無くてもFSWikiの本来の機能のようにエラーを表示することはありません(何も表示されません)ので御注意下さい
ちょっとだけ利点
画像の表示にFSWikiが関わりませんので、BugTrack-plugin/261(KG 氏)で述べられている直リンクのように、いくらかでもサーバーの負荷を減らせるのでは無いかと思われます
仕様上の欠点
画像を管理したりアップロードしたり添付したり削除したりリネームしたりといった機能は一切ありません

このプラグインは、(lib)Wiki::HTMLParser の該当部分を置き換えて動作しています。僕の試験では特に問題は見付かっておらず、前述二つの改造を施したものと同様に使うことが出来ています。しかし、動作に問題があるようでしたら ただちに使用を止めることをお薦めします。

 コメント

  • これいいですねー。ありがたく使わせていただきます。 - 名無しさん (2006年03月07日 14時40分32秒)
  • 任意ラベルだけでなく、リンク先にサイト内画像指定(./image/のトリガ)でも、子Wikiでエラーがでないようにしてみました。 - ZON (2006年05月25日 11時30分45秒)
  • BugTrack-plugin/91の改造を新バージョンが出る度施していた私には大変有り難いプラグインです。WikiNameを使用する設定だと、WikiNameに反応する単語が重複表示される様です。Rev3.1とノーマル版で確認しました。併用は出来ないって事なのでしょうか? - R (2006年07月11日 10時16分26秒)
  • すみませんRさん、状況を例示してもらえますか。WikiNameに反応する単語が画像ファイル名に含まれているというケースでしょうか。それとも格納されるサブディレクトリやURLに含まれるケースでしょうか。たぶんに判定の条件か優先度を変えれば対応できると思うのですが、普段私がWikiNameを使用していないので、うちの環境で顕著な状態が現れないのです。よろしくお願いします。 - ZON (2006年07月11日 14時27分51秒)
  • 画像が全く無い状況でも起こる様です。サブディレクトリもURLも関係なさそうに思います。
    • サンプルを上げておきます。FrontPageやtesページで見ることが出来ます。
    • 使用サーバはさくらインターネットの物ですが、Windowsに設置したローカルでも同様でした。
    • - R (2006年07月11日 15時22分53秒)
  • ありがとうございます。この表示異常は[ [ を使ってWikiページを指定したリンクの時にも出ていましたが、エラーと気づいておりませんでした。調べた見たところ、簡単な記述ミスであることが分かりましたので、早速修正してみました。修正版をお試しください。 - ZON (2006年07月11日 19時25分31秒)
  • 迅速な対応、誠に有り難う御座いました。此方の方でも正常に動作致しました。有り難く使用させて頂きます。サンプルで設置したwikiは削除致しました。 - R (2006年07月11日 19時44分56秒)
  • 作者です。現在「../」のような指定を含むケースを問答無用で切り詰める改良を行いました。また、ダブルブラケットを使って「このページの添付ファイル(画像)へのリンク」を実装しています。それであとひとつ、あわせてこれまで平文で「./image/」をトリガとしていたローカルファイル指定を「HTTP://image/」という冗長な指定(実際は半角)に改めようかと思っている所です。これだとWiki::Parserを書き換えなくてよくなるので、バージョンアップの時の運用が少し楽になるのですが、いかがでしょう。しばらく反応を見て Rev04 を公開したいと思っています。 - ZON (2007年05月16日 22時39分41秒)
  • 作者です。よく調べてみたらWiki::Parserの中の「任意のURL」という処理で"/../"を連結してありました。ありゃ。これがどういう意図で入っているのか只今調査中です。問答無用で"/../"を削除というわけにはいかなくなりました。 - ZON (2007年05月17日 16時54分18秒)
お名前: コメント: