The only view that linked to this action was never used and so it was
deleted in commit 0bacd5baf.
Since now the proposals controller is the only one place rendering the
`shared/map` partial, we're moving it to the proposals views.
102 lines
2.5 KiB
Ruby
102 lines
2.5 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
|
|
|
|
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
|