diff --git a/app/controllers/settings_controller.rb b/app/controllers/settings_controller.rb
index 99f7bcf08..e9bc0a601 100644
--- a/app/controllers/settings_controller.rb
+++ b/app/controllers/settings_controller.rb
@@ -41,7 +41,7 @@ class SettingsController < ApplicationController
@deliveries = ActionMailer::Base.perform_deliveries
@guessed_host_and_path = request.host_with_port
- @guessed_host_and_path << ('/'+ request.relative_url_root.gsub(%r{^\/}, '')) unless request.relative_url_root.blank?
+ @guessed_host_and_path << ('/'+ Redmine::Utils.relative_url_root.gsub(%r{^\/}, '')) unless Redmine::Utils.relative_url_root.blank?
end
def plugin
diff --git a/app/models/mailer.rb b/app/models/mailer.rb
index 9a0f3a501..beef97a7b 100644
--- a/app/models/mailer.rb
+++ b/app/models/mailer.rb
@@ -191,7 +191,7 @@ class Mailer < ActionMailer::Base
# URL options
h = Setting.host_name
- h = h.to_s.gsub(%r{\/.*$}, '') unless ActionController::AbstractRequest.relative_url_root.blank?
+ h = h.to_s.gsub(%r{\/.*$}, '') unless Redmine::Utils.relative_url_root.blank?
default_url_options[:host] = h
default_url_options[:protocol] = Setting.protocol
@@ -226,7 +226,7 @@ class Mailer < ActionMailer::Base
# Renders a message with the corresponding layout
def render_message(method_name, body)
- layout = method_name.match(%r{text\.html\.(rhtml|rxml)}) ? 'layout.text.html.rhtml' : 'layout.text.plain.rhtml'
+ layout = method_name.to_s.match(%r{text\.html\.(rhtml|rxml)}) ? 'layout.text.html.rhtml' : 'layout.text.plain.rhtml'
body[:content_for_layout] = render(:file => method_name, :body => body)
ActionView::Base.new(template_root, body, self).render(:file => "mailer/#{layout}", :use_full_path => true)
end
diff --git a/lib/redmine/utils.rb b/lib/redmine/utils.rb
new file mode 100644
index 000000000..02f9d3e63
--- /dev/null
+++ b/lib/redmine/utils.rb
@@ -0,0 +1,38 @@
+# Redmine - project management software
+# Copyright (C) 2006-2009 Jean-Philippe Lang
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+module Redmine
+ module Utils
+ class << self
+ # Returns the relative root url of the application
+ def relative_url_root
+ ActionController::Base.respond_to?('relative_url_root') ?
+ ActionController::Base.relative_url_root.to_s :
+ ActionController::AbstractRequest.relative_url_root.to_s
+ end
+
+ # Sets the relative root url of the application
+ def relative_url_root=(arg)
+ if ActionController::Base.respond_to?('relative_url_root=')
+ ActionController::Base.relative_url_root=arg
+ else
+ ActionController::AbstractRequest.relative_url_root=arg
+ end
+ end
+ end
+ end
+end
diff --git a/lib/redmine/wiki_formatting/textile/helper.rb b/lib/redmine/wiki_formatting/textile/helper.rb
index 22fa35783..c4bde572b 100644
--- a/lib/redmine/wiki_formatting/textile/helper.rb
+++ b/lib/redmine/wiki_formatting/textile/helper.rb
@@ -21,8 +21,7 @@ module Redmine
module Helper
def wikitoolbar_for(field_id)
# Is there a simple way to link to a public resource?
- prefix = (ActionController::Base.respond_to?(:relative_url_root) ? ActionController::Base.relative_url_root : ActionController::AbstractRequest.relative_url_root)
- url = "#{prefix}/help/wiki_syntax.html"
+ url = "#{Redmine::Utils.relative_url_root}/help/wiki_syntax.html"
help_link = l(:setting_text_formatting) + ': ' +
link_to(l(:label_help), url,
diff --git a/test/unit/mailer_test.rb b/test/unit/mailer_test.rb
index 1fd43af5d..aded23cc3 100644
--- a/test/unit/mailer_test.rb
+++ b/test/unit/mailer_test.rb
@@ -40,11 +40,11 @@ class MailerTest < Test::Unit::TestCase
end
def test_generated_links_with_prefix
- relative_url_root = ActionController::AbstractRequest.relative_url_root
+ relative_url_root = Redmine::Utils.relative_url_root
ActionMailer::Base.deliveries.clear
Setting.host_name = 'mydomain.foo/rdm'
Setting.protocol = 'http'
- ActionController::AbstractRequest.relative_url_root = '/rdm'
+ Redmine::Utils.relative_url_root = '/rdm'
journal = Journal.find(2)
assert Mailer.deliver_issue_edit(journal)
@@ -60,15 +60,15 @@ class MailerTest < Test::Unit::TestCase
assert mail.body.include?('r2')
ensure
# restore it
- ActionController::AbstractRequest.relative_url_root = relative_url_root
+ Redmine::Utils.relative_url_root = relative_url_root
end
def test_generated_links_with_prefix_and_no_relative_url_root
- relative_url_root = ActionController::AbstractRequest.relative_url_root
+ relative_url_root = Redmine::Utils.relative_url_root
ActionMailer::Base.deliveries.clear
Setting.host_name = 'mydomain.foo/rdm'
Setting.protocol = 'http'
- ActionController::AbstractRequest.relative_url_root = nil
+ Redmine::Utils.relative_url_root = nil
journal = Journal.find(2)
assert Mailer.deliver_issue_edit(journal)
@@ -84,7 +84,7 @@ class MailerTest < Test::Unit::TestCase
assert mail.body.include?('r2')
ensure
# restore it
- ActionController::AbstractRequest.relative_url_root = relative_url_root
+ Redmine::Utils.relative_url_root = relative_url_root
end
def test_plain_text_mail