blob: 339498a231a153910ab9997b31725c16ab01dff9 (
plain)
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
|
################################
# Author: Benjamin Kellermann #
# License: CC-by-sa 3.0 #
# see License #
################################
require "digest/sha2"
class PollHead
def initialize
@data = {}
end
def col_size
@data.size
end
def get_id(columntitle)
if @data.include?(columntitle)
return Digest::SHA2.hexdigest("#{columntitle}#{@data[columntitle]}" + columntitle)
else
raise("no such column found: #{columntitle}")
end
end
def get_title(columnid)
@data.each_key{|k| return k if get_id(k) == columnid}
raise("no such id found: #{columnid}")
end
def each_columntitle
@data.sort.each{|k,v|
yield(k)
}
end
def each_columnid
@data.sort.each{|k,v|
yield(get_id(k))
}
end
def each_column
@data.sort.each{|k,v|
yield(get_id(k),k)
}
end
# returns internal representation of cgi-string
def cgi_to_id(field)
field
end
# returns true if deletion sucessfull
def delete_column(columnid)
@data.delete(get_title(columnid)) != nil
end
# add new column if columnid = ""
# returns parsed title or false if parsed title == ""
def edit_column(columnid, newtitle, cgi)
delete_column(columnid) if columnid != ""
parsedtitle = newtitle.strip
if parsedtitle != ""
@data[parsedtitle] = CGI.escapeHTML(cgi["columndescription"].strip)
return parsedtitle
else
return false
end
end
def to_html(config = false,activecolumn = nil)
ret = "<tr><th><a href='?sort=name'>Name</a></th>\n"
@data.each{|columntitle,columndescription|
ret += "<th"
ret += " id='active' " if activecolumn == columntitle
ret += "><a title=\"#{columndescription}\" href=\"?sort=#{CGI.escapeHTML(CGI.escape(columntitle))}\">#{CGI.escapeHTML(columntitle)}</a>"
if config
ret += <<EDITDELETE
<div>
<small>
<a href="?editcolumn=#{CGI.escapeHTML(CGI.escape(columntitle))}" title="edit">
#{EDIT}
</a>|
<a href="?deletecolumn=#{CGI.escapeHTML(CGI.escape(get_id(columntitle)))}" title="delete">
#{DELETE}
</a>
</small>
</div>
EDITDELETE
end
ret += "</th>"
}
ret += "<th><a href='.'>Last Edit</a></th>\n"
ret += "</tr>\n"
ret
end
def edit_column_htmlform(activecolumn)
if activecolumn != ""
title = activecolumn
description = @data[title]
title = CGI.escapeHTML(title)
hiddeninput = "<input type='hidden' name='columnid' value=\"#{get_id(title)}\" />"
end
return <<END
<fieldset><legend>Add/Edit Column</legend>
<form method='post' action='config.cgi'>
<div>
<label for='columntitle'>Columntitle: </label>
<input id='columntitle' size='16' type='text' value="#{title}" name='new_columnname' />
<label for='columndescription'>Description: </label>
<input id='columndescription' size='30' type='text' value="#{description}" name='columndescription' />
#{hiddeninput}
<input type='submit' value='add/edit column' />
</div>
</form>
</fieldset>
END
end
end
|