tDiary Image Gallery - tDiary に画像一覧表示画面を追加 -

概要

絵日記プラグイン(image.rb/image_ex.rb/image_gps.rb)で日記に貼った画像を一覧表示する、tDiaryの拡張機能(プラグイン & Ruby CGI)です。

-- 使用例 :   日記 → Image Gallery(Listモード) → Image Gallery(SlideShowモード) → Viewerモード

ダウンロード

現在の最新バージョンは、Version 2.1.0 : 2014/11/30 です。

tDiary Image Gallery は contribパッケージで配布しています。こちらからどうぞ。→tDiary contribパッケージ


- おしらせ (2014.11.30) -

  • Version 2.1.0 をリリースしました。アップデート内容は以下の通りです。
    1. tDiary v4.1.0 に対応しました。v4.1.0 を使用される方はアップデートしてください。(v4.0.5までのバージョンにも対応しています)
    2. フルスクリーン・スライドショーモードを改善しました。スライドショー表示中にWebブラウザのウィンドウサイズを変更しても、スライドショーが正しく表示されます。PCなどのWebブラウザではF11キーで全画面表示モードになりますが、このモードでも画面サイズに合わせてスライドショーが表示されるようになりました。
    3. tDiary 2.2 以前の EUC-JP 文字コード版をサポートから外しました。

  • ご質問については、サポートページにツッコミをどうぞ。
      tDiary Image Galleryサポート・ページ

特徴

  • tDiaryの絵日記プラグインを使って画像を日記に貼り付けるだけで、アルバムのような画像ビューアが簡単に作れます。画像の登録のための特別な操作が不要なので、tDiaryでの画像ファイル管理がより便利になります。
  • Listモードで画像をクリックすると、その画像を大きく表示します。(これを「Viewerモード」と呼びます。)

    Viewerモードでは、JPEG画像にEXIFデータがあれば併せて表示します。EXIFデータを表示させるには、「exifparser」が必要です。)

    Listモードの"[SlideShow]"というリンクのクリックで、画像のスライドショーを表示します。(これを「SlideShowモード」と呼びます。)

  • Listモードで表示対象とする画像を次の条件で絞り込むことができます。

    1. ファイル名:画像のファイル名
    2. 日記のサブタイトル:画像を貼った日記セクションのタイトル
    3. 画像のタイトル:画像のタイトル(絵日記プラグインで指定したもの)

    絞り込みの指定には、正規表現を使うことができます。

必要なもの

  • tDiary 3.2.0/4.0.0/4.1.0 以降
  • Ruby 1.8.2 以降
  • exifparser 1.0.0 以降 (JPEGのEXIF表示機能を使う場合)

※exifparse のインストール手順の詳細については、下記「セットアップ」をご覧ください。

