From 5a4846a0d385b54e8ba1c974bf8c4de29fb49ea5 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Wed, 9 Mar 2005 13:53:47 +0000 Subject: Added TagHelper#image_tag and deprecated UrlHelper#link_image_to (recommended approach is to combine image_tag and link_to instead) git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@879 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/lib/action_view/helpers/tag_helper.rb | 29 +++++++++++++++++++++++- actionpack/lib/action_view/helpers/url_helper.rb | 3 +++ 2 files changed, 31 insertions(+), 1 deletion(-) (limited to 'actionpack/lib') diff --git a/actionpack/lib/action_view/helpers/tag_helper.rb b/actionpack/lib/action_view/helpers/tag_helper.rb index fa74e3f4ee..eb8af0c098 100644 --- a/actionpack/lib/action_view/helpers/tag_helper.rb +++ b/actionpack/lib/action_view/helpers/tag_helper.rb @@ -22,9 +22,36 @@ module ActionView "<#{name}#{tag_options(options)}>#{content}" end + + # Returns an image tag converting the +options+ instead html options on the tag, but with these special cases: + # + # * :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" + # + # 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 image_tag(src, options = {}) + options.symbolize_keys + + options.update({ :src => src.include?("/") ? src : "/images/#{src}" }) + options[:src] += ".png" unless options[:src].include?(".") + + options[:alt] ||= src.split("/").last.split(".").first.capitalize + + if options[:size] + options[:width], options[:height] = options[:size].split("x") + options.delete :size + end + + tag("img", options) + end + private def tag_options(options) unless options.empty? + options.symbolize_keys " " + options.map { |key, value| %(#{key}="#{html_escape(value.to_s)}") }.sort.join(" ") @@ -32,4 +59,4 @@ module ActionView end end end -end +end \ No newline at end of file diff --git a/actionpack/lib/action_view/helpers/url_helper.rb b/actionpack/lib/action_view/helpers/url_helper.rb index 137cfe58ab..609de9deed 100644 --- a/actionpack/lib/action_view/helpers/url_helper.rb +++ b/actionpack/lib/action_view/helpers/url_helper.rb @@ -52,6 +52,9 @@ module ActionView # Examples: # link_image_to "logo", { :controller => "home" }, :alt => "Homepage", :size => "45x80" # link_image_to "delete", { :action => "destroy" }, :size => "10x10", :confirm => "Are you sure?", "class" => "admin" + # + # NOTE: This tag is deprecated. Combine the link_to and image_tag yourself instead, like: + # link_to(image_tag("rss", :size => "30x45", :border => 0), "http://www.example.com") def link_image_to(src, options = {}, html_options = {}, *parameters_for_method_reference) image_options = { "src" => src.include?("/") ? src : "/images/#{src}" } image_options["src"] += ".png" unless image_options["src"].include?(".") -- cgit v1.2.3