Merge pull request #822 from consul/advanced-search

Advanced search
This commit is contained in:
Juanjo Bazán
2016-01-18 15:17:17 +01:00
21 changed files with 1084 additions and 178 deletions

View File

@@ -4,11 +4,13 @@ module CommentableActions
def index
@resources = @search_terms.present? ? resource_model.search(@search_terms) : resource_model.all
@resources = @advanced_search_terms.present? ? @resources.filter(@advanced_search_terms) : @resources
@resources = @resources.tagged_with(@tag_filter) if @tag_filter
@resources = @resources.page(params[:page]).for_render.send("sort_by_#{@current_order}")
index_customization if index_customization.present?
@tag_cloud = tag_cloud
@tag_cloud = tag_cloud
set_resource_votes(@resources)
set_resources_instance
end
@@ -81,6 +83,47 @@ module CommentableActions
@search_terms = params[:search] if params[:search].present?
end
def parse_advanced_search_terms
@advanced_search_terms = params[:advanced_search] if params[:advanced_search].present?
parse_search_date
end
def parse_search_date
return unless search_by_date?
params[:advanced_search][:date_range] = search_date_range
end
def search_by_date?
params[:advanced_search] && params[:advanced_search][:date_min].present?
end
def search_start_date
case params[:advanced_search][:date_min]
when '1'
24.hours.ago
when '2'
1.week.ago
when '3'
1.month.ago
when '4'
1.year.ago
else
Date.parse(params[:advanced_search][:date_min]) rescue nil
end
end
def method_name
end
def search_finish_date
params[:advanced_search][:date_max].try(:to_date) || Date.today
end
def search_date_range
search_start_date.beginning_of_day..search_finish_date.end_of_day
end
def set_search_order
if params[:search].present? && params[:order].blank?
params[:order] = 'relevance'

View File

@@ -3,6 +3,7 @@ class DebatesController < ApplicationController
include FlagActions
before_action :parse_search_terms, only: :index
before_action :parse_advanced_search_terms, only: :index
before_action :parse_tag_filter, only: :index
before_action :set_search_order, only: :index
before_action :authenticate_user!, except: [:index, :show]

View File

@@ -3,6 +3,7 @@ class ProposalsController < ApplicationController
include FlagActions
before_action :parse_search_terms, only: :index
before_action :parse_advanced_search_terms, only: :index
before_action :parse_tag_filter, only: :index
before_action :set_search_order, only: :index
before_action :authenticate_user!, except: [:index, :show]
@@ -14,7 +15,7 @@ class ProposalsController < ApplicationController
respond_to :html, :js
def index_customization
@featured_proposals = Proposal.all.sort_by_confidence_score.limit(3) if (@search_terms.blank? && @tag_filter.blank?)
@featured_proposals = Proposal.all.sort_by_confidence_score.limit(3) if (!@advanced_search_terms && @search_terms.blank? && @tag_filter.blank?)
if @featured_proposals.present?
set_featured_proposal_votes(@featured_proposals)
@resources = @resources.where('proposals.id NOT IN (?)', @featured_proposals.map(&:id))
@@ -44,4 +45,5 @@ class ProposalsController < ApplicationController
def set_featured_proposal_votes(proposals)
@featured_proposals_votes = current_user ? current_user.proposal_votes(proposals) : {}
end
end