~ubuntu-branches/ubuntu/utopic/tdiary/utopic

« back to all changes in this revision

Viewing changes to contrib2/plugin/tdiarygraph_flashstyle.rb

  • Committer: Bazaar Package Importer
  • Author(s): Daigo Moriwaki
  • Date: 2011-04-11 21:53:16 UTC
  • mfrom: (1.2.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20110411215316-ih4gt4q8p29d2wf8
Tags: 3.0.1-1
* New upstream release (Closes: #542801, #594947)
* debian/control:
 - Bumped up Standards-Version to 3.9.1.
 - Updated version dependency.
* debian/tdiary-setup.rb: Followed the upstream changes, incorporating js and
  index.fcgi

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# tdiarygraph_flashstyle.rb $Revision: 1.3 $
 
2
#
 
3
# Copyright (c) 2004 phonondrive <tdiary@phonondrive.com>
 
4
# Distributed under the GPL
 
5
#
 
6
# プラグイン配布ページ:
 
7
# http://phonondrive.com/trd/
 
8
# --------------------------------------------------------------------
 
9
#
 
10
#
 
11
#
 
12
# Abstract:
 
13
# --------------------------------------------------------------------
 
14
# counter.rb のカウンタログ (counter.log) をグラフ化した
 
15
# Flash アプレットを表示します。
 
16
#
 
17
#
 
18
# Usage:
 
19
# --------------------------------------------------------------------
 
20
# プラグインは、プラグインフォルダに入れてください。
 
21
# tdiarygraph*.swf を tdiary.rb と同じフォルダにアップロードします。
 
22
# ヘッダ、フッタ部に記述した <%= tdiarygraph_flashstyle %> の部分に、
 
23
# Flash アプレットが表示されます。
 
24
# counter.log は日記登録時に .swf と同じフォルダにコピーされます。
 
25
#
 
26
# ※ counter.rb を使用しており、かつカウンタログ (counter.log) の出力を
 
27
# オンにしている必要があります。
 
28
#
 
29
#
 
30
# Options:
 
31
# --------------------------------------------------------------------
 
32
# グラフの色、透明度、サイズなどは、プリファレンス画面で設定できます。
 
33
#
 
34
#
 
35
# In secure mode:
 
36
# --------------------------------------------------------------------
 
37
# たぶん動作しません。
 
38
#
 
39
#
 
40
# Acknowledgements:
 
41
# --------------------------------------------------------------------
 
42
# counter.rb (counter.log)
 
43
#
 
44
# Copyright (c) 2002 MUTOH Masao <mutoh@highway.ne.jp>
 
45
# Distributed under the GPL2.
 
46
# http://ponx.s5.xrea.com/hiki/ja/counter.rb.html
 
47
#
 
48
#
 
49
=begin ChangeLog
 
50
2004.04.27 phonondrive  <tdiary@phonondrive.com>
 
51
   * version 1.3.0
 
52
                キャッシュ対策としてユニークIDを付加してファイル取得するオプションを追加
 
53
                対応 Flash ファイルを e 系列に変更
 
54
                フォントを _sans から 04b03b に変更
 
55
                        04b03b.ttf, copyright (c) 1998-2001 YUJI OSHIMOTO
 
56
                        http://www.04.jp.org/
 
57
2004.04.10 phonondrive  <tdiary@phonondrive.com>
 
58
   * version 1.2.1
 
59
                レポート書式で改行タグが機能しない不具合を修正
 
60
                背景の枠線を表示しないオプションを追加
 
61
                対応 Flash ファイルを d 系列に変更
 
62
2004.04.09 phonondrive  <tdiary@phonondrive.com>
 
63
   * version 1.2.0
 
64
                ログファイルが転送されない不具合を修正
 
65
                作成するログのデフォルト名を変更 (tdiarygraph.log → counter.log)
 
66
                線幅を絶対値で指定出来るオプションを追加
 
67
                レポート書式のカスタマイズオプションを追加
 
68
                対応 Flash ファイルを c 系列に変更
 
69
2004.04.05 phonondrive  <tdiary@phonondrive.com>
 
70
   * version 1.1.1
 
71
                線の太さを変更するオプションを追加
 
72
                対応 Flash ファイルに b 系列を追加
 
73
2004.04.05 phonondrive  <tdiary@phonondrive.com>
 
74
   * version 1.1.0
 
75
                Ruby 1.6.x に対応 (1.6.7 で動作確認)
 
76
                作成するログのデフォルト名を変更 (counter.log → tdiarygraph.log)
 
77
2004.04.04 phonondrive  <tdiary@phonondrive.com>
 
78
   * version 1.0.0
 
79
=end
 
80
 
 
81
 
 
82
 
 
83
 
 
84
# --------------------------------------------------------------------
 
85
# プラグインの表示
 
86
# --------------------------------------------------------------------
 
87
 
 
88
def tdiarygraph_flashstyle
 
89
        if @conf['tdiarygraph_f.templete'] == nil or @conf['tdiarygraph_f.templete'] == ""
 
90
                %Q|使用を開始するには、<a href="./#{h @update}?conf=tdiarygraph_f">プリファレンス画面</a>にて一度設定を完了して下さい。(tdiarygraph-flashstyle)|
 
91
        else
 
92
                logname = ((@conf['tdiarygraph_f.log_path'] != "" and @conf['tdiarygraph_f.log_path'] != nil) ? @conf['tdiarygraph_f.log_path'] : "counter.log")
 
93
                @conf['tdiarygraph_f.templete'].sub(/&amp;uid/, "\\&=#{File.mtime(logname.untaint).to_i}")
 
94
        end
 
95
end
 
96
 
 
97
 
 
98
# --------------------------------------------------------------------
 
99
# 日記登録時の処理 (counter.log のコピー)
 
100
# --------------------------------------------------------------------
 
101
 
 
102
if /\A(?:append|replace)\z/ =~ @mode and @cgi.params['hide'][0] != 'true' then
 
103
        logname = ((@conf['tdiarygraph_f.log_path'] != "" and @conf['tdiarygraph_f.log_path'] != nil) ? @conf['tdiarygraph_f.log_path'] : "counter.log")
 
104
 
 
105
        open("#{@cache_path}/counter/counter.log"){|input|
 
106
                open(logname, "w"){|output|
 
107
                        output.write(input.read)
 
108
                }
 
109
        }
 
110
end
 
111
 
 
112
 
 
113
# --------------------------------------------------------------------
 
114
# プリファレンス画面での設定
 
115
# --------------------------------------------------------------------
 
116
 
 
117
add_conf_proc( 'tdiarygraph_f', 'tdiarygraph-flashstyle の設定' ) do
 
118
 
 
119
        if @mode == 'saveconf' then
 
120
 
 
121
                filename = "tdiarygraph468x60e.swf"
 
122
                width = "468"
 
123
                height = "60"
 
124
                argvs = ""
 
125
 
 
126
                argv = Array.new
 
127
 
 
128
                @conf['tdiarygraph_f.uid'] = @cgi.params['uid'][0]
 
129
                argv << "#{Time.now.to_i}&amp;uid" if @conf['tdiarygraph_f.uid'] == "1"
 
130
 
 
131
                @conf['tdiarygraph_f.type'] = @cgi.params['type'][0]
 
132
                @conf['tdiarygraph_f.filename'] = @cgi.params['filename'][0]
 
133
                @conf['tdiarygraph_f.width'] = @cgi.params['width'][0]
 
134
                @conf['tdiarygraph_f.height'] = @cgi.params['height'][0]
 
135
 
 
136
                @conf['tdiarygraph_f.log_path'] = @cgi.params['log_path'][0]
 
137
                argv << "log_path=#{@cgi.params['log_path'][0]}" if @cgi.params['log_path'][0] != ""
 
138
                @conf['tdiarygraph_f.init_num'] = @cgi.params['init_num'][0]
 
139
                argv << "init_num=#{@cgi.params['init_num'][0]}" if @cgi.params['init_num'][0] != ""
 
140
 
 
141
                @conf['tdiarygraph_f.text_text'] = @cgi.params['text_text'][0].upcase
 
142
                argv << "text_text=#{h NKF::nkf('-s', @cgi.params['text_text'][0].upcase)}" if @cgi.params['text_text'][0] != ""
 
143
                @conf['tdiarygraph_f.text_rgb'] = @cgi.params['text_rgb'][0]
 
144
                argv << "text_rgb=0x#{@cgi.params['text_rgb'][0]}" if @cgi.params['text_rgb'][0] != ""
 
145
                @conf['tdiarygraph_f.text_report'] = @cgi.params['text_report'][0]
 
146
                argv << "text_report=#{@cgi.params['text_report'][0]}" if @cgi.params['text_report'][0] == "0"
 
147
                @conf['tdiarygraph_f.text_report_format'] = @cgi.params['text_report_format'][0]
 
148
                argv << "text_report_format=#{tdiarygraph_flashstyle_text_report_format(@cgi.params['text_report_format'][0])}" if @cgi.params['text_report_format'][0] != ""
 
149
                @conf['tdiarygraph_f.text_report_rgb'] = @cgi.params['text_report_rgb'][0]
 
150
                argv << "text_report_rgb=0x#{@cgi.params['text_report_rgb'][0]}" if @cgi.params['text_report_rgb'][0] != ""
 
151
                @conf['tdiarygraph_f.bg_rgb'] = @cgi.params['bg_rgb'][0]
 
152
                argv << "bg_rgb=0x#{@cgi.params['bg_rgb'][0]}" if @cgi.params['bg_rgb'][0] != ""
 
153
                @conf['tdiarygraph_f.bg_alpha'] = @cgi.params['bg_alpha'][0]
 
154
                argv << "bg_alpha=#{@cgi.params['bg_alpha'][0]}" if @cgi.params['bg_alpha'][0] != ""
 
155
                @conf['tdiarygraph_f.bg_frame'] = @cgi.params['bg_frame'][0]
 
156
                argv << "bg_frame=#{@cgi.params['bg_frame'][0]}" if @cgi.params['bg_frame'][0] == "1"
 
157
                @conf['tdiarygraph_f.bar_rgb'] = @cgi.params['bar_rgb'][0]
 
158
                argv << "bar_rgb=0x#{@cgi.params['bar_rgb'][0]}" if @cgi.params['bar_rgb'][0] != ""
 
159
                @conf['tdiarygraph_f.bar_alpha'] = @cgi.params['bar_alpha'][0]
 
160
                argv << "bar_alpha=#{@cgi.params['bar_alpha'][0]}" if @cgi.params['bar_alpha'][0] != ""
 
161
                @conf['tdiarygraph_f.line_rgb'] = @cgi.params['line_rgb'][0]
 
162
                argv << "line_rgb=0x#{@cgi.params['line_rgb'][0]}" if @cgi.params['line_rgb'][0] != ""
 
163
                @conf['tdiarygraph_f.line_alpha'] = @cgi.params['line_alpha'][0]
 
164
                argv << "line_alpha=#{@cgi.params['line_alpha'][0]}" if @cgi.params['line_alpha'][0] != ""
 
165
 
 
166
                @conf['tdiarygraph_f.bar_width'] = @cgi.params['bar_width'][0]
 
167
                argv << "bar_width=#{@cgi.params['bar_width'][0]}" if @cgi.params['bar_width'][0] != ""
 
168
                @conf['tdiarygraph_f.line_width'] = @cgi.params['line_width'][0]
 
169
                argv << "line_width=#{@cgi.params['line_width'][0]}" if @cgi.params['line_width'][0] != ""
 
170
 
 
171
                @conf['tdiarygraph_f.bold'] = @cgi.params['bold'][0]
 
172
                argv << "bold=#{@cgi.params['bold'][0]}" if @cgi.params['bold'][0] != ""
 
173
 
 
174
                @conf['tdiarygraph_f.preview'] = @cgi.params['preview'][0]
 
175
 
 
176
                if @cgi.params['type'][0] == "0"
 
177
                        filename = @cgi.params['filename'][0]
 
178
                        width = @cgi.params['width'][0]
 
179
                        height = @cgi.params['height'][0]
 
180
                elsif @cgi.params['type'][0]
 
181
                        filename = "tdiarygraph#{@cgi.params['type'][0].delete('-')}.swf"
 
182
                        width = @cgi.params['type'][0].split('-').first.split('x')[0]
 
183
                        height = @cgi.params['type'][0].split('-').first.split('x')[1]
 
184
                end
 
185
 
 
186
                if argv.size > 0 then argvs = "?#{argv.join('&amp;')}" end
 
187
 
 
188
                @conf['tdiarygraph_f.templete'] = tdiarygraph_flashstyle_templete(filename, argvs, width, height)
 
189
        end
 
190
 
 
191
 
 
192
        <<-HTML
 
193
                <h3 class="subtitle">設定の概要</h3>
 
194
                <p>() 内は初期値です。初期値を使用する場合は、空欄のままで構いません。色は RRGGBB 形式で指定して下さい。不透明度は 0 (透明) 〜 100 (不透明) です。線幅はピクセルで指定します。</p>
 
195
                <hr>
 
196
                <h3 class="subtitle">プレビュー</h3>
 
197
                #{tdiarygraph_flashstyle_preview}
 
198
                <hr>
 
199
                <h3 class="subtitle">表示する Flash アプレットの選択</h3>
 
200
                <p><select name="type">
 
201
                <option value="0"#{" selected" if @conf['tdiarygraph_f.type'] == "0"}>プリセットを使用しない</option>
 
202
                <option value="468x60-e"#{" selected" if @conf['tdiarygraph_f.type'] == "468x60-e" or @conf['tdiarygraph_f.type'] == nil or @conf['tdiarygraph_f.type'] == ""}>tdiarygraph468x60e.swf, 468x60</option>
 
203
                <option value="728x90-e"#{" selected" if @conf['tdiarygraph_f.type'] == "728x90-e"}>tdiarygraph728x90e.swf, 728x90</option>
 
204
                <option value="125x125-e"#{" selected" if @conf['tdiarygraph_f.type'] == "125x125-e"}>tdiarygraph125x125e.swf, 125x125</option>
 
205
                <option value="240x180-e"#{" selected" if @conf['tdiarygraph_f.type'] == "240x180-e"}>tdiarygraph240x180e.swf, 240x180</option>
 
206
                <option value="120x90-e"#{" selected" if @conf['tdiarygraph_f.type'] == "120x90-e"}>tdiarygraph120x90e.swf, 120x90</option>
 
207
                </select></p>
 
208
                <h3 class="subtitle">プリセットを使用しない場合は、以下で指定して下さい。</h3>
 
209
                <p>Flash のファイル名<br><input name="filename" value="#{h @conf['tdiarygraph_f.filename']}" size="40"></p>
 
210
                <p>Flash の表示幅<br><input name="width" value="#{h @conf['tdiarygraph_f.width']}" size="20"></p>
 
211
                <p>Flash の表示高さ<br><input name="height" value="#{h @conf['tdiarygraph_f.height']}" size="20"></p>
 
212
                <hr>
 
213
                <h3 class="subtitle">アクセスログデータ</h3>
 
214
                <p>本プラグインが作成する counter.log の複製のファイル名 (counter.log)<br><input name="log_path" value="#{h @conf['tdiarygraph_f.log_path']}" size="20"></p>
 
215
                <p>累計アクセス数の初期値。(0) counter.rb で init_num を指定している場合は、同じ値 (#{@conf['counter.init_num']}) を設定してください。<br><input name="init_num" value="#{h @conf['tdiarygraph_f.init_num']}" size="20"></p>
 
216
                <hr>
 
217
                <h3 class="subtitle">タイトルテキスト</h3>
 
218
                <p>タイトルテキスト (TDIARYGRAPH-FLASHSTYLE)<br>使用出来る文字は、英大文字 (A-Z) と数字 (0-9)、および記号のみです。<br><input name="text_text" value="#{h @conf['tdiarygraph_f.text_text']}" size="20"></p>
 
219
                <p>タイトルテキストの色 (FFFFFF)<br><input name="text_rgb" value="#{h @conf['tdiarygraph_f.text_rgb']}" size="20"></p>
 
220
                <h3 class="subtitle">レポートテキスト</h3>
 
221
                <p>レポートの表示有無 (表示)<br><select name="text_report">
 
222
                <option value="1"#{" selected" if @conf['tdiarygraph_f.text_report'] != "0"}>表示</option>
 
223
                <option value="0"#{" selected" if @conf['tdiarygraph_f.text_report'] == "0"}>非表示</option>
 
224
                </select></p>
 
225
                <p>レポートテキストの色 (CCCCCC)<br><input name="text_report_rgb" value="#{h @conf['tdiarygraph_f.text_report_rgb']}" size="20"></p>
 
226
                <h3 class="subtitle">レポート書式のカスタマイズ</h3>
 
227
                <p>タグを埋め込んだ位置にデータが展開されます。<br>使用出来る文字 (タグを除く) は、英大文字 (A-Z) と数字 (0-9)、および記号のみです。<br><input name="text_report_format" value="#{h @conf['tdiarygraph_f.text_report_format']}" size="70"></p>
 
228
                <p>[ 使用出来るタグ ] &lt;firstday&gt; : ログ初日, &lt;lastday&gt; : ログ最終日, &lt;days&gt; : ログ日数, &lt;total&gt; : 累計アクセス数, &lt;peak&gt; : 日別最大アクセス数, &lt;br&gt; : 改行</p>
 
229
                <hr>
 
230
                <h3 class="subtitle">背景や棒グラフの色</h3>
 
231
                <p>背景の色 (333333)<br><input name="bg_rgb" value="#{h @conf['tdiarygraph_f.bg_rgb']}" size="20"></p>
 
232
                <p>背景の不透明度 (100)<br><input name="bg_alpha" value="#{h @conf['tdiarygraph_f.bg_alpha']}" size="20"></p>
 
233
                <p>背景の枠線 (非表示)<br><select name="bg_frame">
 
234
                <option value="0"#{" selected" if @conf['tdiarygraph_f.bg_frame'] == "0" or @conf['tdiarygraph_f.bg_frame'] == nil or @conf['tdiarygraph_f.bg_frame'] == ""}>非表示</option>
 
235
                <option value="1"#{" selected" if @conf['tdiarygraph_f.bg_frame'] == "1"}>左と上に表示</option>
 
236
                </select></p>
 
237
                <p>日別アクセス数棒グラフの色 (CCCCCC)<br><input name="bar_rgb" value="#{h @conf['tdiarygraph_f.bar_rgb']}" size="20"></p>
 
238
                <p>日別アクセス数棒グラフの不透明度 (100)<br><input name="bar_alpha" value="#{h @conf['tdiarygraph_f.bar_alpha']}" size="20"></p>
 
239
                <p>累計アクセス数棒グラフの色 (666666)<br><input name="line_rgb" value="#{h @conf['tdiarygraph_f.line_rgb']}" size="20"></p>
 
240
                <p>累計アクセス数棒グラフの不透明度 (100)<br><input name="line_alpha" value="#{h @conf['tdiarygraph_f.line_alpha']}" size="20"></p>
 
241
                <hr>
 
242
                <h3 class="subtitle">棒グラフの線幅</h3>
 
243
                <p>日別アクセス数棒グラフの線幅を絶対値で指定します。<br><input name="bar_width" value="#{h @conf['tdiarygraph_f.bar_width']}" size="20"></p>
 
244
                <p>累計アクセス数棒グラフの線幅を絶対値で指定します。<br><input name="line_width" value="#{h @conf['tdiarygraph_f.line_width']}" size="20"></p>
 
245
                <hr>
 
246
                <h3 class="subtitle">モアレ対策</h3>
 
247
                <p>棒グラフの線幅を相対的に微調整します。(0) 設定した値に対して線幅がリニアに変更されるわけではありません。<br><br><input name="bold" value="#{h @conf['tdiarygraph_f.bold']}" size="20"></p>
 
248
                <hr>
 
249
                <h3 class="subtitle">ユニークID を使用したファイル取得</h3>
 
250
                <p>ファイル取得のリクエストにユニークID (例えば ?#{Time.now.to_i}) を含めることにより、古いファイルがブラウザにキャッシュされたままになるのを防ぎます。Flash のユニークID はプリファレンス設定時に、ログファイルのユニークID はエントリ登録時に更新されます。</p>
 
251
                <p>ユニークID の付加 (付加する)<br><select name="uid">
 
252
                <option value="1"#{" selected" if @conf['tdiarygraph_f.uid'] != "0"}>付加する</option>
 
253
                <option value="0"#{" selected" if @conf['tdiarygraph_f.uid'] == "0"}>付加しない</option>
 
254
                </select></p>
 
255
                <hr>
 
256
                <h3 class="subtitle">プレビュー</h3>
 
257
                <p>表示したい SWF ファイル (.swf) が tdiary.rb と同じフォルダにアップロードされている必要があります。また、カウンタログファイルが SWF ファイルと同じフォルダに転送されていない場合にはグラフが表示されません。</p>
 
258
                <p>プレビュー (非表示)<br><select name="preview">
 
259
                <option value="0"#{" selected" if @conf['tdiarygraph_f.preview'] != "1"}>非表示</option>
 
260
                <option value="1"#{" selected" if @conf['tdiarygraph_f.preview'] == "1"}>表示</option>
 
261
                </select></p>
 
262
        HTML
 
263
 
 
264
end
 
265
 
 
266
 
 
267
def tdiarygraph_flashstyle_preview
 
268
        unless @conf.mobile_agent?
 
269
        <<-r
 
270
                <p>#{if @conf['tdiarygraph_f.preview'] == "1" then "#{tdiarygraph_flashstyle}" else "プレビュー表示を有効にすると、ここに Flash が表示されます。" end}</p>
 
271
        r
 
272
        end
 
273
end
 
274
 
 
275
 
 
276
def tdiarygraph_flashstyle_templete( filename="tdiarygraph468x60e.swf", argvs="", width="468", height="60" )
 
277
        <<-r
 
278
                <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.adobe.com/pub/shockwave/cabs/flash/swflash.cab" width="#{h width}" height="#{h height}" id="tdiarygraph" align="middle">
 
279
                <param name="allowScriptAccess" value="sameDomain">
 
280
                <param name="movie" value="#{h filename}#{h argvs}">
 
281
                <param name="play" value="false">
 
282
                <param name="loop" value="false">
 
283
                <param name="quality" value="high">
 
284
                <param name="wmode" value="transparent">
 
285
                <param name="bgcolor" value="#ffffff">
 
286
                <embed src="#{h filename}#{h argvs}" play="false" loop="false" quality="high" wmode="transparent" bgcolor="#ffffff" width="#{h width}" height="#{h height}" name="tdiarygraph" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer"></embed>
 
287
                </object>
 
288
        r
 
289
end
 
290
 
 
291
 
 
292
def tdiarygraph_flashstyle_text_report_format( format="" )
 
293
        if format != ""
 
294
                r = format.gsub('<', '&lt;').gsub('>', '&gt;').gsub(' ', '+')
 
295
        end
 
296
end