clean default widget

This commit is contained in:
Fu Matthew 2013-01-07 12:09:36 +08:00 committed by chris
parent 5793f0fe5d
commit b71ebb3982
4 changed files with 35 additions and 16 deletions

View File

@ -8,21 +8,20 @@ module DefaultWidgetHelper
if method_ary.has_key? field if method_ary.has_key? field
url = case method_ary[field]["args"] url = case method_ary[field]["args"]
when nil # no args when nil # no args
eval(method_ary[field]["method"]) get_data_link(method_ary[field]["method"])
when :self # passing self when :self # passing self
eval "#{method_ary[field]['method']}('#{row_data.id}')" get_data_link(method_ary[field]['method'],row_data.id)
else else
ary = method_ary[field]["args"].clone ary = method_ary[field]["args"].clone
object_hash = ary.each do |key,val| object_hash = ary.each do |key,val|
ary[key]= row_data.send(val[0]).send(val[1]).to_s ary[key]= type_trans_or_to_s(row_data.send(val[0]).send(val[1]))
end end
binding.pry get_data_link(method_ary[field]['method'],object_hash)
eval "#{method_ary[field]['method']}(#{object_hash})"
end end
link_to row_data.send(field),url link_to row_data.send(field),url
else else
row_data.send(field) type_trans_or_to_s(row_data.send(field) )
end end
end end
@ -32,17 +31,42 @@ module DefaultWidgetHelper
# # row_data.send(method_ary[field]["args"]) # # row_data.send(method_ary[field]["args"])
# end # 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) def get_row_data(row_data,field)
field_is_link = (field[0][1]== 'false' ? false : true ) field_is_link = (field[0][1]== 'false' ? false : true )
field_setting = {:class=>field[0][1],:method=>field[0][0]} field_setting = {:class=>field[0][1],:method=>field[0][0]}
if field_is_link if field_is_link
field_link = field[0][1].to_s + '_path' field_link = field[0][1].to_s + '_path'
binding.pry link = link_to(get_display(row_data,field_setting),field_link.send(row_data))
link = link_to(row_data.send(field_setting[:method]),field_link.send(row_data))
content_tag(:span,link,:class=>field_setting[:class]) content_tag(:span,link,:class=>field_setting[:class])
else else
content_tag(:span,row_data.send(field_setting[:method]),:class=>field_setting[:class]) content_tag(:span,get_display(row_data,field_setting),:class=>field_setting[:class])
end end
end end
end end

View File

@ -357,7 +357,7 @@ namespace :migrate do
a.widget_fields = [ a.widget_fields = [
["title","announcement.default_widget.title"], ["title","announcement.default_widget.title"],
["bulletin_category_with_title","announcement.default_widget.bulletin_category_with_title"], ["bulletin_category_with_title","announcement.default_widget.bulletin_category_with_title"],
["postdate_with_format","announcement.default_widget.postdate_with_format"] ["postdate","announcement.default_widget.postdate"]
] ]
a.get_default_widget = {:query=>'Bulletin.all',:image=> 'image'} a.get_default_widget = {:query=>'Bulletin.all',:image=> 'image'}
a.widget_fields_link_method = { a.widget_fields_link_method = {

View File

@ -77,11 +77,6 @@ class Bulletin
string :bulletin_category_id string :bulletin_category_id
end end
def postdate_with_format
self[:postdate].strftime("%m/%d/%Y")
end
def bulletin_category_with_title def bulletin_category_with_title
self.bulletin_category.title self.bulletin_category.title
end end

View File

@ -18,4 +18,4 @@ zh_tw:
default_widget: default_widget:
bulletin_category_with_title: 分類 bulletin_category_with_title: 分類
title: 標題 title: 標題
postdate_with_format: 張貼日期 postdate: 張貼日期