lib/presenting/helpers.rb in presenting-2.1.0 vs lib/presenting/helpers.rb in presenting-3.0.0
- old
+ new
@@ -1,22 +1,10 @@
module Presenting
module Helpers
- def presentation_stylesheets(*args)
- warn "[DEPRECATION] presentation_stylesheets is deprecated. Please use the stylesheets" <<
- "that are copied to public/stylesheets/presenting/* on boot."
- stylesheet_link_tag presentation_stylesheet_path(args.sort.join(','), :format => 'css')
- end
-
- def presentation_javascript(*args)
- warn "[DEPRECATION] presentation_javascript is deprecated. Please use the javascripts" <<
- "that are copied to public/javascripts/presenting/* on boot."
- javascript_include_tag presentation_javascript_path(args.sort.join(','), :format => 'js')
- end
-
def present(*args, &block)
options = args.length > 1 ? args.extract_options! : {}
-
+
if args.first.is_a? Symbol
object, presentation = nil, args.first
else
object, presentation = args.first, args.second
end
@@ -26,42 +14,42 @@
if klass
instance = klass.new(options, &block)
instance.presentable = object
instance.controller = controller
instance.render
- elsif respond_to?(method_name = "present_#{presentation}")
+ elsif respond_to?(method_name = "present_#{presentation}", true)
send(method_name, object, options)
else
raise ArgumentError, "unknown presentation `#{presentation}'"
end
elsif object.respond_to?(:loaded?) # AssociationProxy
present_association(object, options)
else
present_by_class(object, options)
end
end
-
+
# presents a text search widget for the given field (a Presentation::FieldSearch::Field, probably)
def present_text_search(field, options = {})
current_value = (params[:search][field.param][:value] rescue nil)
text_field_tag options[:name], h(current_value)
end
-
+
# presents a checkbox search widget for the given field (a Presentation::FieldSearch::Field, probably)
def present_checkbox_search(field, options = {})
current_value = (params[:search][field.param][:value] rescue nil)
check_box_tag options[:name], '1', current_value.to_s == '1'
end
-
+
# presents a dropdown/select search widget for the given field (a Presentation::FieldSearch::Field, probably)
def present_dropdown_search(field, options = {})
current_value = (params[:search][field.param][:value] rescue nil)
select_tag options[:name], options_for_select(normalize_dropdown_options_to_strings(field.options), current_value)
end
-
+
protected
-
+
# We want to normalize the value elements of the dropdown options to strings so that
# they will match against params[:search].
#
# Need to handle the three different dropdown options formats:
# * array of strings
@@ -79,36 +67,36 @@
# TODO: special handling for associations (displaying activerecords)
def present_association(object, options = {})
present_by_class(object, options)
end
-
+
def present_by_class(object, options = {})
case object
when Array
content_tag "ol" do
object.collect do |i|
content_tag "li", present(i, options)
end.join.html_safe
end
-
+
when Hash
# sort by keys
content_tag "dl" do
object.keys.sort.collect do |k|
content_tag("dt", k) +
content_tag("dd", present(object[k], options))
end.join.html_safe
end
-
+
when TrueClass, FalseClass
object ? "True" : "False"
-
+
when Date, Time, DateTime
l(object, :format => :default)
-
+
else
options[:raw] ? object.to_s.html_safe : object.to_s
- end
+ end
end
end
end