Just like we did in commit0214184b2dfor investments, we're removing some possible optimizations (we don't have any benchmarks proving they affect performance at all) in order to simplify the code. The investement votes component `delegate` code was accidentally left but isn't used since commit0214184b2, so we're removing it now that we're removing the `voted_for?` helper method.
107 lines
2.6 KiB
Ruby
107 lines
2.6 KiB
Ruby
module CommentableActions
|
|
extend ActiveSupport::Concern
|
|
include Polymorphic
|
|
include Search
|
|
include RemotelyTranslatable
|
|
|
|
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 = @resources.filter_by(@advanced_search_terms)
|
|
|
|
@resources = @resources.page(params[:page]).send("sort_by_#{@current_order}")
|
|
|
|
index_customization
|
|
|
|
@tag_cloud = tag_cloud
|
|
|
|
set_resources_instance
|
|
@remote_translations = detect_remote_translations(@resources, featured_proposals)
|
|
end
|
|
|
|
def show
|
|
@commentable = resource
|
|
@comment_tree = CommentTree.new(@commentable, params[:page], @current_order)
|
|
set_comment_flags(@comment_tree.comments)
|
|
set_resource_instance
|
|
@remote_translations = detect_remote_translations([@resource], @comment_tree.comments)
|
|
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_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_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 = Tag.category.order(:name)
|
|
end
|
|
|
|
def index_customization
|
|
nil
|
|
end
|
|
|
|
def featured_proposals
|
|
@featured_proposals ||= []
|
|
end
|
|
end
|