セットアップ

  1. contribパッケージを展開し、util/image-gallery 以下のファイルを、tDiaryの"index.rb"があるディレクトリにコピーします。(サブディレクトリもまるごとコピーしてください。)コピーされるファイルは以下の通りです。
        <tDiaryのインストールディレクトリ>
          │  image-gallery.rb         ...Image GalleryのCGI
          │  README.ja                ...Image Galleryのドキュメント
          |
          ├─<js>
          |      <SmoothGallery>...SmoothGallery javascriptライブラリ等
          |
          ├─<views>
          │      gallery.rhtml        ...Image Gallery用rhtml
          |
          ├─<misc>
          │  └─<plugin>
          │          recent_image.rb  ...画像登録用プラグイン
          |
          └─<theme>
                  image-gallery.css  ...Image Gallery用css
    


    ※このディレクトリ構成はtDiary標準のディレクトリ構成に合わせてありますので、ディレクトリを変更されている方はそれぞれ、必要なファイルを所定のディレクトリにコピーしてください。


    tDiary 4.0.5 までのバージョンでは、gallery.rhtml を格納するディレクトリ名が "views" ではなく "skel" となっています。こちらのバージョンをお使いの方は gallery.rhtml を skel ディレクトリにコピーしてください。


  2. image-gallery.rbをCGIとして実行可能にします。
       $ chmod a+x image-gallery.rb

    ※インストールする環境に合わせ、必要なら、image-gallery.rb の先頭行にある #! のパス(Rubyの実行パス)を変更したり、tDiaryのindex.rb と同様、シンボリックリンクを張る/名前を変えるなどの設定をしてください。


  3. 日記のサイドバーなどに「<%=recent_image %>」など、recent_image.rb を呼び出すように記述した上で、recent_image.rb プラグインを有効にします。(tDiary の追記→設定→プラグイン選択で recent_image.rbのチェック・ボックスにチェック)


  4. キャッシュ・ファイルを作成するため、tDiaryの日記をWebブラウザで再読み込みします。

    ※recent_image.rb を有効にすると、tDiaryで日記を編集するたびに recent_image.rb が呼び出され、新たな日記に絵日記プラグインが使われているかをチェックし、画像の情報をキャッシュ・ファイルに保存するようになります。image-gallery.rb は、このキャッシュ・ファイルを参照することで、日記に貼られた画像の情報を得る仕組みになっています。このキャッシュ・ファイルは以下の場所に作られます。

       "<tDiaryのcache path>/gallery/image-gallery2.dat" 

    キャッシュ・ファイルがない状態で recent_image.rb が呼び出されると、過去の日記すべてに渡って絵日記プラグインが使われている箇所を検索し、キャッシュ・ファイルを作成しようとします。日記の規模によっては、数分程の時間がかかることがありますので、気長にお待ちください。


  5. JPEG画像のEXIFデータを表示したい場合は、exifparser をインストールし、tdiary.conf に以下の行を追加します。
       @options['image-gallery.show_exif'] = true

    ※exifparser は RubyGems からインストールできるようになっています。tDiary 4.0.1 以降からは、plugin で使用する Gem を RubyGems からより簡単にインストールする仕組みが新たに備わっていますので、こちらを使ってインストールできるようになりました。以下の手順を実行してください。

    1. tDiary の "index.rb" があるディレクトリに、"Gemfile.local" というファイルを作り、"gem 'exifparser'" という行を追加します。
    2. "bundle install" コマンドを実行します。

    ※上記はシェルによるコマンドの実行ができることが前提となっています。レンタルサーバなどでシェルが使えない環境にexifparserをインストールしたい場合のやり方について Image Gallery のサポート・ページに記載しました。exifparser を tDiary のみで使う場合は、こちらの方法でOKです。どうぞご活用ください。

      tDiary Image Galleryサポート・ページ


  6. Webブラウザで "<tDiary の URL>/image-gallery.rb" にアクセスしてみてください。すべての画像の一覧が表示されれば、インストールは成功です。日記のサイドバーなどに、以下のようなリンクを置いておくと便利です。
       <a href="./image-gallery.rb">Image Gallery</a>

使い方 - 画像の選択について -

image-gallery.rb をパラメータなしで呼び出すと、すべての画像がリスト形式で表示されます。ここから「画像の選択」の各入力フィールドを使って、表示する画像を絞り込むことができます。

入力フィールドは、1.ファイル名、2.日記のサブタイトル、3.画像のタイトルの三種類があり、それぞれの入力フィールドには、選択条件を正規表現で指定します。この正規表現にマッチする文字列を、各フィールドの項目(ファイル名、日記のサブタイトル、画像のタイトル)に含む画像が絞り込みの対象になります。使い方の例を以下に示します。

  1. ファイル名

    画像をファイル名で選択します。image.rbでアップロードしたファイルは、

         "yyyymmdd_n.xxx" (yyyy=年,mm=月,dd=日,n=連番,xxx=拡張子)

    のファイル名でサーバに置かれますので、次の例のように、日付での絞り込みができます。

    例)
              指定     →     意味
          ========================================
             2004      → 2004年の画像
             200[1-3]  → 2001〜2003年の画像
             200508    → 2005年8月の画像
             2005(0429|0430|050[1-5]) → 2005年GW(4/29〜5/5)の画像
             0101_     → すべての年の1月1日の画像	
    
  2. 日記のサブタイトル

    画像を貼り付けた日記のセクション・サブタイトルで選択指定します。

    tDiaryのcategoryプラグインを使うと、日記セクションのサブタイトルに、'[カテゴリ名]'と書くことで、セクションのカテゴリ指定ができるようになります。このフィールドに、このカテゴリ名を指定することで、特定のカテゴリに含まれる画像のみを選択する、といった使い方ができます。言い換えれば、日記のカテゴリが、そのまま画像のタグとしてフィルタリングに使える、ということになります。

  3. 画像のタイトル

    絵日記プラグインで画像を日記に貼り付ける際には、titleパラメータで画像のタイトルを指定することができます。このフィールドは、このタイトルで選択指定できます。

