mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Added link_to_image(src, options = {}, html_options = {}, *parameters_for_method_reference)
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@105 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
parent
bf33b6ccae
commit
e1917cab32
3 changed files with 65 additions and 0 deletions
|
@ -1,5 +1,21 @@
|
|||
*SVN*
|
||||
|
||||
* Added link_to_image(src, options = {}, html_options = {}, *parameters_for_method_reference). Documentation:
|
||||
|
||||
Creates a link tag to the image residing at the +src+ using an URL created by the set of +options+. See the valid options in
|
||||
link:classes/ActionController/Base.html#M000021. It's also possible to pass a string instead of an options hash to
|
||||
get a link tag that just points without consideration. The <tt>html_options</tt> works jointly for the image and ahref tag by
|
||||
letting the following special values enter the options on the image and the rest goes to the ahref:
|
||||
|
||||
::alt: If no alt text is given, the file name part of the +src+ is used (capitalized and without the extension)
|
||||
::size: Supplied as "XxY", so "30x45" becomes width="30" and height="45"
|
||||
::align: Sets the alignment, no special features
|
||||
|
||||
The +src+ can be supplied as a...
|
||||
* full path, like "/my_images/image.gif"
|
||||
* file name, like "rss.gif", that gets expanded to "/images/rss.gif"
|
||||
* file name without extension, like "logo", that gets expanded to "/images/logo.png"
|
||||
|
||||
* Fixed to_input_field_tag so it no longer explicitly uses InstanceTag.value if value was specified in the options hash [evl]
|
||||
|
||||
* Added the possibility of having validate be protected for assert_(in)valid_column #263 [Tobias Luetke]
|
||||
|
|
|
@ -25,6 +25,43 @@ module ActionView
|
|||
end
|
||||
end
|
||||
|
||||
# Creates a link tag to the image residing at the +src+ using an URL created by the set of +options+. See the valid options in
|
||||
# link:classes/ActionController/Base.html#M000021. It's also possible to pass a string instead of an options hash to
|
||||
# get a link tag that just points without consideration. The <tt>html_options</tt> works jointly for the image and ahref tag by
|
||||
# letting the following special values enter the options on the image and the rest goes to the ahref:
|
||||
#
|
||||
# ::alt: If no alt text is given, the file name part of the +src+ is used (capitalized and without the extension)
|
||||
# ::size: Supplied as "XxY", so "30x45" becomes width="30" and height="45"
|
||||
# ::align: Sets the alignment, no special features
|
||||
#
|
||||
# The +src+ can be supplied as a...
|
||||
# * full path, like "/my_images/image.gif"
|
||||
# * file name, like "rss.gif", that gets expanded to "/images/rss.gif"
|
||||
# * file name without extension, like "logo", that gets expanded to "/images/logo.png"
|
||||
def link_to_image(src, options = {}, html_options = {}, *parameters_for_method_reference)
|
||||
image_options = { "src" => src.include?("/") ? src : "/images/#{src}" }
|
||||
image_options["src"] = image_options["src"] + ".png" unless image_options["src"].include?(".")
|
||||
|
||||
if html_options["alt"]
|
||||
image_options["alt"] = html_options["alt"]
|
||||
html_options.delete "alt"
|
||||
else
|
||||
image_options["alt"] = src.split("/").last.split(".").first.capitalize
|
||||
end
|
||||
|
||||
if html_options["size"]
|
||||
image_options["width"], image_options["height"] = html_options["size"].split("x")
|
||||
html_options.delete "size"
|
||||
end
|
||||
|
||||
if html_options["align"]
|
||||
image_options["align"] = html_options["align"]
|
||||
html_options.delete "align"
|
||||
end
|
||||
|
||||
link_to(tag("img", image_options), options, html_options, *parameters_for_method_reference)
|
||||
end
|
||||
|
||||
# Creates a link tag of the given +name+ using an URL created by the set of +options+, unless the current
|
||||
# controller, action, and id are the same as the link's, in which case only the name is returned (or the
|
||||
# given block is yielded, if one exists). This is useful for creating link bars where you don't want to link
|
||||
|
|
|
@ -27,6 +27,18 @@ class UrlHelperTest < Test::Unit::TestCase
|
|||
)
|
||||
end
|
||||
|
||||
def test_link_to_image
|
||||
assert_equal(
|
||||
"<a href=\"http://www.world.com\"><img alt=\"Rss\" height=\"45\" src=\"/images/rss.png\" width=\"30\" /></a>",
|
||||
link_to_image("rss", "http://www.world.com", "size" => "30x45")
|
||||
)
|
||||
|
||||
assert_equal(
|
||||
"<a class=\"admin\" href=\"http://www.world.com\"><img alt=\"Feed\" height=\"45\" src=\"/images/rss.gif\" width=\"30\" /></a>",
|
||||
link_to_image("rss.gif", "http://www.world.com", "size" => "30x45", "alt" => "Feed", "class" => "admin")
|
||||
)
|
||||
end
|
||||
|
||||
def test_link_unless_current
|
||||
@params = { "controller" => "weblog", "action" => "show"}
|
||||
assert_equal "Showing", link_to_unless_current("Showing", :action => "show", :controller => "weblog")
|
||||
|
|
Loading…
Reference in a new issue