| 
									
										
										
										
											2012-12-03 10:52:36 +00:00
										 |  |  | class DefaultWidgetController< OrbitWidgetController | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def front_end_available(var) | 
					
						
							| 
									
										
										
										
											2013-01-21 08:56:37 +00:00
										 |  |  |     @page_part = case params[:item_type] | 
					
						
							|  |  |  |     when "page" | 
					
						
							|  |  |  |       Page.find params[:page_id] | 
					
						
							|  |  |  |     when "page_part" | 
					
						
							|  |  |  |       PagePart.find params[:part_id]   | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2012-12-03 10:52:36 +00:00
										 |  |  |     @page_part.module_app.enable_frontend? | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-02-06 11:51:53 +00:00
										 |  |  |   def query_for_default_widget | 
					
						
							| 
									
										
										
										
											2013-03-05 10:34:41 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-05 05:00:21 +00:00
										 |  |  |     @ori_class_name = @default_widget["query"].split('.')[0] | 
					
						
							| 
									
										
										
										
											2013-02-06 11:51:53 +00:00
										 |  |  |     result = nil | 
					
						
							|  |  |  |     result_objects = nil | 
					
						
							| 
									
										
										
										
											2013-06-05 05:00:21 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-02-06 11:51:53 +00:00
										 |  |  |     if !params["tag_id"].blank? | 
					
						
							| 
									
										
										
										
											2013-03-05 10:34:41 +00:00
										 |  |  |       if params["category_id"].blank? #has tag no cate | 
					
						
							| 
									
										
										
										
											2013-06-05 05:00:21 +00:00
										 |  |  |         result = @ori_class_name.constantize.where(:tagged_ids.in => params["tag_id"]) | 
					
						
							| 
									
										
										
										
											2013-03-05 10:34:41 +00:00
										 |  |  |       else #has tag and cate | 
					
						
							| 
									
										
										
										
											2013-06-17 07:26:43 +00:00
										 |  |  |         result = eval("#{@ori_class_name}.where(:#{get_category_field_name}.in=>params['category_id'], :tagged_ids.in => params['tag_id'])") | 
					
						
							| 
									
										
										
										
											2013-02-06 11:51:53 +00:00
										 |  |  |       end | 
					
						
							| 
									
										
										
										
											2013-03-05 10:34:41 +00:00
										 |  |  |     elsif params["category_id"].blank?  #no tag no cate | 
					
						
							| 
									
										
										
										
											2013-03-20 18:29:56 +00:00
										 |  |  |       result = eval(@default_widget["query"]) | 
					
						
							|  |  |  |     else #no tag has cate | 
					
						
							| 
									
										
										
										
											2013-06-17 07:26:43 +00:00
										 |  |  |       result = eval("#{@ori_class_name}.where(:#{get_category_field_name}.in=>params['category_id'])") | 
					
						
							| 
									
										
										
										
											2013-02-06 11:51:53 +00:00
										 |  |  |     end | 
					
						
							| 
									
										
										
										
											2013-03-27 08:31:42 +00:00
										 |  |  |     result.available_for_lang(I18n.locale).can_display.desc(:is_top, :postdate) | 
					
						
							| 
									
										
										
										
											2013-02-06 11:51:53 +00:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-06-05 05:00:21 +00:00
										 |  |  |   def search_result | 
					
						
							|  |  |  |       @search = query_for_default_widget.solr_search do  | 
					
						
							|  |  |  |         fulltext params[:search_query] | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |       search_result =  @search.results.collect{|result| result.id} | 
					
						
							|  |  |  |       @items = eval(@ori_class_name).all.available_for_lang(I18n.locale).can_display.any_in(_id:search_result) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-12-03 10:52:36 +00:00
										 |  |  |   def default_widget | 
					
						
							| 
									
										
										
										
											2013-06-05 05:00:21 +00:00
										 |  |  |     @search = params["search_query"].blank?  ?  false : true | 
					
						
							| 
									
										
										
										
											2013-11-15 14:29:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-10-24 06:46:53 +00:00
										 |  |  |     if !params[:id].blank? and !params["clicked_field_name"].blank? | 
					
						
							| 
									
										
										
										
											2013-04-03 11:03:16 +00:00
										 |  |  |       clicked_field_name = params["clicked_field_name"].to_sym | 
					
						
							|  |  |  |       redirect_to eval("#{@page_part.module_app.widget_fields_link_method[clicked_field_name][:method]}('#{params[:id]}', {inner: #{params[:inner] || true}})") | 
					
						
							| 
									
										
										
										
											2013-10-24 06:46:53 +00:00
										 |  |  |     elsif !params[:id].blank? and params["preview"] | 
					
						
							|  |  |  |       clicked_field_name = :title | 
					
						
							|  |  |  |       @preview_pages = @page_part.module_app.widget_fields_link_method.find_all{|t| t[1].has_key?(:preview)}.collect{|t| t[0]} | 
					
						
							|  |  |  |       redirect_to eval("#{@page_part.module_app.widget_fields_link_method[clicked_field_name][:method]}('#{params[:id]}', {preview: true,inner: #{params[:inner] || true},clicked_field_name: '#{@preview_pages.first.to_s}'})")       | 
					
						
							| 
									
										
										
										
											2013-02-05 08:34:22 +00:00
										 |  |  |     else | 
					
						
							|  |  |  |       @tag_class = nil | 
					
						
							| 
									
										
										
										
											2013-02-06 11:51:53 +00:00
										 |  |  |       @default_widget = @page_part.module_app.get_default_widget | 
					
						
							|  |  |  |       @widget_image_field = @default_widget["image"] || @default_widget[:image] | 
					
						
							|  |  |  |       case @page_part | 
					
						
							|  |  |  |       when Page | 
					
						
							| 
									
										
										
										
											2013-04-01 09:06:10 +00:00
										 |  |  |         @frontend_field_names = @page_part.frontend_field_name | 
					
						
							|  |  |  |         @frontend_classes = @page_part.frontend_class | 
					
						
							|  |  |  |         @frontend_sat_to_links = @page_part.frontend_sat_to_link | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-02-06 11:51:53 +00:00
										 |  |  |         @data_limit = @page_part.frontend_data_count.is_a?(Fixnum) ? @page_part.frontend_data_count : (@page_part.frontend_data_count.to_i rescue 3) | 
					
						
							|  |  |  |         @paginate = true | 
					
						
							|  |  |  |         @page_id = @page_part.id | 
					
						
							|  |  |  |       when PagePart | 
					
						
							| 
									
										
										
										
											2013-04-01 09:06:10 +00:00
										 |  |  |         @frontend_field_names = @page_part.widget_field_name | 
					
						
							|  |  |  |         @frontend_classes = @page_part.widget_class | 
					
						
							|  |  |  |         @frontend_sat_to_links = @page_part.widget_sat_to_link | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-02-06 11:51:53 +00:00
										 |  |  |         @fields = @page_part.widget_field | 
					
						
							|  |  |  |         @data_limit = @page_part.widget_data_count.is_a?(Fixnum) ? @page_part.widget_data_count : (@page_part.widget_data_count.to_i rescue 3) | 
					
						
							|  |  |  |       end | 
					
						
							| 
									
										
										
										
											2013-06-05 05:00:21 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-11-18 09:11:47 +00:00
										 |  |  |       if params[:filter_category_id] and !params[:filter_category_id].blank? | 
					
						
							|  |  |  |         @data = get_filter_data.page(params[:page_main]).per(@data_limit) | 
					
						
							| 
									
										
										
										
											2013-11-15 14:29:57 +00:00
										 |  |  |          | 
					
						
							|  |  |  |       elsif @paginate || @search | 
					
						
							| 
									
										
										
										
											2013-06-05 05:00:21 +00:00
										 |  |  |         if @search | 
					
						
							|  |  |  |           @data = search_result.page(params[:page_main]).per(@data_limit) rescue [] | 
					
						
							|  |  |  |         else #regular listing | 
					
						
							|  |  |  |           @data = query_for_default_widget.includes(@widget_image_field).page(params[:page_main]).per(@data_limit) | 
					
						
							|  |  |  |         end | 
					
						
							| 
									
										
										
										
											2013-02-22 09:53:49 +00:00
										 |  |  |         # @data = query_for_default_widget.limit(@data_limit).includes(@widget_image_field) | 
					
						
							| 
									
										
										
										
											2013-02-06 11:51:53 +00:00
										 |  |  |       else | 
					
						
							| 
									
										
										
										
											2013-03-20 18:29:56 +00:00
										 |  |  |         @data = query_for_default_widget.includes(@widget_image_field).limit(@data_limit) | 
					
						
							| 
									
										
										
										
											2013-02-22 09:53:49 +00:00
										 |  |  |         # @data = eval(@default_widget["query"]).limit(@data_limit).includes(@widget_image_field).desc(:created_at) | 
					
						
							| 
									
										
										
										
											2013-02-06 11:51:53 +00:00
										 |  |  |       end | 
					
						
							|  |  |  |       case params[:type] | 
					
						
							|  |  |  |       when "typeA" | 
					
						
							|  |  |  |         @tag_class = 'default_widget_typeA' | 
					
						
							|  |  |  |         @partial = "typeA" | 
					
						
							|  |  |  |       when /typeB_/ | 
					
						
							|  |  |  |         @tag_class = "default_widget_#{params[:type]}" | 
					
						
							|  |  |  |         @partial = "typeB" | 
					
						
							|  |  |  |       when "typeC" | 
					
						
							|  |  |  |         @tag_class = 'default_widget_typeC' | 
					
						
							|  |  |  |         @partial = "typeC" | 
					
						
							|  |  |  |       end | 
					
						
							| 
									
										
										
										
											2013-01-21 08:56:37 +00:00
										 |  |  |     end | 
					
						
							| 
									
										
										
										
											2012-12-03 10:52:36 +00:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2013-11-15 14:29:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-11-18 09:11:47 +00:00
										 |  |  |   def get_filter_data | 
					
						
							| 
									
										
										
										
											2013-11-18 17:58:23 +00:00
										 |  |  |     model = @default_widget["query"].classify.constantize | 
					
						
							| 
									
										
										
										
											2013-11-18 09:11:47 +00:00
										 |  |  |     if params[:filter_category_id].is_a? Array | 
					
						
							|  |  |  |       data = model.where(:category_id.in => params[:filter_category_id]) | 
					
						
							|  |  |  |     elsif params[:filter_category_id].is_a? String | 
					
						
							|  |  |  |       data = model.where(:category_id => params[:filter_category_id]) | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2013-11-15 14:29:57 +00:00
										 |  |  |     data.available_for_lang(I18n.locale).can_display.desc(:is_top, :postdate) | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    | 
					
						
							| 
									
										
										
										
											2013-02-19 12:42:46 +00:00
										 |  |  |    | 
					
						
							| 
									
										
										
										
											2013-06-17 07:26:43 +00:00
										 |  |  |   def get_category_field_name | 
					
						
							| 
									
										
										
										
											2013-06-05 05:00:21 +00:00
										 |  |  |     @ori_class_name = @ori_class_name.constantize | 
					
						
							|  |  |  |     @ori_class_name.fields.each_key do |key| | 
					
						
							| 
									
										
										
										
											2013-03-05 10:34:41 +00:00
										 |  |  |       return key if key.include?('category_id') | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |     nil | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-12-03 10:52:36 +00:00
										 |  |  | end |