※複数のフィールドに対して条件を指定した場合には、すべての条件に当てはまる画像のみが表示の対象になります。

※これ以外の操作については、使ってみて頂ければすぐに分かるかと思います。:-)

オプション

tdiary.conf に指定できるオプションは次の通りです。[]は指定がなかったときの値です。

 
 @options['image-gallery.column'] = <n>   [3]
   Listモード時の横列の画像枚数を指定します。「= 3」のように数字で指定します。

 @options['image-gallery.line'] = <m>   [4]
   Listモード時の縦列の画像枚数を指定します。「= 4」のように数字で指定します。

 @options['image-gallery.width'] = "www"  ["120"]
   Listモード時の画像の幅をpixelで指定します。縦長の画像の場合は、これが高さに
   なります。「= "120"」のように、文字列で指定します。

 @options['image-gallery.vwidth'] = "www"  ["640"]
   Viewerモード時の画像の幅をpixelで指定します。縦長の画像の場合は、これが高さ
   になります。 また、画像の幅がこの指定より小さい場合は、画像の元のサイズで表
   示します。「= "640"」 のように、文字列で指定します。

 @options['image-gallery.show_exif'] = true  [false]
   true指定の場合、Viewerモード時にJPEGのEXIFデータを表示します。

 @options['image-gallery.use_mid_image'] = true  [false]
   true指定の場合、SlideShowモード及びViewerモード時に、先頭にmの付いたファイル(例え
   ば、'm20070601_0.jpg')を表示画像とします。詳しくは、作者の日記をご覧ください。

CGIパラメータ

image-gallery.rbで指定できるCGIパラメータは以下の通りです。絞込み済みのページへのリンクを作る際などにご利用ください。

 
  order
    Listモード、SlideShowモードでの画像の並びを指定します。"=desc"で古い順、"=asc"で
    新しい順になります。
    指定がなかった場合は、新しい順になります。

 name
    「画像の選択」の「ファイル名」に入力したい文字列を、このパラメータで指定でき
    ます。

  subtitle
    「画像の選択」の「日記のサブタイトル」に入力したい文字列を、このパラメータで
    指定できます。

  title
    「画像の選択」の「画像のタイトル」に入力したい文字列を、このパラメータで指定
    できます。

  pagetitle
    ページのタイトルを指定します。

  showinputfield
    「画像の選択」の入力フィールドを表示したくない場合、"=false"を指定します。

  mode
    表示モードを指定します。Listモードの場合は"=list"、SlideShowモードの場合は
    "=slide"、Viewerモードの場合は、"=viewer"をそれぞれ指定します。Viewerモード
    の場合は、さらにkeyパラメータを使って画像のキーを指定します。

  key
    Viewerモードの際の画像のキーを指定します。画像のキーは、ファイル名から拡張子
   を除いたものになります。(例: 20060429_0.jpg → "key=20050429_0")

※文字化けを避けるため、name, subtitle, title, pagetitleに二バイト文字を指定する場合は、CGIエスケープした文字列を指定するようにして下さい。文字列をCGIエスケープする簡単な方法として、以下をお勧めします。

  1. 指定したい文字列を、「画像の選択」の「ファイル名」の所に入力し、「表示」ボタンをクリック
  2. 生成されたページのURLのCGIパラメータ"name=xxxxxx"の部分を見てください。xxxxxxの部分が、CGIエスケープ後の文字列になっています。copy&pasteして使って下さい。

cssによるスタイルの指定について

Image GalleryのスタイルはtDiaryで使用しているテーマがそのまま使われます。Listモードの表示の調整などを行う場合は、'theme/image-gallery.css'を直接編集するか、append-cssプラグインを使ってcssの設定をしてください。

