#!/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 = "\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 += "#{Date::ABBR_MONTHNAMES[month]} #{year}\n" } ret += "\n" @head.sort.each{|curdate,curdescription| ret += "#{Date::ABBR_DAYNAMES[curdate.wday]}, #{curdate.day}\n" } ret += "Last Edit\n" ret += "\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 = <
add/remove column
END def navi val "" end [YEARBACK,MONTHBACK].each{|val| ret += navi(val)} ret += "" [MONTHFORWARD, YEARFORWARD].each{|val| ret += navi(val)} ret += "\n" 7.times{|i| ret += "" } ret += "\n" (startdate.wday-1).times{ ret += "" } d = startdate while (d.month == startdate.month) do klasse = "notchoosen" klasse = "disabled" if d < Date.today klasse = "choosen" if @head.include?(d) ret += "\n" ret += "\n" if d.wday == 0 d = d.next end ret += <
" + "" + "#{Date::ABBR_MONTHNAMES[startdate.month]} #{startdate.year}
#{Date::ABBR_DAYNAMES[(i+1)%7]}
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