############################################################################ # Copyright 2009,2010 Benjamin Kellermann # # # # This file is part of dudle. # # # # Dudle is free software: you can redistribute it and/or modify it under # # the terms of the GNU Affero General Public License as published by # # the Free Software Foundation, either version 3 of the License, or # # (at your option) any later version. # # # # Dudle is distributed in the hope that it will be useful, but WITHOUT ANY # # WARRANTY; without even the implied warranty of MERCHANTABILITY or # # FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public # # License for more details. # # # # You should have received a copy of the GNU Affero General Public License # # along with dudle. If not, see . # ############################################################################ $KCODE = "u" require "yaml" require "cgi" $cgi = CGI.new require 'gettext' require 'gettext/cgi' include GetText GetText.cgi=$cgi GetText.output_charset = 'utf-8' require "locale" if File.exists?("data.yaml") && !File.stat("data.yaml").directory? $is_poll = true GetText.bindtextdomain("dudle",:path => "../locale/") else $is_poll = false GetText.bindtextdomain("dudle",:path => "./locale/") end $:.push("..") require "date_locale" require "html" require "poll" require "config" require "charset" class Dudle attr_reader :html, :table, :urlsuffix, :css, :user_css, :title, :tab def is_poll? $is_poll end def tabs(active_tab) ret = "
" ret end def inittabs @customizetab = [_("Customize"),"customize.cgi"] if $is_poll # set-up tabs @usertabs = [ [_("Poll"),"."], [_("History"),"history.cgi"] ] @configtabs = [ [_("Edit Columns"),"edit_columns.cgi"], [_("Invite Participants"),"invite_participants.cgi"], [_("Access Control"),"access_control.cgi"], [_("Overview"),"overview.cgi"] ] @deletetab = [_("Delete Poll"),"delete_poll.cgi"] end end def revision @requested_revision || VCS.revno end def initialize(revision=nil) @requested_revision = revision @cgi = $cgi @tab = File.basename($0) @tab = "." if @tab == "index.cgi" if $is_poll # log last read acces manually (no need to grep server logfiles) File.open("last_read_access","w").close $is_poll = true @basedir = ".." @table = YAML::load(VCS.cat(self.revision, "data.yaml")) @urlsuffix = File.basename(File.expand_path(".")) @title = @table.name inittabs configfiles = @configtabs.collect{|name,file| file} @is_config = configfiles.include?(@tab) @wizzardindex = configfiles.index(@tab) if @is_config @tabtitle = (@usertabs + @configtabs + [@deletetab] + [@customizetab]).collect{|title,file| title if file == @tab}.compact[0] @html = HTML.new("dudle - #{@title} - #{@tabtitle}") @html.header["Cache-Control"] = "no-cache" else @basedir = "." inittabs @title = "dudle" @html = HTML.new(@title) end @css = ["default", "classic", "print"].collect{|f| f + ".css"} Dir.open("#{@basedir}/css/").each{|f| if f =~ /\.css$/ @css << "css/#{f}" end } if $cgi.include?("css") @user_css = $cgi["css"] @html.add_cookie("css",@user_css,"/",Time.now + (1*60*60*24*365 * (@user_css == DEFAULT_CSS ? -1 : 1 ))) else @user_css = $cgi.cookies["css"][0] @user_css ||= DEFAULT_CSS end if $cgi.user_agent =~ /.*MSIE [567]\..*/ css = [@user_css] else css = @css end css.each{|href| @html.add_css("#{@basedir}/#{href}",href.scan(/([^\/]*)\.css/).flatten[0] ,href == @user_css) } @html << <
#{tabs(@tab)}

#{@title}

HEAD ################### # init extenisons # ################### @extensions = [] Dir.open("#{@basedir}/extensions/").each{|f| @extensions << f if File.exists?("#{@basedir}/extensions/#{f}/main.rb") } end def wizzard_nav ret = "
" [[_("Previous"),@wizzardindex == 0], [_("Next"),@wizzardindex >= @configtabs.size()-2], [_("Finish"),@wizzardindex == @configtabs.size()-1]].each{|button,disabled| ret += <
READY } ret += "
" end def wizzard_redirect [[_("Previous"),@wizzardindex-1], [_("Next"),@wizzardindex+1], [_("Finish"),@configtabs.size()-1]].each{|action,linkindex| if $cgi.include?(action) @html.header["status"] = "REDIRECT" @html.header["Cache-Control"] = "no-cache" @html.header["Location"] = @configtabs[linkindex][1] @html << _("All changes were saved sucessfully.") + " " + _("Proceed!") + "" out exit end } end def out @html << wizzard_nav if @is_config @html.add_cookie("lang",@cgi["lang"],"/",Time.now + (1*60*60*24*365)) if @cgi.include?("lang") @html << "
" lang = [ ["en", "English"], ["de", "Deutsch"], ["cs", "Česky"], ["sv", "Svenska"] ] lang.each{|short,long| if short == GetText.locale.language @html << long else @html << "#{long}" end } @html << "
" # languageChooser @html << "
" # content @html << "
" # main @extensions.each{|e| if File.exists?("#{@basedir}/extensions/#{e}/main.rb") require "#{@basedir}/extensions/#{e}/main" end } @html << "" @html.out(@cgi) end def <<(htmlbodytext) @html << htmlbodytext end end