]> source.dussan.org Git - redmine.git/commitdiff
Adds a helper for building h2 tags and setting html_title (#14517).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 28 Jul 2013 11:21:58 +0000 (11:21 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 28 Jul 2013 11:21:58 +0000 (11:21 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12048 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/helpers/application_helper.rb
test/unit/helpers/application_helper_test.rb

index 62e7b26971c50cbd7952636b63bf70f9c637c315..b918a47e8374f49634190654fb93e9f4fbbdd29a 100644 (file)
@@ -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
index 419a1b330fdfd8444fd36c1d6453de2af725fb00..ebdc5d21676152f4212388c669cb5202ab5a1421 100644 (file)
@@ -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