summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2013-07-28 11:21:58 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2013-07-28 11:21:58 +0000
commit2f9050115b6f5064fb563c95757639448fccfe43 (patch)
treef40332f350d9141cee271de9c284e05ba6c647fc
parent37003787646589d8f55a0f40886ce1da4485b316 (diff)
downloadredmine-2f9050115b6f5064fb563c95757639448fccfe43.tar.gz
redmine-2f9050115b6f5064fb563c95757639448fccfe43.zip
Adds a helper for building h2 tags and setting html_title (#14517).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12048 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/helpers/application_helper.rb21
-rw-r--r--test/unit/helpers/application_helper_test.rb34
2 files changed, 54 insertions, 1 deletions
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 62e7b2697..b918a47e8 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -449,12 +449,31 @@ module ApplicationHelper
end
end
+ # Returns a h2 tag and sets the html title with the given arguments
+ def title(*args)
+ strings = args.map do |arg|
+ if arg.is_a?(Array) && arg.size >= 2
+ link_to(*arg)
+ else
+ h(arg.to_s)
+ end
+ end
+ html_title args.reverse.map {|s| (s.is_a?(Array) ? s.first : s).to_s}
+ content_tag('h2', strings.join(' &#187; ').html_safe)
+ end
+
+ # Sets the html title
+ # Returns the html title when called without arguments
+ # Current project name and app_title and automatically appended
+ # Exemples:
+ # html_title 'Foo', 'Bar'
+ # html_title # => 'Foo - Bar - My Project - Redmine'
def html_title(*args)
if args.empty?
title = @html_title || []
title << @project.name if @project
title << Setting.app_title unless Setting.app_title == title.last
- title.select {|t| !t.blank? }.join(' - ')
+ title.reject(&:blank?).join(' - ')
else
@html_title ||= []
@html_title += args
diff --git a/test/unit/helpers/application_helper_test.rb b/test/unit/helpers/application_helper_test.rb
index 419a1b330..ebdc5d216 100644
--- a/test/unit/helpers/application_helper_test.rb
+++ b/test/unit/helpers/application_helper_test.rb
@@ -1231,4 +1231,38 @@ RAW
s = raw_json(["foo"])
assert s.html_safe?
end
+
+ def test_html_title_should_app_title_if_not_set
+ assert_equal 'Redmine', html_title
+ end
+
+ def test_html_title_should_join_items
+ html_title 'Foo', 'Bar'
+ assert_equal 'Foo - Bar - Redmine', html_title
+ end
+
+ def test_html_title_should_append_current_project_name
+ @project = Project.find(1)
+ html_title 'Foo', 'Bar'
+ assert_equal 'Foo - Bar - eCookbook - Redmine', html_title
+ end
+
+ def test_title_should_return_a_h2_tag
+ assert_equal '<h2>Foo</h2>', title('Foo')
+ end
+
+ def test_title_should_set_html_title
+ title('Foo')
+ assert_equal 'Foo - Redmine', html_title
+ end
+
+ def test_title_should_turn_arrays_into_links
+ assert_equal '<h2><a href="/foo">Foo</a></h2>', title(['Foo', '/foo'])
+ assert_equal 'Foo - Redmine', html_title
+ end
+
+ def test_title_should_join_items
+ assert_equal '<h2>Foo &#187; Bar</h2>', title('Foo', 'Bar')
+ assert_equal 'Bar - Foo - Redmine', html_title
+ end
end