74 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| module DefaultWidgetHelper
 | |
|   def get_field_header(field)
 | |
|     I18n.t("#{@page_part.module_app.key}.default_widget.#{field}")
 | |
|   end
 | |
| 
 | |
|   def link_to_field(row_data,field,switch)
 | |
|     method_ary = @page_part.module_app.widget_fields_link_method
 | |
|     field = field.to_sym
 | |
|     if(method_ary.has_key?(field) and (switch == "true"))
 | |
|       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
 | |
|       object = "'#{object.to_s}'" if object.class == BSON::ObjectId
 | |
|       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 |