※1.0.6までのバージョンをお使いの方へ
1.0.7以降のバージョンでは、標準スタイルを上記のcssファイルで提供することにしました。append-cssプラグインなどを使ってスタイルを変更している場合には、お手数ですがこのcssファイルを見て、変更済みのDIV要素をコメントアウトするなどの処置を行ってください。

recent_image.rbの機能

recent_image.rbは、tDiary の日記本文やヘッダ、サイドバーなどに、最新の画像を表示するプラグインとしての機能も持っています。表示した画像のクリックで、Image-Gallery の Viewerモードに直接ジャンプするオプションも用意しています。recent_image.rb の詳細については、ソース中のドキュメントを見るか、以下のサイトを参照してください。

http://exception.rash.jp/tdiary/recent_image2.htm

履歴

2005/10/23Ver1.0.1・公開開始
2005/10/28Ver1.0.2・recenet_image.rbの修正(プラグインのロード時に毎回キャッシュ・ファイルを作成していた)
2005/10/30Ver1.0.3・recenet_image.rbの修正(日記の画像更新がキャッシュ・ファイルに反映されていなかった)
2005/11/23Ver1.0.5・recenet_image.rbの修正(一部のJPEGファイルで例外、PNG,GIFファイルのサイズ誤りの修正)
・「ファイル名」での選択で、日付の指定(年月日/年月/年)をした場合、前/次の日付へのリンクを表示するようにした。
2006/05/02Ver1.0.6CGIパラメータのpagetitle, showinputfieldを追加
2007/06/02Ver1.0.7SmoothGalleryを使用しSlideShowモードを追加(SmoothGallery 1.0.1を取り込み)。
・入力フィールドをページの末尾に置くようにした。
・標準スタイルのcssファイルを指定するようにした。
・生成するHTMLの誤りを修正した。
2008/01/27Ver1.0.8SmoothGalleryを2.0にアップした。
・同じ年、同じ月、同じ日、同じcategoryの画像へのリンク機能をViewerモードに追加した。
2008/03/22Ver1.0.9・wikiスタイルを使用している場合、サブタイトルのリンクをcategoryと判断してしまうバグを修正した。
・EXIFデータで、タグ名が不明なもの("Tag0x"で始まるもの)を表示しないようにした。
・recent_image.rbで、"@options['recent_image.use_cache']"の指定に関わらず必ずキャッシュ・ファイルを生成するようにした。
2008/05/23Ver1.0.9a・アーカイブ中のディレクトリのスペルミス(misk→misc)を修正した。変更したのはアーカイブファイル名のみ。
2010/09/30Ver2.0.0・tDiary 3.0.0 対応。文字コードを EUC-JP から UTF-8 に変更。
2011/11/03Ver2.0.1・tDiary 3.1.x 対応。tDiaryのバージョン判定の修正。(tdtdsさんに感謝!)
2012/03/10Ver2.0.2・Ruby 1.9 対応。(kpさんに感謝!)
2012/04/30Ver2.0.3・tDiary 3.1.3 対応。
2013/05/01Ver2.0.4・tDiary 3.2.2 対応。
・image_ex.rb の yearlydir を使用していると、ファイルの日付指定を誤ることがある問題を修正。
2014/11/30Ver2.1.0・tDiary v4.1.0 対応。
・フルスクリーン・スライドショーモードでブラウザのウィンドウサイズ変更に対応した。
・tDiary 2.2までのEUC-JP文字コード対応版を削除した。

謝辞

  • tDiary を開発された、ただただしさん。すばらしい日記システムをありがとうございました。
  • rast-search を開発された、かずひこさん。tDiary に機能を追加する Ruby CGI のベースとして、rast-search を使わせていただきました。ありがとうございました。
  • この他にも、tDiary のさまざまなプラグインのソースが、Rubyの理解にとても役立ちました。開発にかかわっておられる皆さん全員に、深く感謝致します。

ご意見、ご感想などは…

作者の日記にツッコミを入れるか、kashijuku[at]gmail.com までメールをどうぞ。cssでのデザイン(渇望(笑))、機能追加パッチ、バグの連絡などもお待ちしてます。