Unfortunately this feature wasn't properly reviewed and tested, and it
had many bugs, some of them critical and hard to fix, like validations
being skipped in concurrent requests.
So we're removing it before releasing version 1.1. We might add it back
in the future if we manage to solve the critical issues.
This commit reverts commit 836f9ba7.
81 lines
2.1 KiB
Ruby
81 lines
2.1 KiB
Ruby
module PollsHelper
|
|
def poll_select_options(include_all = nil)
|
|
options = @polls.map do |poll|
|
|
[poll.name, current_path_with_query_params(poll_id: poll.id)]
|
|
end
|
|
options << all_polls if include_all
|
|
options_for_select(options, request.fullpath)
|
|
end
|
|
|
|
def all_polls
|
|
[I18n.t("polls.all"), admin_questions_path]
|
|
end
|
|
|
|
def poll_dates(poll)
|
|
if poll.starts_at.blank? || poll.ends_at.blank?
|
|
I18n.t("polls.no_dates")
|
|
else
|
|
I18n.t("polls.dates", open_at: l(poll.starts_at.to_date), closed_at: l(poll.ends_at.to_date))
|
|
end
|
|
end
|
|
|
|
def poll_dates_select_options(poll)
|
|
options = []
|
|
(poll.starts_at.to_date..poll.ends_at.to_date).each do |date|
|
|
options << [l(date, format: :long), l(date)]
|
|
end
|
|
options_for_select(options, params[:d])
|
|
end
|
|
|
|
def poll_booths_select_options(poll)
|
|
options = []
|
|
poll.booths.each do |booth|
|
|
options << [booth_name_with_location(booth), booth.id]
|
|
end
|
|
options_for_select(options)
|
|
end
|
|
|
|
def booth_name_with_location(booth)
|
|
location = booth.location.blank? ? "" : " (#{booth.location})"
|
|
booth.name + location
|
|
end
|
|
|
|
def poll_voter_token(poll, user)
|
|
Poll::Voter.where(poll: poll, user: user, origin: "web").first&.token || ""
|
|
end
|
|
|
|
def voted_before_sign_in(question)
|
|
question.answers.where(author: current_user).any? { |vote| current_user.current_sign_in_at > vote.updated_at }
|
|
end
|
|
|
|
def link_to_poll(text, poll)
|
|
if poll.results_enabled?
|
|
link_to text, results_poll_path(id: poll.slug || poll.id)
|
|
elsif poll.stats_enabled?
|
|
link_to text, stats_poll_path(id: poll.slug || poll.id)
|
|
else
|
|
link_to text, poll_path(id: poll.slug || poll.id)
|
|
end
|
|
end
|
|
|
|
def show_stats_or_results?
|
|
@poll.expired? && (@poll.results_enabled? || @poll.stats_enabled?)
|
|
end
|
|
|
|
def results_menu?
|
|
controller_name == "polls" && action_name == "results"
|
|
end
|
|
|
|
def stats_menu?
|
|
controller_name == "polls" && action_name == "stats"
|
|
end
|
|
|
|
def info_menu?
|
|
controller_name == "polls" && action_name == "show"
|
|
end
|
|
|
|
def show_polls_description?
|
|
@active_poll.present? && @current_filter == "current"
|
|
end
|
|
end
|