@@ -1,6 +1,7 @@
|
|||||||
module CommentableActions
|
module CommentableActions
|
||||||
extend ActiveSupport::Concern
|
extend ActiveSupport::Concern
|
||||||
include Polymorphic
|
include Polymorphic
|
||||||
|
include Search
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@resources = @search_terms.present? ? resource_model.search(@search_terms) : resource_model.all
|
@resources = @search_terms.present? ? resource_model.search(@search_terms) : resource_model.all
|
||||||
@@ -100,53 +101,6 @@ module CommentableActions
|
|||||||
end
|
end
|
||||||
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)
|
def set_resource_votes(instance)
|
||||||
send("set_#{resource_name}_votes", instance)
|
send("set_#{resource_name}_votes", instance)
|
||||||
end
|
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 CommentableActions
|
||||||
include FlagActions
|
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 :parse_tag_filter, only: :index
|
||||||
before_action :set_search_order, only: :index
|
|
||||||
before_action :authenticate_user!, except: [:index, :show, :map]
|
before_action :authenticate_user!, except: [:index, :show, :map]
|
||||||
|
|
||||||
feature_flag :debates
|
feature_flag :debates
|
||||||
|
|||||||
@@ -2,10 +2,7 @@ class ProposalsController < ApplicationController
|
|||||||
include CommentableActions
|
include CommentableActions
|
||||||
include FlagActions
|
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 :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_categories, only: [:index, :new, :edit, :map, :summary]
|
||||||
before_action :load_geozones, only: [:edit, :map, :summary]
|
before_action :load_geozones, only: [:edit, :map, :summary]
|
||||||
before_action :authenticate_user!, except: [:index, :show, :map, :summary]
|
before_action :authenticate_user!, except: [:index, :show, :map, :summary]
|
||||||
|
|||||||
Reference in New Issue
Block a user