/usr/share/tdiary/misc/plugin/calendar2.rb is in tdiary-plugin 3.2.2-3.
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 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 | # calendar2.rb
#
# calendar2: add calendar as table layout.
# parameter:
# days_format: Array of weekday name stats with Sunday. (optional)
# navi_format: Array of navigation label on top of calendar. (optional)
# show_todo: You can write todo list into future diary as hidden with a
# subtitle. if calendar2 find this parameter string in future
# diary, it popup your todo. (optional)
#
# options:
# calendar2.show_image: true or false. show a image that makes by image.rb
# on each date. default is falase, and use only non secure mode.
# and if you want to change image size, add CSS to your theme.
# for example (25x25 pixel image):
#
# td.calendar-day img {
# width: 25px;
# height: 25px;
# border: 0;
# }
#
# Copyright (c) 2001,2002 Junichiro KITA <kita@kitaj.no-ip.com>
# Distributed under the GPL
#
@calendar2_image_dir = @options && @options['image.dir'] || './images/'
@calendar2_image_dir.chop! if /\/$/ =~ @calendar2_image_dir
@calendar2_image_url = @options && @options['image.url'] || "#{base_url}images/"
@calendar2_image_url.chop! if /\/$/ =~ @calendar2_image_url
@calendar2_imageex_yearlydir = @options && @options['image_ex.yearlydir'] || 0
@calendar2_show_image = @options && @options['calendar2.show_image'] || false
def calendar2_make_cal(year, month)
result = []
t = Time.local(year, month, 1)
r = Array.new(t.wday, nil)
r << 1
2.upto(31) do |i|
break if Time.local(year, month, i).month != month
r << i
end
r += Array.new((- r.size) % 7, nil)
0.step(r.size - 1, 7) do |i|
result << r[i, 7]
end
result
end
def calendar2_prev_current_next
yyyymm = if /^(latest|search)$/ =~ @mode
Time.now
else
@date
end.strftime "%Y%m"
yms = [yyyymm]
@years.keys.each do |y|
yms |= @years[y].collect {|i| y + i}
end
yms.sort!
yms.unshift nil
yms.push nil
i = yms.index(yyyymm)
yms[i - 1, 3]
end
def calendar2_make_anchor(ym, str)
if ym
%Q|<a href="#{h @index}#{anchor ym}">#{str}</a>|
else
str
end
end
def calender2_make_image(diary, date)
f_list = []
/[^_]image(?:_left|_right|_gps)?\s*\(?\s*([0-9]*)\s*\,?\s*'[^']*'/ =~ diary.to_s
if $1 == nil
return nil
end
image_dir = (@calendar2_imageex_yearlydir == 0 ? @calendar2_image_dir : %Q|#{@calendar2_image_dir}/#{date[0,4]}|)
image_url = (@calendar2_imageex_yearlydir == 0 ? @calendar2_image_url : %Q|#{@calendar2_image_url}/#{date[0,4]}|)
f_list = Dir.glob(%Q|#{image_dir}/#{date}_#{$1}*|.untaint)
if f_list[0]
file = File.basename(f_list[0])
file = %Q|s#{file}| if File.exist?(%Q|#{image_dir}/s#{file}|.untaint)
%Q|<img src="#{image_url}/#{file}">|
else
nil
end
end
def calendar2(days_format = nil, navi_format = nil, show_todo = nil)
days_format ||= @calendar2_days_format
navi_format ||= @calendar2_navi_format
return '' if /TAMATEBAKO/ =~ @cgi.user_agent
date = if /^(latest|search)$/ =~ @mode
Time.now
else
@date
end
year = date.year
month = date.month
p_c_n = calendar2_prev_current_next
result = <<CALENDAR_HEAD
<table class="calendar" summary="calendar">
<tr>
<td class="image" colspan="7"></td>
</tr>
<tr>
<td class="calendar-prev-month" colspan="2">#{calendar2_make_anchor(p_c_n[0], navi_format[0] % [year, month])}</td>
<td class="calendar-current-month" colspan="3">#{calendar2_make_anchor(p_c_n[1], navi_format[1] % [year, month])}</td>
<td class="calendar-next-month" colspan="2">#{calendar2_make_anchor(p_c_n[2], navi_format[2] % [year, month])}</td>
</tr>
CALENDAR_HEAD
result << "<tr>"
result << %Q| <td class="calendar-sunday">#{days_format[0]}</td>\n|
1.upto(5) do |i|
result << %Q| <td class="calendar-weekday">#{days_format[i]}</td>\n|
end
result << %Q| <td class="calendar-saturday">#{days_format[6]}</td>\n|
result << "</tr>\n"
calendar2_make_cal(year, month).each do |week|
result << "<tr>\n"
week.each do |day|
if day == nil
result << %Q| <td class="calendar-day"></td>\n|
else
date = "%04d%02d%02d" % [year, month, day]
result << %Q| <td class="calendar-day">%s</td>\n| %
if @diaries[date] == nil
day.to_s
elsif ! @diaries[date].visible?
if show_todo
todos = []
@diaries[date].each_section do |section|
if show_todo === section.subtitle
todos << section.body
end
end
if todos.size != 0
%Q|<a title="#{h todos.join( "\n" )}"><span class="calendar-todo">#{day}</span></a>|
else
day.to_s
end
else
day.to_s
end
else
subtitles = []
idx = "01"
@diaries[date].each_section do |section|
if section.subtitle
text = section.subtitle_to_html
else
text = section.body_to_html
end
subtitles << h( %Q|#{idx}. #{@conf.shorten(apply_plugin( text, true ))}| )
idx.succ!
end
day_img = ((@calendar2_show_image and !@conf.secure) ? calender2_make_image(@diaries[date], date) : day.to_s)
day_img = day.to_s if day_img == nil
%Q|<a href="#{h @index}#{anchor date}" title="#{subtitles.join(" ")}">#{day_img}</a>|
end
end
end
result << "</tr>\n"
end
result << "</table>\n"
end
#@calendar2_cache = CacheMonth.new(@date, :calender2, method(:calendar2))
#add_update_proc @calendar2_cache.writer
# Local Variables:
# mode: ruby
# indent-tabs-mode: t
# tab-width: 3
# ruby-indent-level: 3
# End:
|