diff options
author | Benjamin Kellermann <Benjamin.Kellermann@gmx.de> | 2008-10-27 09:13:53 +0100 |
---|---|---|
committer | Benjamin Kellermann <Benjamin.Kellermann@gmx.de> | 2008-10-27 09:13:53 +0100 |
commit | ab9b9c0a5ea1a34676fd7055fe2953fbdbdd9d75 (patch) | |
tree | a8cc87f5577eecff733ef3acdfee1669de7c13eb /datepoll.rb | |
parent | eed0f2ecfe0e96e073b9d87e713a531767384eba (diff) |
splitted files for more overview
Diffstat (limited to '')
-rwxr-xr-x | datepoll.rb | 120 |
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 |