extracts advanced search to controller concern
This commit is contained in:
@@ -100,53 +100,6 @@ module CommentableActions
|
||||
end
|
||||
end
|
||||
|
||||
def parse_search_terms
|
||||
@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 100.years.ago
|
||||
end
|
||||
end
|
||||
|
||||
def search_finish_date
|
||||
(params[:advanced_search][:date_max].to_date rescue Date.today) || Date.today
|
||||
end
|
||||
|
||||
def search_date_range
|
||||
[100.years.ago, search_start_date].max.beginning_of_day..[search_finish_date, Date.today].min.end_of_day
|
||||
end
|
||||
|
||||
def set_search_order
|
||||
if params[:search].present? && params[:order].blank?
|
||||
params[:order] = 'relevance'
|
||||
end
|
||||
end
|
||||
|
||||
def set_resource_votes(instance)
|
||||
send("set_#{resource_name}_votes", instance)
|
||||
end
|
||||
|
||||
57
app/controllers/concerns/search.rb
Normal file
57
app/controllers/concerns/search.rb
Normal file
@@ -0,0 +1,57 @@
|
||||
module Search
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
included do
|
||||
before_action :parse_search_terms, only: [:index, :suggest]
|
||||
before_action :parse_advanced_search_terms, only: :index
|
||||
before_action :set_search_order, only: :index
|
||||
end
|
||||
|
||||
def parse_search_terms
|
||||
@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 100.years.ago
|
||||
end
|
||||
end
|
||||
|
||||
def search_finish_date
|
||||
(params[:advanced_search][:date_max].to_date rescue Date.today) || Date.today
|
||||
end
|
||||
|
||||
def search_date_range
|
||||
[100.years.ago, search_start_date].max.beginning_of_day..[search_finish_date, Date.today].min.end_of_day
|
||||
end
|
||||
|
||||
def set_search_order
|
||||
if params[:search].present? && params[:order].blank?
|
||||
params[:order] = 'relevance'
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
@@ -2,11 +2,9 @@ class DebatesController < ApplicationController
|
||||
include FeatureFlags
|
||||
include CommentableActions
|
||||
include FlagActions
|
||||
include Search
|
||||
|
||||
before_action :parse_search_terms, only: [:index, :suggest]
|
||||
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, :map]
|
||||
|
||||
feature_flag :debates
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
class ProposalsController < ApplicationController
|
||||
include CommentableActions
|
||||
include FlagActions
|
||||
include Search
|
||||
|
||||
before_action :parse_search_terms, only: [:index, :suggest]
|
||||
before_action :parse_advanced_search_terms, only: :index
|
||||
before_action :parse_tag_filter, only: :index
|
||||
before_action :set_search_order, only: :index
|
||||
before_action :load_categories, only: [:index, :new, :edit, :map, :summary]
|
||||
before_action :load_geozones, only: [:edit, :map, :summary]
|
||||
before_action :authenticate_user!, except: [:index, :show, :map, :summary]
|
||||
|
||||
Reference in New Issue
Block a user