Registration working until workshops
This commit is contained in:
parent
bbebefd6bf
commit
9da5f6a223
3
Gemfile
3
Gemfile
@ -63,6 +63,9 @@ group :staging, :production, :preview do
|
||||
gem 'rails_12factor'
|
||||
gem 'capistrano'
|
||||
gem 'rvm-capistrano'
|
||||
end
|
||||
|
||||
group :production, :preview do
|
||||
gem 'unicorn'
|
||||
end
|
||||
|
||||
|
122
Gemfile.lock
122
Gemfile.lock
@ -1,6 +1,6 @@
|
||||
GIT
|
||||
remote: git://github.com/bumbleberry/bumbleberry.git
|
||||
revision: 70270f55af428a1c992eef5f57f5acffa31b9a17
|
||||
revision: bd3f458d81305df42076e1d2512eb5eebeb050b6
|
||||
specs:
|
||||
bumbleberry (0.0.1)
|
||||
blockspring
|
||||
@ -12,7 +12,7 @@ GIT
|
||||
|
||||
GIT
|
||||
remote: git://github.com/lingua-franca/lingua_franca.git
|
||||
revision: 045b7448504bd7c13ba23c35b0884bff089c3677
|
||||
revision: b7942bd94c699f127186dbb98ba298487f053db0
|
||||
specs:
|
||||
lingua_franca (0.0.1)
|
||||
diffy
|
||||
@ -25,9 +25,9 @@ GIT
|
||||
|
||||
GIT
|
||||
remote: git://github.com/rails/sass-rails.git
|
||||
revision: edd687d26a1f3d0cfd1df21d4b585261f74b4aa2
|
||||
revision: a264c198fe95290f1e1614570593ceb79e77314f
|
||||
specs:
|
||||
sass-rails (5.0.1)
|
||||
sass-rails (5.0.3)
|
||||
railties (>= 4.0.0, < 5.0)
|
||||
sass (~> 3.1)
|
||||
sprockets (>= 2.8, < 4.0)
|
||||
@ -76,9 +76,9 @@ GEM
|
||||
minitest (~> 5.1)
|
||||
thread_safe (~> 0.3, >= 0.3.4)
|
||||
tzinfo (~> 1.1)
|
||||
acts_as_list (0.6.0)
|
||||
acts_as_list (0.7.2)
|
||||
activerecord (>= 3.0)
|
||||
addressable (2.3.7)
|
||||
addressable (2.3.8)
|
||||
arel (6.0.0)
|
||||
attr_required (1.0.0)
|
||||
awesome_print (1.6.1)
|
||||
@ -120,21 +120,23 @@ GEM
|
||||
image_optimizer (~> 1.2)
|
||||
celluloid (0.16.0)
|
||||
timers (~> 4.0.0)
|
||||
childprocess (0.5.5)
|
||||
childprocess (0.5.6)
|
||||
ffi (~> 1.0, >= 1.0.11)
|
||||
cliver (0.3.2)
|
||||
coderay (1.1.0)
|
||||
coffee-rails (4.0.1)
|
||||
coffee-script (>= 2.2.0)
|
||||
railties (>= 4.0.0, < 5.0)
|
||||
coffee-script (2.3.0)
|
||||
coffee-script (2.4.1)
|
||||
coffee-script-source
|
||||
execjs
|
||||
coffee-script-source (1.9.1)
|
||||
coveralls (0.7.12)
|
||||
multi_json (~> 1.10)
|
||||
coffee-script-source (1.9.1.1)
|
||||
copydb (0.3.0)
|
||||
faker (~> 0.9.5)
|
||||
coveralls (0.8.1)
|
||||
json (~> 1.8)
|
||||
rest-client (>= 1.6.8, < 2)
|
||||
simplecov (~> 0.9.1)
|
||||
simplecov (~> 0.10.0)
|
||||
term-ansicolor (~> 1.3)
|
||||
thor (~> 0.19.1)
|
||||
crack (0.4.2)
|
||||
@ -156,15 +158,17 @@ GEM
|
||||
diff-lcs (1.2.5)
|
||||
diffy (3.0.7)
|
||||
docile (1.1.5)
|
||||
domain_name (0.5.23)
|
||||
domain_name (0.5.24)
|
||||
unf (>= 0.0.5, < 1.0.0)
|
||||
erubis (2.7.0)
|
||||
execjs (2.4.0)
|
||||
execjs (2.5.2)
|
||||
factory_girl (4.5.0)
|
||||
activesupport (>= 3.0.0)
|
||||
factory_girl_rails (4.5.0)
|
||||
factory_girl (~> 4.5.0)
|
||||
railties (>= 3.0.0)
|
||||
faker (0.9.5)
|
||||
i18n (~> 0.4)
|
||||
faraday (0.9.1)
|
||||
multipart-post (>= 1.2, < 3)
|
||||
ffi (1.9.8)
|
||||
@ -173,24 +177,24 @@ GEM
|
||||
railties (>= 3.2, < 5.0)
|
||||
forgery (0.6.0)
|
||||
formatador (0.2.5)
|
||||
foundation-rails (5.5.1.1)
|
||||
foundation-rails (5.5.2.1)
|
||||
railties (>= 3.1.0)
|
||||
sass (>= 3.3.0, < 3.5)
|
||||
gdk_pixbuf2 (2.2.4)
|
||||
glib2 (= 2.2.4)
|
||||
gdk_pixbuf2 (2.2.4-x86-mingw32)
|
||||
glib2 (= 2.2.4)
|
||||
gdk_pixbuf2 (2.2.5)
|
||||
glib2 (= 2.2.5)
|
||||
gdk_pixbuf2 (2.2.5-x86-mingw32)
|
||||
glib2 (= 2.2.5)
|
||||
geocoder (1.2.8)
|
||||
gherkin (2.12.2)
|
||||
multi_json (~> 1.3)
|
||||
gherkin (2.12.2-x86-mingw32)
|
||||
multi_json (~> 1.3)
|
||||
glib2 (2.2.4)
|
||||
glib2 (2.2.5)
|
||||
pkg-config
|
||||
glib2 (2.2.4-x86-mingw32)
|
||||
glib2 (2.2.5-x86-mingw32)
|
||||
cairo (>= 1.12.8)
|
||||
pkg-config
|
||||
globalid (0.3.3)
|
||||
globalid (0.3.5)
|
||||
activesupport (>= 4.1.0)
|
||||
guard (2.12.5)
|
||||
formatador (>= 0.2.4)
|
||||
@ -214,8 +218,7 @@ GEM
|
||||
haml (>= 4.0.6, < 5.0)
|
||||
html2haml (>= 1.0.1)
|
||||
railties (>= 4.0.1)
|
||||
highline (1.7.1)
|
||||
hike (1.2.3)
|
||||
highline (1.7.2)
|
||||
hitimes (1.2.2)
|
||||
hitimes (1.2.2-x86-mingw32)
|
||||
html2haml (2.0.0)
|
||||
@ -238,13 +241,14 @@ GEM
|
||||
json (1.8.2)
|
||||
jwt (0.1.13)
|
||||
multi_json (>= 1.5)
|
||||
kgio (2.9.3)
|
||||
launchy (2.4.3)
|
||||
addressable (~> 2.3)
|
||||
listen (2.9.0)
|
||||
celluloid (>= 0.15.2)
|
||||
listen (2.10.0)
|
||||
celluloid (~> 0.16.0)
|
||||
rb-fsevent (>= 0.9.3)
|
||||
rb-inotify (>= 0.9)
|
||||
loofah (2.0.1)
|
||||
loofah (2.0.2)
|
||||
nokogiri (>= 1.5.9)
|
||||
lumberjack (1.0.9)
|
||||
mail (2.6.3)
|
||||
@ -254,10 +258,10 @@ GEM
|
||||
rack-contrib (~> 1.1)
|
||||
railties (>= 3.0.0, < 5.0.0)
|
||||
method_source (0.8.2)
|
||||
mime-types (2.4.3)
|
||||
mini_magick (4.2.0)
|
||||
mime-types (2.5)
|
||||
mini_magick (4.2.3)
|
||||
mini_portile (0.6.2)
|
||||
minitest (5.5.1)
|
||||
minitest (5.6.1)
|
||||
multi_json (1.11.0)
|
||||
multi_test (0.1.2)
|
||||
multipart-post (2.0.0)
|
||||
@ -285,7 +289,7 @@ GEM
|
||||
jwt (~> 0.1.4)
|
||||
multi_json (~> 1.0)
|
||||
rack (~> 1.2)
|
||||
paper_trail (3.0.7)
|
||||
paper_trail (3.0.8)
|
||||
activerecord (>= 3.0, < 5.0)
|
||||
activesupport (>= 3.0, < 5.0)
|
||||
paypal-express (0.7.1)
|
||||
@ -309,7 +313,7 @@ GEM
|
||||
method_source (~> 0.8.1)
|
||||
slop (~> 3.4)
|
||||
win32console (~> 1.3)
|
||||
rack (1.6.0)
|
||||
rack (1.6.1)
|
||||
rack-contrib (1.2.0)
|
||||
rack (>= 0.9.1)
|
||||
rack-test (0.6.3)
|
||||
@ -348,6 +352,7 @@ GEM
|
||||
activesupport (= 4.2.0)
|
||||
rake (>= 0.8.7)
|
||||
thor (>= 0.18.1, < 2.0)
|
||||
raindrops (0.13.0)
|
||||
rake (10.4.2)
|
||||
rb-fsevent (0.9.4)
|
||||
rb-inotify (0.9.5)
|
||||
@ -365,9 +370,9 @@ GEM
|
||||
rspec-core (~> 3.2.0)
|
||||
rspec-expectations (~> 3.2.0)
|
||||
rspec-mocks (~> 3.2.0)
|
||||
rspec-core (3.2.2)
|
||||
rspec-core (3.2.3)
|
||||
rspec-support (~> 3.2.0)
|
||||
rspec-expectations (3.2.0)
|
||||
rspec-expectations (3.2.1)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.2.0)
|
||||
rspec-mocks (3.2.1)
|
||||
@ -382,13 +387,13 @@ GEM
|
||||
rspec-mocks (~> 3.2.0)
|
||||
rspec-support (~> 3.2.0)
|
||||
rspec-support (3.2.2)
|
||||
rsvg2 (2.2.4)
|
||||
rsvg2 (2.2.5)
|
||||
cairo (>= 1.12.8)
|
||||
gdk_pixbuf2 (= 2.2.4)
|
||||
rsvg2 (2.2.4-x86-mingw32)
|
||||
gdk_pixbuf2 (= 2.2.5)
|
||||
rsvg2 (2.2.5-x86-mingw32)
|
||||
cairo (>= 1.12.8)
|
||||
gdk_pixbuf2 (= 2.2.4)
|
||||
ruby_parser (3.6.5)
|
||||
gdk_pixbuf2 (= 2.2.5)
|
||||
ruby_parser (3.6.6)
|
||||
sexp_processor (~> 4.1)
|
||||
rubyzip (1.1.7)
|
||||
rvm-capistrano (1.5.6)
|
||||
@ -402,26 +407,23 @@ GEM
|
||||
multi_json (~> 1.0)
|
||||
rubyzip (~> 1.0)
|
||||
websocket (~> 1.0)
|
||||
sexp_processor (4.5.0)
|
||||
sexp_processor (4.5.1)
|
||||
shellany (0.0.1)
|
||||
simplecov (0.9.2)
|
||||
simplecov (0.10.0)
|
||||
docile (~> 1.1.0)
|
||||
multi_json (~> 1.0)
|
||||
simplecov-html (~> 0.9.0)
|
||||
simplecov-html (0.9.0)
|
||||
json (~> 1.8)
|
||||
simplecov-html (~> 0.10.0)
|
||||
simplecov-html (0.10.0)
|
||||
sitemap_generator (5.0.5)
|
||||
builder
|
||||
slop (3.6.0)
|
||||
sorcery (0.9.0)
|
||||
sorcery (0.9.1)
|
||||
bcrypt (~> 3.1)
|
||||
oauth (~> 0.4, >= 0.4.4)
|
||||
oauth2 (>= 0.8.0)
|
||||
sprockets (2.12.3)
|
||||
hike (~> 1.2)
|
||||
multi_json (~> 1.0)
|
||||
sprockets (3.0.3)
|
||||
rack (~> 1.0)
|
||||
tilt (~> 1.1, != 1.3.0)
|
||||
sprockets-rails (2.2.4)
|
||||
sprockets-rails (2.3.0)
|
||||
actionpack (>= 3.0)
|
||||
activesupport (>= 3.0)
|
||||
sprockets (>= 2.8, < 4.0)
|
||||
@ -432,24 +434,28 @@ GEM
|
||||
tilt (1.4.1)
|
||||
timers (4.0.1)
|
||||
hitimes
|
||||
tins (1.3.5)
|
||||
tins (1.5.1)
|
||||
tzinfo (1.2.2)
|
||||
thread_safe (~> 0.1)
|
||||
tzinfo-data (1.2015.2)
|
||||
tzinfo-data (1.2015.4)
|
||||
tzinfo (>= 1.0.0)
|
||||
uglifier (2.7.1)
|
||||
execjs (>= 0.3.0)
|
||||
json (>= 1.8.0)
|
||||
unf (0.1.4)
|
||||
unf_ext
|
||||
unf_ext (0.0.6)
|
||||
unf_ext (0.0.6-x86-mingw32)
|
||||
unf_ext (0.0.7.1)
|
||||
unf_ext (0.0.7.1-x86-mingw32)
|
||||
unicorn (4.9.0)
|
||||
kgio (~> 2.6)
|
||||
rack
|
||||
raindrops (~> 0.7)
|
||||
wdm (0.1.0)
|
||||
webmock (1.20.4)
|
||||
webmock (1.21.0)
|
||||
addressable (>= 2.3.6)
|
||||
crack (>= 0.3.2)
|
||||
websocket (1.2.1)
|
||||
websocket-driver (0.5.3)
|
||||
websocket (1.2.2)
|
||||
websocket-driver (0.5.4)
|
||||
websocket-extensions (>= 0.1.0)
|
||||
websocket-extensions (0.1.2)
|
||||
win32console (1.3.2-x86-mingw32)
|
||||
@ -475,6 +481,7 @@ DEPENDENCIES
|
||||
carrierwave
|
||||
carrierwave-imageoptimizer
|
||||
coffee-rails (~> 4.0.0)
|
||||
copydb
|
||||
coveralls
|
||||
cucumber-rails
|
||||
database_cleaner
|
||||
@ -512,6 +519,7 @@ DEPENDENCIES
|
||||
sorcery (>= 0.8.1)
|
||||
tzinfo-data
|
||||
uglifier (>= 1.3.0)
|
||||
unicorn
|
||||
wdm (>= 0.1.0)
|
||||
webmock
|
||||
wysiwyg-rails
|
||||
|
BIN
app/assets/images/empty-racks.jpg
Normal file
BIN
app/assets/images/empty-racks.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.9 MiB |
@ -1,5 +1,9 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<defs>
|
||||
<symbol id="bb-house" viewBox="20 20 60 50"><path d="M57.9 29.9v-5h6.3v9.4l13.2 9.1 -6.2 0.7V67.9h-4.8 -30H31.5V43.4h-7l26.1-18.5L57.9 29.9zM56.8 58.3v-5.5h-4.8v5.5H56.8zM56.8 52V46.5h-4.8v5.5H56.8zM50.6 58.3v-5.5h-4.8v5.5H50.6zM50.6 52V46.5h-4.8v5.5H50.6z"></path></symbol>
|
||||
<symbol id="bb-tent" viewBox="0 0 100 100"><path fill-rule="evenodd" clip-rule="evenodd" d="M36.2 95.8c-4 0-7.9 0-11.9 0 0-0.6 0-1.2 0-1.8 0-9.4 0-18.9 0-28.3 0-2 0-2-2.1-2 -5.2 0-10.4 0-15.6 0 -0.4 0-0.9 0-1.6-0.1 3.4-6 6.8-11.8 10.3-17.9 -1.4 0-2.6 0-4.1 0 2.6-4.5 5-8.7 7.5-13.1 -1.1 0-2 0-3.2 0C20.7 23.6 25.7 14.8 30.9 5.8c5.2 9 10.2 17.8 15.4 26.7 -0.9 0.1-1.6 0.1-2.7 0.1 2.5 4.3 4.9 8.5 7.4 12.9 -1.2 0.1-2.2 0.1-3.6 0.2 3.4 6 6.8 11.8 10.2 17.9 -0.8 0-1.3 0.1-1.8 0.1 -5.9 0-11.8 0-17.6 0 -2 0-2 0-2 2 0 9.4 0 18.9 0 28.3C36.2 94.5 36.2 95 36.2 95.8zM43.3 95.9c1.9-7.9 3.8-15.7 5.8-23.4 0.4-1.5 0.4-2.9 0-4.3 -0.2-0.7-0.3-1.4-0.5-2.1 0.1 0 0.3-0.1 0.4-0.1 0.2 0.7 0.5 1.4 0.8 2.3 0.3-0.9 0.6-1.5 0.8-2.1 0.1 0 0.3 0.1 0.4 0.1 -0.2 1.1-0.5 2.3-0.7 3.5 12.2 0 24.3 0 36.5 0 -0.2-1.2-0.5-2.4-0.7-3.6 0.1 0 0.2-0.1 0.4-0.1 0.2 0.6 0.5 1.1 0.8 1.9 0.3-0.8 0.6-1.4 0.8-2.1 0.2 0.1 0.4 0.1 0.5 0.2 -0.4 1.3-0.8 2.6-1.2 3.8 -0.2 0.6-0.7 1.1-0.9 1.7 -1.9 7.7-3.8 15.5-5.7 23.3 -0.2 0.8-0.5 1.2-1.5 1.2 -11.7 0-23.4 0-35.1 0C44 96 43.8 95.9 43.3 95.9zM88.5 69.7c2.1 8.6 4.3 17.3 6.5 26 -4.2 0-8.3 0-12.7 0 2-8.7 3.9-17.4 5.9-26C88.3 69.8 88.4 69.7 88.5 69.7z"/></symbol>
|
||||
<symbol id="bb-none" viewBox="0 0 100 100"><path d="M50 17c-18.2 0-33 14.8-33 33S31.8 83 50 83 83 68.2 83 50 68.2 17 50 17zM50 23.9c5.8 0 11.1 1.9 15.4 5.1L29 65.4c-3.2-4.3-5.1-9.6-5.1-15.4C23.9 35.6 35.6 23.9 50 23.9zM50 76.1c-5.3 0-10.2-1.6-14.3-4.3l36.1-36.1c2.7 4.1 4.3 9 4.3 14.3C76.1 64.4 64.4 76.1 50 76.1z"></path></symbol>
|
||||
<symbol id="bb-bike" viewBox="0 0 100 58.526"><path d="M98.88 38.35L100 38.3c-0.67-10.46-9.37-18.74-20-18.74 -3.3 0-6.41 0.8-9.15 2.21l-4.57-8.05 1.21-2.69c0.25 0.05 0.47 0.08 0.65 0.08 1.18 0 5.17-3.63 4.41-5.58 -0.33-0.84-2.26-0.04-4.67 0.47 -0.54 0.11-2.19 0.1-3.15 0 -2.23-0.24-4.19-0.76-4.57 0.26 -0.45 1.23 2.61 3.07 5.18 4.1l-0.65 1.45H32.19l0.97-2.71 -0.26-0.09 1.49-4.15L34.34 4.84l0 0c-0.6-0.21-1.92-0.88-2.21-1.64 -0.06-0.17-0.12-0.45 0.13-0.88 0.47-0.81 4.49-0.83 8.6-0.06L41.18 0.6c-2.08-0.39-8.99-1.49-10.37 0.86 -0.45 0.77-0.54 1.57-0.26 2.32 0.31 0.85 1.05 1.48 1.74 1.92l-0.98 2.74 -0.26-0.09L26.49 21.04c-2.33-0.95-4.89-1.48-7.57-1.48 -1.02 0-2.01 0.08-2.99 0.22l0.18 1.11C7 22.25 0 30.11 0 39.6c0 10.45 8.47 18.92 18.92 18.92 7.83 0 14.55-4.75 17.43-11.53l1.03 0.45c1.02-2.41 1.59-5.06 1.59-7.84 0-7.59-4.22-14.19-10.44-17.6l0.99-2.76 18.15 20.15c-0.65 0.89-1.04 1.98-1.04 3.17 0 2.99 2.42 5.41 5.41 5.41 0.22 0 0.44-0.02 0.65-0.04l0.85 3.23h-1.23v2.25h4.8v-2.25h-1.82L54.31 47.48c1.77-0.82 3.02-2.58 3.12-4.63l3.87-0.41c1.37 9.11 9.22 16.09 18.7 16.09 10.45 0 18.92-8.47 18.92-18.92 0-0.42-0.02-0.84-0.05-1.26C98.88 38.35 98.88 38.35 98.88 38.35zM34.48 39.6c0 8.59-6.96 15.55-15.55 15.55S3.37 48.19 3.37 39.6c0-8.59 6.96-15.55 15.55-15.55 2.27 0 4.43 0.49 6.38 1.37l-2.56 7.13 -3.01 4.62c-0.25-0.08-0.51-0.14-0.79-0.14 -1.42 0-2.56 1.15-2.56 2.56 0 1.42 1.15 2.57 2.57 2.57 1.42 0 2.57-1.15 2.57-2.56 0-0.52-0.16-1.01-0.43-1.41l3.13-4.8 2.6-7.19C31.4 28.91 34.48 33.89 34.48 39.6zM53.19 37.28c-0.37-0.08-0.76-0.13-1.15-0.13 -0.19 0-0.37 0.01-0.55 0.03l-0.95-3.61h1.37v-2.25h-4.79v2.25h1.68l1.07 4.05c-0.18 0.08-0.35 0.18-0.52 0.28L30.38 16.85l1-2.79h32.28L53.19 37.28zM60 40.88l-2.74 0.29c-0.32-1.2-1.05-2.24-2.02-2.96l10.19-22.59 3.96 6.98c-5.66 3.54-9.43 9.83-9.43 17C59.96 40.03 59.98 40.46 60 40.88zM64.45 39.6c0-5.49 2.85-10.32 7.15-13.09l6.26 11.03c-0.4 0.41-0.67 0.93-0.78 1.52l-12.62 1.34C64.46 40.14 64.45 39.87 64.45 39.6zM80 55.16c-7.75 0-14.17-5.66-15.35-13.08l12.61-1.34c0.45 1.07 1.51 1.83 2.74 1.83 1.64 0 2.97-1.33 2.97-2.97 0-1.64-1.33-2.97-2.97-2.97 -0.23 0-0.45 0.03-0.67 0.08l-6.26-11.03c2.09-1.04 4.44-1.63 6.93-1.63 8.59 0 15.55 6.96 15.55 15.55C95.55 48.19 88.59 55.16 80 55.16z"/></symbol>
|
||||
<symbol id="bb-icon-fb" viewBox="-723 0 1000 1000"><path d="M222.5,0.5h-891.1c-29.9,0-54,24.1-54,54v891.1c0,29.9,24.1,54,54,54h479.5V612.3h-130.5V461.7h130.5V346.8 c0-120.4,74.7-195.3,192.2-195.3c70.8,0,118.4,5.5,118.4,5.5v135.8H41.9c-50.5,0-74.3,17.8-74.3,71.4v97.5h148.8L97.2,612.3H-32.4 v387.2h255c29.9,0,54-24.1,54-54V54.5C276.5,24.6,252.4,0.5,222.5,0.5z"/></symbol>
|
||||
<symbol id="bb-icon-github" viewBox="0 0 1024 1024"><path xmlns="http://www.w3.org/2000/svg" d="M512 0C229.25 0 0 229.2 0 512c0 226.2 146.7 418.1 350.2 485.8 25.6 4.7 34.938-11.125 34.938-24.625 0-12.188-0.469-52.562-0.719-95.312C242 908.8 211.9 817.5 211.9 817.5c-23.312-59.125-56.844-74.875-56.844-74.875-46.531-31.75 3.53-31.125 3.53-31.125 51.4 3.6 78.5 52.8 78.5 52.8 45.7 78.2 119.9 55.6 149 42.5 4.654-33 17.904-55.625 32.5-68.375C304.906 725.4 185.3 681.5 185.3 485.312c0-55.938 19.969-101.562 52.656-137.406-5.219-13-22.844-65.094 5.062-135.562 0 0 42.938-13.75 140.8 52.5 40.812-11.406 84.594-17.031 128.125-17.219 43.5 0.2 87.3 5.9 128.2 17.3 97.688-66.312 140.688-52.5 140.688-52.5 28 70.5 10.4 122.6 5.1 135.5 32.8 35.8 52.6 81.5 52.6 137.4 0 196.688-119.75 240-233.812 252.7 18.4 15.9 34.8 47 34.8 94.8 0 68.438-0.688 123.625-0.688 140.5 0 13.6 9.3 29.6 35.2 24.562C877.438 930 1024 738.1 1024 512 1024 229.2 794.8 0 512 0z"/></symbol>
|
||||
<symbol viewBox="0 0 291 288.5" id="bb-icon-logo"><path d="m290.7 136.1c-8.8.9-16.9-5.1-18.4-14-1.5-8.8 4-17.3 12.6-19.4-1.6-5.4-3.5-10.7-5.7-15.8-8 3.9-17.6 1-22.1-6.8-4.5-7.8-2.1-17.6 5.2-22.5-3.3-4.5-7-8.8-10.8-12.9-6.2 6.3-16.2 6.9-23.1 1.2-6.9-5.8-8-15.8-2.8-23-4.7-3.1-9.5-5.9-14.5-8.4-3.6 8.1-12.9 12.1-21.3 9-8.4-3.1-12.9-12.1-10.5-20.6-5.4-1.3-10.9-2.2-16.5-2.9-.6 8.8-8 15.8-16.9 15.8-9 0-16.3-7-16.9-15.8-5.5.6-10.9 1.6-16.2 2.8 2.4 8.5-2.1 17.5-10.6 20.6-8.4 3-17.7-1-21.3-9.1-5 2.5-9.9 5.3-14.5 8.4 5.2 7.2 4 17.2-2.9 23-6.9 5.7-17 5.1-23.1-1.2-3.8 4.1-7.5 8.3-10.8 12.8 7.3 5 9.6 14.8 5.1 22.6-4.5 7.8-14.2 10.6-22.1 6.7-2.2 5.1-4.1 10.4-5.8 15.8 8.6 2.2 14.1 10.6 12.6 19.4-1.6 8.8-9.7 14.8-18.5 13.9-.2 2.8-.3 5.7-.3 8.6 0 2.8.1 5.5.2 8.2 8.8-.9 16.9 5.1 18.4 14 1.5 8.8-4 17.3-12.6 19.4 1.6 5.4 3.5 10.7 5.7 15.8 8-3.9 17.6-1 22.1 6.8 4.5 7.8 2.1 17.6-5.2 22.5 3.3 4.5 7 8.8 10.8 12.9 6.2-6.3 16.2-6.9 23.1-1.2 6.9 5.8 8 15.8 2.8 23 4.7 3.1 9.5 5.9 14.5 8.4 3.6-8.1 12.9-12.1 21.3-9 8.4 3.1 12.9 12.1 10.5 20.6 5.4 1.3 10.9 2.2 16.5 2.9.6-8.8 8-15.8 16.9-15.8 9 0 16.3 7 16.9 15.8 5.5-.6 10.9-1.6 16.1-2.8-2.4-8.5 2.1-17.5 10.6-20.6 8.4-3 17.7 1 21.3 9.1 5-2.5 9.9-5.3 14.6-8.4-5.2-7.2-4-17.2 2.9-23 6.9-5.7 17-5.1 23.1 1.2 3.8-4.1 7.5-8.3 10.8-12.8-7.3-5-9.6-14.8-5.1-22.6 4.5-7.8 14.2-10.6 22.2-6.7 2.2-5.1 4.1-10.4 5.8-15.8-8.6-2.2-14.1-10.6-12.6-19.4 1.6-8.8 9.7-14.8 18.5-13.9.2-2.8.3-5.7.3-8.6-.1-2.8-.1-5.5-.3-8.2m-117.5 55.4c-.6 1.2-1.2 2.4-1.8 3.5-.6 1.1-1.2 2.1-1.9 3.1-4.5 5.8-10.2 10-17 12.6-2.6 1-5.4 1.7-8.2 2.1-2.8.4-5.8.7-8.9.9-1.6.1-3.2.1-4.8-.1-1.6-.2-3.2-.4-4.7-.5-.7 0-1.3-.1-1.9-.3-.6-.2-1.2-.3-1.9-.3-.6 0-1.1-.2-1.7-.4-.6-.3-1.2-.4-1.9-.3-.6 0-1.1-.1-1.7-.3-.6-.2-1.2-.4-1.8-.6l-57-15.5c-2.2-.6-4-1.2-5.5-1.8-1.4-.6-2.3-1.8-2.5-3.5-.1-1.1.2-2.8.8-4.9.6-2.1 1.2-3.9 1.5-5.4l30.8-114.8c.4-1.6.8-3.2 1.2-5 .4-1.8 1.1-3.1 2-4 .8-.8 1.9-1.2 3.5-1.2.3-.1.6 0 .8.1.2.1.5.2.8.1l58.3 15.6c.9.2 1.8.5 2.8.6.9.2 1.8.4 2.5.8.6.4 1.2.7 1.9.7.7 0 1.3.2 2 .5l1.2.3c.7.5 1.5.8 2.4.9.9.2 1.7.5 2.6 1 1 .5 1.9 1 2.9 1.4.9.4 1.9.9 2.9 1.4 2.2 1.6 4.3 3.1 6.3 4.5 2 1.4 3.7 3.1 5.2 4.8 2.1 2.5 3.7 5.4 4.6 8.6 1 3.2 1.5 6.7 1.6 10.5 0 1-.1 1.9-.2 2.9-.2.9-.3 2-.3 3.1 0 .6-.1 1.1-.3 1.6-.2.5-.3 1-.3 1.6 0 .4-.1.9-.3 1.5-.2.6-.4 1-.6 1.2l-.5 1.8c-.1.4-.3.8-.5 1.3-.2.5-.3.9-.4 1.1-.5.8-.9 1.6-1.1 2.3-.3.7-.6 1.3-1 1.9-3 4.2-6.2 7.5-9.7 9.8-1.2.7-2.3 1.2-3.6 1.6-1.2.4-2.4 1-3.4 1.8-.3.2-.7.5-1.2.8-.5.4-.6.9-.5 1.6 0 1.1.6 2.2 1.8 3.3 1.2 1.1 2.3 2.1 3.2 3 2.9 3.3 5 6.8 6.4 10.5 1.3 3.6 2 7.5 2.1 11.9.1 1.2.1 2.3-.1 3.4-.2 1.1-.3 2.3-.3 3.4l-.6 2.2c-.1 1.5-.6 3.4-1.4 5.7-1.2 2.6-1.9 4.3-2.6 5.6m38.9 17.5c-.2 1.2-.5 2.5-.9 4l-3.8 14.1c-.4 1.4-.8 2.7-1.2 3.9-.4 1.1-1.1 1.9-1.9 2.4-1.1.4-2.3.5-3.6.2-1.3-.3-2.7-.6-4.1-1l-13.1-3.5c-1.4-.4-2.8-.8-4.1-1.2-1.3-.4-2.2-1.1-2.6-2.1-.4-1-.6-2.1-.4-3.3.2-1.3.5-2.6.9-4.1l3.3-12.3c.3-1.3.7-2.6 1-3.8.3-1.2.9-2.2 1.6-2.8.7-.6 1.9-1 3.5-1.2.3-.1.6 0 .9.1.3.2.6.2.9.1l15.4 4.1c1.6.4 3 .8 4.4 1.3 1.4.4 2.4 1.1 3.1 2 .7.9.9 1.9.7 3.1m28.4-108.9c-.3 1.2-.6 2.4-1 3.7l-5.8 21.7c-.2.8-.4 1.7-.5 2.7-.1 1-.4 1.8-.9 2.4l-.6 2.2c-.5.8-.9 1.8-1.1 2.8-.2 1-.5 1.8-1 2.6-.4.6-.7 1.2-.8 1.8-.1.6-.4 1.2-.8 1.8-.6 1.1-1 2.2-1.3 3.3-.3 1.1-.7 2.2-1.3 3.1-.3.5-.5 1-.6 1.4-.1.5-.3.9-.6 1.4-.7 1.6-1.4 3.3-2 5.1-.6 1.8-1.4 3.5-2.2 5.1-.5.8-.8 1.7-1 2.5-.1.8-.5 1.7-1 2.7-1.2 2.2-2.1 4.6-2.8 7.1-.7 2.5-1.8 4.9-3 7-.9 1.7-1.6 3.5-2.2 5.4-.6 1.9-1.6 3.1-3.2 3.7-.5.2-1 .2-1.5.2-.6 0-1.2 0-1.9-.1l-2.7-.7c-1.3-.3-2.4-.8-3.3-1.3-.9-.5-1.5-1.2-1.9-2-.4-1-.5-1.9-.3-2.8.2-.9.4-1.9.4-3 0-1.5.2-3.1.5-4.7.4-1.6.5-3.1.5-4.7.3-1 .4-1.8.4-2.2.1-.8.2-1.6.4-2.4.2-.8.4-1.6.4-2.4 0-2 .2-4 .7-6 .5-2 .8-4 .9-6 0-.7.1-1.3.3-1.9.2-.6.3-1.2.3-1.9.1-1.2.2-2.5.5-3.8.3-1.3.5-2.7.6-4 .1-.3.1-.5.1-.8 0-.3 0-.5.1-.8 0-1.1.2-2.2.4-3.1.3-1 .4-2 .4-3.1.1-3 .7-6.2 1.6-9.6 1-3.4 1.9-6.8 2.8-10.1l4-15.1c.4-1.4.8-2.8 1.1-4.1.3-1.3 1-2.3 1.9-3.1.9-.6 1.9-.9 3.2-.8.3-.1.6 0 .8.1.2.1.5.2.8.1l15.1 4c1.6.4 3 .9 4.3 1.4 1.3.5 2.2 1.3 2.6 2.4.5.6.5 1.6.2 2.8"/></symbol>
|
||||
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 22 KiB |
@ -6,7 +6,7 @@ body {
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, label, button {
|
||||
h1, h2, h3, h4, h5, label, button, .button {
|
||||
@include font-family(secondary);
|
||||
}
|
||||
|
||||
@ -49,8 +49,10 @@ a {
|
||||
}
|
||||
}
|
||||
|
||||
button {
|
||||
button,
|
||||
.button {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
color: #FFF;
|
||||
background-color: $colour-1;
|
||||
border: 0;
|
||||
@ -62,6 +64,7 @@ button {
|
||||
@include default-box-shadow(top, 2);
|
||||
overflow: hidden;
|
||||
cursor: pointer;
|
||||
@include _(text-stroke, 1px rgba(0, 0, 0, 0.25));
|
||||
|
||||
@include before-and-after {
|
||||
content: '';
|
||||
@ -120,6 +123,24 @@ button {
|
||||
#main &[type="submit"] {
|
||||
background-color: $colour-5;
|
||||
}
|
||||
|
||||
&.register {
|
||||
background-color: $colour-4;
|
||||
text-shadow: 0 0 0.15em rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
|
||||
form.logout & {
|
||||
background-color: #666;
|
||||
}
|
||||
}
|
||||
|
||||
a.button {
|
||||
@include after {
|
||||
border-bottom: 1em solid transparent;
|
||||
left: auto;
|
||||
bottom: auto;
|
||||
@include _(transform, none);
|
||||
}
|
||||
}
|
||||
|
||||
textarea {
|
||||
@ -171,34 +192,87 @@ input {
|
||||
}
|
||||
}
|
||||
|
||||
.email-field {
|
||||
.number-field,
|
||||
.email-field,
|
||||
.text-field {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
@include default-box-shadow(top, 2, false, 0 0.05em 0 0 #666);
|
||||
@include _(transition, box-shadow 100ms ease-in-out);
|
||||
//overflow: hidden;
|
||||
margin-bottom: 2em;
|
||||
background-color: #F8F8F8;
|
||||
@include default-box-shadow(top, 1.5, false, 0 0.05em 0 0 #666);
|
||||
@include _(transition, background-image 100ms ease-in-out);
|
||||
$fn: '';
|
||||
$capability: get_capability(map-get($compatibility-map, css-gradients));
|
||||
@if $capability == yx or $capability == ax or $capability == y or $capability == a {
|
||||
$fn: '-#{$browser_prefix}-';
|
||||
}
|
||||
@include _(background-size, 8px 8px);
|
||||
|
||||
label {
|
||||
//position: absolute;
|
||||
position: absolute;
|
||||
z-index: 2;
|
||||
font-size: 1em;
|
||||
float: left;
|
||||
//float: left;
|
||||
//@include font-family(primary);
|
||||
//font-weight: bold;
|
||||
//left: 0;
|
||||
//top: 0;
|
||||
padding: 0.25em 0.667em;
|
||||
width: auto;
|
||||
background-color: #333;
|
||||
color: #FFF;
|
||||
//@include _(transition, transform 250ms ease-in-out);
|
||||
//background-color: #333;
|
||||
@include _(transition, 'transform 250ms ease-in-out, color 250ms ease-in-out, background-color 250ms ease-in-out');
|
||||
//@include _(transform-origin, left center);
|
||||
//@include _(transform, scale(1) translateY(0));
|
||||
top: 100%;
|
||||
//@include _(transform, translateY(100%) scale(0.75));
|
||||
@include _(transform, translateY(0) scale(0.75));
|
||||
@include _(transform-origin, 0 0);
|
||||
//line-height: 1em;
|
||||
line-height: 1.5em;
|
||||
background-color: transparent;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
&:hover, &:focus, &:active {
|
||||
@include default-box-shadow(top, 2, false, 0 0.15em 0 0 $colour-1);
|
||||
|
||||
&.empty {
|
||||
background-color: #FFF;//#E8E8E8;
|
||||
background-image:
|
||||
#{$fn}repeating-linear-gradient(
|
||||
-45deg, #DDD,
|
||||
#DDD 1px, transparent 1px,
|
||||
transparent 6px
|
||||
);
|
||||
label {
|
||||
background-color: $colour-1;
|
||||
z-index: 0;
|
||||
@include _(transform, translateY(-100%) scale(1));
|
||||
background-color: transparent;
|
||||
color: #888;
|
||||
}
|
||||
input {
|
||||
//@include _(box-shadow, none);
|
||||
}
|
||||
}
|
||||
|
||||
input {
|
||||
margin: 0;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
padding: 0.15em 0.5em;
|
||||
background-color: transparent;
|
||||
//@include _(box-shadow, inset 0 0 1em 1em #E8E8E8);
|
||||
//background-image: repeating-linear-gradient(45deg, #FFF, #FFF 5px, #E8E8E8 1px, );
|
||||
//background-image: #{$fn}linear-gradient(45deg, #DDD 25%, transparent 25%, transparent 75%, #EEE 75%, #EEE 100%);//, #{$fn}linear-gradient(45deg, #EEE 25%, transparent 25%, transparent 75%, #EEE 75%, #EEE 100%);
|
||||
//background-image: linear-gradient(-45deg, black 12.5%, transparent 12.5%, transparent 50%, black 50%, black 87.5%, transparent 87.5%, transparent);
|
||||
border: 0;
|
||||
}
|
||||
|
||||
&:focus, &:active {
|
||||
label {
|
||||
color: #333;
|
||||
}
|
||||
}
|
||||
input {
|
||||
&:focus, &:active {
|
||||
@include _(box-shadow, inset 0 0 1em 1em #E8E8E8);
|
||||
}
|
||||
}
|
||||
/*input {
|
||||
@ -211,6 +285,131 @@ input {
|
||||
}*/
|
||||
}
|
||||
|
||||
.number-field {
|
||||
display: inline-block;
|
||||
font-size: 1.5em;
|
||||
|
||||
input {
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
|
||||
.radio-button-field {
|
||||
@include clearfix;
|
||||
margin-bottom: 1em;
|
||||
position: relative;
|
||||
|
||||
label {
|
||||
float: left;
|
||||
width: 7em;
|
||||
height: 5em;
|
||||
@include default-box-shadow(top);
|
||||
//background-color: lighten($colour-4, 25);
|
||||
background-color: $colour-2;
|
||||
text-align: center;
|
||||
position: relative;
|
||||
margin: 0 1em 3em;
|
||||
padding: 0.5em;
|
||||
cursor: pointer;
|
||||
@include _(transition, #{'transform, background-color 100ms, 100ms ease-in-out, ease-in-out'});
|
||||
|
||||
&:hover {
|
||||
//background-color: #EEE;
|
||||
@include _(transform, scale(1.1));
|
||||
}
|
||||
|
||||
@include before-and-after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
visibility: hidden;
|
||||
@include _(transition, transform 200ms ease-in-out);
|
||||
@include _(transition, transform 200ms cubic-bezier(0, 0.38, 0.9, 2));
|
||||
}
|
||||
|
||||
@include before {
|
||||
background-color: $colour-5;
|
||||
bottom: -0.3em;
|
||||
right: -0.5em;
|
||||
width: 2em;
|
||||
height: 2em;
|
||||
border-radius: 50%;
|
||||
@include _(transform, scale(0));
|
||||
@include default-box-shadow(top);
|
||||
}
|
||||
|
||||
@include after {
|
||||
border: 0.5em solid #FFF;
|
||||
border-left: none;
|
||||
border-top: none;
|
||||
width: 1em;
|
||||
height: 2em;
|
||||
font-size: 0.6em;
|
||||
bottom: 0.3em;
|
||||
right: 0.3em;
|
||||
@include _(transform, scale(0) rotate(45deg));
|
||||
}
|
||||
}
|
||||
|
||||
svg {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin-bottom: 0.75em;
|
||||
fill: #FFF;
|
||||
stroke: rgba(0, 0, 0, 0.667);
|
||||
stroke-width: 0.05em;
|
||||
}
|
||||
|
||||
input {
|
||||
position: absolute;
|
||||
opacity: 0;
|
||||
left: 1em;
|
||||
bottom: 0.5em;
|
||||
|
||||
&:checked + label {
|
||||
background-color: $colour-1;
|
||||
@include _(transform, scale(1.25));
|
||||
|
||||
@include before {
|
||||
visibility: visible;
|
||||
@include _(transform, scale(1));
|
||||
}
|
||||
|
||||
@include after {
|
||||
visibility: visible;
|
||||
@include _(transform, scale(1) rotate(45deg));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.date-span {
|
||||
margin-left: 1em;
|
||||
|
||||
label, input {
|
||||
display: block;
|
||||
height: 1.5em;
|
||||
margin: 0 0.5em 1em 0;
|
||||
}
|
||||
|
||||
label {
|
||||
height: 1.5em;
|
||||
}
|
||||
|
||||
input {
|
||||
@include default-box-shadow(top);
|
||||
background-color: $colour-1;
|
||||
color: #FFF;
|
||||
border: 0;
|
||||
padding: 0 0.25em;
|
||||
@include font-family(secondary);
|
||||
@include _(text-stroke, 0.5px #000)
|
||||
}
|
||||
|
||||
.date-labels {
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
|
||||
::-webkit-resizer {
|
||||
visibility: hidden;
|
||||
cursor: nw-resize;
|
||||
@ -676,6 +875,12 @@ $header-tilt: 8deg;
|
||||
|
||||
#main {
|
||||
clear: right;
|
||||
|
||||
.columns {
|
||||
form {
|
||||
margin-top: 2em;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#main-nav {
|
||||
@ -869,6 +1074,7 @@ $header-tilt: 8deg;
|
||||
|
||||
#main {
|
||||
padding-left: $sidebar-width;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
#header-title {
|
||||
@ -894,7 +1100,7 @@ $header-tilt: 8deg;
|
||||
padding: 0.2em;
|
||||
}
|
||||
|
||||
.paypal-button {
|
||||
.actions {
|
||||
margin: 4em 2em 0 0;
|
||||
}
|
||||
|
||||
@ -972,3 +1178,176 @@ $header-tilt: 8deg;
|
||||
|
||||
@include header-colour(about, $colour-4);
|
||||
@include header-colour(policy, $colour-3);
|
||||
|
||||
#bike_small + label {
|
||||
padding: 0.5em 2.5em;
|
||||
}
|
||||
|
||||
#bike_medium + label {
|
||||
padding: 0.5em 1.5em;
|
||||
}
|
||||
|
||||
#main .three-options {
|
||||
text-align: center;
|
||||
|
||||
button {
|
||||
background-color: $colour-4;
|
||||
width: 6em;
|
||||
font-size: 1.5em;
|
||||
margin: 0.25em;
|
||||
|
||||
&:first-child {
|
||||
background-color: $colour-3;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
background-color: $colour-5;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#main form.payment {
|
||||
text-align: center;
|
||||
|
||||
input[type="number"] {
|
||||
margin-top: 1em;
|
||||
font-size: 1.5em;
|
||||
text-align: center;
|
||||
width: 4em;
|
||||
height: 1.9em;
|
||||
border: 0;
|
||||
@include default-box-shadow(top);
|
||||
background-color: #333;
|
||||
color: $colour-3;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
|
||||
> button {
|
||||
background-color: $colour-1;
|
||||
}
|
||||
|
||||
.currency {
|
||||
color: #888;
|
||||
font-size: 1.667em;
|
||||
}
|
||||
}
|
||||
|
||||
#main ul.workshops {
|
||||
list-style: none;
|
||||
padding: 0;// 1em;
|
||||
text-align: center;
|
||||
@include default-box-shadow(top, 2, true);
|
||||
background-color: #F8F8F8;
|
||||
|
||||
li {
|
||||
display: inline-block;
|
||||
margin: 0.5em;
|
||||
vertical-align: middle;
|
||||
|
||||
@include before {
|
||||
content: '';
|
||||
display: none;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
background-color: #000;
|
||||
z-index: 99;
|
||||
@include _(opacity, 0.5);
|
||||
}
|
||||
|
||||
&.view {
|
||||
@include before {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.info {
|
||||
//display: block;
|
||||
left: 0;
|
||||
right: 0;
|
||||
top: 50%;
|
||||
@include _(transform, translateY(-50%) scale(1));
|
||||
|
||||
@include breakpoint(large) {
|
||||
left: 19rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
h4, h5 {
|
||||
color: #FFF;
|
||||
background-color: $colour-1;
|
||||
@include _(text-stroke, 1px rgba(0, 0, 0, 0.25));
|
||||
}
|
||||
|
||||
h4 {
|
||||
max-width: 10em;
|
||||
cursor: pointer;
|
||||
margin: 0;
|
||||
padding: 1em;
|
||||
position: relative;
|
||||
@include default-box-shadow(top);
|
||||
@include _(transition, transform 100ms ease-in-out);
|
||||
|
||||
&:hover {
|
||||
z-index: 2;
|
||||
@include _(transform, scale(1.25));
|
||||
}
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 1.5em;
|
||||
margin: 0;
|
||||
padding: 0.5em 1em;
|
||||
|
||||
+ p {
|
||||
margin-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
p {
|
||||
padding: 1em;
|
||||
max-height: 50vh;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
form {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
button {
|
||||
margin: 1em 0.5em;
|
||||
}
|
||||
|
||||
[contenteditable] {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.info {
|
||||
//display: none;
|
||||
position: fixed;
|
||||
background-color: #FFF;
|
||||
color: #333;
|
||||
left: auto;
|
||||
right: auto;
|
||||
top: auto;
|
||||
z-index: 100;
|
||||
max-width: 40em;
|
||||
max-height: 40em;
|
||||
margin: auto;
|
||||
text-align: left;
|
||||
@include _(transition, all 250ms ease-in-out);
|
||||
@include _(transform, translateY(0) scale(0));
|
||||
@include default-box-shadow(top);
|
||||
}
|
||||
|
||||
[value="delete"] {
|
||||
background-color: $colour-2;
|
||||
}
|
||||
|
||||
[value="cancel"] {
|
||||
background-color: $colour-4;
|
||||
}
|
||||
}
|
@ -80,6 +80,99 @@ class ApplicationController < LinguaFrancaApplicationController
|
||||
end
|
||||
|
||||
rescue_from AbstractController::ActionNotFound do |exception|
|
||||
do_403 'translator_login'
|
||||
@banner_image = 'grafitti.jpg'
|
||||
|
||||
if current_user
|
||||
@page_title = nil#'page_titles.Please_Login'
|
||||
do_403 'not_a_translator'
|
||||
#return
|
||||
else
|
||||
@page_title = 'page_titles.403.Please_Login'
|
||||
do_403 'translator_login'
|
||||
end
|
||||
end
|
||||
|
||||
def generate_confirmation(user, url, expiry = nil)
|
||||
if user.is_a? String
|
||||
user = User.find_by_email(user)
|
||||
|
||||
# if the user doesn't exist, just show them a 403
|
||||
do_403 unless user
|
||||
end
|
||||
expiry ||= (Time.now + 12.hours)
|
||||
session[:confirm_uid] = user.id
|
||||
confirmation = EmailConfirmation.create(user_id: user.id, expiry: expiry, url: url)
|
||||
UserMailer.email_confirmation(confirmation).deliver
|
||||
end
|
||||
|
||||
def do_confirm(settings = nil)
|
||||
settings ||= {:template => 'login_confirmation_sent'}
|
||||
if params[:email]
|
||||
# see if we've already sent the confirmation email and are just confirming
|
||||
# the email address
|
||||
if params[:token]
|
||||
user = User.find_by_email(params[:email])
|
||||
confirm(user)
|
||||
return
|
||||
end
|
||||
user = User.find_by_email(params[:email])
|
||||
|
||||
if !user
|
||||
# not really a good UX so we should fix this later
|
||||
do_404
|
||||
return
|
||||
end
|
||||
|
||||
# genereate the confirmation, send the email and show the 403
|
||||
generate_confirmation(params[:email], request.referer.gsub(/^.*?\/\/.*?\//, '/'))
|
||||
#@confirmation_sent = true
|
||||
template = 'login_confirmation_sent'
|
||||
@page_title ||= 'page_titles.403.Please_Check_Email'
|
||||
end
|
||||
|
||||
@banner_image = 'grafitti.jpg'
|
||||
@page_title ||= 'page_titles.403.Please_Login'
|
||||
|
||||
do_403 (template || 'translator_login')
|
||||
end
|
||||
|
||||
def confirm(uid = nil)
|
||||
@confirmation = EmailConfirmation.find_by_token!(params[:token])
|
||||
|
||||
confirm_user = nil
|
||||
if uid.is_a?(User)
|
||||
confirm_user = uid
|
||||
uid = confirm_user.id
|
||||
end
|
||||
# check to see if we were given a user id to confirm against
|
||||
# if we were, make sure it was the same one
|
||||
if (uid ||= (params[:uid] || session[:confirm_uid]))
|
||||
if uid == @confirmation.user_id
|
||||
session[:uid] = nil
|
||||
confirm_user ||= User.find uid
|
||||
auto_login(confirm_user)
|
||||
else
|
||||
@confirmation.delete
|
||||
end
|
||||
|
||||
redirect_to (@confirmation.url || '/')
|
||||
return
|
||||
end
|
||||
|
||||
@banner_image = 'grafitti.jpg'
|
||||
@page_title = 'page_titles.403.Please_Confirm_Email'
|
||||
do_403 'login_confirm'
|
||||
end
|
||||
|
||||
def translator_request
|
||||
@banner_image = 'grafitti.jpg'
|
||||
@page_title = 'page_titles.403.Translator_Request_Sent'
|
||||
do_403 'translator_request_sent'
|
||||
end
|
||||
|
||||
def user_logout
|
||||
logout()
|
||||
redirect_to (params[:url] || '/')
|
||||
end
|
||||
|
||||
end
|
||||
|
@ -144,7 +144,6 @@ class ConferencesController < ApplicationController
|
||||
if !registration.nil?
|
||||
session[:registration] = YAML.load(registration.data)
|
||||
session[:registration][:registration_id] = registration.id
|
||||
puts 'XXXXXXXXXXXXXXXXXXXXXXXX'
|
||||
next_step = (registration.completed.blank? && registration.is_participant.present? ? 'organizations' : 'thanks')
|
||||
else
|
||||
if !session[:registration][:user] || !session[:registration][:user][:firstname]
|
||||
@ -418,86 +417,189 @@ class ConferencesController < ApplicationController
|
||||
is_post = request.post? || session[:registration_step]
|
||||
set_conference
|
||||
|
||||
if !@conference.registration_open
|
||||
if !@this_conference.registration_open
|
||||
do_404
|
||||
return
|
||||
end
|
||||
|
||||
#if data[:next_step].blank?
|
||||
# session.delete(:registration)
|
||||
#end
|
||||
set_conference_registration
|
||||
|
||||
data = register_submit
|
||||
@register_step = is_post ? data[:next_step] : 'register'
|
||||
@error_message = data[:error] ? data[:message] : nil
|
||||
template = (@register_step == 'register' ? '' : 'register_') + @register_step
|
||||
@register_template = nil
|
||||
|
||||
if !File.exists?(Rails.root.join("app", "views", params[:controller], "_#{template}.html.haml"))
|
||||
do_404
|
||||
return
|
||||
if logged_in?
|
||||
# if the user is logged in start them off on the policy
|
||||
# page, unless they have already begun registration then
|
||||
# start them off with questions
|
||||
@register_template = @registration ? :questions : :policy
|
||||
|
||||
@name = current_user.firstname
|
||||
# we should phase out last names
|
||||
@name += " #{current_user.lastname}" if current_user.lastname
|
||||
end
|
||||
|
||||
if session[:registration]
|
||||
session[:registration][@register_step.to_sym] ||= Hash.new
|
||||
# process data from the last view
|
||||
case (params[:button] || '').to_sym
|
||||
when :confirm_email
|
||||
@register_template = :email_sent if is_post
|
||||
when :policy
|
||||
@register_template = :questions if is_post
|
||||
when :save
|
||||
if is_post
|
||||
@registration ||= ConferenceRegistration.new
|
||||
|
||||
@registration.conference_id = @this_conference.id
|
||||
@registration.user_id = current_user.id
|
||||
@registration.is_attending = 'yes'
|
||||
@registration.is_confirmed = true
|
||||
@registration.city = params[:location]
|
||||
@registration.arrival = params[:arrival]
|
||||
@registration.departure = params[:departure]
|
||||
@registration.housing = params[:housing]
|
||||
@registration.bike = params[:bike]
|
||||
@registration.other = params[:other]
|
||||
@registration.save
|
||||
|
||||
current_user.firstname = params[:name].squish
|
||||
current_user.lastname = nil
|
||||
current_user.save
|
||||
|
||||
@register_template = @registration.registration_fees_paid ? :workshops : :payment
|
||||
end
|
||||
when :payment
|
||||
if is_post && @registration
|
||||
amount = params[:amount].to_f
|
||||
|
||||
if amount
|
||||
@registration.payment_confirmation_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)
|
||||
)
|
||||
redirect_to response.redirect_uri
|
||||
return
|
||||
end
|
||||
@register_template = :workshops
|
||||
end
|
||||
when :paypal_confirm
|
||||
if @registration && @registration.payment_confirmation_token == params[:confirmation_token]
|
||||
|
||||
if ENV['RAILS_ENV'] != 'test'
|
||||
# testing this does't work in test but it works in devo and prod
|
||||
@registration.payment_info = {:payer_id => params[:PayerID], :token => params[:token], :amount => PayPal!.details(params[:token]).amount.total}.to_yaml
|
||||
end
|
||||
|
||||
#@registration.payment_confirmation_token = nil
|
||||
@registration.save!
|
||||
@register_template = :workshops
|
||||
end
|
||||
when :paypal_cancel
|
||||
if @registration
|
||||
@registration.payment_confirmation_token = nil
|
||||
@registration.save
|
||||
@register_template = :payment
|
||||
end
|
||||
end
|
||||
@actions = nil
|
||||
@multipart = false
|
||||
case @register_step
|
||||
when 'register', 'organizations', 'new_organization', 'new_workshop', 'volunteer_questions'
|
||||
@actions = :next
|
||||
if @register_step == 'new_organization'
|
||||
@multipart = true
|
||||
end
|
||||
when 'thanks'
|
||||
@registration = ConferenceRegistration.find(session[:registration][:registration_id])
|
||||
if @registration.is_confirmed.blank?
|
||||
@actions = :resend_confirmation_email
|
||||
end
|
||||
next_step = 'thanks'
|
||||
#if @registration.complete && @registration.is_participant && @registration.payment_info.nil?
|
||||
#` @actions = [:submit_payment]
|
||||
when 'primary'
|
||||
@actions = [:cancel, :next]
|
||||
when 'submit'
|
||||
@actions = [:cancel, :submit]
|
||||
when 'cancel'
|
||||
@actions = [:no, :yes]
|
||||
when 'confirm_payment'
|
||||
@actions = [:cancel_payment, :confirm_payment]
|
||||
when 'already_registered'
|
||||
@registration = ConferenceRegistration.find_by(:email => session[:registration][:email])
|
||||
if !@registration.complete
|
||||
@actions = :resend_confirmation_email
|
||||
end
|
||||
when 'questions'
|
||||
@actions = [:cancel, :submit]
|
||||
@housing_options = {
|
||||
'I will fend for myself thanks' => 'none',
|
||||
'I will need a real bed' => 'bed',
|
||||
'A couch or floor space will be fine' => 'couch',
|
||||
'All I need is a backyard' => 'camp'
|
||||
|
||||
# prepare data for the next view
|
||||
case @register_template
|
||||
when :questions
|
||||
@registration ||= ConferenceRegistration.new(
|
||||
:conference_id => @this_conference.id,
|
||||
:user_id => current_user.id,
|
||||
:is_attending => 'yes',
|
||||
:is_confirmed => true,
|
||||
:city => view_context.location(view_context.lookup_ip_location),
|
||||
:arrival => @this_conference.start_date,
|
||||
:departure => @this_conference.end_date,
|
||||
:housing => nil,
|
||||
:bike => nil,
|
||||
:other => ''
|
||||
);
|
||||
when :workshops
|
||||
@my_workshops = [1,2,3,4].map { |i|
|
||||
{
|
||||
:title => (Forgery::LoremIpsum.sentence({:random => true}).gsub(/\.$/, '').titlecase),
|
||||
:info => (Forgery::LoremIpsum.sentences(rand(1...5), {:random => true}))
|
||||
}
|
||||
session[:registration][:questions][:housing] ||= 'couch'
|
||||
@loaner_bike_options = {
|
||||
'No' => 'no',
|
||||
'Yes, an average size should do' => 'medium',
|
||||
'Yes but a small one please' => 'small',
|
||||
'Yes but a large one please' => 'large'
|
||||
}
|
||||
session[:registration][:questions][:loaner_bike] ||= 'medium'
|
||||
#session[:registration][:questions][:diet] ||= Hash.new
|
||||
}
|
||||
end
|
||||
|
||||
#puts ' ------yyyy----------------- '
|
||||
#puts @register_step
|
||||
#session.delete(:last_action)
|
||||
|
||||
if request.xhr?
|
||||
@register_content = render_to_string :partial => template
|
||||
render :json => {status: 200, html: @register_content}
|
||||
else
|
||||
@register_template = template
|
||||
render 'show'
|
||||
end
|
||||
# render :register
|
||||
|
||||
# data = register_submit
|
||||
# @register_step = is_post ? data[:next_step] : 'register'
|
||||
# @error_message = data[:error] ? data[:message] : nil
|
||||
# template = (@register_step == 'register' ? '' : 'register_') + @register_step
|
||||
|
||||
# if !File.exists?(Rails.root.join("app", "views", params[:controller], "_#{template}.html.haml"))
|
||||
# do_404
|
||||
# return
|
||||
# end
|
||||
|
||||
# if session[:registration]
|
||||
# session[:registration][@register_step.to_sym] ||= Hash.new
|
||||
# end
|
||||
# @actions = nil
|
||||
# @multipart = false
|
||||
# case @register_step
|
||||
# when 'register', 'organizations', 'new_organization', 'new_workshop', 'volunteer_questions'
|
||||
# @actions = :next
|
||||
# if @register_step == 'new_organization'
|
||||
# @multipart = true
|
||||
# end
|
||||
# when 'thanks'
|
||||
# @registration = ConferenceRegistration.find(session[:registration][:registration_id])
|
||||
# if @registration.is_confirmed.blank?
|
||||
# @actions = :resend_confirmation_email
|
||||
# end
|
||||
# next_step = 'thanks'
|
||||
# #if @registration.complete && @registration.is_participant && @registration.payment_info.nil?
|
||||
# #` @actions = [:submit_payment]
|
||||
# when 'primary'
|
||||
# @actions = [:cancel, :next]
|
||||
# when 'submit'
|
||||
# @actions = [:cancel, :submit]
|
||||
# when 'cancel'
|
||||
# @actions = [:no, :yes]
|
||||
# when 'confirm_payment'
|
||||
# @actions = [:cancel_payment, :confirm_payment]
|
||||
# when 'already_registered'
|
||||
# @registration = ConferenceRegistration.find_by(:email => session[:registration][:email])
|
||||
# if !@registration.complete
|
||||
# @actions = :resend_confirmation_email
|
||||
# end
|
||||
# when 'questions'
|
||||
# @actions = [:cancel, :submit]
|
||||
# @housing_options = {
|
||||
# 'I will fend for myself thanks' => 'none',
|
||||
# 'I will need a real bed' => 'bed',
|
||||
# 'A couch or floor space will be fine' => 'couch',
|
||||
# 'All I need is a backyard' => 'camp'
|
||||
# }
|
||||
# session[:registration][:questions][:housing] ||= 'couch'
|
||||
# @loaner_bike_options = {
|
||||
# 'No' => 'no',
|
||||
# 'Yes, an average size should do' => 'medium',
|
||||
# 'Yes but a small one please' => 'small',
|
||||
# 'Yes but a large one please' => 'large'
|
||||
# }
|
||||
# session[:registration][:questions][:loaner_bike] ||= 'medium'
|
||||
# #session[:registration][:questions][:diet] ||= Hash.new
|
||||
# end
|
||||
|
||||
# if request.xhr?
|
||||
# @register_content = render_to_string :partial => template
|
||||
# render :json => {status: 200, html: @register_content}
|
||||
# else
|
||||
# @register_template = template
|
||||
# render 'register'
|
||||
# end
|
||||
end
|
||||
|
||||
def registrations
|
||||
@ -571,9 +673,6 @@ class ConferencesController < ApplicationController
|
||||
@conference_registration = ConferenceRegistration.find_by(confirmation_token: params[:confirmation_token])
|
||||
if !@conference_registration.nil? && @conference_registration.conference_id == @conference.id && @conference_registration.complete && @conference_registration.payment_info.nil?
|
||||
session[:registration] = YAML.load(@conference_registration.data)
|
||||
session[:registration][:registration_id] = @conference_registration.id
|
||||
session[:registration][:path] = Array.new
|
||||
session[:registration_step] = 'paypal-cancelled'
|
||||
redirect_to action: 'register'
|
||||
end
|
||||
end
|
||||
@ -639,9 +738,9 @@ class ConferencesController < ApplicationController
|
||||
private
|
||||
# Use callbacks to share common setup or constraints between actions.
|
||||
def set_conference
|
||||
@conference = nil
|
||||
@this_conference = nil
|
||||
if type = ConferenceType.find_by!(slug: params[:conference_type] || params[:conference_type_slug] || 'bikebike')
|
||||
if @conference = Conference.find_by!(slug: params[:conference_slug] || params[:slug], conference_type_id: type.id)
|
||||
if @this_conference = Conference.find_by!(slug: params[:conference_slug] || params[:slug], conference_type_id: type.id)
|
||||
set_conference_registration
|
||||
end
|
||||
end
|
||||
@ -651,12 +750,7 @@ class ConferencesController < ApplicationController
|
||||
end
|
||||
|
||||
def set_conference_registration
|
||||
if !@conference || !current_user
|
||||
@conference_registration = nil
|
||||
return
|
||||
end
|
||||
|
||||
@conference_registration = ConferenceRegistration.find_by(conference_id: @conference.id, user_id: current_user.id)
|
||||
@registration = logged_in? ? ConferenceRegistration.find_by(:user_id => current_user.id, :conference_id => @this_conference.id) : nil
|
||||
end
|
||||
|
||||
# Only allow a trusted parameter "white list" through.
|
||||
@ -807,11 +901,10 @@ class ConferencesController < ApplicationController
|
||||
end
|
||||
|
||||
def PayPal!
|
||||
paypal_info = get_secure_info(:paypal)
|
||||
Paypal::Express::Request.new(
|
||||
:username => paypal_info[:username],
|
||||
:password => paypal_info[:password],
|
||||
:signature => paypal_info[:signature]
|
||||
:username => @this_conference.paypal_username,
|
||||
:password => @this_conference.paypal_password,
|
||||
:signature => @this_conference.paypal_signature
|
||||
)
|
||||
end
|
||||
|
||||
|
@ -452,7 +452,7 @@ module ApplicationHelper
|
||||
end
|
||||
|
||||
def lookup_ip
|
||||
if request.remote_ip == '127.0.0.1'
|
||||
if request.remote_ip == '127.0.0.1' || request.remote_ip == '::1'
|
||||
session['remote_ip'] || (session['remote_ip'] = open("http://checkip.dyndns.org").first.gsub(/^.*\s([\d\.]+).*$/s, '\1').gsub(/[^\.\d]/, ''))
|
||||
else
|
||||
request.remote_ip
|
||||
@ -460,12 +460,16 @@ module ApplicationHelper
|
||||
end
|
||||
|
||||
def lookup_ip_location
|
||||
if is_test? && ApplicationController::get_location.present?
|
||||
Geocoder.search(ApplicationController::get_location).first
|
||||
elsif request.remote_ip == '127.0.0.1'
|
||||
Geocoder.search(session['remote_ip'] || (session['remote_ip'] = open("http://checkip.dyndns.org").first.gsub(/^.*\s([\d\.]+).*$/s, '\1').gsub(/[^\.\d]/, ''))).first
|
||||
else
|
||||
request.location
|
||||
begin
|
||||
if is_test? && ApplicationController::get_location.present?
|
||||
Geocoder.search(ApplicationController::get_location).first
|
||||
elsif request.remote_ip == '127.0.0.1' || request.remote_ip == '::1'
|
||||
Geocoder.search(session['remote_ip'] || (session['remote_ip'] = open("http://checkip.dyndns.org").first.gsub(/^.*\s([\d\.]+).*$/s, '\1').gsub(/[^\.\d]/, ''))).first
|
||||
else
|
||||
request.location
|
||||
end
|
||||
rescue
|
||||
nil
|
||||
end
|
||||
end
|
||||
|
||||
@ -526,10 +530,10 @@ module ApplicationHelper
|
||||
subdomain == 'test'
|
||||
end
|
||||
|
||||
def location(location)
|
||||
territory = Carmen::Country.coded(location.country).subregions.coded(location.territory)
|
||||
location.city + (territory ? ' ' + territory.name : '') + ', ' + Carmen::Country.coded(location.country).name
|
||||
end
|
||||
#def location(location)
|
||||
# territory = Carmen::Country.coded(location.country).subregions.coded(location.territory)
|
||||
# location.city + (territory ? ' ' + territory.name : '') + ', ' + Carmen::Country.coded(location.country).name
|
||||
#end
|
||||
|
||||
def rand_hash(length = 16, model = nil, field = nil)
|
||||
if field
|
||||
@ -582,10 +586,11 @@ module ApplicationHelper
|
||||
end
|
||||
|
||||
def location(location)
|
||||
return nil if location.blank?
|
||||
l = Array.new
|
||||
l << location.city
|
||||
l << I18n.t("geography.subregions.#{location.country}.#{location.territory}") if location.territory.present?
|
||||
l << I18n.t("geography.countries.#{location.country}") if !(location.country =~ /^(US|CA)$/)
|
||||
l << location.data['city']
|
||||
l << I18n.t("geography.subregions.#{location.data['country_code']}.#{location.data['region_code']}") if location.data['region_code'].present?
|
||||
l << I18n.t("geography.countries.#{location.data['country_code']}") if !(location.data['country_code'] =~ /^(US|CA)$/)
|
||||
l.join(', ')
|
||||
end
|
||||
|
||||
@ -605,6 +610,10 @@ module ApplicationHelper
|
||||
I18n.t('date.date_span', {:date_1 => d1, :date_2 => d2})
|
||||
end
|
||||
|
||||
def generate_confirmation(user, url, expiry = nil)
|
||||
ApplicationController::generate_confirmation(user, url, expiry)
|
||||
end
|
||||
|
||||
private
|
||||
def _form_field(type, name, value, options)
|
||||
if type == 'check_box'
|
||||
|
@ -24,7 +24,7 @@ class UserMailer < ActionMailer::Base
|
||||
end
|
||||
|
||||
def test_email
|
||||
mail to: 'goodgodwin@hotmail.com', subject: 'This is a test'
|
||||
mail to: 'goodgodwin@hotmail.com', subject: 'This is a test', from: 'info@preview.bikebike.org'
|
||||
end
|
||||
|
||||
def conference_registration_email(conference, data, conference_registration)
|
||||
@ -32,7 +32,7 @@ class UserMailer < ActionMailer::Base
|
||||
@conference = conference
|
||||
@url = "https://bikebike.org"#UserMailer.default_url_options[:host]
|
||||
@confirmation_url = UserMailer.default_url_options[:host] + "/#{@conference.url}/register/confirm/#{conference_registration.confirmation_token}/".gsub(/\/\/+/, '/')
|
||||
mail to: data[:email], subject: (_'register.email.registration.subject',"Please confirm your registration for #{conference.title}", vars: {:conference_title => conference.title})
|
||||
mail to: data[:email], subject: (I18n.t 'register.email.registration.subject',"Please confirm your registration for #{conference.title}", vars: {:conference_title => conference.title})
|
||||
end
|
||||
|
||||
def conference_registration_confirmed_email(conference, data, conference_registration)
|
||||
@ -40,6 +40,13 @@ class UserMailer < ActionMailer::Base
|
||||
@conference = conference
|
||||
@url = "https://bikebike.org"#UserMailer.default_url_options[:host]
|
||||
@confirmation_url = UserMailer.default_url_options[:host] + "/#{@conference.url}/register/pay-registration/#{conference_registration.confirmation_token}/".gsub(/\/\/+/, '/')
|
||||
mail to: data[:email], subject: (_'register.email.registration_confirmed.subject',"Thanks for confirming your registration for #{conference.title}", vars: {:conference_title => conference.title})
|
||||
mail to: data[:email], subject: (I18n.t 'register.email.registration_confirmed.subject',"Thanks for confirming your registration for #{conference.title}", vars: {:conference_title => conference.title})
|
||||
end
|
||||
|
||||
def email_confirmation(confirmation)
|
||||
@confirmation = confirmation
|
||||
@host = UserMailer.default_url_options[:host]
|
||||
mail to: confirmation.user.email,
|
||||
subject: (I18n.t 'email.subject.confirm_email','Please confirm your email address')
|
||||
end
|
||||
end
|
||||
|
@ -24,7 +24,11 @@ class EmailConfirmation < ActiveRecord::Base
|
||||
end
|
||||
|
||||
def valid_for_user?(user)
|
||||
user.id == user_id && expiry < Time.now
|
||||
user.id == user_id && !expired?
|
||||
end
|
||||
|
||||
def expired?
|
||||
expiry >= Time.now
|
||||
end
|
||||
|
||||
protected
|
||||
|
@ -1,6 +1,11 @@
|
||||
- page_title = _'error.404.page_title.This_Page_Does_Not_Exist'
|
||||
- title page_title
|
||||
- banner_title page_title
|
||||
- content_for :banner do
|
||||
- image = image_url(@banner_image || 'empty-racks.jpg')
|
||||
#header-title.short{style: capable_of(:svg) ? nil : "background-image: url(#{image})"}
|
||||
- if capable_of(:svg)
|
||||
= render 'application/banner_image.svg', {:image => image}
|
||||
%h1=_(@page_title || 'page_titles.404.Page_Not_Found')
|
||||
|
||||
.row
|
||||
%h1
|
||||
|
10
app/views/application/_login_confirm.html.haml
Normal file
10
app/views/application/_login_confirm.html.haml
Normal file
@ -0,0 +1,10 @@
|
||||
= row do
|
||||
= columns(medium: 12) do
|
||||
%h2=_'articles.permission_denied.headings.confirm_email','Please confirm your email address'
|
||||
= columns(medium: 6, large: 5) do
|
||||
= form_tag :do_confirm do
|
||||
.email-field.input-field
|
||||
= email_field_tag :email, nil, required: true
|
||||
= label_tag :email
|
||||
= hidden_field_tag :token, @confirmation.token
|
||||
= button_tag :login
|
5
app/views/application/_login_confirmation_sent.html.haml
Normal file
5
app/views/application/_login_confirmation_sent.html.haml
Normal file
@ -0,0 +1,5 @@
|
||||
= row do
|
||||
= columns(medium: 12) do
|
||||
%h2=_'articles.permission_denied.headings.confirmation_sent','Confirmation Sent'
|
||||
= columns(medium: 6) do
|
||||
%p=_'articles.permission_denied.paragraphs.confirmation_sent', :p
|
9
app/views/application/_not_a_translator.html.haml
Normal file
9
app/views/application/_not_a_translator.html.haml
Normal file
@ -0,0 +1,9 @@
|
||||
= row do
|
||||
= columns(medium: 12) do
|
||||
%h2=_'articles.permission_denied.headings.not_a_translator','Sorry you must be a translator to view this page'
|
||||
= columns(medium: 6) do
|
||||
%p=_'articles.permission_denied.paragraphs.translator_request', :p
|
||||
= columns(medium: 6) do
|
||||
= form_tag :translator_request do
|
||||
= text_area_tag :comment, nil, placeholder: true, required: true
|
||||
= button_tag :translator_request
|
@ -1,21 +1,11 @@
|
||||
= row do
|
||||
- if current_user
|
||||
= columns(medium: 12) do
|
||||
%h2=_'articles.permission_denied.headings.not_a_translator','Sorry you must be a translator to view this page'
|
||||
= columns(medium: 6) do
|
||||
%p=_'articles.permission_denied.paragraphs.translator_request', :p
|
||||
= columns(medium: 6) do
|
||||
= form_tag :translator_request do
|
||||
=text_area_tag :comment, nil, placeholder: true
|
||||
=button_tag :translator_request
|
||||
- else
|
||||
= columns(medium: 12) do
|
||||
%h2=_'articles.permission_denied.headings.login_required','Sorry you must be logged in to view this page'
|
||||
= columns(medium: 6) do
|
||||
%p=_'articles.permission_denied.paragraphs.translator_not_logged_in', :p
|
||||
= columns(medium: 6) do
|
||||
= form_tag :do_confirm do
|
||||
.email-field
|
||||
=email_field_tag :email, nil, required: true
|
||||
=label_tag :email
|
||||
=button_tag :login
|
||||
= columns(medium: 12) do
|
||||
%h2=_'articles.permission_denied.headings.login_required','Sorry you must be logged in to view this page'
|
||||
= columns(medium: 6, large: 7) do
|
||||
%p=_'articles.permission_denied.paragraphs.translator_not_logged_in', :p
|
||||
= columns(medium: 6, large: 5) do
|
||||
= form_tag :do_confirm do
|
||||
.email-field.input-field
|
||||
= email_field_tag :email, nil, required: true
|
||||
= label_tag :email
|
||||
= button_tag :login
|
||||
|
@ -1,9 +1,9 @@
|
||||
- content_for :banner do
|
||||
- image = image_url('403.jpg')
|
||||
- image = image_url(@banner_image || '403.jpg')
|
||||
#header-title.short{style: capable_of(:svg) ? nil : "background-image: url(#{image})"}
|
||||
- if capable_of(:svg)
|
||||
= render 'application/banner_image.svg', {:image => image}
|
||||
%h1=_'page_titles.Permission_Denied'
|
||||
%h1=_(@page_title || 'page_titles.403.Permission_Denied')
|
||||
|
||||
%article
|
||||
- if @template
|
||||
|
155
app/views/conferences/register.html.haml
Normal file
155
app/views/conferences/register.html.haml
Normal file
@ -0,0 +1,155 @@
|
||||
- title (_'conferences.register.page_title.Conference_Registration')
|
||||
- content_for :banner do
|
||||
- image = image_url(@conference.cover_url || 'empty-racks.jpg')
|
||||
#header-title.short{style: capable_of(:svg) ? nil : "background-image: url(#{image})"}
|
||||
- if capable_of(:svg)
|
||||
= render 'application/banner_image.svg', {:image => image}
|
||||
%h1=_(@page_title || 'page_titles.conferences.Conference_Registration')
|
||||
%article
|
||||
= row do
|
||||
- case @register_template
|
||||
- when :confirm_email
|
||||
= columns(medium: 12) do
|
||||
%h2=_'articles.conference_registration.headings.Confirm_You_Email_Address','Confirm Email Address'
|
||||
= columns(medium: 6, large: 5) do
|
||||
= form_tag register_path(@this_conference.slug) do
|
||||
= button_tag :continue, :value => :confirm_email
|
||||
- when :payment
|
||||
= columns(medium: 12) do
|
||||
%h2=_'articles.conference_registration.headings.Payment'
|
||||
%p=_'articles.conference_registration.paragraphs.Payment', 'Thank you for completing your registration. We\'ll see you at Bike!Bike! Payment is by donation and can be done now or upon arrival but to help us fund the conference, we ask that you pay the registration donation as soon as you can.'
|
||||
= columns(large: 9, push: 1) do
|
||||
= form_tag register_path(@this_conference.slug), :class => :payment do
|
||||
= hidden_field_tag :button, :payment
|
||||
.three-options
|
||||
= button_tag nil, :name => :amount, :value => '25.0' do
|
||||
= number_to_currency(25, :unit => '$')
|
||||
= button_tag nil, :name => :amount, :value => '50.0' do
|
||||
= number_to_currency(50, :unit => '$')
|
||||
= button_tag nil, :name => :amount, :value => '100.0' do
|
||||
= number_to_currency(100, :unit => '$')
|
||||
= form_tag register_path(@this_conference.slug), :class => :payment do
|
||||
%span.currency='$'
|
||||
= number_field_tag :amount, nil, :required => true, :step => 0.01, :min => 0.00
|
||||
= button_tag :custom_amount, :value => :payment
|
||||
%p=_'articles.conference_registration.paragraphs.currency','(amounts are in $USD)'
|
||||
|
||||
= columns(large: 2)
|
||||
- when :policy
|
||||
= columns(medium: 12) do
|
||||
%h2=_'articles.conference_registration.headings.Policy_Agreement'
|
||||
%p=_'articles.conference_registration.paragraphs.Policy_Agreement', :s, 2
|
||||
= columns(medium: 10, push: 1) do
|
||||
%h3=_'articles.policy.headings.The_Agreement'
|
||||
%ul
|
||||
- [:commitment, :respect, :empowerment, :accessible, :peaceful, :spaces, :hearing, :intent, :open_minds, :learning].each do |term|
|
||||
%li=_"articles.policy.term.#{term.to_s}", :s, 2
|
||||
%h3=_'articles.policy.headings.Why','Why have a Safer Space Agreement?'
|
||||
%p=_'articles.policy.paragraphs.Why', :p
|
||||
%h3=_'articles.policy.headings.How','How is the policy enforced?'
|
||||
%p=_'articles.policy.paragraphs.How', :p
|
||||
= columns(medium: 12) do
|
||||
%p=_'articles.conference_registration.paragraphs.Confirm_Agreement', :p
|
||||
= form_tag register_path(@this_conference.slug) do
|
||||
.checkbox-field.input-field
|
||||
= label_tag :policy_confirm
|
||||
= check_box_tag :policy_confirm, "1", false, required: true
|
||||
= button_tag :agree, :value => :policy
|
||||
- when :questions
|
||||
= columns(medium: 12) do
|
||||
%h2=_'articles.conference_registration.headings.Registration_Info','Registration Info'
|
||||
= columns(medium: 5, large: 4) do
|
||||
%p=_'articles.conference_registration.paragraphs.Registration_Info', :p
|
||||
= columns(medium: 7, large: 8) do
|
||||
= form_tag register_path(@this_conference.slug) do
|
||||
%h3=_'articles.conference_registration.headings.name','What is your name?'
|
||||
.text-field.input-field
|
||||
= label_tag :name
|
||||
= text_field_tag :name, @name, required: true
|
||||
%h3=_'articles.conference_registration.headings.location','Where are you coming from?'
|
||||
.text-field.input-field
|
||||
= label_tag :location
|
||||
= text_field_tag :location, @registration.city, required: true
|
||||
%h3=_'articles.conference_registration.headings.arrival_and_departure','How long do you plan to spend in the area?'
|
||||
.date-span.input-field
|
||||
.date-labels
|
||||
= label_tag :arrival
|
||||
= label_tag :departure
|
||||
.date-field.input-field
|
||||
= date_field_tag :arrival, @registration.arrival.strftime("%Y-%m-%d")
|
||||
= date_field_tag :departure, @registration.departure.strftime("%Y-%m-%d")
|
||||
%h3=_'articles.conference_registration.headings.housing','Do you need a place to stay?'
|
||||
.radio-button-field.input-field
|
||||
- [:none, :tent, :house].each do |option|
|
||||
= radio_button_tag :housing, option, (@registration.housing || '').to_sym == option, required: true
|
||||
= label_tag "housing_#{option}" do
|
||||
- option_name = _"articles.conference_registration.questions.housing.#{option}"
|
||||
= svg_sprite('icons', "bb-#{option}", option_name)
|
||||
= option_name
|
||||
%h3=_'articles.conference_registration.headings.bike','Do you need a bike?'
|
||||
.radio-button-field.input-field
|
||||
- [:none, :small, :medium, :large].each do |option|
|
||||
= radio_button_tag :bike, option, (@registration.bike || '').to_sym == option, required: true
|
||||
= label_tag "bike_#{option}" do
|
||||
- option_name = _"articles.conference_registration.questions.bike.#{option}"
|
||||
= svg_sprite('icons', "bb-#{option == :none ? :none : :bike}", option_name)
|
||||
= option_name
|
||||
%h3=_'articles.conference_registration.headings.other','Anything else we should know about your visit?'
|
||||
.select-field.input-field
|
||||
= label_tag :other
|
||||
= text_area_tag :other, @registration.other
|
||||
= button_tag :register, :value => :save
|
||||
- when :workshops
|
||||
= columns(medium: 12) do
|
||||
%h2=_'articles.conference_registration.headings.Workshops','Workshops'
|
||||
= columns(medium: 6) do
|
||||
%h3=_'articles.conference_registration.headings.Add_Workshop'
|
||||
= form_tag register_path(@this_conference.slug) do
|
||||
.text-field.input-field
|
||||
= text_field_tag :title, nil, required: true
|
||||
= label_tag :title
|
||||
= text_area_tag :info, nil, required: true
|
||||
= button_tag :add
|
||||
= columns(medium: 6) do
|
||||
%h3=_'articles.conference_registration.headings.Your_Workshops'
|
||||
%ul.workshops.my-workshops
|
||||
- @my_workshops.each do |workshop|
|
||||
%li
|
||||
%h4=workshop[:title]
|
||||
.info
|
||||
%h5{:contenteditable => true}=workshop[:title]
|
||||
%p{:contenteditable => true}=workshop[:info]
|
||||
= form_tag register_path(@this_conference.slug) do
|
||||
= button_tag :save, :value => :save
|
||||
= button_tag :delete, :value => :delete
|
||||
= button_tag :cancel, :value => :cancel
|
||||
= columns(medium: 12) do
|
||||
= form_tag register_path(@this_conference.slug) do
|
||||
= button_tag :previous, :value => :registration
|
||||
= button_tag :next, :value => :workshops
|
||||
:javascript
|
||||
function makeWorkshopsClickable() {
|
||||
var workshops = document.querySelectorAll('ul.workshops h4');
|
||||
for (var i = 0; i < workshops.length; i++) {
|
||||
workshops[i].addEventListener('click', function(e) {
|
||||
var workshop = e.target.parentElement;
|
||||
workshop.className = 'view';
|
||||
workshop.querySelector('form').onsubmit = function() {
|
||||
workshop.removeAttribute('class');
|
||||
return false;
|
||||
}
|
||||
}, false);
|
||||
}
|
||||
}
|
||||
makeWorkshopsClickable();
|
||||
- else
|
||||
= columns(medium: 12) do
|
||||
%h2=_'articles.conference_registration.headings.Enter_Your_Email','Enter your email address'
|
||||
= columns(medium: 6, large: 7) do
|
||||
%p=_'articles.conference_registration.paragraphs.confirm_email_address', :p
|
||||
= columns(medium: 6, large: 5) do
|
||||
= form_tag :do_confirm do
|
||||
.email-field.input-field
|
||||
= email_field_tag :email, nil, required: true
|
||||
= label_tag :email
|
||||
= button_tag :register, :value => :register
|
@ -36,6 +36,40 @@
|
||||
%footer= render 'shared/footer'
|
||||
- if content_for?(:footer_scripts)
|
||||
= yield :footer_scripts
|
||||
- if content_for?(:scripts) || content_for?(:dom_ready)
|
||||
:javascript
|
||||
#{content_for?(:scripts) ? "#{yield :scripts}" : ''}#{content_for?(:dom_ready) ? "$(function(){#{yield :dom_ready}});" : ''}
|
||||
-# if content_for?(:scripts) || content_for?(:dom_ready)
|
||||
-# #{content_for?(:scripts) ? "#{yield :scripts}" : ''}#{content_for?(:dom_ready) ? "$(function(){#{yield :dom_ready}});" : ''}
|
||||
:javascript
|
||||
(function() {
|
||||
if (!String.prototype.trim) {
|
||||
(function() {
|
||||
var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
|
||||
String.prototype.trim = function() {
|
||||
return this.replace(rtrim, '');
|
||||
};
|
||||
})();
|
||||
}
|
||||
|
||||
function classExists(elem,className){var p = new RegExp('(^| )'+className+'( |$)');return (elem.className && elem.className.match(p));}
|
||||
function addClass(elem,className){if(classExists(elem,className)){return true;}elem.className += ' '+className;}
|
||||
function removeClass(elem,className){var c = elem.className;var p = new RegExp('(^| )'+className+'( |$)');c = c.replace(p,' ').replace(/ /g,' ');elem.className = c.trim();}
|
||||
|
||||
[].slice.call(document.querySelectorAll('.input-field input')).forEach(function(inputEl) {
|
||||
if (inputEl.value.trim() === '') {
|
||||
inputEl.parentNode.className = inputEl.parentNode.className + ' empty';
|
||||
}
|
||||
|
||||
inputEl.addEventListener('focus', onInputFocus);
|
||||
inputEl.addEventListener('blur', onInputBlur);
|
||||
});
|
||||
|
||||
function onInputFocus(ev) {
|
||||
removeClass(ev.target.parentNode, 'empty')
|
||||
}
|
||||
|
||||
function onInputBlur(ev) {
|
||||
if (ev.target.value.trim() === '') {
|
||||
addClass(ev.target.parentNode, 'empty');
|
||||
}
|
||||
}
|
||||
})();
|
||||
|
||||
|
@ -7,4 +7,13 @@
|
||||
= nav_link '/about', (_'page_titles.About_BikeBike')
|
||||
= nav_link '/policy', (_'page_titles.Safe_Space_Policy')
|
||||
.actions
|
||||
= render 'shared/donate_button', :email_address => (@conference.paypal_email_address || @conference.email_address)
|
||||
- if current_user
|
||||
= form_tag :logout, class: :logout do
|
||||
=hidden_field_tag :url, request.fullpath
|
||||
=button_tag :Log_out
|
||||
- elsif @conference.registration_open
|
||||
- if params[:action] != 'register'
|
||||
= link_to register_path(@conference.slug), class: [:button, :register] do
|
||||
=_'conference.actions.Register'
|
||||
- else
|
||||
= render 'shared/donate_button', :email_address => (@conference.paypal_email_address || @conference.email_address)
|
1
app/views/user_mailer/email_confirmation.html.haml
Normal file
1
app/views/user_mailer/email_confirmation.html.haml
Normal file
@ -0,0 +1 @@
|
||||
%a{href: "#{@host}/confirm/#{@confirmation.token}"}=_'email.confirm.confirm_link'
|
@ -29,8 +29,12 @@ module BikeBike
|
||||
self.paths['config/database'] = Rails.root.join('config', 'database.yml')
|
||||
config.active_record.raise_in_transactional_callbacks = true
|
||||
|
||||
# detect the language using the subdimain
|
||||
I18n.config.language_detection_method = I18n::Config::DETECT_LANGUAGE_FROM_SUBDOMAIN
|
||||
if Rails.env == 'development'
|
||||
I18n.config.language_detection_method = I18n::Config::DETECT_LANGUAGE_FROM_URL_PARAM
|
||||
else
|
||||
# detect the language using the subdimain
|
||||
I18n.config.language_detection_method = I18n::Config::DETECT_LANGUAGE_FROM_SUBDOMAIN
|
||||
end
|
||||
# if we are in our preview environment, set the locale regex to detect the preview- prefix
|
||||
I18n.config.host_locale_regex = /^preview\-([a-z]{2})\.bikebike\.org$/ if Rails.env == 'preview'
|
||||
end
|
||||
|
@ -3,7 +3,7 @@ development:
|
||||
host: bikebike.org
|
||||
|
||||
preview:
|
||||
enabled: true
|
||||
enabled: false
|
||||
host: preview-cdn.bikebike.org
|
||||
protocol: https
|
||||
fallback_protocol: http
|
||||
|
102
config/environments/preview.rb
Normal file
102
config/environments/preview.rb
Normal file
@ -0,0 +1,102 @@
|
||||
BikeBike::Application.configure do
|
||||
# Settings specified here will take precedence over those in config/application.rb.
|
||||
|
||||
# Code is not reloaded between requests.
|
||||
config.cache_classes = true
|
||||
|
||||
# Eager load code on boot. This eager loads most of Rails and
|
||||
# your application in memory, allowing both thread web servers
|
||||
# and those relying on copy on write to perform better.
|
||||
# Rake tasks automatically ignore this option for performance.
|
||||
config.eager_load = true
|
||||
|
||||
# Full error reports are disabled and caching is turned on.
|
||||
config.consider_all_requests_local = false
|
||||
config.action_controller.perform_caching = true
|
||||
|
||||
# Enable Rack::Cache to put a simple HTTP cache in front of your application
|
||||
# Add `rack-cache` to your Gemfile before enabling this.
|
||||
# For large-scale production use, consider using a caching reverse proxy like nginx, varnish or squid.
|
||||
# config.action_dispatch.rack_cache = true
|
||||
|
||||
# Disable Rails's static asset server (Apache or nginx will already do this).
|
||||
config.serve_static_assets = true
|
||||
|
||||
# Compress JavaScripts and CSS.
|
||||
config.assets.js_compressor = :uglifier
|
||||
# config.assets.css_compressor = :sass
|
||||
|
||||
# Do not fallback to assets pipeline if a precompiled asset is missed.
|
||||
#config.assets.compile = true
|
||||
|
||||
# Generate digests for assets URLs.
|
||||
config.assets.digest = true
|
||||
|
||||
# Version of your assets, change this if you want to expire all your assets.
|
||||
config.assets.version = '1.01'
|
||||
|
||||
# Specifies the header that your server uses for sending files.
|
||||
# config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
|
||||
# config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx
|
||||
|
||||
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
|
||||
#config.force_ssl = true
|
||||
|
||||
# Set to :debug to see everything in the log.
|
||||
config.log_level = :info
|
||||
|
||||
#config.cache_classes = true
|
||||
#config.serve_static_assets = true
|
||||
#config.assets.compile = true
|
||||
# config.assets.digest = true
|
||||
|
||||
# Prepend all log lines with the following tags.
|
||||
# config.log_tags = [ :subdomain, :uuid ]
|
||||
|
||||
# Use a different logger for distributed setups.
|
||||
# config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new)
|
||||
|
||||
# Use a different cache store in production.
|
||||
# config.cache_store = :mem_cache_store
|
||||
|
||||
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
|
||||
# config.action_controller.asset_host = "http://assets.example.com"
|
||||
|
||||
# Precompile additional assets.
|
||||
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
|
||||
# config.assets.precompile += %w( search.js )
|
||||
config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif)
|
||||
config.action_controller.asset_host = "https://preview-cdn.bikebike.org"
|
||||
|
||||
# Ignore bad email addresses and do not raise email delivery errors.
|
||||
# Set this to true and configure the email server for immediate delivery to raise delivery errors.
|
||||
# config.action_mailer.raise_delivery_errors = false
|
||||
|
||||
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
|
||||
# the I18n.default_locale when a translation can not be found).
|
||||
config.i18n.fallbacks = true
|
||||
|
||||
# Send deprecation notices to registered listeners.
|
||||
config.active_support.deprecation = :notify
|
||||
|
||||
# Disable automatic flushing of the log to improve performance.
|
||||
# config.autoflush_log = false
|
||||
|
||||
# Use default logging formatter so that PID and timestamp are not suppressed.
|
||||
config.log_formatter = ::Logger::Formatter.new
|
||||
|
||||
config.action_mailer.delivery_method = :smtp
|
||||
config.action_mailer.smtp_settings = {
|
||||
:enable_starttls_auto => true,
|
||||
:address => 'mail.bikebike.org',
|
||||
:domain => 'bikebike.org',
|
||||
:port => 587,
|
||||
:authentication => :plain,
|
||||
:enable_starttls_auto => true,
|
||||
:openssl_verify_mode => 'none',
|
||||
:user_name => 'info@bikebike.org',
|
||||
:password => 'NewOrleans@)!#'
|
||||
}
|
||||
config.action_mailer.raise_delivery_errors = true
|
||||
config.action_mailer.perform_deliveries = true
|
||||
end
|
@ -71,6 +71,8 @@ BikeBike::Application.routes.draw do
|
||||
# get "oauth/:provider" => "oauths#oauth", :as => :auth_at_provider
|
||||
|
||||
get '/organizations/json' => 'organizations#json', :as => :organizations_json
|
||||
match '/conferences/:slug/register' => 'conferences#register', :as => :register, via: [:get, :post]
|
||||
get '/conferences/:slug/register/:button/:confirmation_token' => 'conferences#register', :as => :register_paypal_confirm
|
||||
|
||||
get '/robots.txt' => 'application#robots', :as => :robots_txt
|
||||
get '/humans.txt' => 'application#humans', :as => :humans_txt
|
||||
@ -78,6 +80,7 @@ BikeBike::Application.routes.draw do
|
||||
#
|
||||
get '/confirm/:token' => 'application#confirm', :as => :confirm
|
||||
post '/doconfirm' => 'application#do_confirm', :as => :do_confirm
|
||||
post '/logout' => 'application#user_logout', :as => :logout
|
||||
post '/translator-request' => 'application#translator_request', :as => :translator_request
|
||||
|
||||
get '/about' => 'application#about', :as => :about
|
||||
|
@ -0,0 +1,10 @@
|
||||
class AddCityToConferenceRegistrations < ActiveRecord::Migration
|
||||
def change
|
||||
add_column :conference_registrations, :city, :string
|
||||
add_column :conference_registrations, :arrival, :datetime
|
||||
add_column :conference_registrations, :departure, :datetime
|
||||
add_column :conference_registrations, :housing, :string
|
||||
add_column :conference_registrations, :bike, :string
|
||||
add_column :conference_registrations, :other, :text
|
||||
end
|
||||
end
|
@ -0,0 +1,7 @@
|
||||
class AddPaypalInfoToConferences < ActiveRecord::Migration
|
||||
def change
|
||||
add_column :conferences, :paypal_username, :string
|
||||
add_column :conferences, :paypal_password, :string
|
||||
add_column :conferences, :paypal_signature, :string
|
||||
end
|
||||
end
|
11
db/schema.rb
11
db/schema.rb
@ -11,7 +11,7 @@
|
||||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 20150412203357) do
|
||||
ActiveRecord::Schema.define(version: 20150804032547) do
|
||||
|
||||
# These are extensions that must be enabled in order to support this database
|
||||
enable_extension "plpgsql"
|
||||
@ -72,6 +72,12 @@ ActiveRecord::Schema.define(version: 20150412203357) do
|
||||
t.string "payment_confirmation_token", limit: 255
|
||||
t.string "payment_info", limit: 255
|
||||
t.integer "registration_fees_paid"
|
||||
t.string "city"
|
||||
t.datetime "arrival"
|
||||
t.datetime "departure"
|
||||
t.string "housing"
|
||||
t.string "bike"
|
||||
t.text "other"
|
||||
end
|
||||
|
||||
create_table "conference_types", force: :cascade do |t|
|
||||
@ -108,6 +114,9 @@ ActiveRecord::Schema.define(version: 20150412203357) do
|
||||
t.string "locale"
|
||||
t.string "email_address"
|
||||
t.string "paypal_email_address"
|
||||
t.string "paypal_username"
|
||||
t.string "paypal_password"
|
||||
t.string "paypal_signature"
|
||||
end
|
||||
|
||||
create_table "dynamic_translation_records", force: :cascade do |t|
|
||||
|
Loading…
x
Reference in New Issue
Block a user