module AbAdmin
module Views
module AdminHelpers
def admin_form_for(object, *args, &block)
options = args.extract_options!
options[:html] ||= {}
options[:html][:class] ||= 'form-horizontal'
options[:builder] ||= ::AbAdmin::Views::FormBuilder
options[:html]['data-id'] = Array(object).last.id
if controller_name == 'manager' && resource_class == Array(object).last.class
options[:url] ||= object.new_record? ? collection_path : resource_path
end
if options.delete(:nested)
simple_nested_form_for([:admin, object].flatten, *(args << options), &block)
else
simple_form_for([:admin, object].flatten, *(args << options), &block)
end
end
def options_for_ckeditor(options = {})
{:width => 930, :height => 200, :toolbar => 'VeryEasy', :namespace => ''}.update(options)
end
def admin_tree_item(item)
render 'tree_item', :item => item, :child_tree => admin_tree(item.cached_children)
end
def admin_tree(items)
return if items.blank?
items.map { |item| admin_tree_item(item) }.join.html_safe
end
def layout_css
css = []
css << 'content_with_sidebar' if settings[:sidebar]
css << 'well' if settings[:well]
css << "#{settings[:index_view]}_view"
css
end
def admin_comments
render 'admin/admin_comments/comments'
end
def color_bool(val, success_class='badge-success')
%(#{val ? '+' : '-'}).html_safe
end
def icon(name, white=false)
" ".html_safe
end
def admin_pretty_data(object)
case object
when String, Integer
object
when TrueClass, FalseClass
color_bool(object)
when Date, DateTime, Time, ActiveSupport::TimeWithZone
I18n.l(object, :format => :long)
when NilClass
''
when ActiveRecord::Base
admin_show_link(object)
else
AbAdmin.safe_display_name(object)
end
end
def pretty_data(object)
AbAdmin.pretty_data(object)
end
def item_image_link(item, options={})
options.reverse_merge!(:url => resource_path(item), :assoc => :picture)
image = item.send(options[:assoc])
return nil unless image
version = options[:version] || image.class.thumb_size
popover_data = {:content => "", :title => item.name}
link_to image_tag(image.url(version)), options[:url], :data => popover_data, :rel => 'popover'
end
def item_image(item, assoc=:photo, size=:thumb)
image_tag_if(item.send(assoc).try(:url, size))
end
# input_set 'title', :legend_class => 'do_sort', :label_class => 'label-info' do
def input_set(title, options={}, &block)
options.reverse_merge!(:class => "inputs well well-small #{options.delete(:legend_class) || 'do_sort'}", :id => options.delete(:legend_id))
html = content_tag(:label, title, :class => "input_set label #{options.delete(:label_class)}")
html.concat(capture(&block)) if block_given?
content_tag(:fieldset, html, options)
end
def ha(attr)
resource_class.han(attr)
end
def call_method_or_proc_on(obj, symbol_or_proc, options = {})
exec = options[:exec].nil? ? true : options[:exec]
case symbol_or_proc
when Symbol, String
obj.send(symbol_or_proc.to_sym)
when Proc
if exec
instance_exec(obj, &symbol_or_proc)
else
symbol_or_proc.call(obj)
end
end
end
end
end
end