def url_for url_fragment, mode=:path_only
case mode
when :path_only
base = request.script_name
when :full
scheme = request.env['HTTP_X_FORWARDED_SCHEME'] || request.scheme
port = request.env['HTTP_X_FORWARDED_PORT'] || request.port
if ((scheme == 'http' && port.to_s == '80') ||
(scheme == 'https' && port.to_s == '443'))
port = ""
else
port = ":#{port}"
end
request_host = HOSTNAME ? HOSTNAME : request.host
base = "#{scheme}://#{request_host}#{port}#{request.script_name}"
else
raise TypeError, "Unknown url_for mode #{mode}"
end
url_escape = URI.escape(url_fragment)
if url_escape.match(/^#{base}/) or url_escape.match(/^http/)
url_escape
else
"#{base}#{url_escape}"
end
end