fix cates and tags
This commit is contained in:
1 parent
626b2a7bca
commit
dc3966be81
4 files changed
+58
-15
No files matched your search
@@ -11,26 +11,32 @@ class DefaultWidgetController< OrbitWidgetController
|
||||
end
|
||||
|
||||
def query_for_default_widget
|
||||
|
||||
ori_class_name = @default_widget["query"].split('.')[0]
|
||||
result = nil
|
||||
result_objects = nil
|
||||
params["tag_id"] = [] if params["tag_id"]=="[]"
|
||||
params["category_id"] = [] if params["category_id"]=="[]"
|
||||
|
||||
if !params["tag_id"].blank?
|
||||
@tags = Tag.find(params["tag_id"]) rescue nil
|
||||
result_ids = nil
|
||||
if params["category_id"].blank?
|
||||
result_ids = @tags.collect{|tag| tag.send(ori_class_name.downcase.pluralize).entries.collect{|t| t.id}}.flatten
|
||||
else
|
||||
result_ids = @tags.collect{|tag| tag.send(ori_class_name.downcase.pluralize).where(:category_id.in=>params["category_id"]).available_for_lang(I18n.locale).can_display.collect{|t| t.id}}.flatten
|
||||
|
||||
result_ids = @tags.collect{|tag| tag.send(ori_class_name.downcase.pluralize).entries.collect{|t| t.id}}
|
||||
if params["category_id"].blank? #has tag no cate
|
||||
#nothing
|
||||
else #has tag and cate
|
||||
# result_ids = @tags.collect{|tag| tag.send(ori_class_name.downcase.pluralize).where(:#{get_category_field_name(ori_class_name)}.in=>params["category_id"]).available_for_lang(I18n.locale).can_display.collect{|t| t.id}}.flatten
|
||||
result_ids << eval("#{ori_class_name}.where(:#{get_category_field_name(ori_class_name)}.in=>params['category_id']).entries.collect{|t| t.id}")
|
||||
result_ids.flatten!
|
||||
|
||||
end
|
||||
result = eval("#{ori_class_name}.where(:id=>result_ids)")
|
||||
elsif params["category_id"].blank?
|
||||
elsif params["category_id"].blank? #no tag no cate
|
||||
|
||||
result = eval(@default_widget["query"])
|
||||
else
|
||||
result = eval("#{ori_class_name}.where(:category_id.in=>params['category_id'])")
|
||||
else #no tag has cate
|
||||
result = eval("#{ori_class_name}.where(:#{get_category_field_name(ori_class_name)}.in=>params['category_id'])")
|
||||
end
|
||||
|
||||
result.available_for_lang(I18n.locale).can_display
|
||||
end
|
||||
|
||||
@@ -72,4 +78,12 @@ class DefaultWidgetController< OrbitWidgetController
|
||||
end
|
||||
end
|
||||
|
||||
def get_category_field_name(ori_class_name)
|
||||
ori_class_name = ori_class_name.constantize
|
||||
ori_class_name.fields.each_key do |key|
|
||||
return key if key.include?('category_id')
|
||||
end
|
||||
nil
|
||||
end
|
||||
|
||||
end
|
||||
Reference in new issue
Block a user