Files
grecia/app/controllers/concerns/commentable_actions.rb
iagirre 0d9da5398b Fix banners in user pages
Banners were not been shown in certain pages; now
they are.

Spec to check if the banner is been shown correctly
added. Before it was in admins specs, now it has it's
own spec out of admins folder.
2018-07-12 10:17:25 -04:00

127 lines
3.0 KiB
Ruby

module CommentableActions
extend ActiveSupport::Concern
include Polymorphic
include Search
def index
@resources = resource_model.all
@resources = @current_order == "recommendations" && current_user.present? ? @resources.recommendations(current_user) : @resources.for_render
@resources = @resources.search(@search_terms) if @search_terms.present?
@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]).send("sort_by_#{@current_order}")
index_customization if index_customization.present?
@tag_cloud = tag_cloud
@banners = Banner.in_section(section(resource_model.name)).with_active
set_resource_votes(@resources)
set_resources_instance
end
def show
set_resource_votes(resource)
@commentable = resource
@comment_tree = CommentTree.new(@commentable, params[:page], @current_order)
set_comment_flags(@comment_tree.comments)
set_resource_instance
end
def new
@resource = resource_model.new
set_geozone
set_resource_instance
end
def suggest
@limit = 5
@resources = @search_terms.present? ? resource_relation.search(@search_terms) : nil
end
def create
@resource = resource_model.new(strong_params)
@resource.author = current_user
if @resource.save
track_event
redirect_path = url_for(controller: controller_name, action: :show, id: @resource.id)
redirect_to redirect_path, notice: t("flash.actions.create.#{resource_name.underscore}")
else
load_categories
load_geozones
set_resource_instance
render :new
end
end
def edit
end
def update
if resource.update(strong_params)
redirect_to resource, notice: t("flash.actions.update.#{resource_name.underscore}")
else
load_categories
load_geozones
set_resource_instance
render :edit
end
end
def map
@resource = resource_model.new
@tag_cloud = tag_cloud
end
private
def track_event
ahoy.track "#{resource_name}_created".to_sym, "#{resource_name}_id": resource.id
end
def tag_cloud
TagCloud.new(resource_model, params[:search])
end
def load_geozones
@geozones = Geozone.all.order(name: :asc)
end
def set_geozone
geozone_id = params[resource_name.to_sym].try(:[], :geozone_id)
@resource.geozone = Geozone.find(geozone_id) if geozone_id.present?
end
def load_categories
@categories = ActsAsTaggableOn::Tag.category.order(:name)
end
def parse_tag_filter
if params[:tag].present?
@tag_filter = params[:tag] if ActsAsTaggableOn::Tag.named(params[:tag]).exists?
end
end
def set_resource_votes(instance)
send("set_#{resource_name}_votes", instance)
end
def index_customization
nil
end
def section(resource_name)
case resource_name
when "Proposal"
'proposals'
when "Debate"
'debates'
end
end
end