orbit-basic/app/helpers/default_widget_helper.rb

72 lines
2.0 KiB
Ruby

module DefaultWidgetHelper
def get_field_header(field)
I18n.t(@page_part.module_app.widget_fields.select{|t|t[0]==field}[0][1])
end
def link_to_field(row_data,field)
method_ary = @page_part.module_app.widget_fields_link_method
if method_ary.has_key? field
url = case method_ary[field]["args"]
when nil # no args
get_data_link(method_ary[field]["method"])
when :self # passing self
get_data_link(method_ary[field]['method'],row_data.id)
else
ary = method_ary[field]["args"].clone
object_hash = ary.each do |key,val|
ary[key]= type_trans_or_to_s(row_data.send(val[0]).send(val[1]))
end
get_data_link(method_ary[field]['method'],object_hash)
end
link_to row_data.send(field),url
else
type_trans_or_to_s(row_data.send(field) )
end
end
# def get_args_mapping(object,row_hash)
# first_hash = row_hash.first
# # row_data.send(method_ary[field]["args"])
# end
def type_trans_or_to_s(object)
case object
when Date
display_date(object)
when DateTime
display_date_time(object)
when String
object
else
object.to_s
end
end
def get_data_link(method_entry,object = nil)
case object
when nil
eval method_entry
else
eval("#{method_entry}('#{object}')" )
end
end
def get_display(row_data,field_setting)
label = row_data.send(field_setting[:method])
type_trans_or_to_s(label)
end
def get_row_data(row_data,field)
field_is_link = (field[0][1]== 'false' ? false : true )
field_setting = {:class=>field[0][1],:method=>field[0][0]}
if field_is_link
field_link = field[0][1].to_s + '_path'
link = link_to(get_display(row_data,field_setting),field_link.send(row_data))
content_tag(:span,link,:class=>field_setting[:class])
else
content_tag(:span,get_display(row_data,field_setting),:class=>field_setting[:class])
end
end
end