default widget show search
This commit is contained in:
		
							parent
							
								
									c0f1614cb9
								
							
						
					
					
						commit
						06fd305bf9
					
				| 
						 | 
				
			
			@ -12,25 +12,34 @@ class DefaultWidgetController< OrbitWidgetController
 | 
			
		|||
 | 
			
		||||
  def query_for_default_widget
 | 
			
		||||
 | 
			
		||||
    ori_class_name = @default_widget["query"].split('.')[0]
 | 
			
		||||
    @ori_class_name = @default_widget["query"].split('.')[0]
 | 
			
		||||
    result = nil
 | 
			
		||||
    result_objects = nil
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    if !params["tag_id"].blank?
 | 
			
		||||
      if params["category_id"].blank? #has tag no cate
 | 
			
		||||
        result = ori_class_name.constantize.where(:tagged_ids.in => params["tag_id"])
 | 
			
		||||
        result = @ori_class_name.constantize.where(:tagged_ids.in => params["tag_id"])
 | 
			
		||||
      else #has tag and cate
 | 
			
		||||
        result = eval("#{ori_class_name}.where(:#{get_category_field_name(ori_class_name)}.in=>params['category_id'], :tagged_ids.in => params['tag_id'])")
 | 
			
		||||
        result = eval("#{@ori_class_name}.where(:#{get_category_field_name(@ori_class_name)}.in=>params['category_id'], :tagged_ids.in => params['tag_id'])")
 | 
			
		||||
      end
 | 
			
		||||
    elsif params["category_id"].blank?  #no tag no cate
 | 
			
		||||
      result = eval(@default_widget["query"])
 | 
			
		||||
    else #no tag has cate
 | 
			
		||||
      result = eval("#{ori_class_name}.where(:#{get_category_field_name(ori_class_name)}.in=>params['category_id'])")
 | 
			
		||||
      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.desc(:is_top, :postdate)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  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
 | 
			
		||||
 | 
			
		||||
  def default_widget
 | 
			
		||||
    @search = params["search_query"].blank?  ?  false : true
 | 
			
		||||
    if !params[:id].blank?
 | 
			
		||||
      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}})")
 | 
			
		||||
| 
						 | 
				
			
			@ -55,8 +64,13 @@ class DefaultWidgetController< OrbitWidgetController
 | 
			
		|||
        @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
 | 
			
		||||
      if @paginate
 | 
			
		||||
        @data = query_for_default_widget.includes(@widget_image_field).page(params[:page_main]).per(@data_limit)
 | 
			
		||||
 | 
			
		||||
      if @paginate || @search
 | 
			
		||||
        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
 | 
			
		||||
        # @data = query_for_default_widget.limit(@data_limit).includes(@widget_image_field)
 | 
			
		||||
      else
 | 
			
		||||
        @data = query_for_default_widget.includes(@widget_image_field).limit(@data_limit)
 | 
			
		||||
| 
						 | 
				
			
			@ -76,9 +90,9 @@ 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|
 | 
			
		||||
  def get_category_field_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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,12 @@
 | 
			
		|||
  <% if @data.blank? and  @search %>
 | 
			
		||||
    <%=render :partial => 'shared/search_not_found'  %>
 | 
			
		||||
    <% elsif @search %>
 | 
			
		||||
      <%= t("search.result_get",:search_word => params[:search_query],:item_num=>@data.count) unless (@data.count == 30) %>
 | 
			
		||||
      <%= t("search.too_many",:search_word => params[:search_query],:exceed_num=>@data.count) if (@data.count ==30) %>
 | 
			
		||||
   <% end %>
 | 
			
		||||
 | 
			
		||||
<%= render @partial %>
 | 
			
		||||
<% if @paginate %>
 | 
			
		||||
<% if @paginate and  !@data.blank? %>
 | 
			
		||||
  <%= paginate @data, :param_name => :page_main, :params => {:same_page_id => @page_id} %>
 | 
			
		||||
<% elsif @page_part.module_app %>
 | 
			
		||||
  <%=  @page_part.module_app.get_registration.default_widget_setting.link_to_more_tag(request,params) %>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue