Visit info, paypal, registration status

This commit is contained in:
Godwin
2016-07-14 22:56:22 -07:00
parent 62f94b1ecd
commit 8c7c4a575c
11 changed files with 192 additions and 92 deletions
+1 -1
View File
@@ -136,7 +136,7 @@
}
window.initNodeFunctions = [ function(node) {
forEachElement('.number-field,.email-field,.text-field', function(field) {
forEachElement('.number-field,.email-field,.text-field,.password-field', function(field) {
var input = field.querySelector('input');
var positionLabel = function(input) {
field.classList[input.value ? 'remove' : 'add']('empty');
+75 -68
View File
@@ -333,6 +333,7 @@ input {
.number-field,
.email-field,
.telephone-field,
.password-field,
.text-field {
position: relative;
margin-bottom: 2em;
@@ -402,6 +403,7 @@ input {
}
.number-field,
.email-field,
.password-field,
.telephone-field,
.text-field,
.text-area-field {
@@ -605,10 +607,8 @@ input {
content: '+';
border: 0;
font-size: 2.5em;
// top: 0;//-0.25em;
// left: 0.175em;
top: -0.15em;
left: 0.05em;
top: -0.025em;
left: 0.175em;
line-height: 1em;
color: #FFF;
height: 1em;
@@ -641,6 +641,13 @@ input {
display: block;
margin: 0 2em 5em;
font-size: 0.75em;
input[type="radio"] + label {
@include after {
top: -0.15em;
left: 0.05em;
}
}
}
.check-box-field.inline {
@@ -2285,7 +2292,7 @@ html :focus {
#main .skip {
button {
background-color: #CCC;
background-color: #888;
}
}
@@ -3175,6 +3182,13 @@ html[data-lingua-franca-example="html"] {
width: 100%;
margin-bottom: 2em;
}
&.inline-label {
label {
float: left;
margin-right: 0.5em;
}
}
}
.toggleable {
@@ -3468,67 +3482,6 @@ html[data-ontop] {
@include _(box-shadow, 0 0 2em -0.5em rgba(0, 0, 0, 0.5));
}
}
.flow-steps {
#registration-steps {
li {
display: inline-block;
text-align: center;
float: left;
@include after {
content: '';
top: 1.125em;
left: auto;
right: -0.25em;
@include _(transform, rotate(45deg));
}
/*&.enabled:hover,
&.enabled:hover ~ li {
@include after {
@include _(transform, rotate(-135deg));
background-color: transparent;
}
}*/
&:first-child {
@include _(border-radius, 0.15em 0 0 0.15em);
}
&:last-child {
@include _(border-radius, 0);
}
}
}
#post-registration-steps {
margin-bottom: -2em;
li {
&:last-child {
@include _(border-bottom-right-radius, 0.15em);
@include _(border-bottom-left-radius, 0.15em);
}
&:first-child {
@include _(border-top-right-radius, 0.15em);
@include _(border-bottom-left-radius, 0);
}
}
}
ul {
display: inline-block;
text-align: left;
margin-top: -4em;
vertical-align: top;
}
li {
text-align: center;
}
}
#registration-admin-menu {
a {
@@ -3698,6 +3651,61 @@ html[data-ontop] {
}
}
@media (min-width: 825px) {
.flow-steps {
#registration-steps {
li {
display: inline-block;
text-align: center;
float: left;
@include after {
content: '';
top: 1.125em;
left: auto;
right: -0.25em;
@include _(transform, rotate(45deg));
}
&:first-child {
@include _(border-radius, 0.15em 0 0 0.15em);
}
&:last-child {
@include _(border-radius, 0);
}
}
}
#post-registration-steps {
margin-bottom: -2em;
li {
&:last-child {
@include _(border-bottom-right-radius, 0.15em);
@include _(border-bottom-left-radius, 0.15em);
}
&:first-child {
@include _(border-top-right-radius, 0.15em);
@include _(border-bottom-left-radius, 0);
}
}
}
ul {
display: inline-block;
text-align: left;
margin-top: -4em;
vertical-align: top;
}
li {
text-align: center;
}
}
}
@include breakpoint(large) {
#main-nav {
.nav {
@@ -3759,8 +3767,7 @@ html[data-ontop] {
overflow: visible;
padding: 0;
width: 100%;
margin-bottom: 1em;
//height: 4.5em;
margin-bottom: 2.5em;
footer {
max-width: $row-width;
@@ -235,12 +235,20 @@ class ApplicationController < LinguaFrancaApplicationController
end
expiry ||= (Time.now + 12.hours)
session[:confirm_uid] = user.id
# send the confirmation email and make sure it get sent as quickly as possible
UserMailer.send_mail! :email_confirmation do
EmailConfirmation.create(user_id: user.id, expiry: expiry, url: url)
end
end
def user_settings
@conferences = Array.new
if logged_in?
Conference.all.each do | conference |
@conferences << conference if conference.host? current_user
end
end
@main_title = @page_title = 'page_titles.user_settings.Your_Account'
end
+46 -15
View File
@@ -594,6 +594,32 @@ class ConferencesController < ApplicationController
availability: [ params[:first_day], params[:last_day] ],
notes: params[:notes]
}
when :questions
@registration.housing = params[:housing]
@registration.arrival = params[:arrival]
@registration.departure = params[:departure]
@registration.bike = params[:bike]
@registration.food = params[:food]
@registration.allergies = params[:allergies]
@registration.other = params[:other]
when :payment
amount = params[:amount].to_f
if amount > 0
@registration.payment_confirmation_token = ENV['RAILS_ENV'] == 'test' ? 'token' : Digest::SHA256.hexdigest(rand(Time.now.to_f * 1000000).to_i.to_s)
# @registration.save
host = "#{request.protocol}#{request.host_with_port}"
response = PayPal!.setup(
PayPalRequest(amount),
register_paypal_confirm_url(@this_conference.slug, :paypal_confirm, @registration.payment_confirmation_token),
register_paypal_confirm_url(@this_conference.slug, :paypal_cancel, @registration.payment_confirmation_token)
)
if ENV['RAILS_ENV'] != 'test'
redirect_to response.redirect_uri
end
return
end
end
if @errors.present?
@@ -1126,7 +1152,7 @@ class ConferencesController < ApplicationController
def admin_update
set_conference
set_conference_registration
# set_conference_registration
return do_403 unless @this_conference.host? current_user
# set the page title in case we render instead of redirecting
@@ -1138,11 +1164,16 @@ class ConferencesController < ApplicationController
when 'edit'
case params[:button]
when 'save'
@this_conference.registration_status = params[:registration_status]
@this_conference.info = LinguaFranca::ActiveRecord::UntranslatedValue.new(params[:info]) unless @this_conference.info! == params[:info]
params[:info_translations].each do | locale, value |
@this_conference.set_column_for_locale(:info, locale, value, current_user.id) unless value = @this_conference._info(locale)
@this_conference.set_column_for_locale(:info, locale, value, current_user.id) unless value == @this_conference._info(locale)
end
@this_conference.paypal_email_address = params[:paypal_email_address]
@this_conference.paypal_username = params[:paypal_username]
@this_conference.paypal_password = params[:paypal_password]
@this_conference.paypal_signature = params[:paypal_signature]
@this_conference.save
return redirect_to register_step_path(@this_conference.slug, :administration)
when 'add_member'
@@ -2096,21 +2127,21 @@ class ConferencesController < ApplicationController
def registration_steps(conference = nil)
conference ||= @this_conference || @conference
status = conference.registration_status
return [] unless status == :pre || status == :open
# return [] unless status == :pre || status == :open
steps = [
steps = status == :pre || status == :open ? [
:policy,
:contact_info,
:questions,
:hosting,
:payment,
:workshops,
:administration
]
:workshops
] : []
steps -= [:questions, :payment] unless status == :open
steps -= [:questions] unless status == :open
steps -= [:payment] unless status == :open && conference.paypal_email_address.present? && conference.paypal_username.present? && conference.paypal_password.present? && conference.paypal_signature.present?
if @registration.present?
if view_context.same_city?(@registration.city, @conference.location)
if view_context.same_city?(@registration.city, conference.location)
steps -= [:questions]
else
steps -= [:hosting]
@@ -2119,13 +2150,13 @@ class ConferencesController < ApplicationController
steps -= [:hosting, :questions]
end
steps -= [:administration] unless @registration.present? && @conference.host?(current_user)
steps += [:administration] if conference.host?(current_user)
return steps
end
def required_steps(conference = nil)
# return the intersection of current steps and reuired steps
# return the intersection of current steps and required steps
registration_steps(conference || @this_conference || @conference) & # current steps
[:policy, :contact_info, :hosting, :questions] # all required steps
end
@@ -2349,9 +2380,9 @@ class ConferencesController < ApplicationController
def PayPal!
Paypal::Express::Request.new(
:username => @this_conference.paypal_username,
:password => @this_conference.paypal_password,
:signature => @this_conference.paypal_signature
username: @this_conference.paypal_username,
password: @this_conference.paypal_password,
signature: @this_conference.paypal_signature
)
end
@@ -2363,7 +2394,7 @@ class ConferencesController < ApplicationController
:amount => amount.to_f, # item value
:custom_fields => {
CARTBORDERCOLOR: "00ADEF",
LOGOIMG: "https://cdn.bikebike.org/assets/bblogo-paypal.png"
LOGOIMG: "https://en.bikebike.org/assets/bblogo-paypal.png"
}
)
end
+23 -3
View File
@@ -754,6 +754,18 @@ module ApplicationHelper
return days
end
def registration_status_options_list(conference = nil)
conference ||= @this_conference || @conference
return [] unless conference
options = Array.new
[:closed, :pre, :open].each do | opt |
options << [(_"forms.labels.generic.registration_statuses.#{opt}"), opt]
end
return options
end
def day_select(value = nil, args = {})
selectfield :day, value, conference_days_options_list(:during, nil, args[:format]), args
end
@@ -823,7 +835,7 @@ module ApplicationHelper
def registration_step_menu
steps = current_registration_steps(@registration)
return '' unless steps.present?
return '' unless steps.present? && steps.length > 1
pre_registration_steps = ''
post_registration_steps = ''
@@ -889,7 +901,7 @@ module ApplicationHelper
steps = ''
admin_steps.each do | step |
steps += content_tag(:li, class: (step.to_s == @admin_step ? :current : nil)) do
link_to _("menu.submenu.admin.#{step.to_s.titlecase}"), step == :edit ?
link_to _("menu.submenu.admin.#{step.to_s.titlecase.gsub(/\s/, '_')}"), step == :edit ?
register_step_path(@this_conference.slug, :administration) :
administration_step_path(@this_conference.slug, step.to_s)
end
@@ -1082,6 +1094,10 @@ module ApplicationHelper
textfield(name, value, options.merge({type: :email}))
end
def passwordfield(name, value, options = {})
textfield(name, value, options.merge({type: :password}))
end
def textfield(name, value, options = {})
html = ''
id = name.to_s.gsub('[', '_').gsub(']', '')
@@ -1127,6 +1143,8 @@ module ApplicationHelper
input_options[:autocomplete] = 'email'
when :phone
input_options[:autocomplete] = 'tel'
when :paypal_email_address, :paypal_username, :paypal_password, :paypal_signature
input_options[:autocomplete] = 'false'
end
case options[:type]
@@ -1140,12 +1158,14 @@ module ApplicationHelper
class: [
"#{(options[:type] || :text).to_s}-field",
'input-field',
value.present? ? nil : 'empty',
options[:big] ? 'big' : nil,
options[:small] ? 'small' : nil,
options[:stretch] ? 'stretch-item' : nil,
options[:full] ? 'full' : nil,
options[:inline_label] ? 'inline-label' : nil,
(@errors || {})[name].present? ? 'has-error' : nil
])
].compact)
html += _original_content(options[:original_value], options[:original_lang]) if options[:original_value].present?
@@ -7,6 +7,11 @@
- if @conference.present? && (@conference.registration_status == :pre || @conference.registration_status == :open)
%p=_'articles.user_settings.paragraphs.conference_registration', :t
= link_to (_'actions.conference.edit_registration'), register_path(@conference.slug), class: :button
- if @conferences.present?
%h3=_'articles.user_settings.headings.Your_Conferences'
- @conferences.each do | conference |
= link_to (_!conference.title), administration_step_path(conference.slug, :edit), class: :button
= form_tag update_settings_path do
= textfield :name, current_user.name, required: true, heading: 'articles.conference_registration.headings.name', big: true
+1 -1
View File
@@ -13,4 +13,4 @@
= columns(medium: 12) do
= textfield :allergies, @registration.allergies, heading: 'articles.conference_registration.headings.allergies'
= textarea :other, @registration.other, plain: true, heading: 'articles.conference_registration.headings.other'
= button_tag :register, :value => :save
= button_tag :register, :value => :questions
@@ -1,8 +1,15 @@
= form_tag administration_update_path(@this_conference.slug, :edit) do
= selectfield :registration_status, @this_conference.registration_status || 'closed', registration_status_options_list, small: true, inline_label: true
= textarea :info, @this_conference.info!, heading: 'articles.conference_registration.headings.admin.edit.info', help: 'articles.conference_registration.paragraphs.admin.edit.info', lang: @this_conference.locale, edit_on: :focus
- I18n.backend.enabled_locales.each do | locale |
- if locale.to_s != @this_conference.locale.to_s
= textarea "info_translations[#{locale.to_s}]", @this_conference._info(locale), label: 'translate.pages.Locale_Translation', vars: { language: _("languages.#{locale}") }, lang: locale, edit_on: :focus
%h4=_'articles.admin.edit.headings.paypal_info', :t
%p=(_'articles.admin.edit.paragraphs.paypal_info', :p).html_safe
= emailfield :paypal_email_address, @this_conference.paypal_email_address || @this_conference.email_address || (@this_conference.organizations.present? && @this_conference.organizations.first.present? ? @this_conference.organizations.first.email_address : nil)
= textfield :paypal_username, @this_conference.paypal_username
= passwordfield :paypal_password, @this_conference.paypal_password
= textfield :paypal_signature, @this_conference.paypal_signature
.actions.right
= button_tag :save, value: :save
%h4=_'articles.admin.edit.headings.host_organizations'