diff options
author | Benjamin Kellermann <Benjamin.Kellermann@gmx.de> | 2011-02-07 10:56:56 +0100 |
---|---|---|
committer | Benjamin Kellermann <Benjamin.Kellermann@gmx.de> | 2011-02-07 10:56:56 +0100 |
commit | a5f5d53881645d42d27ea9b46d10a2442676e271 (patch) | |
tree | 25bdee516695c15534a53f06e988d98f19895ada | |
parent | d0ca62d9347ceee09ebff2fb13b333a45bcab271 (diff) |
Attempt to fix relative path bug with error pages
-rwxr-xr-x | authorization_required.cgi | 8 | ||||
-rw-r--r-- | dudle.rb | 17 | ||||
-rwxr-xr-x | error.cgi | 7 | ||||
-rw-r--r-- | html.rb | 14 | ||||
-rwxr-xr-x | not_found.cgi | 7 |
5 files changed, 34 insertions, 19 deletions
diff --git a/authorization_required.cgi b/authorization_required.cgi index 0511251..d8ed581 100755 --- a/authorization_required.cgi +++ b/authorization_required.cgi @@ -25,7 +25,13 @@ if $cgi.include?("poll") Dir.chdir($cgi["poll"]) $is_poll = true - $d = Dudle.new(:hide_lang_chooser => true) + + # check for trailing slash + if ENV["REDIRECT_URL"] =~ /#{$cgi["poll"]}$/ + $d = Dudle.new(:hide_lang_chooser => true, :relative_dir => "#{$cgi["poll"]}/") + else + $d = Dudle.new(:hide_lang_chooser => true) + end $d << "<h2>" + _("Authorization Required") + "</h2>" case $cgi["user"] @@ -74,7 +74,7 @@ class Dudle when "" ret += "<li class='separator_tab'></li>" else - ret += "<li class='nonactive_tab' ><a href='#{file}'> #{tab} </a></li> " + ret += "<li class='nonactive_tab' ><a href='#{@html.relative_dir}#{file}'> #{tab} </a></li> " end } ret += "</ul></div>" @@ -83,7 +83,7 @@ class Dudle def inittabs @customizetab = [_("Customize"),"customize.cgi"] - if $is_poll + if is_poll? # set-up tabs @usertabs = [ [_("Poll"),"."], @@ -102,36 +102,35 @@ class Dudle @requested_revision || VCS.revno end - def initialize(params = {:revision => nil, :title => nil, :hide_lang_chooser => nil}) + def initialize(params = {:revision => nil, :title => nil, :hide_lang_chooser => nil, :relative_dir => ""}) @requested_revision = params[:revision] @hide_lang_chooser = params[:hide_lang_chooser] @cgi = $cgi @tab = File.basename($0) @tab = "." if @tab == "index.cgi" - if $is_poll + inittabs + + 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 = HTML.new("dudle - #{@title} - #{@tabtitle}",params[:relative_dir]) @html.header["Cache-Control"] = "no-cache" else @basedir = "." - inittabs @title = params[:title] || "dudle" - @html = HTML.new(@title) + @html = HTML.new(@title,params[:relative_dir]) end @@ -20,7 +20,12 @@ ############################################################################ require "dudle" -$d = Dudle.new(:title => _("Error"), :hide_lang_chooser => true) +# check for trailing slash +if ENV["REDIRECT_URL"] =~ /#{$cgi["poll"]}$/ + $d = Dudle.new(:title => _("Error"), :hide_lang_chooser => true, :relative_dir => "#{$cgi["poll"]}/") +else + $d = Dudle.new(:title => _("Error"), :hide_lang_chooser => true) +end def urlescape(str) CGI.escapeHTML(CGI.escape(str).gsub("+","%20")) @@ -19,8 +19,10 @@ class HTML attr_accessor :body, :header - def initialize(title) + attr_reader :relative_dir + def initialize(title, relative_dir = "") @title = title + @relative_dir = relative_dir @header = {} @header["type"] = "text/html" # @header["type"] = "application/xhtml+xml" @@ -42,12 +44,12 @@ HEAD @css = [@css[0]] + @css[1..-1].sort unless @css.empty? @css.each{|title,href| titleattr = "title='#{title}'" if title != "" - ret += "<link rel='stylesheet' type='text/css' href='#{href}' #{titleattr} media='screen, projection, tv, handheld'/>\n" - ret += "<link rel='stylesheet' type='text/css' href='#{href}' media='print' />\n" if title == "print" + ret += "<link rel='stylesheet' type='text/css' href='#{@relative_dir}#{href}' #{titleattr} media='screen, projection, tv, handheld'/>\n" + ret += "<link rel='stylesheet' type='text/css' href='#{@relative_dir}#{href}' media='print' />\n" if title == "print" } @atom.each{|href| - ret += "<link rel='alternate' type='application/atom+xml' href='#{href}' />\n" + ret += "<link rel='alternate' type='application/atom+xml' href='#{@relative_dir}#{href}' />\n" } ret += @htmlheader @@ -73,10 +75,10 @@ HEAD @header["cookie"] << c end def add_head_script(file) - add_html_head("<script type='text/javascript' src='#{file}'></script>") + add_html_head("<script type='text/javascript' src='#{@relative_dir}#{file}'></script>") end def add_script_file(file) - self << "<script type='text/javascript' src='#{file}'></script>" + self << "<script type='text/javascript' src='#{@relative_dir}#{file}'></script>" end def add_script(script) self << <<SCRIPT diff --git a/not_found.cgi b/not_found.cgi index 577769f..425bf65 100755 --- a/not_found.cgi +++ b/not_found.cgi @@ -20,8 +20,11 @@ ############################################################################ require "dudle" -$d = Dudle.new(:hide_lang_chooser => true) - +if File.exists?(Dir.pwd + File.dirname(ENV["REDIRECT_URL"])) + $d = Dudle.new(:hide_lang_chooser => true) +else + $d = Dudle.new(:hide_lang_chooser => true, :relative_dir => "../") +end title = _("Poll Not Found") |