/usr/share/tdiary/contrib/plugin/tdiarytimes.rb is in tdiary-contrib 3.2.2-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 | # tdiarytimes.rb $Revision: 1.2 $
#
# Copyright (c) 2003 neuichi <neuichi@nmnl.jp>
# Distributed under the GPL
#
# プラグイン配布ページ
# http://nmnl.jp/hiki/software/?tDiary+%3A%3A+Plugin
#
# 動作条件:
# ruby-gdが使える環境が必要です。
#
# 使い方:
# このプラグインをプラグインディレクトリに入れ、
# index.rbと同じディレクトリに、tdiarytimes.pngという名前の
# サーバが書き込み権限を持っているファイルを作ります。
# これで日記に書き込みするごとに、tdiarytimes.pngに
# 画像を書き込みます。
#
# 日記上からこのpngファイルを呼び出すには、
# tDiray上からプラグインとして
# <%=tdiarytimes%>
# として呼び出します。
# 引数としてimgタグのaltの文字列を指定することも出来ます。
# <%=tdiarytimes '文字列'%>
#
# また、tdiary.confに以下のオプションを書き込むことにより、
# カスタマイズをすることが出来ます。
#
# @options['tdiarytimes.width'] = 400
# 四角の横幅。デフォルト値400。
# 実際に出力される画像サイズは、これに+10したサイズ。
#
# @options['tdiarytimes.height'] = 20
# 四角の縦幅。デフォルト値20。
# 実際に出力される画像サイズは、これに+16したサイズ。
#
# @options['tdiarytimes.file'] = 'tdiarytimes.png'
# 出力する画像ファイル名。デフォルトは'tdiarytimes.png'
#
# @options['tdiarytimes.fillcolor'] = '#444444'
# 四角の色。デフォルトは'#444444'
#
# @options['tdiarytimes.linecolor'] = '#ffffff'
# 縦棒の色。デフォルトは'#ffffff'
#
# @options['tdiarytimes.textcolor'] = '#444444'
# 文字色。デフォルトは'#444444'
#
# @options['tdiarytimes.text'] = 'T D I A R Y T I M E S'
# 出力する文字。デフォルトは'T D I A R Y T I M E S'。なお半角英数字のみ対応。
#
# @options['tdiarytimes.day'] = 30
# ログを保存する最大日数。デフォルトは30。
# この場合、30日以上経ったデータは消去され、縦棒として描画されなくなる。
#
require 'GD'
if /^(append|replace)$/ =~ @mode then
#初期設定
width = @options['tdiarytimes.width'] || 400
height = @options['tdiarytimes.height'] || 20
file = @options['tdiarytimes.file'] || 'tdiarytimes.png'
fillcolor = @options['tdiarytimes.fillcolor'] || '#444444'
linecolor = @options['tdiarytimes.linecolor'] || '#ffffff'
textcolor = @options['tdiarytimes.textcolor'] || '#444444'
text = @options['tdiarytimes.text'] || 'T D I A R Y T I M E S'
day = @options['tdiarytimes.day'] || 30
cache = "#{@cache_path}/tdiarytimes"
Dir::mkdir( cache ) unless File::directory?( cache )
image = GD::Image.new(width + 10,height + 16)
transcolor = image.colorAllocate("#fffffe")
image.transparent(transcolor)
image.interlace = TRUE
fillcolor = image.colorAllocate(fillcolor)
linecolor = image.colorAllocate(linecolor)
textcolor = image.colorAllocate(textcolor)
#帯の描画
image.filledRectangle(5,8,width + 4,height + 7,fillcolor)
#時間挿入
if width >= 160
hour = 2
hour_w = width / 12.0
image.string(GD::Font::TinyFont, 2, height + 8, "0", textcolor)
11.times {
image.string(GD::Font::TinyFont, (hour_w * hour/2).to_i , height + 8, hour.to_s, textcolor)
hour += 2
}
image.string(GD::Font::TinyFont, width + 2, height + 8, "0", textcolor)
else
hour = 0
hour_w = width / 6.0
6.times {
image.string(GD::Font::TinyFont, (hour_w * hour/4).to_i + 4, height + 8, hour.to_s, textcolor)
hour += 4
}
image.string(GD::Font::TinyFont, width + 2, height + 8, "0", textcolor)
end
#現在時刻の保存,読み込み
begin
io = open("#{cache}/tdiarytimes.dat","r")
ary_times = Marshal.load(io)
io.close
rescue
ary_times = []
end
ary_times << Time.now.to_f
ary_times_new = []
while ary_times.size != 0
time = ary_times.shift
time_now = Time.now.to_f.to_i
ary_times_new << time.to_i if (86400 * day) > (time_now - time).to_i
end
ary_times = ary_times_new
io = open("#{cache}/tdiarytimes.dat","w")
Marshal.dump(ary_times,io)
io.close
#時間軸の挿入
while ary_times.size != 0
time = Time.at(ary_times.shift)
time_w = ((time.to_a[2] * 60 + time.to_a[1]) / 1440.0 * width).to_i
image.line(time_w + 5, 8 ,time_w + 5,height + 7, linecolor)
end
#文字の挿入
image.string(GD::Font::TinyFont, 5, 0, text, textcolor)
pngfile = open(file, 'w')
image.png(pngfile)
pngfile.close
end
def tdiarytimes(alt = nil)
width = @options['tdiarytimes.width'].to_i || 400
width += 10
height = @options['tdiarytimes.height'].to_i || 20
height += 16
file = @options['tdiarytimes.file'] || 'tdiarytimes.png'
text = @options['tdiarytimes.text'] || 'T D I A R Y T I M E S'
result = ""
if alt
result << %Q|<img src="#{h file}" alt="#{h alt}" width="#{width}" height="#{height}" class="tdiarytimes">|
else
result << %Q|<img src="#{h file}" alt="#{h text}" width="#{width}" height="#{height}" class="tdiarytimes">|
end
result
end
|