aboutsummaryrefslogtreecommitdiff
path: root/datepoll.rb
diff options
context:
space:
mode:
authorBenjamin Kellermann <Benjamin.Kellermann@gmx.de>2008-10-27 09:13:53 +0100
committerBenjamin Kellermann <Benjamin.Kellermann@gmx.de>2008-10-27 09:13:53 +0100
commitab9b9c0a5ea1a34676fd7055fe2953fbdbdd9d75 (patch)
treea8cc87f5577eecff733ef3acdfee1669de7c13eb /datepoll.rb
parenteed0f2ecfe0e96e073b9d87e713a531767384eba (diff)
splitted files for more overview
Diffstat (limited to '')
-rwxr-xr-xdatepoll.rb120
1 files changed, 120 insertions, 0 deletions
diff --git a/datepoll.rb b/datepoll.rb
new file mode 100755
index 0000000..34e2397
--- /dev/null
+++ b/datepoll.rb
@@ -0,0 +1,120 @@
+#!/usr/bin/env ruby
+load "/home/ben/src/lib.rb/pphtml.rb"
+require "pp"
+require "date"
+require "poll"
+
+class DatePoll < Poll
+ def head_to_html
+ ret = "<tr><td></td>\n"
+ monthhead = Hash.new(0)
+ @head.sort.each{|curdate,curdescription|
+ monthhead["#{curdate.year}-#{curdate.mon.to_s.rjust(2,"0")} "] += 1
+ }
+ monthhead.sort.each{|title,count|
+ year, month = title.split("-").collect{|e| e.to_i}
+ ret += "<th colspan='#{count}'>#{Date::ABBR_MONTHNAMES[month]} #{year}</th>\n"
+ }
+ ret += "</tr><tr><td></td>\n"
+ @head.sort.each{|curdate,curdescription|
+ ret += "<th>#{Date::ABBR_DAYNAMES[curdate.wday]}, #{curdate.day}</th>\n"
+ }
+ ret += "<th>Last Edit</th>\n"
+ ret += "</tr>\n"
+ ret
+ end
+ def add_remove_column_htmlform
+ if $cgi.include?("add_remove_column_month")
+ begin
+ startdate = Date.parse("#{$cgi["add_remove_column_month"]}-1")
+ rescue ArgumentError
+ olddate = $cgi.params["add_remove_column_month"][1]
+ case $cgi["add_remove_column_month"]
+ when YEARBACK
+ startdate = Date.parse("#{olddate}-1")-365
+ when MONTHBACK
+ startdate = Date.parse("#{olddate}-1")-1
+ when MONTHFORWARD
+ startdate = Date.parse("#{olddate}-1")+31
+ when YEARFORWARD
+ startdate = Date.parse("#{olddate}-1")+366
+ end
+ startdate = Date.parse("#{startdate.year}-#{startdate.month}-1")
+ end
+ else
+ startdate = Date.parse("#{Date.today.year}-#{Date.today.month}-1")
+ end
+ ret = <<END
+<div id='add_remove_column'>
+<fieldset><legend>add/remove column</legend>
+<form method='post' action='.'>
+<div>
+<table><tr>
+END
+ def navi val
+ "<th style='padding:0px'>" +
+ "<input class='navigation' type='submit' name='add_remove_column_month' value='#{val}' />" +
+ "</th>"
+ end
+ [YEARBACK,MONTHBACK].each{|val| ret += navi(val)}
+ ret += "<th colspan='3'>#{Date::ABBR_MONTHNAMES[startdate.month]} #{startdate.year}</th>"
+ [MONTHFORWARD, YEARFORWARD].each{|val| ret += navi(val)}
+
+ ret += "</tr><tr>\n"
+
+ 7.times{|i| ret += "<th>#{Date::ABBR_DAYNAMES[(i+1)%7]}</th>" }
+ ret += "</tr><tr>\n"
+
+ (startdate.wday-1).times{
+ ret += "<td></td>"
+ }
+ d = startdate
+ while (d.month == startdate.month) do
+ klasse = "notchoosen"
+ klasse = "disabled" if d < Date.today
+ klasse = "choosen" if @head.include?(d)
+ ret += "<td class='calendarday'><input class='#{klasse}' type='submit' name='add_remove_column' value='#{d.day}' /></td>\n"
+ ret += "</tr><tr>\n" if d.wday == 0
+ d = d.next
+ end
+ ret += <<END
+</tr></table>
+<input type='hidden' name='add_remove_column_month' value='#{startdate.strftime("%Y-%m")}' />
+</div>
+</form>
+</fieldset>
+</div>
+END
+ ret
+ end
+ def add_remove_column name,description
+ begin
+ parsed_name = Date.parse("#{$cgi["add_remove_column_month"]}-#{name}")
+ rescue ArgumentError
+ return false
+ end
+ add_remove_parsed_column(parsed_name,CGI.escapeHTML(description))
+ end
+end
+
+if __FILE__ == $0
+require 'test/unit'
+class DatePollTest < Test::Unit::TestCase
+ def setup
+ @poll = DatePoll.new
+ end
+ def teardown
+ File.delete("#{SITE}.yaml") if File.exists?("#{SITE}.yaml")
+ end
+ def test_add_remove_column
+# how to test cgi class?
+# assert(!@poll.add_remove_column("bla"))
+# assert(!@poll.add_remove_column("31-02-2001"))
+# assert(@poll.add_remove_column("2008-02-20"))
+# assert_equal(Date,@poll.head[0].class)
+# assert(@poll.add_remove_column(" 2008-02-20 "))
+# assert(@poll.head.empty?)
+ end
+
+end
+end