################################ # 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 = "Name\n" @data.each{|columntitle,columndescription| ret += "#{CGI.escapeHTML(columntitle)}" if config ret += < #{EDIT} | #{DELETE} EDITDELETE end ret += "" } ret += "Last Edit\n" ret += "\n" ret end def edit_column_htmlform(activecolumn) if activecolumn != "" title = activecolumn description = @data[title] title = CGI.escapeHTML(title) hiddeninput = "" end return <Add/Edit Column
#{hiddeninput}
END end end