fix link for default widget
This commit is contained in:
parent
0a115906f1
commit
572e512a1d
|
@ -23,7 +23,7 @@ class DefaultWidgetController< OrbitWidgetController
|
|||
@fields = @page_part.widget_field
|
||||
@page_part.widget_data_count.is_a?(Fixnum) ? @page_part.widget_data_count : (@page_part.widget_data_count.to_i rescue 3)
|
||||
end
|
||||
@data = eval(@default_widget["query"]).limit(data_limit).includes(@widget_image_field)
|
||||
@data = eval(@default_widget["query"]).limit(data_limit).includes(@widget_image_field).desc(:created_at)
|
||||
case params[:type]
|
||||
when "typeA"
|
||||
@tag_class = 'default_widget_typeA'
|
||||
|
|
|
@ -3,20 +3,21 @@ module DefaultWidgetHelper
|
|||
I18n.t("#{@page_part.module_app.key}.default_widget.#{field}")
|
||||
end
|
||||
|
||||
def link_to_field(row_data,field)
|
||||
def link_to_field(row_data,field,switch)
|
||||
method_ary = @page_part.module_app.widget_fields_link_method
|
||||
if method_ary.has_key? field
|
||||
url = case method_ary[field]["args"]
|
||||
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"])
|
||||
get_data_link(method_ary[field][:method])
|
||||
when :self # passing self
|
||||
get_data_link(method_ary[field]['method'],row_data.id)
|
||||
get_data_link(method_ary[field][:method],row_data.id)
|
||||
else
|
||||
ary = method_ary[field]["args"].clone
|
||||
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)
|
||||
get_data_link(method_ary[field][:method],object_hash)
|
||||
end
|
||||
|
||||
link_to row_data.send(field),url
|
||||
|
|
|
@ -98,7 +98,8 @@ class ModuleApp
|
|||
end
|
||||
|
||||
def widget_fields_link_method
|
||||
raise 'Need to link with OrbitApp [type: Hash]'
|
||||
get_registration.get_link_methods
|
||||
# raise 'Need to link with OrbitApp [type: Hash]'
|
||||
end
|
||||
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
<% @data.each do |row_data| %>
|
||||
<tr>
|
||||
<% @fields.each do |field|%>
|
||||
<td><%= content_tag(:span,link_to_field(row_data,field[0]),:class=>field[1])%></td>
|
||||
<td><%= content_tag(:span,link_to_field(row_data,field[0],field[2]),:class=>field[1])%></td>
|
||||
<% end %>
|
||||
</tr>
|
||||
<% end %>
|
||||
|
|
|
@ -64,6 +64,10 @@ module OrbitApp
|
|||
return @widget_set.get_fields
|
||||
end
|
||||
|
||||
def get_link_methods
|
||||
return @widget_set.get_link_methods
|
||||
end
|
||||
|
||||
def get_default_widget
|
||||
if @widget_set.nil? # Init not defining widget
|
||||
return {}
|
||||
|
|
|
@ -75,6 +75,10 @@ module OrbitApp
|
|||
get_default_widget.get_fields
|
||||
end
|
||||
|
||||
def get_link_methods
|
||||
get_default_widget.get_link_methods
|
||||
end
|
||||
|
||||
def get_default_widget
|
||||
return @default_widget
|
||||
end
|
||||
|
@ -117,6 +121,10 @@ module OrbitApp
|
|||
@fields
|
||||
end
|
||||
|
||||
def get_link_methods
|
||||
return flatten_hashes(@fields.select{|t| t[2]==:link}.map{|t| Hash[t[0].to_sym,t[1]] })
|
||||
end
|
||||
|
||||
def query(var)
|
||||
@query = var
|
||||
end
|
||||
|
@ -125,6 +133,10 @@ module OrbitApp
|
|||
@image = var
|
||||
end
|
||||
|
||||
def flatten_hashes(ary)
|
||||
Hash[*ary.map(&:to_a).flatten]
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
class Widget
|
||||
|
|
Reference in New Issue