From a38cf6304e40a29ba278066e245fe44f74695255 Mon Sep 17 00:00:00 2001 From: saurabhbhatia Date: Fri, 15 Nov 2013 17:32:00 +0800 Subject: [PATCH] Fix for More link --- app/controllers/pages_controller.rb | 63 ++++++++++++++++++++++++----- 1 file changed, 53 insertions(+), 10 deletions(-) diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb index fab2acef..b16ed65f 100644 --- a/app/controllers/pages_controller.rb +++ b/app/controllers/pages_controller.rb @@ -110,23 +110,66 @@ class PagesController < ApplicationController elsif params[:same_page_id] @item = Item.find(params[:same_page_id]) else - category_ids = params[:category_id].is_a?(Array) ? params[:category_id] : [params[:category_id]] - tag_ids = params[:tag_id].is_a?(Array) ? params[:tag_id] : [params[:tag_id]] + category_ids = Array(params[:category_id]) unless params[:category_id].nil? + tag_ids = Array(params[:tag_id]) unless params[:tag_id].nil? module_app = ModuleApp.first(:conditions => {:key => params[:app_name]}) + + default_query = { is_published: true, module_app_id: module_app.id, :app_frontend_url.in => [params[:app_action], 'default_widget'] } + specific_categories = { :category => category_ids } + in_categories = { :category.in => category_ids } + nil_categories = { :category.in => [nil, []] } + specific_tags = { :tag => tag_ids } + in_tags = { :tag.in => tag_ids } + nil_tags = { :tag.in => [nil, []] } + if !category_ids.blank? && !tag_ids.blank? - @item = Item.first(:conditions => {:module_app_id => module_app.id, :app_frontend_url => params[:app_action], :category.in => category_ids, :tag.in => tag_ids}) - @item = Item.first(:conditions => {:module_app_id => module_app.id, :app_frontend_url => params[:app_action], :category.in => category_ids, :tag.in => [nil, []]}) unless @item + @item = Item.where(default_query.merge(specific_categories).merge(specific_tags)).first + @item = Item.where(default_query.merge(specific_categories).merge(in_tags)).first unless @item + @item = Item.where(default_query.merge(specific_categories).merge(nil_tags)).first unless @item + @item = Item.where(default_query.merge(specific_tags).merge(in_categories)).first unless @item + @item = Item.where(default_query.merge(specific_tags).merge(nil_categories)).first unless @item + @item = Item.where(default_query.merge(in_categories).merge(in_tags)).first unless @item + @item = Item.where(default_query.merge(in_categories).merge(nil_tags)).first unless @item + @item = Item.where(default_query.merge(in_tags).merge(nil_categories)).first unless @item elsif !category_ids.blank? - @item = Item.where(module_app_id: module_app.id, app_frontend_url: params[:app_action], :category.in => category_ids).any_in(tag: [nil, []]).first + @item = Item.where(default_query.merge(specific_categories).merge(nil_tags)).first + @item = Item.where(default_query.merge(specific_categories)).first unless @item + @item = Item.where(default_query.merge(in_categories).merge(nil_tags)).first unless @item + @item = Item.where(default_query.merge(in_categories)).first unless @item elsif !tag_ids.blank? - @item = Item.where(module_app_id: module_app.id, app_frontend_url: params[:app_action], :tag.in => tag_ids).any_in(category: [nil, []]).first + @item = Item.where(default_query.merge(specific_tags).merge(nil_categories)).first + @item = Item.where(default_query.merge(specific_tags)).first unless @item + @item = Item.where(default_query.merge(in_tags).merge(nil_categories)).first unless @item + @item = Item.where(default_query.merge(in_tags)).first unless @item end @item = Item.find(params[:orig_page]) unless @item || params[:orig_page].blank? - @item = Item.where(module_app_id: module_app.id, app_frontend_url: params[:app_action]).all_of("tag" => {"$in" => [nil, []]},"category" => { "$in" => [nil, []]}).first unless @item - @item = Item.where(module_app_id: module_app.id, app_frontend_url: 'default_widget').first unless @item - @item = Item.where(module_app_id: module_app.id, app_frontend_url: params[:app_action]).first unless @item + @item = Item.where(default_query.merge(nil_categories).merge(nil_tags)).first unless @item + @item = Item.where(default_query).first unless @item end - raise PageError,'Missing Frontend Page' if @item.nil? + raise PageError, 'Missing Frontend Page' if @item.nil? + + # if params[:page_id] + # @item = Item.find(params[:page_id]) + # elsif params[:same_page_id] + # @item = Item.find(params[:same_page_id]) + # else + # category_ids = params[:category_id].is_a?(Array) ? params[:category_id] : [params[:category_id]] + # tag_ids = params[:tag_id].is_a?(Array) ? params[:tag_id] : [params[:tag_id]] + # module_app = ModuleApp.first(:conditions => {:key => params[:app_name]}) + # if !category_ids.blank? && !tag_ids.blank? + # @item = Item.first(:conditions => {:module_app_id => module_app.id, :app_frontend_url => params[:app_action], :category.in => category_ids, :tag.in => tag_ids}) + # @item = Item.first(:conditions => {:module_app_id => module_app.id, :app_frontend_url => params[:app_action], :category.in => category_ids, :tag.in => [nil, []]}) unless @item + # elsif !category_ids.blank? + # @item = Item.where(module_app_id: module_app.id, app_frontend_url: params[:app_action], :category.in => category_ids).any_in(tag: [nil, []]).first + # elsif !tag_ids.blank? + # @item = Item.where(module_app_id: module_app.id, app_frontend_url: params[:app_action], :tag.in => tag_ids).any_in(category: [nil, []]).first + # end + # @item = Item.find(params[:orig_page]) unless @item || params[:orig_page].blank? + # @item = Item.where(module_app_id: module_app.id, app_frontend_url: params[:app_action]).all_of("tag" => {"$in" => [nil, []]},"category" => { "$in" => [nil, []]}).first unless @item + # @item = Item.where(module_app_id: module_app.id, app_frontend_url: 'default_widget').first unless @item + # @item = Item.where(module_app_id: module_app.id, app_frontend_url: params[:app_action]).first unless @item + # end + # raise PageError,'Missing Frontend Page' if @item.nil? end def check_frontend_open