class DefaultWidgetController< OrbitWidgetController

  def front_end_available(var)
    @page_part = case params[:item_type]
    when "page"
      Page.find params[:page_id]
    when "page_part"
      PagePart.find params[:part_id]  
    end
    @page_part.module_app.enable_frontend?
  end

  def query_for_default_widget
    ori_class_name = @default_widget["query"].split('.')[0]
    result = nil
    result_objects = nil
    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=>params["category_id"]).available_for_lang(I18n.locale).can_display.collect{|t| t.id}}.flatten
      end
      result = eval("#{ori_class_name}.where(:id=>result_ids)")
    elsif params["category_id"].blank?
        result = eval(@default_widget["query"])
      else
        result = eval("#{ori_class_name}.where(:category_id=>params['category_id'])")
    end
    result.available_for_lang(I18n.locale).can_display
  end

  def default_widget

    if !params[:id].blank?
      redirect_to eval("#{@page_part.module_app.widget_fields_link_method['title']['method']}('#{params[:id]}', {inner: #{params[:inner] || true}})")
    else
      @tag_class = nil
      @default_widget = @page_part.module_app.get_default_widget
      @widget_image_field = @default_widget["image"] || @default_widget[:image]
      case @page_part
      when Page
        @fields = @page_part.frontend_field
        @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
        @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)
        # @data = query_for_default_widget.limit(@data_limit).includes(@widget_image_field)
      else
        @data = eval(@default_widget["query"]).includes(@widget_image_field).page(params[:page_main]).per(@data_limit).desc(:created_at)
        # @data = eval(@default_widget["query"]).limit(@data_limit).includes(@widget_image_field).desc(:created_at)
      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
    end
  end
  
end