# tdiarytimes_flashstyle.rb $Revision: 1.2 $ # # Copyright (c) 2004 phonondrive # Distributed under the GPL # # プラグイン配布ページ: # http://phonondrive.com/trd/ # -------------------------------------------------------------------- # # # # Abstract: # -------------------------------------------------------------------- # 日記を登録した時間帯をタイムライン上に記録します。記録されたエントリは # 日時の経過と共にフェードアウトしていきます。このような MTBlogTimes や # tdiarytimes.rb と同等の機能を Flash で実現します。 # ruby-gd のインストール作業も必要ないため、すぐに使用出来ます。 # # # Usage: # -------------------------------------------------------------------- # プラグインは、プラグインフォルダに入れて下さい。 # # プラグインは、プラグインフォルダに入れてください。 # tdiarytimes*.swf を tdiary.rb と同じフォルダにアップロードします。 # ヘッダ、フッタ部に記述した <%= tdiarytimes_flashstyle %> の部分に、 # Flash アプレットが表示されます。 # tdiarytimes.log は日記登録時に .swf と同じフォルダに作成されます。 # # ※ tdiarytimes_textstyle.rb との互換性はありません。 # # # Options: # -------------------------------------------------------------------- # タイムラインの色、透明度、サイズなどは、プリファレンス画面で設定できます。 # # # In secure mode: # -------------------------------------------------------------------- # たぶん動作しません。 # # =begin ChangeLog 2004.05.02 phonondrive * version 1.1.2 タイムラインが曜日別の Flash を追加 2004.05.02 phonondrive * version 1.1.1 タイムラインが円形で、時刻盤が曜日表示の Flash を追加 ログファイルが存在しない時にエラーが出る不具合を修正 2004.04.28 phonondrive * version 1.1.0 タイムラインが円形の Flash を追加 2004.04.27 phonondrive * version 1.0.1 時刻目盛テキストの色が変更されない不具合を修正 2004.04.25 phonondrive * version 1.0.0 =end # -------------------------------------------------------------------- # プラグインの動作 # -------------------------------------------------------------------- def tdiarytimes_flashstyle if @conf['tdiarytimes_f.templete'] == nil or @conf['tdiarytimes_f.templete'] == "" %Q|使用を開始するには、プリファレンス画面にて一度設定を完了して下さい。(tdiarytimes-flashstyle)| else logname = ((@conf['tdiarytimes_f.log_path'] != "" and @conf['tdiarytimes_f.log_path'] != nil) ? @conf['tdiarytimes_f.log_path'] : "tdiarytimes.log") @conf['tdiarygraph_f.templete'].sub(/&uid/, "\\&=#{File.mtime(logname.untaint).to_i}") end end # -------------------------------------------------------------------- # 日記登録時の処理 # -------------------------------------------------------------------- if /\A(?:append|replace)\z/ =~ @mode and @cgi.params['hide'][0] != 'true' then logname = ((@conf['tdiarytimes_f.log_path'] != "" and @conf['tdiarytimes_f.log_path'] != nil) ? @conf['tdiarytimes_f.log_path'] : "tdiarytimes.log") entr_lifetime = ((@conf['tdiarytimes_f.entr_lifetime'] != "" and @conf['tdiarytimes_f.entr_lifetime'] != nil) ? @conf['tdiarytimes_f.entr_lifetime'].to_i * 60 * 60 * 24 : 30 * 24 * 60 * 60) entr_interval = ((@conf['tdiarytimes_f.entr_interval'] != "" and @conf['tdiarytimes_f.entr_interval'] != nil) ? @conf['tdiarytimes_f.entr_interval'] : 2 * 60 * 60) begin logs = open(logname){|io| io.read }.chomp.split(',') rescue logs = "" end if (Time.now.to_i - logs.max.to_i) > entr_interval.to_i logs << "#{Time.now.to_i}" open(logname, "w"){|io| io.write(logs.find_all{|item| (Time.now.to_i - item.to_i) < entr_lifetime.to_i }.join(',')) } end end # -------------------------------------------------------------------- # プリファレンス画面での設定 # -------------------------------------------------------------------- add_conf_proc( 'tdiarytimes_f', 'tdiarytimes-flashstyle の設定' ) do if @mode == 'saveconf' then filename = "tdiarytimes234x30.swf" width = "234" height = "30" argvs = "" argv = Array.new @conf['tdiarytimes_f.uid'] = @cgi.params['uid'][0] argv << "#{Time.now.to_i}&uid" if @conf['tdiarytimes_f.uid'] == "1" @conf['tdiarytimes_f.type'] = @cgi.params['type'][0] @conf['tdiarytimes_f.filename'] = @cgi.params['filename'][0] @conf['tdiarytimes_f.width'] = @cgi.params['width'][0] @conf['tdiarytimes_f.height'] = @cgi.params['height'][0] @conf['tdiarytimes_f.log_path'] = @cgi.params['log_path'][0] argv << "log_path=#{@cgi.params['log_path'][0]}" if @cgi.params['log_path'][0] != "" @conf['tdiarytimes_f.text_visible'] = @cgi.params['text_visible'][0] argv << "text_visible=#{@cgi.params['text_visible'][0]}" if @cgi.params['text_visible'][0] == "0" @conf['tdiarytimes_f.text_text'] = @cgi.params['text_text'][0] argv << "text_text=#{CGI::escape @cgi.params['text_text'][0].upcase}" if @cgi.params['text_text'][0] != "" @conf['tdiarytimes_f.text_rgb'] = @cgi.params['text_rgb'][0] argv << "text_rgb=0x#{@cgi.params['text_rgb'][0]}" if @cgi.params['text_rgb'][0] != "" @conf['tdiarytimes_f.face_visible'] = @cgi.params['face_visible'][0] argv << "face_visible=#{@cgi.params['face_visible'][0]}" if @cgi.params['face_visible'][0] == "0" @conf['tdiarytimes_f.face_rgb'] = @cgi.params['face_rgb'][0] argv << "face_rgb=0x#{@cgi.params['face_rgb'][0]}" if @cgi.params['face_rgb'][0] != "" @conf['tdiarytimes_f.stage_rgb'] = @cgi.params['stage_rgb'][0] argv << "stage_rgb=0x#{@cgi.params['stage_rgb'][0]}" if @cgi.params['stage_rgb'][0] != "" @conf['tdiarytimes_f.stage_alpha'] = @cgi.params['stage_alpha'][0] argv << "stage_alpha=#{@cgi.params['stage_alpha'][0]}" if @cgi.params['stage_alpha'][0] != "" @conf['tdiarytimes_f.bg_rgb'] = @cgi.params['bg_rgb'][0] argv << "bg_rgb=0x#{@cgi.params['bg_rgb'][0]}" if @cgi.params['bg_rgb'][0] != "" @conf['tdiarytimes_f.bg_alpha'] = @cgi.params['bg_alpha'][0] argv << "bg_alpha=#{@cgi.params['bg_alpha'][0]}" if @cgi.params['bg_alpha'][0] != "" @conf['tdiarytimes_f.bar_rgb'] = @cgi.params['bar_rgb'][0] argv << "bar_rgb=0x#{@cgi.params['bar_rgb'][0]}" if @cgi.params['bar_rgb'][0] != "" @conf['tdiarytimes_f.bar_width'] = @cgi.params['bar_width'][0] argv << "bar_width=#{@cgi.params['bar_width'][0]}" if @cgi.params['bar_width'][0] != "" @conf['tdiarytimes_f.entr_interval'] = @cgi.params['entr_interval'][0] @conf['tdiarytimes_f.entr_lifetime'] = @cgi.params['entr_lifetime'][0] @conf['tdiarytimes_f.fade_time'] = @cgi.params['fade_time'][0] argv << "fade_time=#{@cgi.params['fade_time'][0]}" if @cgi.params['fade_time'][0] != "" @conf['tdiarytimes_f.preview'] = @cgi.params['preview'][0] if @cgi.params['type'][0] == "0" filename = @cgi.params['filename'][0] width = @cgi.params['width'][0] height = @cgi.params['height'][0] elsif @cgi.params['type'][0] filename = "tdiarytimes#{@cgi.params['type'][0].delete('-')}.swf" width = @cgi.params['type'][0].split('-').first.split('x')[0] height = @cgi.params['type'][0].split('-').first.split('x')[1] end if argv.size > 0 then argvs = "?#{argv.join('&')}" end @conf['tdiarytimes_f.templete'] = tdiarytimes_flashstyle_templete(filename, argvs, width, height) end <<-HTML

設定の概要

() 内は初期値です。初期値を使用する場合は、空欄のままで構いません。色は RRGGBB 形式で指定して下さい。不透明度は 0 (透明) 〜 100 (不透明) です。線幅はピクセルで指定します。


プレビュー

#{tdiarytimes_flashstyle_preview}

表示する Flash アプレットの選択

プリセットを使用しない場合は、以下で指定して下さい。

Flash のファイル名

Flash の表示幅

Flash の表示高さ


タイトルテキスト

タイトルテキストの表示有無 (表示)

タイトルテキスト (TDIARYTIMES-FLASHSTYLE)
使用出来る文字は、英大文字 (A-Z) と数字 (0-9)、および記号のみです。

タイトルテキストの色 (333333)

時刻目盛テキスト

時刻目盛テキストの表示有無 (表示)

時刻目盛テキストの色 (333333)


背景や棒グラフの色

背景の色 (FFFFFF)

背景の不透明度 (0)

タイムラインの背景の色 (333333)

タイムラインの背景の不透明度 (100)

タイムラインに記録される棒グラフの色 (EEEEEE)

タイムラインに記録される棒グラフの線幅 (1)

タイムラインに記録される棒グラフの寿命日数 (30)


ログ管理

前回の日記登録から設定時間内はエントリを新規登録しない (2)

設定日数後にログファイルからエントリを削除する (30)

本プラグインが作成するログファイル名 (tdiarytimes.log)


ユニークID を使用したファイル取得

ファイル取得のリクエストにユニークID (例えば ?#{Time.now.to_i}) を含めることにより、古いファイルがブラウザにキャッシュされたままになるのを防ぎます。Flash のユニークID はプリファレンス設定時に、ログファイルのユニークID はエントリ登録時に更新されます。

ユニークID の付加 (付加する)


プレビュー

表示したい SWF ファイル (.swf) が tdiary.rb と同じフォルダにアップロードされている必要があります。また、ログファイルが SWF ファイルと同じフォルダに作成されていない場合にはグラフが表示されません。

プレビュー (非表示)

HTML end def tdiarytimes_flashstyle_preview %Q|

#{if @conf['tdiarytimes_f.preview'] == "1" then "#{tdiarytimes_flashstyle}" else "プレビュー表示を有効にすると、ここに Flash が表示されます。" end}

| end def tdiarytimes_flashstyle_templete( filename="tdiarytimes234x30.swf", argvs="", width="234", height="30" ) <<-r r end