diff options
author | Xavier Noria <fxn@hashref.com> | 2010-04-07 13:04:52 -0700 |
---|---|---|
committer | Xavier Noria <fxn@hashref.com> | 2010-04-07 13:04:52 -0700 |
commit | d18ff1b7efd96e7c08bc1a15137735be45f87e07 (patch) | |
tree | 08ed879624b9070f73e4ca67f040e7215d7d97ac /actionpack | |
parent | 149d13e1f0d157a48c04c8b3944f09ce463e9416 (diff) | |
download | rails-d18ff1b7efd96e7c08bc1a15137735be45f87e07.tar.gz rails-d18ff1b7efd96e7c08bc1a15137735be45f87e07.tar.bz2 rails-d18ff1b7efd96e7c08bc1a15137735be45f87e07.zip |
new helpers #favicon_link_tag and #apple_touch_icon_link_tag
Diffstat (limited to 'actionpack')
-rw-r--r-- | actionpack/lib/action_view/helpers/asset_tag_helper.rb | 38 | ||||
-rw-r--r-- | actionpack/test/template/asset_tag_helper_test.rb | 19 |
2 files changed, 57 insertions, 0 deletions
diff --git a/actionpack/lib/action_view/helpers/asset_tag_helper.rb b/actionpack/lib/action_view/helpers/asset_tag_helper.rb index e4ec17467e..1ca95b7dd1 100644 --- a/actionpack/lib/action_view/helpers/asset_tag_helper.rb +++ b/actionpack/lib/action_view/helpers/asset_tag_helper.rb @@ -501,6 +501,44 @@ module ActionView end end + # Returns a link tag for a favicon. + # + # <%= favicon_link_tag %> + # + # generates + # + # <link href="/favicon.ico?4649789979" rel="shortcut icon" type="image/vnd.microsoft.icon" /> + # + # You can specify a different icon file in the first argument: + # + # <%= favicon_link_tag 'favicon.ico' %> + # + # That's passed to +image_path+ as is, so the example above would render + # + # <link href="/images/favicon.ico?4649789979" rel="shortcut icon" type="image/vnd.microsoft.icon" /> + # + # The helper accepts an additional options hash where you can override "rel" and "type". + def favicon_link_tag(source=nil, options={}) + tag('link', { + :rel => 'shortcut icon', + :type => 'image/vnd.microsoft.icon', + :href => image_path(source || '/favicon.ico') + }.merge(options.symbolize_keys)) + end + + # Returns a link tag for an icon targetted at iPod Touch, iPhone, and iPad. + # + # <%= apple_touch_icon_link_tag 'my_site.png' %> + # + # generates + # + # <link href="/images/my_site.png?4233872383" rel="apple-touch-icon" /> + # + # The source argument is passed to +image_path+ as is. + def apple_touch_icon_link_tag(source) + tag('link', :rel => 'apple-touch-icon', :href => image_path(source)) + end + # Computes the path to an image asset in the public images directory. # Full paths from the document root will be passed through. # Used internally by +image_tag+ to build the image path. diff --git a/actionpack/test/template/asset_tag_helper_test.rb b/actionpack/test/template/asset_tag_helper_test.rb index 223a430f92..71052fb22c 100644 --- a/actionpack/test/template/asset_tag_helper_test.rb +++ b/actionpack/test/template/asset_tag_helper_test.rb @@ -157,6 +157,17 @@ class AssetTagHelperTest < ActionView::TestCase %(image_tag("mouse.png", :mouseover => image_path("mouse_over.png"))) => %(<img alt="Mouse" onmouseover="this.src='/images/mouse_over.png'" onmouseout="this.src='/images/mouse.png'" src="/images/mouse.png" />) } + FaviconLinkToTag = { + %(favicon_link_tag) => %(<link href="/favicon.ico" rel="shortcut icon" type="image/vnd.microsoft.icon" />), + %(favicon_link_tag 'favicon.ico') => %(<link href="/images/favicon.ico" rel="shortcut icon" type="image/vnd.microsoft.icon" />), + %(favicon_link_tag 'favicon.ico', :rel => 'foo') => %(<link href="/images/favicon.ico" rel="foo" type="image/vnd.microsoft.icon" />), + %(favicon_link_tag 'favicon.ico', :rel => 'foo', :type => 'bar') => %(<link href="/images/favicon.ico" rel="foo" type="bar" />) + } + + AppleTouchIconLinkToTag = { + %(apple_touch_icon_link_tag 'my_site.png') => %(<link href="/images/my_site.png" rel="apple-touch-icon" />) + } + VideoPathToTag = { %(video_path("xml")) => %(/videos/xml), %(video_path("xml.ogg")) => %(/videos/xml.ogg), @@ -331,6 +342,14 @@ class AssetTagHelperTest < ActionView::TestCase ImageLinkToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) } end + def test_favicon_link_tag + FaviconLinkToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) } + end + + def test_apple_touch_link_tag + AppleTouchIconLinkToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) } + end + def test_image_tag_windows_behaviour old_asset_id, ENV["RAILS_ASSET_ID"] = ENV["RAILS_ASSET_ID"], "1" # This simulates the behaviour of File#exist? on windows when testing a file ending in "." |