diff --git a/app/controllers/concerns/commentable_actions.rb b/app/controllers/concerns/commentable_actions.rb index ee69ac809..287f2d418 100644 --- a/app/controllers/concerns/commentable_actions.rb +++ b/app/controllers/concerns/commentable_actions.rb @@ -1,6 +1,7 @@ module CommentableActions extend ActiveSupport::Concern include Polymorphic + include Search def index @resources = @search_terms.present? ? resource_model.search(@search_terms) : resource_model.all @@ -100,53 +101,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 diff --git a/app/controllers/concerns/search.rb b/app/controllers/concerns/search.rb new file mode 100644 index 000000000..922ad93cc --- /dev/null +++ b/app/controllers/concerns/search.rb @@ -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 \ No newline at end of file diff --git a/app/controllers/debates_controller.rb b/app/controllers/debates_controller.rb index 6d17eb749..9b29080dd 100644 --- a/app/controllers/debates_controller.rb +++ b/app/controllers/debates_controller.rb @@ -3,10 +3,7 @@ class DebatesController < ApplicationController include CommentableActions include FlagActions - 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 diff --git a/app/controllers/proposals_controller.rb b/app/controllers/proposals_controller.rb index daec4a051..d1707a8a7 100644 --- a/app/controllers/proposals_controller.rb +++ b/app/controllers/proposals_controller.rb @@ -2,10 +2,7 @@ class ProposalsController < ApplicationController include CommentableActions include FlagActions - 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]