'
- objects.each_index do |i|
- @this = objects[i]
- result += '- '
- result += hidden_field_tag (id + "[#{i}]"), objects[i][id]
- result += hidden_field_tag ('position' + "[#{i}]"), i, :class => 'sortable-position'
- if block_given?
- result += capture(objects[i], &block)
- end
- result += '
'
- end
- result += ''
- result.html_safe
- end
-
- def tabs object, tabs
- type = object.class.name.downcase
- tab_list = ''
-
- tabs.each do |tab|
- link = nil
- if self.respond_to?(type + '_' + tab.to_s + '_path')
- link = self.send(type + '_' + tab.to_s + '_path', object)
- elsif self.respond_to?(tab.to_s + '_' + type + '_path')
- link = self.send(tab.to_s + '_' + type + '_path', object)
- end
-
- c = ['tab', 'tab-' + (link ? tab.to_s : 'show')]
- if params[:action] == tab.to_s
- c << 'current'
- end
- link_html = ''
- if tab.is_a?(Hash)
- func = tab.keys[0]
- val = tab[func]
- args = val ? (val.is_a?(Array) ? (val.collect { |v| object[v] } ) : [object[val]] ) : nil
-
- link_html = link_to func.to_s.gsub(/_path$/, ''), args ? self.send(func, args) : self.send(func), :class => c
- else
- #x
- #link_html = link_to tab, link || object, :class => c
- end
- tab_list += link_html
- end
- ('').html_safe
- end
-
- def tabs!
- object = nil
- tabs = nil
- case params[:controller]
- when 'organizations'
- object = @organization
- tabs = OrganizationsHelper::TABS
- when 'conferences'
- object = @conference
- tabs = ConferencesHelper::TABS
- when 'workshops'
- object = [@conference, @workshop]
- tabs = WorkshopsHelper::TABS
- end
-
- if object && tabs
- return tabs object, tabs
- end
- end
-
- def sub_tabs object, tabs
- type = object.class.name.downcase
- tab_list = ''
-
- tabs.each do |tab|
- link = nil
- if self.respond_to?(type + '_' + tab.to_s + '_path')
- link = self.send(type + '_' + tab.to_s + '_path', object)
- elsif self.respond_to?(tab.to_s + '_' + type + '_path')
- link = self.send(tab.to_s + '_' + type + '_path', object)
- end
-
- c = ['sub-tab', 'sub-tab-' + (link ? tab.to_s : 'show')]
- if current_page?(link)
- c << 'current'
- end
- tab_list += link_to tab, link || object, :class => c
- end
- ('').html_safe
- end
-
- def sub_tabs!
- object = nil
- tabs = nil
- case params[:controller]
- when 'organizations'
- object = @organization
- tabs = OrganizationsHelper::SUB_TABS
- when 'conferences'
- object = @conference
- tabs = ConferencesHelper::SUB_TABS
- end
-
- if object && tabs
- return sub_tabs object, tabs
- end
- end
-
- def p(object, attribute)
- content = object.send(attribute.to_s)
- result = ''
- if content =~ /<(p|span|h\d|div)[^>]*>/
- result = content.gsub(/\s*(style|class|id|width|height|font)=\".*?\"/, '')
- .gsub(/ /, ' ')
- .gsub(/<(\/)?\s*h\d\s*>/, '<\1h3>')
- .gsub(/(.*?)
\s*(
)+/, '
\1
')
- .gsub(/]*>\s*(.*?)\s*<\/span>/, '\1')
- .gsub(/\s*<\/p>/, '')
- .gsub(/<(\/)?div>/, '<\1p>')
- if !(result =~ /
]*>/)
- result = '
' + result + '
'
- end
- else
- result = '' + content.strip.gsub(/\s*\n+\s*/, '
') + '
'
- end
- result.html_safe
- end
-
- def form_field(f, response = nil)
- id = 'field_' + f.id.to_s
- html = p(f, 'title')
-
- options = JSON.parse(f.options)
- if f.field_type == 'multiple'
- if f.help
- html += ('' + p(f, 'help') + '
').html_safe
- end
-
- opts = Hash.new
- options['options'].split(/\s*\n\s*/).each do |value|
- kv = value.split(/\s*\|\s*/, 2)
- opts[kv[0]] = kv[1]
- end
-
- val = response ? ActiveSupport::JSON.decode(response.data) : Hash.new
-
- if f.repeats?
- is_array = f.is_array?
- opts.each do |key, value|
- n = (id + (is_array ? ('_' + key) : '')).to_sym
- v = is_array ? (val ? val[key] : nil) : key
- o = {:label => value}
- if f.required
- options[:required] = true
- end
- html += _form_field(options['selection_type'], n, v, o)
- end
- else
- html += _form_field(options['selection_type'], id.to_sym, options_for_select(opts.invert, val), {})
- end
- else
- #html += field(id.to_sym, options['input_type'] + '_tag', label: false, placeholder: f.help, value: response ? ActiveSupport::JSON.decode(response.data) : nil, required: f.required)
- opts = {label: false, placeholder: f.help && f.help.length > 0 ? f.help : false}
- if f.required
- opts[:required] = true
- end
- html += _form_field(options['input_type'], id.to_sym, response ? ActiveSupport::JSON.decode(response.data) : nil, opts)
- end
-
- html.html_safe
- end
-
- def t(*a)
- _(*a)
- end
-
- def lookup_ip
- if request.remote_ip == '127.0.0.1'
- session['remote_ip'] || (session['remote_ip'] = open("http://checkip.dyndns.org").first.gsub(/^.*\s([\d\.]+).*$/s, '\1').gsub(/[^\.\d]/, ''))
- else
- request.remote_ip
- end
- 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
- end
- end
-
- def hash_to_html_attributes(hash, prefix = '')
- attributes = ''
- if hash
- hash.each { |k,v|
- k = k.to_s
- if v
- if v.is_a?(Hash)
- attributes += hash_to_html_attributes(v, 'data-')
- else
- attributes += " #{k}=\"" + (v.is_a?(Array) ? v.join(' ') : v) + '"'
- end
- end
- }
- end
- attributes
- end
-
- def icon(id, attributes = nil)
- ('').html_safe
- end
-
- def static_map(location, zoom, width, height)
- require 'fileutils'
- local_file_name = "#{location}-#{width}x#{height}z#{zoom}.png"
- file = File.join("public", "maps/#{local_file_name}")
- FileUtils.mkdir_p("public/maps") unless File.directory?("public/maps")
- if !File.exist?(file)
- url = "https://maps.googleapis.com/maps/api/staticmap?center=#{location}&zoom=#{zoom}&size=#{width}x#{height}&maptype=roadmap&markers=size:small%7C#{location}&key=AIzaSyAH7U8xUUb8IwDPy1wWuYGprzxf4E1Jj4o"
- require 'open-uri'
- open(file, 'wb') do |f|
- f << open(url).read
- end
- end
-
- cdn("/maps/#{local_file_name}")
- end
-
- def cdn(file)
- (Rails.application.config.action_controller.asset_host || '') + file
- end
-
- def is_production?
- Rails.env == 'production'
- end
-
- def is_test?
- Rails.env == 'test'
- end
-
- def subdomain
- request.env['SERVER_NAME'].gsub(/^(\w+)\..*$/, '\1')
- end
-
- def is_test_server?
- 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 rand_hash(length = 16, model = nil, field = nil)
- if field
- hash = rand_hash(length)
- while !model.to_s.to_s.singularize.classify.constantize.find_by(field => hash).nil?
- hash = rand_hash(length)
- end
- end
- rand(36**length).to_s(36)
- end
-
- def get_panoramio_image(location)
- if is_test?
- params[:image] = 'panoramio.jpg'
- params[:attribution_id] = 1234
- params[:attribution_user_id] = 5678
- params[:attribution_name] = 'Some Guy'
- params[:attribution_src] = 'panoramio'
- return params
- end
-
- location = location.city + ', ' + (location.territory ? location.territory + ' ' : '') + location.country
- $panoramios ||= Hash.new
- $panoramios[location] ||= 0
- $panoramios[location] += 1
- result = Geocoder.search(location).first
- if result
- points = Geocoder::Calculations.bounding_box([result.latitude, result.longitude], 5, { :unit => :km })
- options = {:set => :public, :size => :original, :from => 0, :to => 20, :mapfilter => false, :miny => points[0], :minx => points[1], :maxy => points[2], :maxx => points[3]}
- url = 'http://www.panoramio.com/map/get_panoramas.php?' + options.to_query
- response = JSON.parse(open(url).read)
- response['photos'].each { |img|
- if img['width'].to_i > 980
- if Organization.find_by(:cover_attribution_id => img['photo_id'], :cover_attribution_src => 'panoramio').nil? && Conference.find_by(:cover_attribution_id => img['photo_id'], :cover_attribution_src => 'panoramio').nil?
- params[:image] = img['photo_file_url']
- params[:attribution_id] = img['photo_id']
- params[:attribution_user_id] = img['owner_id']
- params[:attribution_name] = img['owner_name']
- params[:attribution_src] = 'panoramio'
- return params
- end
- end
- }
- end
- return nil
- end
-
- def get_secure_info(name)
- YAML.load(File.read(Rails.root.parent.join("secure/#{name.to_s}.yml")))[Rails.env].symbolize_keys
- end
-
- private
- def _form_field(type, name, value, options)
- if type == 'check_box'
- self.send(type + '_tag', name, "1", value, options)
- else
- self.send(type + '_tag', name, value, options)
- end
- end
-end
+
+module ApplicationHelper
+ @@keyQueue = nil
+ @@translationsOnThisPage = nil
+ @@lastTranslation = nil
+ @@allTranslations = nil
+ @@no_banner = true
+ @@banner_attribution_details = nil
+ @@banner_image = nil
+ @@has_content = true
+ @@front_page = false
+ @@body_class = nil
+ @@test_location = nil
+
+ def init_vars
+ @@keyQueue = nil
+ @@translationsOnThisPage = nil
+ @@lastTranslation = nil
+ @@allTranslations = nil
+ @@no_banner = true
+ @@banner_attribution_details = nil
+ @@banner_image = nil
+ @@has_content = true
+ @@front_page = false
+ @@body_class = nil
+ end
+
+ def this_is_the_front_page
+ @@front_page = true
+ end
+
+ def is_this_the_front_page?
+ return @@front_page
+ end
+
+ def ThereAreTranslationsOnThisPage?
+ @@translationsOnThisPage
+ end
+
+ def get_all_translations
+ @@allTranslations
+ end
+
+ def title(page_title)
+ content_for(:title) { page_title.to_s }
+ end
+
+ def description(page_description)
+ content_for(:description) { page_description.to_s }
+ end
+
+ def banner_image(banner_image, name: nil, id: nil, user_id: nil, src: nil)
+ @@no_banner = false
+ @@banner_image = banner_image
+ if (name || id || user_id || src)
+ @@banner_attribution_details = {:name => name, :id => id, :user_id => user_id, :src => src}
+ end
+ content_for(:banner_image) { banner_image.to_s }
+ end
+
+ def banner_attrs(banner_image)
+ @@no_banner = false
+ if banner_image.length > 0
+ @@banner_image = banner_image
+ return {style: 'background-image: url(' + banner_image + ');', class: 'has-image' }
+ end
+ {class: 'no-image'}
+ end
+
+ def has_banner?
+ !@@no_banner
+ end
+
+ def has_content?
+ @@has_content
+ end
+
+ def has_no_content
+ @@has_content = false
+ end
+
+ def banner_title(banner_title)
+ @@no_banner = false
+ content_for(:banner) { ('' + banner_title.to_s + '
').html_safe }
+ end
+
+ def banner_attribution
+ if @@banner_image && @@banner_attribution_details
+ src = @@banner_attribution_details[:src]
+ attribution = ''
+ attribution.html_safe
+ end
+ end
+
+ def dom_ready(&block)
+ content_for(:dom_ready, &block)
+ end
+
+ def body_class(c)
+ @@body_class ||= Array.new
+ @@body_class << (c.is_a?(Array) ? c.join(' ') : c)
+ end
+
+ def page_style(style)
+ classes = ['page-style-' + style.to_s]
+ #if @@no_banner
+ # classes << 'no-banner'
+ #end
+ if ThereAreTranslationsOnThisPage?
+ classes << 'has-translations'
+ end
+ if !@@has_content
+ classes << 'no-content'
+ end
+ if @@banner_image
+ classes << 'has-banner-image'
+ end
+ if @@body_class
+ classes << @@body_class.join(' ')
+ end
+
+ if params[:controller]
+ classes << params[:controller]
+
+ if params[:action]
+ classes << params[:controller] + '-' + params[:action]
+ end
+ end
+ content_for(:page_style) { classes.join(' ') }
+ end
+
+ def yield_or_default(section, default = '')
+ content_for?(section) ? content_for(section) : default
+ end
+
+ def _(key, behavior = nil, behavior_size = nil, locale: nil, vars: {}, html: nil, blockData: {}, &block)
+ options = vars
+ options[:fallback] = true
+ if behavior
+ options[:behavior] = behavior
+ options[:behavior_size] = behavior_size
+ end
+ if locale
+ options[:locale] = locale.to_sym
+ end
+ #if vars
+ # puts "\nVARS:\t#{vars}\n"
+ #end
+ I18n.translate(key, options)
+
+ #queued_keys = nil
+# #result = nil
+#
+# #if key.kind_of?(Hash)
+# # blockData.merge!(key)
+# # key = key.keys
+# #end
+#
+# #if block_given?
+# # @@keyQueue ||= Array.new
+#
+# # if key.kind_of?(Array)
+# # @@keyQueue += key
+# # else
+# # @@keyQueue << key
+# # end
+# #end
+#
+# #if key.kind_of?(Array)
+# # new_key = key.shift
+# # if key.count > 0
+# # queued_keys = key.dup
+# # end
+# # key = new_key
+# #end
+#
+# #if blockData[key]
+# # behavior = blockData[key][:behavior] || nil
+# # behavior_size = blockData[key][:behavior_size] || nil
+# # vars = blockData[key][:vars] || {}
+# #end
+#
+# #@@lastTranslation = nil
+# #generate_control = _can_translate?
+#
+# #puts "\nLLOOCCAALLEE:\t#{locale.to_s}"
+# #translation = _do_translate(key, vars, behavior, behavior_size, locale)
+#
+# #if block_given?
+# # html = capture(&block)
+# #end
+#
+# #if html
+# # translation['html'] = html.gsub('%' + key + '%', translation['untranslated'])
+# #end
+#
+# #if generate_control
+# # @@lastTranslation = translation
+# # @@allTranslations ||= Hash.new
+# # @@allTranslations[key] = key
+#
+# # result = _translate_me(translation)
+# #end
+#
+# #result ||= translation['html'] || (behavior.to_s == 'strict' ? nil : translation['untranslated'])
+#
+# #if queued_keys
+# # return _ queued_keys, behavior, behavior_size, vars: vars, html: result, blockData: blockData
+# #end
+#
+ #return result
+ end
+
+ def _translate_me(translation)
+ @@translationsOnThisPage = true
+ datakeys = ''
+ translation['vars'].each { |key, value| datakeys += ' data-var-' + key.to_s + '="' + value.to_s.gsub('"', '"') + '"' }
+ ('' + (translation['html'] || translation['untranslated']) + '').to_s.html_safe
+ end
+
+ def _do_translate(key, vars, behavior, behavior_size, locale)
+ translation = {'key' => key, 'lang' => '0', 'vars' => vars}
+ v = vars.dup
+ begin
+ v[:raise] = true
+ options = {:raise => true}
+ if locale
+ options[:locale] = locale.to_sym
+ end
+ translation['untranslated'] = I18n.translate(key, v, options)
+ translation['lang'] = locale.to_s
+ translation['is_translated'] = true
+
+ hash = Hash.new
+ translations = Translation.where(["locale = ? AND key LIKE ?", locale.to_s, key + '%']).take(6).each { |o| hash[o.key] = o.value }
+ translation['translated'] = hash.to_json.gsub('"', '"')
+ rescue I18n::MissingTranslationData
+ default_translation = I18n::MissingTranslationExceptionHandler.note(key, behavior, behavior_size)
+ translation['untranslated'] = default_translation
+ end
+ return translation
+ end
+
+ def _can_translate?()
+ false
+ end
+
+ def _!()
+ if @@keyQueue
+ return '%' + @@keyQueue.shift + '%'
+ end
+ end
+
+ def _?()
+ if @@keyQueue
+ return '%' + @@keyQueue[0] + '%'
+ end
+ end
+
+ def sortable(objects, id = 'id', url: nil, &block)
+ result = ''
+ objects.each_index do |i|
+ @this = objects[i]
+ result += '- '
+ result += hidden_field_tag (id + "[#{i}]"), objects[i][id]
+ result += hidden_field_tag ('position' + "[#{i}]"), i, :class => 'sortable-position'
+ if block_given?
+ result += capture(objects[i], &block)
+ end
+ result += '
'
+ end
+ result += ''
+ result.html_safe
+ end
+
+ def tabs object, tabs
+ type = object.class.name.downcase
+ tab_list = ''
+
+ tabs.each do |tab|
+ link = nil
+ if self.respond_to?(type + '_' + tab.to_s + '_path')
+ link = self.send(type + '_' + tab.to_s + '_path', object)
+ elsif self.respond_to?(tab.to_s + '_' + type + '_path')
+ link = self.send(tab.to_s + '_' + type + '_path', object)
+ end
+
+ c = ['tab', 'tab-' + (link ? tab.to_s : 'show')]
+ if params[:action] == tab.to_s
+ c << 'current'
+ end
+ link_html = ''
+ if tab.is_a?(Hash)
+ func = tab.keys[0]
+ val = tab[func]
+ args = val ? (val.is_a?(Array) ? (val.collect { |v| object[v] } ) : [object[val]] ) : nil
+
+ link_html = link_to func.to_s.gsub(/_path$/, ''), args ? self.send(func, args) : self.send(func), :class => c
+ else
+ #x
+ #link_html = link_to tab, link || object, :class => c
+ end
+ tab_list += link_html
+ end
+ ('').html_safe
+ end
+
+ def tabs!
+ object = nil
+ tabs = nil
+ case params[:controller]
+ when 'organizations'
+ object = @organization
+ tabs = OrganizationsHelper::TABS
+ when 'conferences'
+ object = @conference
+ tabs = ConferencesHelper::TABS
+ when 'workshops'
+ object = [@conference, @workshop]
+ tabs = WorkshopsHelper::TABS
+ end
+
+ if object && tabs
+ return tabs object, tabs
+ end
+ end
+
+ def sub_tabs object, tabs
+ type = object.class.name.downcase
+ tab_list = ''
+
+ tabs.each do |tab|
+ link = nil
+ if self.respond_to?(type + '_' + tab.to_s + '_path')
+ link = self.send(type + '_' + tab.to_s + '_path', object)
+ elsif self.respond_to?(tab.to_s + '_' + type + '_path')
+ link = self.send(tab.to_s + '_' + type + '_path', object)
+ end
+
+ c = ['sub-tab', 'sub-tab-' + (link ? tab.to_s : 'show')]
+ if current_page?(link)
+ c << 'current'
+ end
+ tab_list += link_to tab, link || object, :class => c
+ end
+ ('').html_safe
+ end
+
+ def sub_tabs!
+ object = nil
+ tabs = nil
+ case params[:controller]
+ when 'organizations'
+ object = @organization
+ tabs = OrganizationsHelper::SUB_TABS
+ when 'conferences'
+ object = @conference
+ tabs = ConferencesHelper::SUB_TABS
+ end
+
+ if object && tabs
+ return sub_tabs object, tabs
+ end
+ end
+
+ def p(object, attribute)
+ content = object.send(attribute.to_s)
+ result = ''
+ if content =~ /<(p|span|h\d|div)[^>]*>/
+ result = content.gsub(/\s*(style|class|id|width|height|font)=\".*?\"/, '')
+ .gsub(/ /, ' ')
+ .gsub(/<(\/)?\s*h\d\s*>/, '<\1h3>')
+ .gsub(/(.*?)
\s*(
)+/, '
\1
')
+ .gsub(/]*>\s*(.*?)\s*<\/span>/, '\1')
+ .gsub(/\s*<\/p>/, '')
+ .gsub(/<(\/)?div>/, '<\1p>')
+ if !(result =~ /
]*>/)
+ result = '
' + result + '
'
+ end
+ else
+ result = '' + content.strip.gsub(/\s*\n+\s*/, '
') + '
'
+ end
+ result.html_safe
+ end
+
+ def form_field(f, response = nil)
+ id = 'field_' + f.id.to_s
+ html = p(f, 'title')
+
+ options = JSON.parse(f.options)
+ if f.field_type == 'multiple'
+ if f.help
+ html += ('' + p(f, 'help') + '
').html_safe
+ end
+
+ opts = Hash.new
+ options['options'].split(/\s*\n\s*/).each do |value|
+ kv = value.split(/\s*\|\s*/, 2)
+ opts[kv[0]] = kv[1]
+ end
+
+ val = response ? ActiveSupport::JSON.decode(response.data) : Hash.new
+
+ if f.repeats?
+ is_array = f.is_array?
+ opts.each do |key, value|
+ n = (id + (is_array ? ('_' + key) : '')).to_sym
+ v = is_array ? (val ? val[key] : nil) : key
+ o = {:label => value}
+ if f.required
+ options[:required] = true
+ end
+ html += _form_field(options['selection_type'], n, v, o)
+ end
+ else
+ html += _form_field(options['selection_type'], id.to_sym, options_for_select(opts.invert, val), {})
+ end
+ else
+ #html += field(id.to_sym, options['input_type'] + '_tag', label: false, placeholder: f.help, value: response ? ActiveSupport::JSON.decode(response.data) : nil, required: f.required)
+ opts = {label: false, placeholder: f.help && f.help.length > 0 ? f.help : false}
+ if f.required
+ opts[:required] = true
+ end
+ html += _form_field(options['input_type'], id.to_sym, response ? ActiveSupport::JSON.decode(response.data) : nil, opts)
+ end
+
+ html.html_safe
+ end
+
+ def t(*a)
+ _(*a)
+ end
+
+ def lookup_ip
+ if request.remote_ip == '127.0.0.1'
+ session['remote_ip'] || (session['remote_ip'] = open("http://checkip.dyndns.org").first.gsub(/^.*\s([\d\.]+).*$/s, '\1').gsub(/[^\.\d]/, ''))
+ else
+ request.remote_ip
+ end
+ 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
+ end
+ end
+
+ def hash_to_html_attributes(hash, prefix = '')
+ attributes = ''
+ if hash
+ hash.each { |k,v|
+ k = k.to_s
+ if v
+ if v.is_a?(Hash)
+ attributes += hash_to_html_attributes(v, 'data-')
+ else
+ attributes += " #{k}=\"" + (v.is_a?(Array) ? v.join(' ') : v) + '"'
+ end
+ end
+ }
+ end
+ attributes
+ end
+
+ def icon(id, attributes = nil)
+ ('').html_safe
+ end
+
+ def static_map(location, zoom, width, height)
+ require 'fileutils'
+ local_file_name = "#{location}-#{width}x#{height}z#{zoom}.png"
+ file = File.join("public", "maps/#{local_file_name}")
+ FileUtils.mkdir_p("public/maps") unless File.directory?("public/maps")
+ if !File.exist?(file)
+ url = "https://maps.googleapis.com/maps/api/staticmap?center=#{location}&zoom=#{zoom}&size=#{width}x#{height}&maptype=roadmap&markers=size:small%7C#{location}&key=AIzaSyAH7U8xUUb8IwDPy1wWuYGprzxf4E1Jj4o"
+ require 'open-uri'
+ open(file, 'wb') do |f|
+ f << open(url).read
+ end
+ end
+
+ cdn("/maps/#{local_file_name}")
+ end
+
+ def cdn(file)
+ (Rails.application.config.action_controller.asset_host || '') + file
+ end
+
+ def is_production?
+ Rails.env == 'production'
+ end
+
+ def is_test?
+ Rails.env == 'test'
+ end
+
+ def subdomain
+ request.env['SERVER_NAME'].gsub(/^(\w+)\..*$/, '\1')
+ end
+
+ def is_test_server?
+ 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 rand_hash(length = 16, model = nil, field = nil)
+ if field
+ hash = rand_hash(length)
+ while !model.to_s.to_s.singularize.classify.constantize.find_by(field => hash).nil?
+ hash = rand_hash(length)
+ end
+ end
+ rand(36**length).to_s(36)
+ end
+
+ def get_panoramio_image(location)
+ if is_test?
+ params[:image] = 'panoramio.jpg'
+ params[:attribution_id] = 1234
+ params[:attribution_user_id] = 5678
+ params[:attribution_name] = 'Some Guy'
+ params[:attribution_src] = 'panoramio'
+ return params
+ end
+
+ location = location.city + ', ' + (location.territory ? location.territory + ' ' : '') + location.country
+ $panoramios ||= Hash.new
+ $panoramios[location] ||= 0
+ $panoramios[location] += 1
+ result = Geocoder.search(location).first
+ if result
+ points = Geocoder::Calculations.bounding_box([result.latitude, result.longitude], 5, { :unit => :km })
+ options = {:set => :public, :size => :original, :from => 0, :to => 20, :mapfilter => false, :miny => points[0], :minx => points[1], :maxy => points[2], :maxx => points[3]}
+ url = 'http://www.panoramio.com/map/get_panoramas.php?' + options.to_query
+ response = JSON.parse(open(url).read)
+ response['photos'].each { |img|
+ if img['width'].to_i > 980
+ if Organization.find_by(:cover_attribution_id => img['photo_id'], :cover_attribution_src => 'panoramio').nil? && Conference.find_by(:cover_attribution_id => img['photo_id'], :cover_attribution_src => 'panoramio').nil?
+ params[:image] = img['photo_file_url']
+ params[:attribution_id] = img['photo_id']
+ params[:attribution_user_id] = img['owner_id']
+ params[:attribution_name] = img['owner_name']
+ params[:attribution_src] = 'panoramio'
+ return params
+ end
+ end
+ }
+ end
+ return nil
+ end
+
+ def get_secure_info(name)
+ YAML.load(File.read(Rails.root.join("config/#{name.to_s}.yml")))[Rails.env].symbolize_keys
+ end
+
+ private
+ def _form_field(type, name, value, options)
+ if type == 'check_box'
+ self.send(type + '_tag', name, "1", value, options)
+ else
+ self.send(type + '_tag', name, value, options)
+ end
+ end
+end
diff --git a/config/locales/translation-info.yml b/config/locales/translation-info.yml
index 9fbed8b..5a65ce8 100644
--- a/config/locales/translation-info.yml
+++ b/config/locales/translation-info.yml
@@ -1,979 +1,2756 @@
----
-world.ca.ns.name:
- languages:
- - en
- pages:
- - /
- data:
- - '{"id":1489,"locale":"en","key":"world.ca.ns.name","value":"Nova Scotia","interpolations":[],"is_proc":false,"created_at":"2014-05-04T05:27:57.814Z","updated_at":"2014-05-04T05:27:57.821Z"}'
-time.formats.date:
- languages:
- - en
- pages:
- - /
- data:
- - '{"id":1618,"locale":"en","key":"time.formats.date","value":"%B %d, %Y","interpolations":[],"is_proc":false,"created_at":"2014-09-04T23:26:16.141Z","updated_at":"2014-09-04T23:26:16.141Z"}'
-date.month_names:
- languages: []
- pages:
- - /
- data: []
-conference.More_Info:
- languages:
- - en
- pages:
- - /
- data:
- - '{"id":92004,"locale":"en","key":"conference.More_Info","value":"More Info","interpolations":[],"is_proc":false,"created_at":"2014-07-22T00:04:56.683Z","updated_at":"2014-07-22T00:04:56.696Z"}'
-Conferences:
- languages:
- - de
- - en
- pages:
- - /
- data:
- - '{"id":1503,"locale":"de","key":"Conferences","value":"Konferenzen","interpolations":[],"is_proc":false,"created_at":"2014-05-04T14:27:46.772Z","updated_at":"2014-05-04T14:27:46.789Z"}'
- - '{"id":1481,"locale":"en","key":"Conferences","value":"Conferences","interpolations":[],"is_proc":false,"created_at":"2014-05-04T05:05:06.760Z","updated_at":"2014-05-04T05:26:07.021Z"}'
-Organizations:
- languages:
- - en
- - de
- pages:
- - /
- data:
- - '{"id":1482,"locale":"en","key":"Organizations","value":"Organizations","interpolations":[],"is_proc":false,"created_at":"2014-05-04T05:05:46.445Z","updated_at":"2014-07-21T01:51:57.345Z"}'
- - '{"id":1505,"locale":"de","key":"Organizations","value":"Organisationen","interpolations":[],"is_proc":false,"created_at":"2014-05-04T14:29:44.542Z","updated_at":"2014-05-04T14:29:44.557Z"}'
-Resources:
- languages:
- - en
- - de
- pages:
- - /
- data:
- - '{"id":1483,"locale":"en","key":"Resources","value":"Resources","interpolations":[],"is_proc":false,"created_at":"2014-05-04T05:05:50.964Z","updated_at":"2014-05-04T05:25:53.510Z"}'
- - '{"id":1506,"locale":"de","key":"Resources","value":"Ressourcen","interpolations":[],"is_proc":false,"created_at":"2014-05-04T14:36:08.331Z","updated_at":"2014-05-04T14:36:08.438Z"}'
-donate.button_label:
- languages: []
- pages:
- - /
- - /conferences/:conference_type/:conference_slug/register(/:step)
- data: []
-conference.Register_Now:
- languages:
- - en
- pages:
- - /
- data:
- - '{"id":92005,"locale":"en","key":"conference.Register_Now","value":"Register Now","interpolations":[],"is_proc":false,"created_at":"2014-07-22T00:05:01.141Z","updated_at":"2014-07-22T00:05:01.155Z"}'
-form.placeholder.Enter_your_step:
- languages:
- - en
- pages:
- - /
- - /conferences/:conference_type/:conference_slug/register(/:step)
- data:
- - '{"id":91970,"locale":"en","key":"form.placeholder.Enter_your_step","value":"NIL","interpolations":[],"is_proc":false,"created_at":"2014-07-21T01:48:28.017Z","updated_at":"2014-07-21T01:48:28.028Z"}'
-form.placeholder.Enter_your_email:
- languages:
- - en
- pages:
- - /
- data:
- - '{"id":91961,"locale":"en","key":"form.placeholder.Enter_your_email","value":"someone@example.com","interpolations":[],"is_proc":false,"created_at":"2014-07-21T01:39:53.873Z","updated_at":"2014-07-21T02:17:18.066Z"}'
-form.label.email:
- languages:
- - en
- pages:
- - /
- data:
- - '{"id":91944,"locale":"en","key":"form.label.email","value":"Email","interpolations":[],"is_proc":false,"created_at":"2014-07-21T01:33:11.129Z","updated_at":"2014-07-21T01:33:11.140Z"}'
-register:
- languages:
- - en
- pages:
- - /
- data:
- - '{"id":91980,"locale":"en","key":"register","value":"Register","interpolations":[],"is_proc":false,"created_at":"2014-07-21T01:52:22.219Z","updated_at":"2014-07-21T01:52:22.261Z"}'
- - '{"id":92009,"locale":"en","key":"register.new_organization.no_city_error","value":"Please
- enter your organization''s city","interpolations":[],"is_proc":false,"created_at":"2014-07-22T00:08:55.720Z","updated_at":"2014-07-22T00:08:55.758Z"}'
- - '{"id":92010,"locale":"en","key":"register.new_organization.no_street_error","value":"Please
- enter your organization''s street address","interpolations":[],"is_proc":false,"created_at":"2014-07-22T00:09:13.603Z","updated_at":"2014-07-22T00:09:13.616Z"}'
- - '{"id":92011,"locale":"en","key":"register.new_organization.same_email_as_attendee_error","value":"This
- email needs to be different than your own personal email, we need to keep in touch
- with your organization even if you''re gone in years to come.","interpolations":[],"is_proc":false,"created_at":"2014-07-22T00:09:49.895Z","updated_at":"2014-07-22T00:11:24.105Z"}'
- - '{"id":92013,"locale":"en","key":"register.organizations.confirm_thanks.title","value":"","interpolations":[],"is_proc":false,"created_at":"2014-07-22T00:10:13.343Z","updated_at":"2014-09-04T23:26:17.291Z"}'
- - '{"id":92012,"locale":"en","key":"register.organizations.confirm_thanks.is_not_workshop_host.help","value":"","interpolations":[],"is_proc":false,"created_at":"2014-07-22T00:10:09.190Z","updated_at":"2014-09-04T23:26:17.315Z"}'
- - '{"id":92008,"locale":"en","key":"register.new_organization.no_name_error","value":"Please
- tell us your organization''s name","interpolations":[],"is_proc":false,"created_at":"2014-07-22T00:06:48.248Z","updated_at":"2014-09-04T23:26:24.598Z"}'
-world.ca.nb.name:
- languages:
- - en
- pages:
- - /
- - /conferences/:conference_type/:conference_slug/register(/:step)
- data:
- - '{"id":1487,"locale":"en","key":"world.ca.nb.name","value":"New Brunswick","interpolations":[],"is_proc":false,"created_at":"2014-05-04T05:27:41.999Z","updated_at":"2014-05-04T05:27:42.039Z"}'
-registration.questions.title:
- languages: []
- pages:
- - /conferences/:conference_type/:conference_slug/register(/:step)
- data: []
-form.placeholder.Enter_your_firstname:
- languages:
- - en
- pages:
- - /conferences/:conference_type/:conference_slug/register(/:step)
- data:
- - '{"id":91962,"locale":"en","key":"form.placeholder.Enter_your_firstname","value":"Francis?
- Frances? Phransiz?","interpolations":[],"is_proc":false,"created_at":"2014-07-21T01:40:00.075Z","updated_at":"2014-07-21T01:53:51.732Z"}'
-form.label.firstname:
- languages:
- - en
- pages:
- - /conferences/:conference_type/:conference_slug/register(/:step)
- data:
- - '{"id":91945,"locale":"en","key":"form.label.firstname","value":"First name","interpolations":[],"is_proc":false,"created_at":"2014-07-21T01:33:15.267Z","updated_at":"2014-07-21T01:33:15.278Z"}'
-form.placeholder.Enter_your_lastname:
- languages:
- - en
- pages:
- - /conferences/:conference_type/:conference_slug/register(/:step)
- data:
- - '{"id":91963,"locale":"en","key":"form.placeholder.Enter_your_lastname","value":"Smith?
- Ng?","interpolations":[],"is_proc":false,"created_at":"2014-07-21T01:42:51.398Z","updated_at":"2014-07-21T01:42:51.409Z"}'
-form.label.lastname:
- languages:
- - en
- pages:
- - /conferences/:conference_type/:conference_slug/register(/:step)
- data:
- - '{"id":91948,"locale":"en","key":"form.label.lastname","value":"Last name","interpolations":[],"is_proc":false,"created_at":"2014-07-21T01:34:35.847Z","updated_at":"2014-07-21T01:34:35.859Z"}'
-form.placeholder.Enter_your_username:
- languages:
- - en
- pages:
- - /conferences/:conference_type/:conference_slug/register(/:step)
- data:
- - '{"id":91971,"locale":"en","key":"form.placeholder.Enter_your_username","value":"How
- would you like to be known?","interpolations":[],"is_proc":false,"created_at":"2014-07-21T01:48:51.318Z","updated_at":"2014-07-21T01:48:56.170Z"}'
-form.label.username:
- languages:
- - en
- pages:
- - /conferences/:conference_type/:conference_slug/register(/:step)
- data:
- - '{"id":91955,"locale":"en","key":"form.label.username","value":"Preferred name","interpolations":[],"is_proc":false,"created_at":"2014-07-21T01:36:18.747Z","updated_at":"2014-07-21T01:36:18.758Z"}'
-registration.questions.housing:
- languages: []
- pages:
- - /conferences/:conference_type/:conference_slug/register(/:step)
- data: []
-registration.questions.housing.help:
- languages: []
- pages:
- - /conferences/:conference_type/:conference_slug/register(/:step)
- data: []
-registration.questions.housing_extra.title:
- languages: []
- pages:
- - /conferences/:conference_type/:conference_slug/register(/:step)
- data: []
-form.placeholder.Enter_your_.questions.housing_extra:
- languages:
- - en
- pages:
- - /conferences/:conference_type/:conference_slug/register(/:step)
- data:
- - '{"id":91959,"locale":"en","key":"form.placeholder.Enter_your_.questions.housing_extra","value":"Preferences?
- Concerns? Whatever.","interpolations":[],"is_proc":false,"created_at":"2014-07-21T01:39:27.543Z","updated_at":"2014-07-21T01:39:27.555Z"}'
-registration.questions.loaner_bike:
- languages: []
- pages:
- - /conferences/:conference_type/:conference_slug/register(/:step)
- data: []
-registration.questions.loaner_bike.help:
- languages: []
- pages:
- - /conferences/:conference_type/:conference_slug/register(/:step)
- data: []
-registration.questions.workshop:
- languages: []
- pages:
- - /conferences/:conference_type/:conference_slug/register(/:step)
- data: []
-registration.questions.workshop.help:
- languages: []
- pages:
- - /conferences/:conference_type/:conference_slug/register(/:step)
- data: []
-'Yes':
- languages:
- - en
- pages:
- - /conferences/:conference_type/:conference_slug/register(/:step)
- data:
- - '{"id":91981,"locale":"en","key":"Yes","value":"Yes","interpolations":[],"is_proc":false,"created_at":"2014-07-21T02:03:02.555Z","updated_at":"2014-07-21T02:03:02.627Z"}'
-'No':
- languages:
- - en
- pages:
- - /conferences/:conference_type/:conference_slug/register(/:step)
- data:
- - '{"id":91978,"locale":"en","key":"No","value":"No","interpolations":[],"is_proc":false,"created_at":"2014-07-21T01:51:55.944Z","updated_at":"2014-07-21T01:51:55.955Z"}'
-registration.questions.other:
- languages: []
- pages:
- - /conferences/:conference_type/:conference_slug/register(/:step)
- data: []
-form.placeholder.Enter_your_.questions.other:
- languages:
- - en
- pages:
- - /conferences/:conference_type/:conference_slug/register(/:step)
- data:
- - '{"id":91960,"locale":"en","key":"form.placeholder.Enter_your_.questions.other","value":"Anything
- else that we should know....","interpolations":[],"is_proc":false,"created_at":"2014-07-21T01:39:45.419Z","updated_at":"2014-07-21T01:39:45.431Z"}'
-cancel:
- languages:
- - en
- pages:
- - /conferences/:conference_type/:conference_slug/register(/:step)
- data:
- - '{"id":92003,"locale":"en","key":"cancel","value":"Cancel","interpolations":[],"is_proc":false,"created_at":"2014-07-22T00:04:53.461Z","updated_at":"2014-07-22T00:04:53.473Z"}'
-submit:
- languages: []
- pages:
- - /conferences/:conference_type/:conference_slug/register(/:step)
- data: []
-languages.list:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1563,"locale":"en","key":"languages.list","value":"Languages","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:37:59.851Z","updated_at":"2014-05-04T18:37:59.859Z"}'
-languages.active:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1615,"locale":"en","key":"languages.active","value":"Active","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:44:08.190Z","updated_at":"2014-05-04T18:44:08.197Z"}'
-languages.en:
- languages:
- - en
- pages:
- - /translations
- - /translations/:lang
- data:
- - '{"id":1512,"locale":"en","key":"languages.en","value":"English","interpolations":[],"is_proc":false,"created_at":"2014-05-04T16:41:33.543Z","updated_at":"2014-05-04T18:31:34.238Z"}'
-languages.de:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1529,"locale":"en","key":"languages.de","value":"German","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:30:57.119Z","updated_at":"2014-05-04T18:30:57.126Z"}'
-languages.inactive:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1551,"locale":"en","key":"languages.inactive","value":"Inactive","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:34:59.476Z","updated_at":"2014-05-04T18:34:59.484Z"}'
-languages.af:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1515,"locale":"en","key":"languages.af","value":"Afrikaans","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:28:22.224Z","updated_at":"2014-05-04T18:28:22.286Z"}'
-languages.am:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1516,"locale":"en","key":"languages.am","value":"Amharic","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:28:26.231Z","updated_at":"2014-05-04T18:28:26.281Z"}'
-languages.ar:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1517,"locale":"en","key":"languages.ar","value":"Arabic","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:28:33.367Z","updated_at":"2014-05-04T18:28:33.374Z"}'
-languages.az:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1518,"locale":"en","key":"languages.az","value":"Azerbaijani","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:28:50.983Z","updated_at":"2014-05-04T18:28:50.990Z"}'
-languages.be:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1519,"locale":"en","key":"languages.be","value":"Belarusian","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:29:12.959Z","updated_at":"2014-05-04T18:29:12.967Z"}'
-languages.bg:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1520,"locale":"en","key":"languages.bg","value":"Bulgarian","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:29:19.109Z","updated_at":"2014-05-04T18:29:19.117Z"}'
-languages.bh:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1521,"locale":"en","key":"languages.bh","value":"Bihari","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:29:23.289Z","updated_at":"2014-05-04T18:29:23.295Z"}'
-languages.bn:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1522,"locale":"en","key":"languages.bn","value":"Bengali","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:30:03.941Z","updated_at":"2014-05-04T18:30:03.949Z"}'
-languages.bo:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1523,"locale":"en","key":"languages.bo","value":"Tibetan","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:30:07.114Z","updated_at":"2014-05-04T18:30:07.152Z"}'
-languages.bs:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1524,"locale":"en","key":"languages.bs","value":"Bosnian","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:30:15.675Z","updated_at":"2014-05-04T18:30:15.684Z"}'
-languages.ca:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1525,"locale":"en","key":"languages.ca","value":"Catalan","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:30:30.970Z","updated_at":"2014-05-04T18:30:30.978Z"}'
-languages.cs:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1526,"locale":"en","key":"languages.cs","value":"Czech","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:30:38.077Z","updated_at":"2014-05-04T18:30:38.116Z"}'
-languages.cy:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1527,"locale":"en","key":"languages.cy","value":"Welsh","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:30:43.982Z","updated_at":"2014-05-04T18:30:43.990Z"}'
-languages.da:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1528,"locale":"en","key":"languages.da","value":"Danish","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:30:49.784Z","updated_at":"2014-05-04T18:30:49.792Z"}'
-languages.dz:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1530,"locale":"en","key":"languages.dz","value":"Dzongkha","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:31:24.431Z","updated_at":"2014-05-04T18:31:24.439Z"}'
-languages.el:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1531,"locale":"en","key":"languages.el","value":"Greek","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:31:33.484Z","updated_at":"2014-05-04T18:31:33.490Z"}'
-languages.eo:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1532,"locale":"en","key":"languages.eo","value":"Esperanto","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:31:40.037Z","updated_at":"2014-05-04T18:31:40.045Z"}'
-languages.es:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1533,"locale":"en","key":"languages.es","value":"Spanish","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:31:47.487Z","updated_at":"2014-05-04T18:31:47.497Z"}'
-languages.et:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1534,"locale":"en","key":"languages.et","value":"Estonian","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:31:53.170Z","updated_at":"2014-05-04T18:31:53.177Z"}'
-languages.eu:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1535,"locale":"en","key":"languages.eu","value":"Basque","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:31:58.446Z","updated_at":"2014-05-04T18:31:58.454Z"}'
-languages.fa:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1536,"locale":"en","key":"languages.fa","value":"Persian","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:32:05.599Z","updated_at":"2014-05-04T18:32:05.606Z"}'
-languages.fi:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1537,"locale":"en","key":"languages.fi","value":"Finnish","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:32:10.387Z","updated_at":"2014-05-04T18:32:10.395Z"}'
-languages.fo:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1538,"locale":"en","key":"languages.fo","value":"Faroese","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:32:16.182Z","updated_at":"2014-05-04T18:32:16.190Z"}'
-languages.fr:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1539,"locale":"en","key":"languages.fr","value":"French","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:32:20.861Z","updated_at":"2014-05-04T18:32:20.868Z"}'
-languages.fu:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1540,"locale":"en","key":"languages.fu","value":"Fula","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:33:47.806Z","updated_at":"2014-05-04T18:33:47.814Z"}'
-languages.fy:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1541,"locale":"en","key":"languages.fy","value":"Western Frisian","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:33:57.749Z","updated_at":"2014-05-04T18:33:57.756Z"}'
-languages.ga:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1542,"locale":"en","key":"languages.ga","value":"Irish","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:34:03.918Z","updated_at":"2014-05-04T18:34:03.926Z"}'
-languages.gl:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1543,"locale":"en","key":"languages.gl","value":"Galician","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:34:09.060Z","updated_at":"2014-05-04T18:34:09.067Z"}'
-languages.gu:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1544,"locale":"en","key":"languages.gu","value":"Gujarati","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:34:15.664Z","updated_at":"2014-05-04T18:34:15.702Z"}'
-languages.ha:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1545,"locale":"en","key":"languages.ha","value":"Hausa","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:34:22.171Z","updated_at":"2014-05-04T18:34:22.179Z"}'
-languages.he:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1546,"locale":"en","key":"languages.he","value":"Hebrew","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:34:28.713Z","updated_at":"2014-05-04T18:34:28.721Z"}'
-languages.hi:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1547,"locale":"en","key":"languages.hi","value":"Hindi","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:34:32.972Z","updated_at":"2014-05-04T18:34:32.980Z"}'
-languages.hr:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1548,"locale":"en","key":"languages.hr","value":"Croatian","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:34:37.981Z","updated_at":"2014-05-04T18:34:37.989Z"}'
-languages.hu:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1549,"locale":"en","key":"languages.hu","value":"Hungarian","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:34:45.762Z","updated_at":"2014-05-04T18:34:45.769Z"}'
-languages.id:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1550,"locale":"en","key":"languages.id","value":"Indonesian","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:34:53.686Z","updated_at":"2014-05-04T18:34:53.694Z"}'
-languages.is:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1552,"locale":"en","key":"languages.is","value":"Icelandic","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:35:10.991Z","updated_at":"2014-05-04T18:35:10.998Z"}'
-languages.it:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1553,"locale":"en","key":"languages.it","value":"Italian","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:35:15.545Z","updated_at":"2014-05-04T18:35:15.552Z"}'
-languages.ja:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1555,"locale":"en","key":"languages.ja","value":"Japanese","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:37:08.196Z","updated_at":"2014-05-04T18:37:08.203Z"}'
-languages.jv:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1556,"locale":"en","key":"languages.jv","value":"Javanese","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:37:11.376Z","updated_at":"2014-05-04T18:37:11.384Z"}'
-languages.ka:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1557,"locale":"en","key":"languages.ka","value":"Georgian","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:37:14.354Z","updated_at":"2014-05-04T18:37:14.361Z"}'
-languages.km:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1558,"locale":"en","key":"languages.km","value":"Cambodian","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:37:19.233Z","updated_at":"2014-05-04T18:37:19.240Z"}'
-languages.kn:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1559,"locale":"en","key":"languages.kn","value":"Kannada","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:37:30.808Z","updated_at":"2014-05-04T18:37:30.815Z"}'
-languages.ko:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1560,"locale":"en","key":"languages.ko","value":"Korean","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:37:34.101Z","updated_at":"2014-05-04T18:37:34.107Z"}'
-languages.ku:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1561,"locale":"en","key":"languages.ku","value":"Kurdish","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:37:40.725Z","updated_at":"2014-05-04T18:37:40.764Z"}'
-languages.lb:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1562,"locale":"en","key":"languages.lb","value":"Luxemburgish","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:37:53.620Z","updated_at":"2014-05-04T18:37:53.628Z"}'
-languages.ln:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1564,"locale":"en","key":"languages.ln","value":"Lingala","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:38:04.059Z","updated_at":"2014-05-04T18:38:04.066Z"}'
-languages.lt:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1565,"locale":"en","key":"languages.lt","value":"Lithuanian","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:38:07.326Z","updated_at":"2014-05-04T18:38:07.334Z"}'
-languages.lv:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1566,"locale":"en","key":"languages.lv","value":"Latvian","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:38:11.285Z","updated_at":"2014-05-04T18:38:14.103Z"}'
-languages.mg:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1567,"locale":"en","key":"languages.mg","value":"Malagasy","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:38:12.582Z","updated_at":"2014-05-04T18:38:19.765Z"}'
-languages.mk:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1568,"locale":"en","key":"languages.mk","value":"Macedonian","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:38:23.624Z","updated_at":"2014-05-04T18:38:23.632Z"}'
-languages.ml:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1569,"locale":"en","key":"languages.ml","value":"Malayalam","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:38:26.527Z","updated_at":"2014-05-04T18:38:26.534Z"}'
-languages.mn:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1570,"locale":"en","key":"languages.mn","value":"Mongolian","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:38:29.448Z","updated_at":"2014-05-04T18:38:29.456Z"}'
-languages.mo:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1571,"locale":"en","key":"languages.mo","value":"Moldavian","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:38:32.314Z","updated_at":"2014-05-04T18:38:32.321Z"}'
-languages.mr:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1572,"locale":"en","key":"languages.mr","value":"Marathi","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:38:35.309Z","updated_at":"2014-05-04T18:38:35.316Z"}'
-languages.ms:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1573,"locale":"en","key":"languages.ms","value":"Malay","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:38:38.612Z","updated_at":"2014-05-04T18:38:38.619Z"}'
-languages.mt:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1574,"locale":"en","key":"languages.mt","value":"Maltese","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:38:41.916Z","updated_at":"2014-05-04T18:38:41.955Z"}'
-languages.my:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1575,"locale":"en","key":"languages.my","value":"Burmese","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:38:44.710Z","updated_at":"2014-05-04T18:38:44.717Z"}'
-languages.na:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1576,"locale":"en","key":"languages.na","value":"Nauru","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:38:50.019Z","updated_at":"2014-05-04T18:38:50.027Z"}'
-languages.nb:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1577,"locale":"en","key":"languages.nb","value":"Norwegian Bokmål","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:39:15.791Z","updated_at":"2014-05-04T18:39:46.665Z"}'
-languages.ne:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1578,"locale":"en","key":"languages.ne","value":"Nepali","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:39:28.583Z","updated_at":"2014-05-04T18:39:28.589Z"}'
-languages.nl:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1579,"locale":"en","key":"languages.nl","value":"Dutch","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:39:31.338Z","updated_at":"2014-05-04T18:39:31.345Z"}'
-languages.nn:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1580,"locale":"en","key":"languages.nn","value":"Norwegian","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:39:40.568Z","updated_at":"2014-05-04T18:39:40.577Z"}'
-languages.ns:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1581,"locale":"en","key":"languages.ns","value":"Southern Ndebele","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:40:41.488Z","updated_at":"2014-05-04T18:40:41.495Z"}'
-languages.om:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1582,"locale":"en","key":"languages.om","value":"Oromo","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:40:50.280Z","updated_at":"2014-05-04T18:40:50.287Z"}'
-languages.or:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1583,"locale":"en","key":"languages.or","value":"Oriya","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:40:52.818Z","updated_at":"2014-05-04T18:40:52.825Z"}'
-languages.pa:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1584,"locale":"en","key":"languages.pa","value":"Punjabi","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:40:56.946Z","updated_at":"2014-05-04T18:40:56.954Z"}'
-languages.pl:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1585,"locale":"en","key":"languages.pl","value":"Polish","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:41:00.552Z","updated_at":"2014-05-04T18:41:00.560Z"}'
-languages.ps:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1586,"locale":"en","key":"languages.ps","value":"Pashto","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:41:03.210Z","updated_at":"2014-05-04T18:41:03.218Z"}'
-languages.pt:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1587,"locale":"en","key":"languages.pt","value":"Portuguese","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:41:06.158Z","updated_at":"2014-05-04T18:41:06.165Z"}'
-languages.ro:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1588,"locale":"en","key":"languages.ro","value":"Romanian","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:41:10.477Z","updated_at":"2014-05-04T18:41:10.484Z"}'
-languages.ru:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1589,"locale":"en","key":"languages.ru","value":"Russian","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:41:16.067Z","updated_at":"2014-05-04T18:41:16.074Z"}'
-languages.se:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1590,"locale":"en","key":"languages.se","value":"Northern Sámi","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:41:20.208Z","updated_at":"2014-05-04T18:41:20.216Z"}'
-languages.sh:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1591,"locale":"en","key":"languages.sh","value":"Serbo-Croatian","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:41:23.730Z","updated_at":"2014-05-04T18:41:23.769Z"}'
-languages.sk:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1592,"locale":"en","key":"languages.sk","value":"Slovak","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:41:26.624Z","updated_at":"2014-05-04T18:41:26.631Z"}'
-languages.sl:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1593,"locale":"en","key":"languages.sl","value":"Slovenian","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:41:29.905Z","updated_at":"2014-05-04T18:41:29.913Z"}'
-languages.sm:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1594,"locale":"en","key":"languages.sm","value":"Samoan","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:41:32.883Z","updated_at":"2014-05-04T18:41:32.891Z"}'
-languages.so:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1595,"locale":"en","key":"languages.so","value":"Somali","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:41:36.591Z","updated_at":"2014-05-04T18:41:36.599Z"}'
-languages.sq:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1596,"locale":"en","key":"languages.sq","value":"Albanian","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:41:39.719Z","updated_at":"2014-05-04T18:41:39.727Z"}'
-languages.sr:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1597,"locale":"en","key":"languages.sr","value":"Serbian","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:41:42.154Z","updated_at":"2014-05-04T18:41:42.162Z"}'
-languages.sv:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1598,"locale":"en","key":"languages.sv","value":"Swedish","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:41:45.243Z","updated_at":"2014-05-04T18:41:45.249Z"}'
-languages.sw:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1599,"locale":"en","key":"languages.sw","value":"Swahili","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:41:52.938Z","updated_at":"2014-05-04T18:41:52.946Z"}'
-languages.ta:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1600,"locale":"en","key":"languages.ta","value":"Tamil","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:41:55.419Z","updated_at":"2014-05-04T18:41:55.427Z"}'
-languages.te:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1601,"locale":"en","key":"languages.te","value":"Telugu","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:41:58.047Z","updated_at":"2014-05-04T18:41:58.055Z"}'
-languages.th:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1602,"locale":"en","key":"languages.th","value":"Thai","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:42:04.468Z","updated_at":"2014-05-04T18:42:04.476Z"}'
-languages.ti:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1603,"locale":"en","key":"languages.ti","value":"Tigrinya","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:42:07.800Z","updated_at":"2014-05-04T18:42:07.807Z"}'
-languages.tk:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1604,"locale":"en","key":"languages.tk","value":"Turkmen","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:42:12.152Z","updated_at":"2014-05-04T18:42:28.557Z"}'
-languages.tl:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1605,"locale":"en","key":"languages.tl","value":"Tagalog","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:42:22.749Z","updated_at":"2014-05-04T18:42:28.949Z"}'
-languages.to:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1606,"locale":"en","key":"languages.to","value":"Tonga","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:42:34.816Z","updated_at":"2014-05-04T18:42:34.823Z"}'
-languages.tr:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1607,"locale":"en","key":"languages.tr","value":"Turkish","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:42:38.736Z","updated_at":"2014-05-04T18:42:38.744Z"}'
-languages.uk:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1608,"locale":"en","key":"languages.uk","value":"Ukrainian","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:42:46.298Z","updated_at":"2014-05-04T18:42:46.304Z"}'
-languages.ur:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1609,"locale":"en","key":"languages.ur","value":"Urdu","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:42:50.282Z","updated_at":"2014-05-04T18:42:50.290Z"}'
-languages.vi:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1610,"locale":"en","key":"languages.vi","value":"Vietnamese","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:42:53.005Z","updated_at":"2014-05-04T18:42:53.012Z"}'
-languages.wa:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1611,"locale":"en","key":"languages.wa","value":"Walloon","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:43:39.435Z","updated_at":"2014-05-04T18:43:39.443Z"}'
-languages.yo:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1612,"locale":"en","key":"languages.yo","value":"Yorouba","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:43:47.179Z","updated_at":"2014-05-04T18:43:47.188Z"}'
-languages.zh:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1613,"locale":"en","key":"languages.zh","value":"Chinese","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:43:53.919Z","updated_at":"2014-05-04T18:43:53.926Z"}'
-languages.zu:
- languages:
- - en
- pages:
- - /translations
- data:
- - '{"id":1614,"locale":"en","key":"languages.zu","value":"Zulu","interpolations":[],"is_proc":false,"created_at":"2014-05-04T18:43:59.432Z","updated_at":"2014-05-04T18:43:59.439Z"}'
-language_translations:
- languages:
- - en
- pages:
- - /translations/:lang
- vars:
- - :language
- data:
- - '{"id":1514,"locale":"en","key":"language_translations","value":"%{language} Translations","interpolations":[],"is_proc":false,"created_at":"2014-05-04T16:51:19.190Z","updated_at":"2014-05-04T19:06:53.383Z"}'
-translations.Key:
- languages: []
- pages:
- - /translations/:lang
- data: []
-translations.Pages:
- languages: []
- pages:
- - /translations/:lang
- data: []
-translations.Value:
- languages: []
- pages:
- - /translations/:lang
- data: []
+---
+world.ca.ns.name:
+ languages: []
+ pages:
+ - /
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ - /location/territories
+ data: []
+conference.More_Info:
+ languages: []
+ pages:
+ - /
+ data: []
+Conferences:
+ languages: []
+ pages:
+ - /
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ - /translations
+ - /translations/:lang
+ data: []
+Organizations:
+ languages: []
+ pages:
+ - /
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ - /translations
+ - /translations/:lang
+ data: []
+Resources:
+ languages: []
+ pages:
+ - /
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ - /translations
+ - /translations/:lang
+ data: []
+donate.button_label:
+ languages: []
+ pages:
+ - /
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+conference.Register_Now:
+ languages: []
+ pages:
+ - /
+ data: []
+form.placeholder.Enter_your_step:
+ languages: []
+ pages:
+ - /
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+form.placeholder.Enter_your_email:
+ languages: []
+ pages:
+ - /
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+form.label.email:
+ languages: []
+ pages:
+ - /
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+register:
+ languages: []
+ pages:
+ - /
+ data: []
+world.ca.nb.name:
+ languages: []
+ pages:
+ - /
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ - /location/territories
+ data: []
+registration.questions.title:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+form.placeholder.Enter_your_firstname:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+form.label.firstname:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+form.placeholder.Enter_your_lastname:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+form.label.lastname:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+form.placeholder.Enter_your_username:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+form.label.username:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+registration.questions.housing:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+registration.questions.housing.help:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+registration.questions.housing_extra.title:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+form.placeholder.Enter_your_.questions.housing_extra:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+registration.questions.loaner_bike:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+registration.questions.loaner_bike.help:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+registration.questions.workshop:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+registration.questions.workshop.help:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+'Yes':
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+'No':
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+registration.questions.other:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+form.placeholder.Enter_your_.questions.other:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+cancel:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+submit:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+register.email.registration.subject:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ vars:
+ - :conference_title
+ data: []
+register.email.registration.please_confirm:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ vars:
+ - :username
+ data: []
+register.email.registration.confirm_button:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+register.organizations.title:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+register.organizations.description:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+all_organizations:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ca.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+orgnizations_filter.placeholder:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+my_organizations:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+form.label.add_new_org:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+form.label.no_org:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+next:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+register.organizations.confirm_thanks.title:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+register.organizations.confirm_thanks.is_not_workshop_host.help:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+register.organizations.confirm_thanks.payment_notice:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+register.email.registration_confirmed.subject:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ vars:
+ - :conference_title
+ data: []
+register.email.registration_confirmed.thank_you:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+register.email.registration_confirmed.please_pay:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+register.email.registration_confirmed.pay_now:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+register.email.registration_confirmed.info:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+register.email.registration_confirmed.contact:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+registration.thanks.complete.title:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+registration.thanks.all_done.please_pay:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+form.placeholder.Enter_your_confirmation_token:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+registration.thanks.all_done.please_pay.currency:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+number.format:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+number.currency.format:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+number.precision.format:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+form.placeholder.Enter_your_payment_amount:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+form.label.payment_amount:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+custom_amount:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+registration.payment_confirm.title:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+registration.payment_confirm.help:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ vars:
+ - :amount
+ data: []
+cancel_payment:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+confirm_payment:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+registration.thanks.all_done.paid:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ vars:
+ - :city
+ data: []
+registration.cancel.title:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+registration.cancel.help:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+'no':
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+'yes':
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+registration.cancelled.title:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+registration.cancelled.help:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+registration.thanks.title:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+registration.thanks.remember_to_confirm:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+resend_confirmation_email:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+form.placeholder.Enter_your_workshop_index:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+registration.workshop.title:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+form.placeholder.Enter_your_workshop_title:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+form.label.workshop_title:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+form.placeholder.Enter_your_workshop_info:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+form.label.workshop_info:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+registration.workshop.streams.title:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+registration.workshop.streams.help:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+workshop_stream.select_one:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+workshop_stream.mechanics:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+workshop_stream.leisure:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+workshop_stream.interorganizational_relations:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+workshop_stream.ethics_public_relations:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+workshop_stream.organization_management:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+registration.workshop.styles.title:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+registration.workshop.styles.help:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+workshop_presentation_style.select_one:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+workshop_presentation_style.discussion:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+workshop_presentation_style.panel:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+workshop_presentation_style.presentation:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+workshop_presentation_style.hands-on:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+workshop_presentation_style.other:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+registration.workshop.notes.title:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+registration.workshop.notes.help:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+form.placeholder.Enter_your_workshop_notes:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+form.label.add_another_workshop:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+form.placeholder.Enter_your_new_org_index:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+registration.new_organization.title:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+form.placeholder.Enter_your_organization_name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+form.label.organization_name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+form.placeholder.Enter_your_organization_info:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+form.label.organization_info:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+form.placeholder.Enter_your_organization_email:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+form.label.organization_email:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+form.placeholder.Enter_your_organization_street:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+form.label.organization_street:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+form.placeholder.Enter_your_organization_city:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+form.label.organization_city:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ad.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ae.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.af.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ag.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ai.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.al.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.am.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ao.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.aq.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ar.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.as.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.at.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.au.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.aw.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ax.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.az.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ba.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.bb.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.bd.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.be.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.bf.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.bg.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.bh.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.bi.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.bj.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.bl.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.bm.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.bn.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.bo.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.bq.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.br.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.bs.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.bt.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.bv.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.bw.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.by.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.bz.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.cc.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.cd.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.cf.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.cg.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ch.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ci.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ck.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.cl.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.cm.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.cn.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.co.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.cr.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.cu.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.cv.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.cw.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.cx.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.cy.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.cz.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.de.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.dj.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.dk.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.dm.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.do.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.dz.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ec.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ee.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.eg.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.eh.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.er.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.es.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.et.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.fi.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.fj.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.fk.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.fm.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.fo.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.fr.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ga.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.gb.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.gd.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ge.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.gf.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.gg.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.gh.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.gi.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.gl.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.gm.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.gn.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.gp.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.gq.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.gr.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.gs.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.gt.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.gu.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.gw.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.gy.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.hk.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.hm.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.hn.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.hr.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ht.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.hu.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.id.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ie.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.il.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.im.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.in.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.io.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.iq.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ir.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.is.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.it.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.je.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.jm.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.jo.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.jp.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ke.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.kg.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.kh.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ki.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.km.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.kn.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.kp.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.kr.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.kw.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ky.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.kz.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.la.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.lb.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.lc.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.li.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.lk.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.lr.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ls.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.lt.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.lu.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.lv.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ly.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ma.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.mc.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.md.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.me.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.mf.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.mg.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.mh.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.mk.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ml.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.mm.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.mn.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.mo.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.mp.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.mq.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.mr.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ms.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.mt.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.mu.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.mv.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.mw.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.mx.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.my.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.mz.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.na.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.nc.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ne.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.nf.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ng.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ni.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.nl.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.no.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.np.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.nr.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.nu.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.nz.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.om.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.pa.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.pe.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.pf.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.pg.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ph.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.pk.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.pl.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.pm.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.pn.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ps.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.pt.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.pw.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.py.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.qa.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.re.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ro.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.rs.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ru.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.rw.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.sa.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.sb.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.sc.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.sd.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.se.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.sg.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.sh.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.si.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.sj.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.sk.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.sl.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.sm.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.sn.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.so.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.sr.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ss.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.st.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.sv.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.sx.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.sy.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.sz.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.tc.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.td.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.tf.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.tg.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.th.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.tj.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.tk.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.tl.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.tm.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.tn.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.to.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.tr.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.tt.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.tv.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.tw.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.tz.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ua.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ug.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.um.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.uy.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.uz.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.va.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.vc.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ve.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.vg.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.vi.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.vn.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.vu.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.wf.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ws.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ye.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.yt.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.za.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.zm.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.zw.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.ak.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.al.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.ar.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.as.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.az.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.ca.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.co.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.ct.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.dc.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.de.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.fl.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.ga.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.gu.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.hi.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.ia.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.id.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.il.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.in.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.ks.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.ky.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.la.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.ma.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.md.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.me.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.mi.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.mn.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.mo.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.mp.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.ms.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.mt.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.nc.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.nd.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.ne.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.nh.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.nj.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.nm.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.nv.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.ny.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.oh.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.ok.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.or.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.pa.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.pr.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.ri.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.sc.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.sd.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.tn.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.tx.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.um.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.ut.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.va.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.vi.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.vt.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.wa.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.wi.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.wv.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.wy.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.aa.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.ae.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.us.ap.name:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+form.label.logo:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+form.label.add_another_org:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+world.ca.ab.name:
+ languages: []
+ pages:
+ - /location/territories
+ data: []
+world.ca.bc.name:
+ languages: []
+ pages:
+ - /location/territories
+ data: []
+world.ca.mb.name:
+ languages: []
+ pages:
+ - /location/territories
+ data: []
+world.ca.nl.name:
+ languages: []
+ pages:
+ - /location/territories
+ data: []
+world.ca.nt.name:
+ languages: []
+ pages:
+ - /location/territories
+ data: []
+world.ca.nu.name:
+ languages: []
+ pages:
+ - /location/territories
+ data: []
+world.ca.on.name:
+ languages: []
+ pages:
+ - /location/territories
+ data: []
+world.ca.pe.name:
+ languages: []
+ pages:
+ - /location/territories
+ data: []
+world.ca.qc.name:
+ languages: []
+ pages:
+ - /location/territories
+ data: []
+world.ca.sk.name:
+ languages: []
+ pages:
+ - /location/territories
+ data: []
+world.ca.yt.name:
+ languages: []
+ pages:
+ - /location/territories
+ data: []
+registration.register.no_name_error:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+registration.register.no_organization_error:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+registration.register.no_workshop_title_error:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+registration.register.no_workshop_info_error:
+ languages: []
+ pages:
+ - /conferences/:conference_type/:conference_slug/register(/:step)
+ data: []
+languages.list:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.active:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.inactive:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.af:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.am:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.ar:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.az:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.be:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.bg:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.bh:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.bn:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.bo:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.bs:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.ca:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.cs:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.cy:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.da:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.de:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.dz:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.el:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.en:
+ languages: []
+ pages:
+ - /translations
+ - /translations/:lang
+ data: []
+languages.eo:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.es:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.et:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.eu:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.fa:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.fi:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.fo:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.fr:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.fu:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.fy:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.ga:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.gl:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.gu:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.ha:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.he:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.hi:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.hr:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.hu:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.id:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.is:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.it:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.ja:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.jv:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.ka:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.km:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.kn:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.ko:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.ku:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.lb:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.ln:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.lt:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.lv:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.mg:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.mk:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.ml:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.mn:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.mo:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.mr:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.ms:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.mt:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.my:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.na:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.nb:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.ne:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.nl:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.nn:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.ns:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.om:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.or:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.pa:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.pl:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.ps:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.pt:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.ro:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.ru:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.se:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.sh:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.sk:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.sl:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.sm:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.so:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.sq:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.sr:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.sv:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.sw:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.ta:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.te:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.th:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.ti:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.tk:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.tl:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.to:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.tr:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.uk:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.ur:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.vi:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.wa:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.yo:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.zh:
+ languages: []
+ pages:
+ - /translations
+ data: []
+languages.zu:
+ languages: []
+ pages:
+ - /translations
+ data: []
+language_translations:
+ languages: []
+ pages:
+ - /translations/:lang
+ vars:
+ - :language
+ data: []
+translations.Key:
+ languages: []
+ pages:
+ - /translations/:lang
+ data: []
+translations.Pages:
+ languages: []
+ pages:
+ - /translations/:lang
+ data: []
+translations.Value:
+ languages: []
+ pages:
+ - /translations/:lang
+ data: []
diff --git a/config/paypal.yml b/config/paypal.yml
new file mode 100644
index 0000000..457b2b5
--- /dev/null
+++ b/config/paypal.yml
@@ -0,0 +1,9 @@
+development:
+ username: goodgodwin-facilitator_api1.hotmail.com
+ password: 1364499062
+ signature: A8ydvWJ4VGIEPgYhKlCiqbJ7KrGvATclp5xDn-IKlmSUFXGwcA62ZT82
+
+test:
+ username: goodgodwin-facilitator_api1.hotmail.com
+ password: 1364499062
+ signature: A8ydvWJ4VGIEPgYhKlCiqbJ7KrGvATclp5xDn-IKlmSUFXGwcA62ZT82
diff --git a/config/registrations_access.yml b/config/registrations_access.yml
new file mode 100644
index 0000000..4e4e972
--- /dev/null
+++ b/config/registrations_access.yml
@@ -0,0 +1,7 @@
+development:
+ username: admin
+ password: password
+
+test:
+ username: admin
+ password: password
diff --git a/features/registration.feature b/features/registration.feature
index 87f4753..c760ac4 100644
--- a/features/registration.feature
+++ b/features/registration.feature
@@ -1,532 +1,531 @@
-Feature: Registration
- In order to register for the latest Bike!Bike!
- As a visitor
-
- @javascript
- Scenario: Register as really eager participant
- Given There is an upcoming conference in Moncton NB
- And Registration is open
- And an organization named Cool Cats Bikes exists in Sackville NB
-
- When I go to the landing page
- Then I see a Register Now link
- And I click on the Register Now link
-
- And I fill in my email with goodgodwin@hotmail.com
- And I press register
-
- And I fill in my firstname with Michael
- And I fill in my lastname with Godwin
- And I fill in my username with Godwin
- And I check is_participant
- And I press next
-
- And I see Do you require housing?
- And I select bed from housing
- And I fill in housing extra with I have a bad back
-
- And I see Do you want to borrow a bike?
- And I select large from loaner bike
-
- And I see Would you like to host a workshop?
- And I select No from workshop host
-
- And I see Anything else
- And I fill in other with I'm coming two months early
- And I should not be registered for the conference
-
- And I press submit
-
- Then I should be registered for the conference
- And my registration should not be confirmed
- And I should get a confirm email
- And in the email I should see please confirm your registration
- And in the email I should see a confirmation link
- And I see Who do you Represent
-
- When I go to the confirmation page
- Then I see Thanks for confirming
- And I see Who do you Represent
- And my registration is confirmed
- But my registration is not complete
- And my registration is not completed
-
- Then I click on Cool Cats Bikes
- And press next
-
- Then I should see Thanks for completing your registration
- And my registration is complete
- And my registration is completed
- But my registration is not paid
-
- Then I should get a Thanks email
- And in the email I should see pay the registration donation
- And in the email I should see a pay registration link
-
- When I go to the pay registration page
- Then I see Thanks for completing your registration
- And I see we ask that you pay
- And I see custom amount
-
- Then I pay 12.34
- Then I should see Your order summary
-
- When I finish with paypal
- Then I should see confirm your payment
- And I should see $12.34
- And I have enough funds
- And I press confirm payment
-
- Then I should see We'll see you in Moncton
- And my registration is paid
-
- @javascript
- Scenario: Register as participant with some second thoughts
- Given There is an upcoming conference in Moncton NB
- And Registration is open
- And an organization named The Bike Bush exists in Musquodoboit Harbour NS
- And an organization named Cool Cats Bikes exists in Sackville NB
-
- When I go to the landing page
- Then I see a Register Now link
- And I click on the Register Now link
-
- And I fill in my email with shout@me.com
- And I press register
-
- And I fill in my firstname with Joe
- And I fill in my lastname with Smith
- And I fill in my username with Joey
- And I check is_participant
- And I press cancel
-
- Then I should see you will lose the infomation you have submitted
- Then I press no
- And I should see Attending as
- And firstname should be set to Joe
- And lastname should be set to Smith
- And username should be set to Joey
- And is_participant should be checked
- And is_volunteer should not be checked
-
- Then I press cancel
- And press yes
- Then I should see Your registration has been cancelled
-
- @javascript
- Scenario: Register as participant
- Given There is an upcoming conference in Moncton NB
- And Registration is open
- And an organization named The Bike Bush exists in Musquodoboit Harbour NS
- And an organization named Cool Cats Bikes exists in Sackville NB
-
- When I go to the landing page
- Then I see a Register Now link
- And I click on the Register Now link
-
- And I fill in my email with shout@me.com
- And I press register
-
- And I fill in my firstname with Joe
- And I fill in my lastname with Smith
- And I fill in my username with Joey
- And I check is_participant
- And I press next
-
- And I see Do you require housing?
- And I select couch from housing
- And I fill in housing extra with I'm easy
-
- And I see Do you want to borrow a bike?
- And I select Yes, from loaner bike
-
- And I see Would you like to host a workshop?
- And I select No from workshop host
-
- And I see Anything else
- And I fill in other with Nope
- And I should not be registered for the conference
-
- And I press submit
-
- Then I should be registered for the conference
- But my registration should not be confirmed
- And I should get a confirm email
- And I should see Who do you Represent
-
- But my registration is not complete
- And my registration is not completed
-
- Then I click on The Bike Bush
- And press next
- And my registration is completed
-
- Then in the email I should see please confirm your registration
- And in the email I should see a confirmation link registration
- And I am not a user
-
- When I go to the confirmation page
- And I should see Thanks for completing your registration
- And my registration is confirmed
- And my registration is complete
- And my registration is completed
- And I am a user
- And I am a member of The Bike Bush
-
- @javascript
- Scenario: Register as eager participant
- Given There is an upcoming conference in Moncton NB
- And Registration is open
- And an organization named Cool Cats Bikes exists in Sackville NB
-
- When I go to the landing page
- Then I see a Register Now link
- And I click on the Register Now link
-
- And I fill in my email with goodgodwin@hotmail.com
- And I press register
-
- And I fill in my firstname with Michael
- And I fill in my lastname with Godwin
- And I fill in my username with Godwin
- And I check is_participant
- And I press next
-
- And I see Do you require housing?
- And I select bed from housing
- And I fill in housing extra with I have a bad back
-
- And I see Do you want to borrow a bike?
- And I select large from loaner bike
-
- And I see Would you like to host a workshop?
- And I select No from workshop host
-
- And I see Anything else
- And I fill in other with I'm coming two months early
- And I should not be registered for the conference
-
- And I press submit
-
- Then I should be registered for the conference
- And my registration should not be confirmed
- And I should get a confirm email
- And in the email I should see please confirm your registration
- And in the email I should see a confirmation link
- And I see Who do you Represent
-
- When I go to the confirmation page
- Then I see Thanks for confirming
- And I see Who do you Represent
- And my registration is confirmed
- But my registration is not complete
- And my registration is not completed
-
- Then I click on Cool Cats Bikes
- And press next
-
- Then I should see Thanks for completing your registration
- And my registration is complete
- And my registration is completed
- But my registration is not paid
-
- Then I should get a Thanks email
- And in the email I should see pay the registration donation
- And in the email I should see a pay registration link
-
- When I go to the pay registration page
- Then I see Thanks for completing your registration
- And I see we ask that you pay
- And I see $25.00
-
- Then I pay 25.00
- Then I should see Your order summary
-
- When I finish with paypal
- Then I should see confirm your payment
- And I should see $25.00
- And I have enough funds
- And I press confirm payment
-
- Then I should see We'll see you in Moncton
- And my registration is paid
-
- @javascript
- Scenario: Register as eager with second thoughts
- Given There is an upcoming conference in Moncton NB
- And Registration is open
- And an organization named Cool Cats Bikes exists in Sackville NB
-
- When I go to the landing page
- Then I see a Register Now link
- And I click on the Register Now link
-
- And I fill in my email with goodgodwin@hotmail.com
- And I press register
-
- And I fill in my firstname with Michael
- And I fill in my lastname with Godwin
- And I fill in my username with Godwin
- And I check is_participant
- And I press next
-
- And I see Do you require housing?
- And I select bed from housing
- And I fill in housing extra with I have a bad back
-
- And I see Do you want to borrow a bike?
- And I select large from loaner bike
-
- And I see Would you like to host a workshop?
- And I select No from workshop host
-
- And I see Anything else
- And I fill in other with I'm coming two months early
- And I should not be registered for the conference
-
- And I press submit
-
- Then I should be registered for the conference
- And my registration should not be confirmed
- And I should get a confirm email
- And in the email I should see please confirm your registration
- And in the email I should see a confirmation link
- And I see Who do you Represent
-
- When I go to the confirmation page
- Then I see Thanks for confirming
- And I see Who do you Represent
- And my registration is confirmed
- But my registration is not complete
- And my registration is not completed
-
- Then I click on Cool Cats Bikes
- And press next
-
- Then I should see Thanks for completing your registration
- And my registration is complete
- And my registration is completed
- But my registration is not paid
-
- Then I should get a Thanks email
- And in the email I should see pay the registration donation
- And in the email I should see a pay registration link
-
- Then I should see Thanks for completing your registration
- And I see we ask that you pay
- And I see payment amount
- And I see submit payment
-
- Then I fill in payment amount with 12.34
- And press submit payment
- Then I should see Your order summary
-
- When I cancel the payment
- Then I should see Thanks for completing your registration
- And I see we ask that you pay
- And my registration is not paid
-
- @javascript
- Scenario: Register as workshop host
- Given There is an upcoming conference in Moncton NB
- And Registration is open
- And an organization named The Bike Bush exists in Musquodoboit Harbour NS
- And an organization named Cool Cats Bikes exists in Sackville NB
-
- When I go to the landing page
- Then I see a Register Now link
- And I click on the Register Now link
-
- And I fill in my email with scream@me.com
- And I press register
-
- And I fill in my firstname with Joe
- And I fill in my lastname with Smith
- And I fill in my username with Joey
- And I check is_participant
- And I press next
-
- And I see Do you require housing?
- And I select couch from housing
- And I fill in housing extra with I'm easy
-
- And I see Do you want to borrow a bike?
- And I select Yes, from loaner bike
-
- And I see Would you like to host a workshop?
- And I select Yes from workshop host
-
- And I see Anything else
- And I fill in other with Nope
- And I should not be registered for the conference
-
- And I press submit
-
- Then I should be registered for the conference
- But my registration should not be confirmed
- And I should get a confirm email
- And I should see Who do you Represent
-
- But my registration is not complete
- And my registration is not completed
-
- Then I click on The Bike Bush
- And press next
-
- Then I should see Workshop Information
- Then I fill in title with How make your shop more Capitalist
- Then I set info to Lorem Ipsum and Stuff
- Then I select organization management from stream
- Then I select presentation from presentation style
- Then I fill in notes with Down with all the anarchists
- Then press next
-
- Then in the email I should see please confirm your registration
- And in the email I should see a confirmation link registration
-
- When I go to the confirmation page
- And I should see Thanks for completing your registration
- And my registration is confirmed
- And my registration is complete
- And my registration is completed
-
- @javascript
- Scenario: Register with new organization
- Given There is an upcoming conference in Moncton NB
- And Registration is open
- And an organization named The Bike Bush exists in Musquodoboit Harbour NS
- And an organization named Cool Cats Bikes exists in Sackville NB
-
- When I go to the landing page
- Then I see a Register Now link
- And I click on the Register Now link
-
- And I fill in my email with example@example.com
- And I press register
-
- And I fill in my firstname with Emma
- And I fill in my lastname with Smith
- And I fill in my username with Em
- And I check is_participant
- And I press next
-
- And I see Do you require housing?
- And I select couch from housing
- And I fill in housing extra with I'm easy
-
- And I see Do you want to borrow a bike?
- And I select small from loaner bike
-
- And I see Would you like to host a workshop?
- And I select No from workshop host
-
- And I see Anything else
- And I fill in other with Nope
- And I should not be registered for the conference
-
- And I press submit
-
- Then I should be registered for the conference
- But my registration should not be confirmed
- And I should get a confirm email
- And I should see Who do you Represent
-
- But my registration is not complete
- And my registration is not completed
-
- Then I check add new org
- And I press next
-
- Then I should see Your Organization Information
- Then I fill in name with The Bike Fridge
- Then I set info to Lorem Ipsum and Stuff
- Then I fill in organization email with info@bikefridge.org
- Then I fill in street with 1044 Mushaboom Road
- Then I fill in city with Mushaboom
- Then I select ca from country
- Then I select ns from territory
- Then press next
-
- Then in the email I should see please confirm your registration
- And in the email I should see a confirmation link registration
-
- When I go to the confirmation page
- And I should see Thanks for completing your registration
- And my registration is confirmed
- And my registration is complete
- And my registration is completed
- And I am a member of The Bike Fridge
-
- @javascript
- Scenario: Lazy participant
- Given There is an upcoming conference in Moncton NB
- And Registration is open
- And an organization named The Bike Bush exists in Musquodoboit Harbour NS
- And an organization named Cool Cats Bikes exists in Sackville NB
-
- When I go to the landing page
- Then I see a Register Now link
- And I click on the Register Now link
-
- And I fill in my email with example@example.com
- And I press register
-
- And I press next
- But I see please tell us your name
-
- Then I fill in my firstname with Emma
- And I press next
- But I see please tell us your name
-
- Then I fill in my lastname with Smith
- And I press next
- But I see attending the conference or volunteering
-
- Then I check is_participant
- And I press next
-
- Then I select Yes from workshop host
- And press submit
-
- Then I should be registered for the conference
- But my registration should not be confirmed
- And I should get a confirm email
- And I should see Who do you Represent
-
- But my registration is not complete
- And my registration is not completed
-
- Then I press next
- But I see Please select an organization
-
- Then I click on The Bike Bush
- And press next
-
- Then I should see Workshop Information
- But press next
-
- But I should see Please give your workshop a title
- Then I fill in title with Why do I have to give all this info right now?
- And press next
-
- But I should see Please describe your workshop
- Then I set info to Lorem Ipsum and Stuff
-
- Then I select organization management from stream
- And I select presentation from presentation style
- And press next
-
- Then I should see Thanks for submitting your registration
-
- Then in the email I should see please confirm your registration
- And in the email I should see a confirmation link registration
-
- When I go to the confirmation page
- And I should see Thanks for completing your registration
- And my registration is confirmed
- And my registration is complete
- And my registration is completed
- And I am a member of The Bike Bush
- And My firstname should be Emma
- And My lastname should be Smith
- And My username should be Emma Smith
+Feature: Registration
+ In order to register for the latest Bike!Bike!
+ As a visitor
+
+ @javascript
+ Scenario: Register as really eager participant
+ Given There is an upcoming conference in Moncton NB
+ And Registration is open
+ And an organization named Cool Cats Bikes exists in Sackville NB
+
+ When I go to the landing page
+ Then I see a Register Now link
+ And I click on the Register Now link
+
+ And I fill in my email with goodgodwin@hotmail.com
+ And I press register
+
+ And I fill in my firstname with Michael
+ And I fill in my lastname with Godwin
+ And I fill in my username with Godwin
+ #And I check is_participant
+ #And I press submit
+
+ And I see Do you require housing?
+ And I select bed from housing
+ And I fill in housing extra with I have a bad back
+
+ And I see Do you want to borrow a bike?
+ And I select large from loaner bike
+
+ And I see Would you like to host a workshop?
+ And I select No from workshop host
+
+ And I see Anything else
+ And I fill in other with I'm coming two months early
+ And I should not be registered for the conference
+
+ And I press submit
+
+ Then I should be registered for the conference
+ And my registration should not be confirmed
+ And I should get a confirm email
+ And in the email I should see please confirm your registration
+ And in the email I should see a confirmation link
+ And I see Who do you Represent
+
+ When I go to the confirmation page
+ Then I see Thanks for confirming
+ And I see Who do you Represent
+ And my registration is confirmed
+ But my registration is not complete
+ And my registration is not completed
+
+ Then I click on Cool Cats Bikes
+ And press next
+
+ Then I should see Thanks for completing your registration
+ And my registration is complete
+ And my registration is completed
+ But my registration is not paid
+
+ Then I should get a Thanks email
+ And in the email I should see pay the registration donation
+ And in the email I should see a pay registration link
+
+ When I go to the pay registration page
+ Then I see Thanks for completing your registration
+ And I see we ask that you pay
+ And I see custom amount
+
+ Then I pay 12.34
+ Then I should see Pay with PayPal
+
+ When I finish with paypal
+ Then I should see confirm your payment
+ And I should see $12.34
+ And I have enough funds
+ And I press confirm payment
+
+ Then I should see We'll see you in Moncton
+ And my registration is paid
+
+ Scenario: Register as participant with some second thoughts
+ Given There is an upcoming conference in Moncton NB
+ And Registration is open
+ And an organization named The Bike Bush exists in Musquodoboit Harbour NS
+ And an organization named Cool Cats Bikes exists in Sackville NB
+
+ When I go to the registration page
+ #Then I see a Register Now link
+ #And I click on the Register Now link
+
+ And I fill in my email with shout@me.com
+ And I press next
+
+ And I fill in my firstname with Joe
+ And I fill in my lastname with Smith
+ And I fill in my username with Joey
+ #And I check is_participant
+ And I press cancel
+
+ Then I should see you will lose the infomation you have submitted
+ Then I press no
+ #And I should see Attending as
+ And firstname should be set to Joe
+ And lastname should be set to Smith
+ And username should be set to Joey
+ #And is_participant should be checked
+ #And is_volunteer should not be checked
+
+ Then I press cancel
+ And press yes
+ Then I should see Your registration has been cancelled
+
+ @javascript
+ Scenario: Register as participant
+ Given There is an upcoming conference in Moncton NB
+ And Registration is open
+ And an organization named The Bike Bush exists in Musquodoboit Harbour NS
+ And an organization named Cool Cats Bikes exists in Sackville NB
+
+ When I go to the landing page
+ Then I see a Register Now link
+ And I click on the Register Now link
+
+ And I fill in my email with shout@me.com
+ And I press register
+
+ And I fill in my firstname with Joe
+ And I fill in my lastname with Smith
+ And I fill in my username with Joey
+ #And I check is_participant
+ #And I press submit
+
+ And I see Do you require housing?
+ And I select couch from housing
+ And I fill in housing extra with I'm easy
+
+ And I see Do you want to borrow a bike?
+ And I select Yes, from loaner bike
+
+ And I see Would you like to host a workshop?
+ And I select No from workshop host
+
+ And I see Anything else
+ And I fill in other with Nope
+ And I should not be registered for the conference
+
+ And I press submit
+
+ Then I should be registered for the conference
+ But my registration should not be confirmed
+ And I should get a confirm email
+ And I should see Who do you Represent
+
+ But my registration is not complete
+ And my registration is not completed
+
+ Then I click on The Bike Bush
+ And press next
+ And my registration is completed
+
+ Then in the email I should see please confirm your registration
+ And in the email I should see a confirmation link registration
+ And I am not a user
+
+ When I go to the confirmation page
+ And I should see Thanks for completing your registration
+ And my registration is confirmed
+ And my registration is complete
+ And my registration is completed
+ And I am a user
+ And I am a member of The Bike Bush
+
+ @javascript
+ Scenario: Register as eager participant
+ Given There is an upcoming conference in Moncton NB
+ And Registration is open
+ And an organization named Cool Cats Bikes exists in Sackville NB
+
+ When I go to the landing page
+ Then I see a Register Now link
+ And I click on the Register Now link
+
+ And I fill in my email with goodgodwin@hotmail.com
+ And I press register
+
+ And I fill in my firstname with Michael
+ And I fill in my lastname with Godwin
+ And I fill in my username with Godwin
+ #And I check is_participant
+ #And I press submit
+
+ And I see Do you require housing?
+ And I select bed from housing
+ And I fill in housing extra with I have a bad back
+
+ And I see Do you want to borrow a bike?
+ And I select large from loaner bike
+
+ And I see Would you like to host a workshop?
+ And I select No from workshop host
+
+ And I see Anything else
+ And I fill in other with I'm coming two months early
+ And I should not be registered for the conference
+
+ And I press submit
+
+ Then I should be registered for the conference
+ And my registration should not be confirmed
+ And I should get a confirm email
+ And in the email I should see please confirm your registration
+ And in the email I should see a confirmation link
+ And I see Who do you Represent
+
+ When I go to the confirmation page
+ Then I see Thanks for confirming
+ And I see Who do you Represent
+ And my registration is confirmed
+ But my registration is not complete
+ And my registration is not completed
+
+ Then I click on Cool Cats Bikes
+ And press next
+
+ Then I should see Thanks for completing your registration
+ And my registration is complete
+ And my registration is completed
+ But my registration is not paid
+
+ Then I should get a Thanks email
+ And in the email I should see pay the registration donation
+ And in the email I should see a pay registration link
+
+ When I go to the pay registration page
+ Then I see Thanks for completing your registration
+ And I see we ask that you pay
+ And I see $25.00
+
+ Then I pay 25.00
+ Then I should see Pay with PayPal
+
+ When I finish with paypal
+ Then I should see confirm your payment
+ And I should see $25.00
+ And I have enough funds
+ And I press confirm payment
+
+ Then I should see We'll see you in Moncton
+ And my registration is paid
+
+ @javascript
+ Scenario: Register as eager with second thoughts
+ Given There is an upcoming conference in Moncton NB
+ And Registration is open
+ And an organization named Cool Cats Bikes exists in Sackville NB
+
+ When I go to the landing page
+ Then I see a Register Now link
+ And I click on the Register Now link
+
+ And I fill in my email with goodgodwin@hotmail.com
+ And I press register
+
+ And I fill in my firstname with Michael
+ And I fill in my lastname with Godwin
+ And I fill in my username with Godwin
+ #And I check is_participant
+ #And I press submit
+
+ And I see Do you require housing?
+ And I select bed from housing
+ And I fill in housing extra with I have a bad back
+
+ And I see Do you want to borrow a bike?
+ And I select large from loaner bike
+
+ And I see Would you like to host a workshop?
+ And I select No from workshop host
+
+ And I see Anything else
+ And I fill in other with I'm coming two months early
+ And I should not be registered for the conference
+
+ And I press submit
+
+ Then I should be registered for the conference
+ And my registration should not be confirmed
+ And I should get a confirm email
+ And in the email I should see please confirm your registration
+ And in the email I should see a confirmation link
+ And I see Who do you Represent
+
+ When I go to the confirmation page
+ Then I see Thanks for confirming
+ And I see Who do you Represent
+ And my registration is confirmed
+ But my registration is not complete
+ And my registration is not completed
+
+ Then I click on Cool Cats Bikes
+ And press next
+
+ Then I should see Thanks for completing your registration
+ And my registration is complete
+ And my registration is completed
+ But my registration is not paid
+
+ Then I should get a Thanks email
+ And in the email I should see pay the registration donation
+ And in the email I should see a pay registration link
+
+ Then I should see Thanks for completing your registration
+ And I see we ask that you pay
+ #And I see payment amount
+ And I see custom amount
+
+ Then I fill in payment amount with 12.34
+ And press custom amount
+ Then I should see Pay with PayPal
+
+ When I cancel the payment
+ Then I should see Thanks for completing your registration
+ And I see we ask that you pay
+ And my registration is not paid
+
+ @javascript
+ Scenario: Register as workshop host
+ Given There is an upcoming conference in Moncton NB
+ And Registration is open
+ And an organization named The Bike Bush exists in Musquodoboit Harbour NS
+ And an organization named Cool Cats Bikes exists in Sackville NB
+
+ When I go to the landing page
+ Then I see a Register Now link
+ And I click on the Register Now link
+
+ And I fill in my email with scream@me.com
+ And I press register
+
+ And I fill in my firstname with Joe
+ And I fill in my lastname with Smith
+ And I fill in my username with Joey
+ #And I check is_participant
+ #And I press submit
+
+ And I see Do you require housing?
+ And I select couch from housing
+ And I fill in housing extra with I'm easy
+
+ And I see Do you want to borrow a bike?
+ And I select Yes, from loaner bike
+
+ And I see Would you like to host a workshop?
+ And I select Yes from workshop host
+
+ And I see Anything else
+ And I fill in other with Nope
+ And I should not be registered for the conference
+
+ And I press submit
+
+ Then I should be registered for the conference
+ But my registration should not be confirmed
+ And I should get a confirm email
+ And I should see Who do you Represent
+
+ But my registration is not complete
+ And my registration is not completed
+
+ Then I click on The Bike Bush
+ And press next
+
+ Then I should see Workshop Information
+ Then I fill in title with How make your shop more Capitalist
+ Then I set info to Lorem Ipsum and Stuff
+ Then I select organization management from stream
+ Then I select presentation from presentation style
+ Then I fill in notes with Down with all the anarchists
+ Then press next
+
+ Then in the email I should see please confirm your registration
+ And in the email I should see a confirmation link registration
+
+ When I go to the confirmation page
+ And I should see Thanks for completing your registration
+ And my registration is confirmed
+ And my registration is complete
+ And my registration is completed
+
+ @javascript
+ Scenario: Register with new organization
+ Given There is an upcoming conference in Moncton NB
+ And Registration is open
+ And an organization named The Bike Bush exists in Musquodoboit Harbour NS
+ And an organization named Cool Cats Bikes exists in Sackville NB
+
+ When I go to the landing page
+ Then I see a Register Now link
+ And I click on the Register Now link
+
+ And I fill in my email with example@example.com
+ And I press register
+
+ And I fill in my firstname with Emma
+ And I fill in my lastname with Smith
+ And I fill in my username with Em
+ #And I check is_participant
+ #And I press submit
+
+ And I see Do you require housing?
+ And I select couch from housing
+ And I fill in housing extra with I'm easy
+
+ And I see Do you want to borrow a bike?
+ And I select small from loaner bike
+
+ And I see Would you like to host a workshop?
+ And I select No from workshop host
+
+ And I see Anything else
+ And I fill in other with Nope
+ And I should not be registered for the conference
+
+ And I press submit
+
+ Then I should be registered for the conference
+ But my registration should not be confirmed
+ And I should get a confirm email
+ And I should see Who do you Represent
+
+ But my registration is not complete
+ And my registration is not completed
+
+ Then I check add new org
+ And I press next
+
+ Then I should see Your Organization Information
+ Then I fill in name with The Bike Fridge
+ Then I set info to Lorem Ipsum and Stuff
+ Then I fill in organization email with info@bikefridge.org
+ Then I fill in street with 1044 Mushaboom Road
+ Then I fill in city with Mushaboom
+ Then I select ca from country
+ Then I select ns from territory
+ Then press next
+
+ Then in the email I should see please confirm your registration
+ And in the email I should see a confirmation link registration
+
+ When I go to the confirmation page
+ And I should see Thanks for completing your registration
+ And my registration is confirmed
+ And my registration is complete
+ And my registration is completed
+ And I am a member of The Bike Fridge
+
+ @javascript
+ Scenario: Lazy participant
+ Given There is an upcoming conference in Moncton NB
+ And Registration is open
+ And an organization named The Bike Bush exists in Musquodoboit Harbour NS
+ And an organization named Cool Cats Bikes exists in Sackville NB
+
+ When I go to the landing page
+ Then I see a Register Now link
+ And I click on the Register Now link
+
+ And I fill in my email with example@example.com
+ And I press register
+
+ And I press submit
+ But I see please tell us your name
+
+ Then I fill in my firstname with Emma
+ And I press submit
+ But I see please tell us your name
+
+ Then I fill in my lastname with Smith
+ #And I press submit
+ #But I see attending the conference or volunteering
+
+ #Then I check is_participant
+ #And I press submit
+
+ Then I select Yes from workshop host
+ And press submit
+
+ Then I should be registered for the conference
+ But my registration should not be confirmed
+ And I should get a confirm email
+ And I should see Who do you Represent
+
+ But my registration is not complete
+ And my registration is not completed
+
+ Then I press next
+ But I see Please select an organization
+
+ Then I click on The Bike Bush
+ And press next
+
+ Then I should see Workshop Information
+ But press next
+
+ But I should see Please give your workshop a title
+ Then I fill in title with Why do I have to give all this info right now?
+ And press next
+
+ But I should see Please describe your workshop
+ Then I set info to Lorem Ipsum and Stuff
+
+ Then I select organization management from stream
+ And I select presentation from presentation style
+ And press next
+
+ Then I should see Thanks for submitting your registration
+
+ Then in the email I should see please confirm your registration
+ And in the email I should see a confirmation link registration
+
+ When I go to the confirmation page
+ And I should see Thanks for completing your registration
+ And my registration is confirmed
+ And my registration is complete
+ And my registration is completed
+ And I am a member of The Bike Bush
+ And My firstname should be Emma
+ And My lastname should be Smith
+ And My username should be Emma Smith
diff --git a/features/step_definitions/interface_steps.rb b/features/step_definitions/interface_steps.rb
index 20f6baf..859aaa1 100644
--- a/features/step_definitions/interface_steps.rb
+++ b/features/step_definitions/interface_steps.rb
@@ -1,238 +1,240 @@
-Given(/^I am on the (.+) page$/) do |page_name|
- visit path_to(page_name.to_sym)
-end
-
-Given(/^I am on the (.+) site$/) do |language|
- ApplicationController::set_host (get_language_code(language) + '.bikebike.org')
-end
-
-Given(/^I am in (.+)$/) do |location|
- ApplicationController::set_location (location)
-end
-
-When(/^I go to the (.+) page$/) do |page_name|
- visit path_to(page_name.to_sym)
-end
-
-When(/^(I )?(finish|cancel) ((with )?paypal)$/) do |a, action, b, c|
- @last_registration.payment_info = {:payer_id => '1234', :token => '5678', :amount => @last_payment_amount}.to_yaml
- @last_registration.save!
- visit path_to((action == 'finish' ? 'confirm' : action) + ' paypal')
-end
-
-Then(/^(I )?pay \$?([\d\.]+)$/) do | a, amount |
- button = nil
- begin; button = locate("auto pay #{amount.to_f.to_i}"); rescue; end
- if button
- click_link_or_button(button)
- else
- fill_in(locate('payment amount'), :with => amount)
- click_link_or_button(locate('custom amount'))
- end
- @last_payment_amount = amount
-end
-
-Then(/^(I )?(don't )?have enough funds$/) do | a, status |
- if status.blank?
- info = YAML.load(@last_registration.payment_info)
- info[:status] = 'Completed'
- @last_registration.payment_info = info.to_yaml
- @last_registration.save!
- end
-end
-
-Given(/^There is an upcoming conference( in .+)?$/) do |location|
- @last_conference = FactoryGirl.create(:upcoming_conference)
- if location
- @org = create_org(nil, location)
- @last_conference.organizations << @org
- @last_conference.save!
- end
-end
-
-Given(/^an organization( named .+)? exists( in .+)?$/) do |name, location|
- if location =~ /every country/i
- Carmen::World.instance.subregions.each { |country|
- #puts "#{country.code}"
-
- if country.subregions?
- country.subregions.each { |region|
- org = Organization.new(name: rand(36**16).to_s(36), slug: rand(36**16).to_s(36))#create_org#(Forgery::LoremIpsum.sentence)
- org.locations << Location.new(city: 'City', country: country.code, territory: region.code)
- org.save!
- }
- else
- org = Organization.new(name: rand(36**16).to_s(36), slug: rand(36**16).to_s(36))#create_org#(Forgery::LoremIpsum.sentence)
- org.locations << Location.new(city: 'City', country: country.code)
- org.save!
- end
- }
- else
- create_org(name ? name.gsub(/^\s*named\s+(.*?)\s*$/, '\1') : nil, location ? location.gsub(/^\s*in\s+(.*?)\s*$/, '\1') : nil)
- end
-end
-
-Given(/^Registration is (open|closed)$/) do |status|
- @last_conference.registration_open = (status == 'open')
- @last_conference.save!
-end
-
-Then(/^I (should )?see (.+)$/) do | a, item |
- if /(the )?Bike!Bike! logo$/ =~ item
- expect(page).to have_selector('svg.logo')
- elsif /(the|a)?\s?(.+) menu item$/ =~ item
- within('#main-nav') { expect(page).to have_link Regexp.last_match(2) }
- elsif /(the|a)?\s?(.+) image$/ =~ item
- expect(page).to have_selector('#'+Regexp.last_match(2)+' img')
- elsif /(the|a)?\s?(.+) link$/ =~ item
- expect(page).to have_link Regexp.last_match(2)
- else
- expect(page).to have_text item
- end
-end
-
-
-## ======= Forms ======= ##
-
-Then(/^(I )?click on (.+?)( button| link| which is hidden)?$/) do | a, item, type |
- item = item.gsub(/^\s*(a|the)\s*(.*)$/, '\2')
- if type && type.strip == 'button'
- click_button(item)
- elsif type && type.strip == 'link'
- click_link(item)
- elsif type && type =~ /hidden/
- find('[id$="' + item.gsub(/\s+/, '_') + '"]', :visible => false).click
- else
- page.find_link(item).trigger('click')
- end
-end
-
-Then(/^(I )?press (.+)$/) do | a, item |
- click_link_or_button(locate(item))
-end
-
-Then(/^I (un)?check (.+)$/) do | state, item |
- if state == 'un'
- uncheck(locate(item))
- else
- check(locate(item))
- end
-end
-
-Then(/^I fill in (.+?) with (.+)$/) do | field, value |
- field = field.gsub(/^\s*(my|the)\s*(.+)$/, '\2')
- fill_in(locate(field), :with => value)
-
- if /email/ =~ field && !(/organization/ =~ field)
- @last_email_entered = value
- end
-end
-
-Then(/^(my )?(.+)? should (not )?be set to (.+)$/) do | a, field, should, value |
- field = field.gsub(/^\s*(my|the)\s*(.+)$/, '\2')
- page.find('[id$="' + field.gsub(/\s+/, '_') + '"]').value.send(should.nil? ? 'should' : 'should_not', eq(value))
-end
-
-Then(/^(my )?(.+)? should (not )?be checked$/) do | a, field, should |
- field = field.gsub(/^\s*(my|the)\s*(.+)$/, '\2')
- page.find('[id$="' + field.gsub(/\s+/, '_') + '"]').send(should.nil? ? 'should' : 'should_not', be_checked)
-end
-
-Then(/^I set (.+?) to (.+)$/) do | field, value |
- field = field.gsub(/^\s*(my|the)\s*(.+)$/, '\2')
- page.find('[id$="' + field.gsub(/\s+/, '_') + '"]', :visible => false).set value
-end
-
-Then(/^(I )wait for (.+?) to appear$/) do | a, field |
- count = 0
- element = nil
- while element.nil? && count < 120
- begin element = page.find('[id$="' + field.gsub(/\s+/, '_') + '"]'); rescue; end
- begin element ||= page.find('[id$="' + field.gsub(/\s+/, '_') + '"]', :visible => false); rescue; end
- sleep(1)
- count += 1
- end
-end
-
-Then(/^show the page$/) do
- print page.html
- save_and_open_page
-end
-
-Then(/^I select (.+?) from (.+)$/) do | value, field |
- select(value, :from => locate(field))
-end
-
-## ======= Emails ======= ##
-
-Then(/^I should not get an email$/) do
- ActionMailer::Base.deliveries.size.should eq 0
-end
-
-Then (/^I should get an? (.+) email$/) do |subject|
- @last_email = ActionMailer::Base.deliveries.last
- if @last_email_entered
- @last_email.to.should include @last_email_entered
- end
- @last_email.subject.should include(subject)
-end
-
-Then (/^the email should contain (.+)$/) do |value|
- @last_email.parts.first.body.raw_source.should include(value)
- @last_email.parts.last.body.raw_source.should include(value)
-end
-
-Then (/^in the email I should see (.+)$/) do |value|
- if /(an?|the|my) (.+) link/ =~ value
- test = path_to Regexp.last_match(2)
- @last_email.parts.first.body.raw_source.should include(test)
- @last_email.parts.last.body.raw_source.should include(test)
- else
- @last_email.parts.first.body.raw_source.should include(value)
- @last_email.parts.last.body.raw_source.should include(value)
- end
-end
-
-Then (/^I should (not )?be registered for the conference$/) do |state|
- @last_registration = ConferenceRegistration.find_by(:email => @last_email_entered)
- if state && state.strip == 'not'
- @last_registration.should be_nil
- else
- @last_registration.should_not be_nil
- end
-end
-
-Then (/^my registration (should( not)? be|is( not)?) (confirmed|completed?|paid)$/) do |state, x, y, field|
- ConferenceRegistration.find_by!(:email => @last_email_entered).
- send(field == 'confirmed' ? 'is_confirmed' : (field == 'paid' ? 'registration_fees_paid' : field)).
- send(state =~ / not/ ? 'should_not' : 'should', be)
-end
-
-Then (/^I am( not)? a user$/) do |state|
- User.find_by(:email => @last_email_entered).
- send(state =~ / not/ ? 'should_not' : 'should', be)
-end
-
-Then (/^I am( not)? a member of (.+)$/) do |state, org_name|
- user = nil
- should_be = !(state =~ / not/)
- org = Organization.find_by(:name => org_name)
- if should_be
- org.should be
- org.users.should be
- elsif org.nil? || org.users.nil?
- return
- end
- org.users.each { |u|
- if u.email == @last_email_entered
- user = u
- end
- }
- user.send(should_be ? 'should' : 'should_not', be)
-end
-
-Then (/^My (.+) should(not )? be (.+)$/) do |field, state, value|
- User.find_by(:email => @last_email_entered).
- send(field.gsub(/\s/, '_')).
- send(state =~ / not/ ? 'should_not' : 'should', eq(value))
-end
+Given(/^I am on the (.+) page$/) do |page_name|
+ visit path_to(page_name.to_sym)
+end
+
+Given(/^I am on the (.+) site$/) do |language|
+ ApplicationController::set_host (get_language_code(language) + '.bikebike.org')
+end
+
+Given(/^I am in (.+)$/) do |location|
+ ApplicationController::set_location (location)
+end
+
+When(/^I go to the (.+) page$/) do |page_name|
+ visit path_to(page_name.to_sym)
+end
+
+When(/^(I )?(finish|cancel) ((with )?(paypal|the payment))$/) do |a, action, b, c, d|
+ if action != 'cancel'
+ @last_registration.payment_info = {:payer_id => '1234', :token => '5678', :amount => @last_payment_amount}.to_yaml
+ @last_registration.save!
+ end
+ visit path_to((action == 'finish' ? 'confirm' : action) + ' paypal')
+end
+
+Then(/^(I )?pay \$?([\d\.]+)$/) do | a, amount |
+ button = nil
+ begin; button = locate("auto pay #{amount.to_f.to_i}"); rescue; end
+ if button
+ click_link_or_button(button)
+ else
+ fill_in(locate('payment amount'), :with => amount)
+ click_link_or_button(locate('custom amount'))
+ end
+ @last_payment_amount = amount
+end
+
+Then(/^(I )?(don't )?have enough funds$/) do | a, status |
+ if status.blank?
+ info = YAML.load(@last_registration.payment_info)
+ info[:status] = 'Completed'
+ @last_registration.payment_info = info.to_yaml
+ @last_registration.save!
+ end
+end
+
+Given(/^There is an upcoming conference( in .+)?$/) do |location|
+ @last_conference = FactoryGirl.create(:upcoming_conference)
+ if location
+ @org = create_org(nil, location)
+ @last_conference.organizations << @org
+ @last_conference.save!
+ end
+end
+
+Given(/^an organization( named .+)? exists( in .+)?$/) do |name, location|
+ if location =~ /every country/i
+ Carmen::World.instance.subregions.each { |country|
+ #puts "#{country.code}"
+
+ if country.subregions?
+ country.subregions.each { |region|
+ org = Organization.new(name: rand(36**16).to_s(36), slug: rand(36**16).to_s(36))#create_org#(Forgery::LoremIpsum.sentence)
+ org.locations << Location.new(city: 'City', country: country.code, territory: region.code)
+ org.save!
+ }
+ else
+ org = Organization.new(name: rand(36**16).to_s(36), slug: rand(36**16).to_s(36))#create_org#(Forgery::LoremIpsum.sentence)
+ org.locations << Location.new(city: 'City', country: country.code)
+ org.save!
+ end
+ }
+ else
+ create_org(name ? name.gsub(/^\s*named\s+(.*?)\s*$/, '\1') : nil, location ? location.gsub(/^\s*in\s+(.*?)\s*$/, '\1') : nil)
+ end
+end
+
+Given(/^Registration is (open|closed)$/) do |status|
+ @last_conference.registration_open = (status == 'open')
+ @last_conference.save!
+end
+
+Then(/^I (should )?see (.+)$/) do | a, item |
+ if /(the )?Bike!Bike! logo$/ =~ item
+ expect(page).to have_selector('svg.logo')
+ elsif /(the|a)?\s?(.+) menu item$/ =~ item
+ within('#main-nav') { expect(page).to have_link Regexp.last_match(2) }
+ elsif /(the|a)?\s?(.+) image$/ =~ item
+ expect(page).to have_selector('#'+Regexp.last_match(2)+' img')
+ elsif /(the|a)?\s?(.+) link$/ =~ item
+ expect(page).to have_link Regexp.last_match(2)
+ else
+ expect(page).to have_text item
+ end
+end
+
+
+## ======= Forms ======= ##
+
+Then(/^(I )?click on (.+?)( button| link| which is hidden)?$/) do | a, item, type |
+ item = item.gsub(/^\s*(a|the)\s*(.*)$/, '\2')
+ if type && type.strip == 'button'
+ click_button(item)
+ elsif type && type.strip == 'link'
+ click_link(item)
+ elsif type && type =~ /hidden/
+ find('[id$="' + item.gsub(/\s+/, '_') + '"]', :visible => false).click
+ else
+ page.find_link(item).trigger('click')
+ end
+end
+
+Then(/^(I )?press (.+)$/) do | a, item |
+ click_link_or_button(locate(item))
+end
+
+Then(/^I (un)?check (.+)$/) do | state, item |
+ if state == 'un'
+ uncheck(locate(item))
+ else
+ check(locate(item))
+ end
+end
+
+Then(/^I fill in (.+?) with (.+)$/) do | field, value |
+ field = field.gsub(/^\s*(my|the)\s*(.+)$/, '\2')
+ fill_in(locate(field), :with => value)
+
+ if /email/ =~ field && !(/organization/ =~ field)
+ @last_email_entered = value
+ end
+end
+
+Then(/^(my )?(.+)? should (not )?be set to (.+)$/) do | a, field, should, value |
+ field = field.gsub(/^\s*(my|the)\s*(.+)$/, '\2')
+ page.find('[id$="' + field.gsub(/\s+/, '_') + '"]').value.send(should.nil? ? 'should' : 'should_not', eq(value))
+end
+
+Then(/^(my )?(.+)? should (not )?be checked$/) do | a, field, should |
+ field = field.gsub(/^\s*(my|the)\s*(.+)$/, '\2')
+ page.find('[id$="' + field.gsub(/\s+/, '_') + '"]').send(should.nil? ? 'should' : 'should_not', be_checked)
+end
+
+Then(/^I set (.+?) to (.+)$/) do | field, value |
+ field = field.gsub(/^\s*(my|the)\s*(.+)$/, '\2')
+ page.find('[id$="' + field.gsub(/\s+/, '_') + '"]', :visible => false).set value
+end
+
+Then(/^(I )wait for (.+?) to appear$/) do | a, field |
+ count = 0
+ element = nil
+ while element.nil? && count < 120
+ begin element = page.find('[id$="' + field.gsub(/\s+/, '_') + '"]'); rescue; end
+ begin element ||= page.find('[id$="' + field.gsub(/\s+/, '_') + '"]', :visible => false); rescue; end
+ sleep(1)
+ count += 1
+ end
+end
+
+Then(/^show the page$/) do
+ print page.html
+ save_and_open_page
+end
+
+Then(/^I select (.+?) from (.+)$/) do | value, field |
+ select(value, :from => locate(field))
+end
+
+## ======= Emails ======= ##
+
+Then(/^I should not get an email$/) do
+ ActionMailer::Base.deliveries.size.should eq 0
+end
+
+Then (/^I should get an? (.+) email$/) do |subject|
+ @last_email = ActionMailer::Base.deliveries.last
+ if @last_email_entered
+ @last_email.to.should include @last_email_entered
+ end
+ @last_email.subject.should include(subject)
+end
+
+Then (/^the email should contain (.+)$/) do |value|
+ @last_email.parts.first.body.raw_source.should include(value)
+ @last_email.parts.last.body.raw_source.should include(value)
+end
+
+Then (/^in the email I should see (.+)$/) do |value|
+ if /(an?|the|my) (.+) link/ =~ value
+ test = path_to Regexp.last_match(2)
+ @last_email.parts.first.body.raw_source.should include(test)
+ @last_email.parts.last.body.raw_source.should include(test)
+ else
+ @last_email.parts.first.body.raw_source.should include(value)
+ @last_email.parts.last.body.raw_source.should include(value)
+ end
+end
+
+Then (/^I should (not )?be registered for the conference$/) do |state|
+ @last_registration = ConferenceRegistration.find_by(:email => @last_email_entered)
+ if state && state.strip == 'not'
+ @last_registration.should be_nil
+ else
+ @last_registration.should_not be_nil
+ end
+end
+
+Then (/^my registration (should( not)? be|is( not)?) (confirmed|completed?|paid)$/) do |state, x, y, field|
+ ConferenceRegistration.find_by!(:email => @last_email_entered).
+ send(field == 'confirmed' ? 'is_confirmed' : (field == 'paid' ? 'registration_fees_paid' : field)).
+ send(state =~ / not/ ? 'should_not' : 'should', be)
+end
+
+Then (/^I am( not)? a user$/) do |state|
+ User.find_by(:email => @last_email_entered).
+ send(state =~ / not/ ? 'should_not' : 'should', be)
+end
+
+Then (/^I am( not)? a member of (.+)$/) do |state, org_name|
+ user = nil
+ should_be = !(state =~ / not/)
+ org = Organization.find_by(:name => org_name)
+ if should_be
+ org.should be
+ org.users.should be
+ elsif org.nil? || org.users.nil?
+ return
+ end
+ org.users.each { |u|
+ if u.email == @last_email_entered
+ user = u
+ end
+ }
+ user.send(should_be ? 'should' : 'should_not', be)
+end
+
+Then (/^My (.+) should(not )? be (.+)$/) do |field, state, value|
+ User.find_by(:email => @last_email_entered).
+ send(field.gsub(/\s/, '_')).
+ send(state =~ / not/ ? 'should_not' : 'should', eq(value))
+end
diff --git a/features/support/paths.rb b/features/support/paths.rb
index aa53615..590adf2 100644
--- a/features/support/paths.rb
+++ b/features/support/paths.rb
@@ -1,36 +1,38 @@
-module NavigationHelpers
- def path_to(page_name)
- append_root = false
- case page_name
- when /^landing$/i
- path = :root
- when /^confirmation$/i
- path = "/conferences/bikebike/#{@last_conference.slug}/register/confirm/#{@last_registration.confirmation_token}"
- when /^pay registration$/i
- path = "/conferences/bikebike/#{@last_conference.slug}/register/pay-registration/#{@last_registration.confirmation_token}"
- when /^confirm paypal$/i
- path = "/conferences/bikebike/#{@last_conference.slug}/register/paypal-confirm/#{@last_registration.payment_confirmation_token}"
- when /^cancel paypal$/i
- path = "/conferences/bikebike/#{@last_conference.slug}/register/paypal-cancel/#{@last_registration.confirmation_token}"
- when /^translation list$/i
- path = '/translations/'
- when /^(.+) translations?$/i
- path = '/translations/' + get_language_code(Regexp.last_match(1))
- when /^organization list$/i
- path = '/organizations/'
- end
-
- if path.is_a?(Symbol)
- begin
- path = self.send((path.to_s + '_url').to_sym).gsub(/^http:\/\/.+?(\/.*)$/, '\1')
- rescue Object => e
- raise "Can't find mapping from \"#{page_name}\" to a path.\n" +
- "#{path}_url\n" +
- "Now, go and add a mapping in #{__FILE__}"
- end
- end
- path
- end
-end
-
-World(NavigationHelpers)
+module NavigationHelpers
+ def path_to(page_name)
+ append_root = false
+ case page_name
+ when /^landing$/i
+ path = :root
+ when /^confirmation$/i
+ path = "/conferences/bikebike/#{@last_conference.slug}/register/confirm/#{@last_registration.confirmation_token}"
+ when /^registration$/i
+ path = "/conferences/bikebike/#{@last_conference.slug}/register/"
+ when /^pay registration$/i
+ path = "/conferences/bikebike/#{@last_conference.slug}/register/pay-registration/#{@last_registration.confirmation_token}"
+ when /^confirm paypal$/i
+ path = "/conferences/bikebike/#{@last_conference.slug}/register/paypal-confirm/#{@last_registration.payment_confirmation_token}"
+ when /^cancel paypal$/i
+ path = "/conferences/bikebike/#{@last_conference.slug}/register/paypal-cancel/#{@last_registration.confirmation_token}"
+ when /^translation list$/i
+ path = '/translations/'
+ when /^(.+) translations?$/i
+ path = '/translations/' + get_language_code(Regexp.last_match(1))
+ when /^organization list$/i
+ path = '/organizations/'
+ end
+
+ if path.is_a?(Symbol)
+ begin
+ path = self.send((path.to_s + '_url').to_sym).gsub(/^http:\/\/.+?(\/.*)$/, '\1')
+ rescue Object => e
+ raise "Can't find mapping from \"#{page_name}\" to a path.\n" +
+ "#{path}_url\n" +
+ "Now, go and add a mapping in #{__FILE__}"
+ end
+ end
+ path
+ end
+end
+
+World(NavigationHelpers)
diff --git a/features/volunteer-registration.feature b/features/volunteer-registration.feature
index 6690693..c56209b 100644
--- a/features/volunteer-registration.feature
+++ b/features/volunteer-registration.feature
@@ -1,46 +1,47 @@
-Feature: Volunteer Registration
- In order to register to volunteer at the latest Bike!Bike!
- As a visitor
-
- @javascript
- Scenario: Register as volunteer
- Given There is an upcoming conference in Moncton NB
- And Registration is open
-
- When I go to the landing page
- Then I see a Register Now link
- And I click on the Register Now link
-
- And I fill in my email with example@example.com
- And I press register
-
- And I fill in my firstname with Francis
- And I fill in my lastname with Bacon
- And I fill in my username with Bacon
- And I check is_volunteer
- And I press next
-
- Then I see Contact Information
- And I fill in address with 1234 Some St.
- And I fill in phone number with 555-555-5555
-
- Then I see Do you have housing
- And I fill in beds with 0
- And I fill in couch_space with 5
- And I fill in tents with 2
-
- Then I see Anything else
- And I fill in other with So excited!
-
- And I press next
-
- Then I should be registered for the conference
- And my registration should not be confirmed
- And I should get a confirm email
- And in the email I should see please confirm your registration
- And in the email I should see a confirmation link registration
-
- When I go to the confirmation page
- Then I should see Thanks for completing your registration
- And my registration is complete
- And my registration is completed
+#Feature: Volunteer Registration
+# In order to register to volunteer at the latest Bike!Bike!
+# As a visitor
+#
+# @javascript
+# Scenario: Register as volunteer
+# Given There is an upcoming conference in Moncton NB
+# And Registration is open
+#
+# When I go to the landing page
+# Then I see a Register Now link
+# And I click on the Register Now link
+#
+# And I fill in my email with example@example.com
+# And I press register
+#
+# And I fill in my firstname with Francis
+# And I fill in my lastname with Bacon
+# And I fill in my username with Bacon
+# #And I check is_volunteer
+# #And I press submit
+#
+# Then I see Contact Information
+# And I fill in address with 1234 Some St.
+# And I fill in phone number with 555-555-5555
+#
+# Then I see Do you have housing
+# And I fill in beds with 0
+# And I fill in couch_space with 5
+# And I fill in tents with 2
+#
+# Then I see Anything else
+# And I fill in other with So excited!
+#
+# And I press submit
+#
+# Then I should be registered for the conference
+# And my registration should not be confirmed
+# And I should get a confirm email
+# And in the email I should see please confirm your registration
+# And in the email I should see a confirmation link registration
+#
+# When I go to the confirmation page
+# Then I should see Thanks for completing your registration
+# And my registration is complete
+# And my registration is completed
+#
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index b33f4c6..1e109f9 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -1,62 +1,61 @@
-# This file is copied to spec/ when you run 'rails generate rspec:install'
-ENV["RAILS_ENV"] ||= 'test'
-require File.expand_path("../../config/environment", __FILE__)
-require 'rspec/rails'
-require 'rspec/autorun'
-require 'bike_bike_test_helper'
-#+require 'dotenv'; Dotenv.overload ".env.test"
-
-# Requires supporting ruby files with custom matchers and macros, etc,
-# in spec/support/ and its subdirectories.
-Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
-
-# Checks for pending migrations before tests are run.
-# If you are not using ActiveRecord, you can remove this line.
-ActiveRecord::Migration.check_pending! if defined?(ActiveRecord::Migration)
-
-RSpec.configure do |config|
- # ## Mock Framework
- #
- # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
- #
- # config.mock_with :mocha
- # config.mock_with :flexmock
- # config.mock_with :rr
-
- # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
- config.fixture_path = "#{::Rails.root}/spec/fixtures"
-
- # If you're not using ActiveRecord, or you'd prefer not to run each of your
- # examples within a transaction, remove the following line or assign false
- # instead of true.
- config.use_transactional_fixtures = true
-
- # If true, the base class of anonymous controllers will be inferred
- # automatically. This will be the default behavior in future versions of
- # rspec-rails.
- config.infer_base_class_for_anonymous_controllers = false
-
- # Run specs in random order to surface order dependencies. If you find an
- # order dependency and want to debug it, you can fix the order by providing
- # the seed, which is printed after each run.
- # --seed 1234
- config.order = "random"
-
- config.before(:each) do
- fu
- Translation.connection.execute("TRUNCATE TABLE translations RESTART IDENTITY;")
- translations = DevTranslation.connection.select_all("SELECT * FROM translations")
-
- translations.each { |t|
- Translation.connection.execute("
- INSERT INTO
- translations
- (id, locale, key, value, interpolations, is_proc, created_at, updated_at)
- VALUES
- (#{t['id']}, #{Translation.sanitize(t['locale'])}, #{Translation.sanitize(t['key'])}, #{Translation.sanitize(t['value'])}, #{Translation.sanitize(t['interpolations'])}, #{Translation.sanitize(t['is_proc'])}, #{Translation.sanitize(t['created_at'])}, #{Translation.sanitize(t['updated_at'])})
- ;")
- }
- #visit 1, 2, 3
- end
-
-end
+# This file is copied to spec/ when you run 'rails generate rspec:install'
+ENV["RAILS_ENV"] ||= 'test'
+require File.expand_path("../../config/environment", __FILE__)
+require 'rspec/rails'
+require 'rspec/autorun'
+require 'bike_bike_test_helper'
+#+require 'dotenv'; Dotenv.overload ".env.test"
+
+# Requires supporting ruby files with custom matchers and macros, etc,
+# in spec/support/ and its subdirectories.
+Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
+
+# Checks for pending migrations before tests are run.
+# If you are not using ActiveRecord, you can remove this line.
+ActiveRecord::Migration.check_pending! if defined?(ActiveRecord::Migration)
+
+RSpec.configure do |config|
+ # ## Mock Framework
+ #
+ # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
+ #
+ # config.mock_with :mocha
+ # config.mock_with :flexmock
+ # config.mock_with :rr
+
+ # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
+ config.fixture_path = "#{::Rails.root}/spec/fixtures"
+
+ # If you're not using ActiveRecord, or you'd prefer not to run each of your
+ # examples within a transaction, remove the following line or assign false
+ # instead of true.
+ config.use_transactional_fixtures = true
+
+ # If true, the base class of anonymous controllers will be inferred
+ # automatically. This will be the default behavior in future versions of
+ # rspec-rails.
+ config.infer_base_class_for_anonymous_controllers = false
+
+ # Run specs in random order to surface order dependencies. If you find an
+ # order dependency and want to debug it, you can fix the order by providing
+ # the seed, which is printed after each run.
+ # --seed 1234
+ config.order = "random"
+
+ config.before(:each) do
+ Translation.connection.execute("TRUNCATE TABLE translations RESTART IDENTITY;")
+ translations = DevTranslation.connection.select_all("SELECT * FROM translations")
+
+ translations.each { |t|
+ Translation.connection.execute("
+ INSERT INTO
+ translations
+ (id, locale, key, value, interpolations, is_proc, created_at, updated_at)
+ VALUES
+ (#{t['id']}, #{Translation.sanitize(t['locale'])}, #{Translation.sanitize(t['key'])}, #{Translation.sanitize(t['value'])}, #{Translation.sanitize(t['interpolations'])}, #{Translation.sanitize(t['is_proc'])}, #{Translation.sanitize(t['created_at'])}, #{Translation.sanitize(t['updated_at'])})
+ ;")
+ }
+ #visit 1, 2, 3
+ end
+
+end