Files
nairobi/app/controllers/management/proposals_controller.rb
Javi Martín c8d8fae98d Move related list partial to a component
This way the code is easier to follow; the code checking whether the
list has contents is in the partial rendering the list.

We also remove some duplication setting up related content in the
controllers.

For some reason, we have to manually ignore i18n keys which were
automatically ignored when the code was in the view.
2021-08-16 16:30:13 +02:00

77 lines
2.3 KiB
Ruby

class Management::ProposalsController < Management::BaseController
include HasOrders
include CommentableActions
include Translatable
include MapLocationAttributes
before_action :only_verified_users, except: :print
before_action :set_proposal, only: [:vote, :show]
before_action :parse_search_terms, only: :index
before_action :load_geozones, only: [:edit]
has_orders %w[confidence_score hot_score created_at most_commented random], only: [:index, :print]
has_orders %w[most_voted newest], only: :show
def create
@resource = resource_model.new(strong_params.merge(author: current_user,
published_at: Time.current))
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 show
super
@notifications = @proposal.notifications
redirect_to management_proposal_path(@proposal), status: :moved_permanently if request.path != management_proposal_path(@proposal)
end
def vote
@follow = Follow.find_or_create_by!(user: current_user, followable: @proposal)
@proposal.register_vote(managed_user, "yes")
set_proposal_votes(@proposal)
end
def print
@proposals = Proposal.send("sort_by_#{@current_order}").for_render.limit(5)
set_proposal_votes(@proposal)
end
private
def set_proposal
@proposal = Proposal.find(params[:id])
end
def proposal_params
attributes = [:video_url, :responsible_name, :tag_list,
:terms_of_service, :geozone_id,
map_location_attributes: map_location_attributes]
params.require(:proposal).permit(attributes, translation_params(Proposal))
end
def resource_model
Proposal
end
def only_verified_users
check_verified_user t("management.proposals.alert.unverified_user")
end
def set_proposal_votes(proposals)
@proposal_votes = managed_user ? managed_user.proposal_votes(proposals) : {}
end
def set_comment_flags(comments)
@comment_flags = managed_user ? managed_user.comment_flags(comments) : {}
end
end