Bike!Bike! Website!
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

151 lines
5.2 KiB

module RegistrationHelper
8 years ago
def registration_steps(conference = @conference)
{
pre: [:policy, :contact_info, :workshops],
open: [:policy, :contact_info, :questions, :hosting, :payment, :workshops]
}[@this_conference.registration_status]
end
def registration_status(registration)
return :unregistered if registration.nil?
return registration.status
end
def current_registration_steps(registration = @registration)
return nil unless registration.present?
steps = registration_steps(registration.conference)
current_steps = []
disable_steps = false
completed_steps = registration.steps_completed || []
if potential_provider(registration)
steps -= [:questions]
else
steps -= [:hosting]
end
8 years ago
steps -= [:payment] unless registration.conference.paypal_email_address.present? && registration.conference.paypal_username.present? && registration.conference.paypal_password.present? && registration.conference.paypal_signature.present?
steps -= [:payment, :workshops] if registration.is_attending == 'n'
8 years ago
steps.each do |step|
# disable the step if we've already found an incomplete step
8 years ago
# enabled = !disable_steps# || registration_complete
# record whether or not we've found an incomplete step
current_steps << {
name: step,
8 years ago
enabled: !disable_steps
}
8 years ago
disable_steps ||= !completed_steps.include?(step.to_s)# && ![:payment, :workshops].include?(step)
end
8 years ago
return current_steps
end
def current_step(registration = @registration)
completed_steps = registration.steps_completed || []
last_step = nil
8 years ago
steps = current_registration_steps(registration) || []
steps.each do | step |
# return the last enabled step if this one is disabled
return last_step unless step[:enabled]
# save the last step
last_step = step[:name]
# return this step if it hasn't been completed yet
return last_step unless completed_steps.include?(last_step.to_s)
end
# if all else fails, return the first step
8 years ago
return steps.last[:name]
end
def registration_step_header(step = @step, vars = nil)
if step.is_a?(Hash)
vars = step
step = @step
end
vars ||= {}
row do
columns(medium: 12) do
registration_step_header_title(step, vars[:header])
end.html_safe +
columns(medium: 12) do
registration_step_header_description(step, vars[:description])
end.html_safe
end.html_safe
end
def registration_step_header_title_string(step = @step, vars = nil)
if step.is_a?(Hash)
vars = step
step = @step
end
_("articles.conference_registration.headings.#{step}", :t, 2, vars: vars || {})
end
def registration_step_header_title(step = @step, vars = nil)
content_tag(:h2, registration_step_header_title_string(step, vars)).html_safe
end
def registration_step_header_description(step = @step, vars = nil)
if step.is_a?(Hash)
vars = step
step = @step
end
content_tag(:p, (_"articles.conference_registration.paragraphs.#{step}", :p, 2, vars: vars || {})).html_safe
end
def save_registration_step(conference = @this_conference, step = @step, registration = nil, &block)
registration ||= ConferenceRegistration.find_by(user_id: current_user.id, conference_id: conference.id)
buttons = [:back]
case step.to_sym
when :policy
buttons = [:agree]
when :name, :languages, :org_location, :org_create_name, :org_create_address, :org_create_email, :org_create_mailing_address,
:housing_companion_email, :housing_companion_invite, :housing_allergies, :housing_other, :org_non_member_interest,
:hosting_address, :hosting_phone, :hosting_space_beds, :hosting_space_floor, :hosting_info, :hosting_other
buttons = [:next, :back]
when :org_location_confirm
buttons = [:yes, :back]
when :confirm_payment
buttons = [:confirm, :cancel]
when :review
buttons = nil
end
if buttons.present? && registration.present? && registration.registration_complete?
buttons << :review
end
content = block.present? ? capture(&block) : ''
actions = ''
if buttons.present?
buttons.each do |button_name|
actions += (button button_name, value: button_name)
end
end
message = if @update_message.present? && @update_status.present?
columns(medium: 12, class: @update_status, id: 'action-message') do
content_tag(:div, (_"articles.conference_registration.#{@update_status}.#{@update_message}", :s), class: :message).html_safe
end
else
''
end
actions = columns(medium: 12, class: [:actions, :center]) do
content_tag(:div, actions.html_safe, class: :buttons).html_safe
end
form_tag(register_path(conference.slug), class: 'js-xhr') do
message.html_safe +
content.html_safe +
(hidden_field_tag :step, step).html_safe +
actions.html_safe
end.html_safe
end
end