module PowerTools module ActionView def js(stuff) stuff.respond_to?(:to_json) ? stuff.to_json : stuff.inspect.to_json end def button_tag(content, options={}) options = { :type => 'submit' }.merge(options) content_tag(:button, content, options) end def form_partial(name, form) render :partial => name, :locals => { :form => form } end def li_for(record, *args, &block) content_tag_for('li', record, *args, &block) end def tr_for(record, *args, &block) content_tag_for('tr', record, *args, &block) end def fieldset_for(record, *args, &block) content_tag_for('fieldset', record, *args, &block) end def if_any_of(collection) yield collection unless collection.nil? || collection.empty? end def use_script(script) @javascripts ||= [] @javascripts << script end def included_scripts_with_libs(*args) args.concat(@javascripts || []).collect do |script| if script =~ /^http/ # if it's a full path name we don't need to append a .js extension content_tag :script, '', :src => script, :type => 'text/javascript' else javascript_include_tag script end end.join("\n") end def include_page_scripts if (script = @content_for_script) content_tag(:script, script, :type => 'text/javascript') end end end end ActionView::Base.class_eval do include PowerTools::ActionView include PowerTools::ActionView::Forms end