@@ -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
|
||||
|
||||
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
|
||||
@@ -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
|
||||
|
||||
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user