module RobinsHtmlHelpers
# Wraps the content of its enclosed block in four divs that can hold corner images
# to create a rounded corner effect on a web page.
#
# ==== Example
#
# <% boxed_content do %>
#
Wrap me!
# <% end %>
#
# Produces this HTML:
#
#
#
#
# The optional hash argument can be used to customize the classes and ids of the outermost
# and innermost divs:
#
# * :outer_class - CSS class of the outer div. Defaults to box_bottom_left
# * :inner_class - CSS class of the inner div. Defaults to box_top_right
# * :outer_id - HTML id of the outer div. (Not set by default)
# * :inner_id - HTML id of the inner div. (Not set by default)
def boxed_content(options = {}, &block)
# Default class names
options[:bottom_left_class] ||= 'box_bottom_left'
options[:bottom_right_class] ||= 'box_bottom_right'
options[:top_left_class] ||= 'box_top_left'
options[:top_right_class] ||= 'box_top_right'
if options[:inner_class]
options[:inner_class] = options[:inner_class] + " " + options[:top_right_class]
else
options[:inner_class] = options[:top_right_class]
end
if options[:outer_class]
options[:outer_class] = options[:outer_class] + " " + options[:bottom_left_class]
else
options[:outer_class] = options[:bottom_left_class]
end
concat(
content_tag(:div, :style => "padding-top: 1px;") do # Extra div to fix margin problems in IE 6
content_tag(:div, :class => options[:outer_class], :id => options[:outer_id] ) do
content_tag(:div, :class => options[:bottom_right_class]) do
content_tag(:div, :class => options[:top_left_class]) do
content_tag(:div, :class => options[:inner_class], :id => options[:inner_id]) do
capture(&block) if block.present?
end
end
end
end
end
)
end
end
ActionView::Base.class_eval do
include RobinsHtmlHelpers
end