diff --git a/web/app/assets/javascripts/accounts_profile.js b/web/app/assets/javascripts/accounts_profile.js index d5880f1f1..002f27b9b 100644 --- a/web/app/assets/javascripts/accounts_profile.js +++ b/web/app/assets/javascripts/accounts_profile.js @@ -12,6 +12,7 @@ var loadingCitiesData = false; var loadingRegionsData = false; var loadingCountriesData = false; + var nilOptionStr = ''; var nilOptionText = 'n/a'; function beforeShow(data) { @@ -109,18 +110,20 @@ function populateCountries(countries, userCountry) { + // countries has the format ["US", ...] + var foundCountry = false; var countrySelect = getCountryElement(); countrySelect.children().remove(); - var nilOption = $(''); + var nilOption = $(nilOptionStr); nilOption.text(nilOptionText); countrySelect.append(nilOption); $.each(countries, function(index, country) { if(!country) return; - var option = $(''); + var option = $(nilOptionStr); option.text(country); option.attr("value", country); @@ -132,10 +135,53 @@ }); if(!foundCountry) { - // in this case, the user has a country that is not in the database - // this can happen in a development/test scenario, but let's assume it can - // happen in production too. - var option = $(''); + // in this case, the user has a country that is not in the database + // this can happen in a development/test scenario, but let's assume it can + // happen in production too. + var option = $(nilOptionStr); + option.text(userCountry); + option.attr("value", userCountry); + countrySelect.append(option); + } + + countrySelect.val(userCountry); + countrySelect.attr("disabled", null) + + context.JK.dropdown(countrySelect); + } + + + function populateCountriesx(countriesx, userCountry) { + + // countriesx has the format [{countrycode: "US", countryname: "United States"}, ...] + + var foundCountry = false; + var countrySelect = getCountryElement(); + countrySelect.children().remove(); + + var nilOption = $(nilOptionStr); + nilOption.text(nilOptionText); + countrySelect.append(nilOption); + + $.each(countriesx, function(index, countryx) { + if(!countryx.countrycode) return; + + var option = $(nilOptionStr); + option.text(countryx.countryname); + option.attr("value", countryx.countrycode); + + if(countryx.countrycode == userCountry) { + foundCountry = true; + } + + countrySelect.append(option); + }); + + if(!foundCountry) { + // in this case, the user has a country that is not in the database + // this can happen in a development/test scenario, but let's assume it can + // happen in production too. + var option = $(nilOptionStr); option.text(userCountry); option.attr("value", userCountry); countrySelect.append(option); @@ -152,14 +198,14 @@ var regionSelect = getRegionElement() regionSelect.children().remove() - var nilOption = $(''); + var nilOption = $(nilOptionStr); nilOption.text(nilOptionText); regionSelect.append(nilOption); $.each(regions, function(index, region) { if(!region) return; - var option = $('') + var option = $(nilOptionStr) option.text(region) option.attr("value", region) @@ -176,14 +222,14 @@ var citySelect = getCityElement(); citySelect.children().remove(); - var nilOption = $(''); + var nilOption = $(nilOptionStr); nilOption.text(nilOptionText); citySelect.append(nilOption); $.each(cities, function(index, city) { if(!city) return; - var option = $('') + var option = $(nilOptionStr) option.text(city) option.attr("value", city) @@ -248,8 +294,8 @@ // make the 3 slower requests, which only matter if the user wants to affect their ISP or location - api.getCountries() - .done(function(countries) { populateCountries(countries["countries"], userDetail.country); } ) + api.getCountriesx() + .done(function(countriesx) { populateCountriesx(countriesx["countriesx"], userDetail.country); } ) .fail(app.ajaxError) .always(function() { loadingCountriesData = false; }) @@ -394,7 +440,7 @@ loadingRegionsData = true; regionElement.children().remove() - regionElement.append($('').text('loading...')) + regionElement.append($(nilOptionStr).text('loading...')) api.getRegions({ country: selectedCountry }) .done(getRegionsDone) @@ -405,7 +451,7 @@ } else { regionElement.children().remove() - regionElement.append($('').text(nilOptionText)) + regionElement.append($(nilOptionStr).text(nilOptionText)) } } @@ -419,7 +465,7 @@ loadingCitiesData = true; cityElement.children().remove() - cityElement.append($('').text('loading...')) + cityElement.append($(nilOptionStr).text('loading...')) api.getCities({ country: selectedCountry, region: selectedRegion }) .done(getCitiesDone) @@ -430,7 +476,7 @@ } else { cityElement.children().remove() - cityElement.append($('').text(nilOptionText)) + cityElement.append($(nilOptionStr).text(nilOptionText)) } } diff --git a/web/app/assets/javascripts/band_setup.js b/web/app/assets/javascripts/band_setup.js index 875f31f41..f1a0249d5 100644 --- a/web/app/assets/javascripts/band_setup.js +++ b/web/app/assets/javascripts/band_setup.js @@ -18,6 +18,7 @@ var userIds = []; var userPhotoUrls = []; var selectedFriendIds = {}; + var nilOptionStr = ''; var nilOptionText = 'n/a'; var bandId = ''; @@ -300,27 +301,27 @@ } function loadCountries(initialCountry, onCountriesLoaded) { - var $country = $("#band-country"); + var countrySelect = $("#band-country"); - var nilOption = $(''); + var nilOption = $(nilOptionStr); nilOption.text(nilOptionText); - $country.append(nilOption); + countrySelect.append(nilOption); - rest.getCountries().done(function (response) { - $.each(response["countries"], function (index, country) { - if (!country) return; - var option = $(''); - option.text(country); - option.attr("value", country); + rest.getCountriesx().done(function (response) { + $.each(response["countriesx"], function (index, countryx) { + if (!countryx.countrycode) return; + var option = $(nilOptionStr); + option.text(countryx.countryname); + option.attr("value", countryx.countrycode); - if (initialCountry === country) { + if (initialCountry === countryx.countrycode) { option.attr("selected", "selected"); } - $country.append(option); + countrySelect.append(option); }); - context.JK.dropdown($country); + context.JK.dropdown(countrySelect); if (onCountriesLoaded) { onCountriesLoaded(); @@ -333,7 +334,7 @@ $region.empty(); var selectedCountry = $("#band-country").val(); - var nilOption = $(''); + var nilOption = $(nilOptionStr); nilOption.text(nilOptionText); $region.append(nilOption); @@ -341,7 +342,7 @@ rest.getRegions({'country': selectedCountry}).done(function (response) { $.each(response["regions"], function (index, region) { if (!region) return; - var option = $(''); + var option = $(nilOptionStr); option.text(region); option.attr("value", region); @@ -368,7 +369,7 @@ var selectedCountry = $("#band-country").val(); var selectedRegion = $("#band-region").val(); - var nilOption = $(''); + var nilOption = $(nilOptionStr); nilOption.text(nilOptionText); $city.append(nilOption); @@ -376,7 +377,7 @@ rest.getCities({'country': selectedCountry, 'region': selectedRegion}).done(function (response) { $.each(response["cities"], function (index, city) { if (!city) return; - var option = $(''); + var option = $(nilOptionStr); option.text(city); option.attr("value", city); diff --git a/web/app/assets/javascripts/invitationDialog.js.erb b/web/app/assets/javascripts/invitationDialog.js.erb index 120bd2e3e..be90d3e23 100644 --- a/web/app/assets/javascripts/invitationDialog.js.erb +++ b/web/app/assets/javascripts/invitationDialog.js.erb @@ -195,7 +195,7 @@ var obj = { method: 'feed', link: signupUrl, - picture: 'http://www.jamkazam.com/assets/web/logo-512.png', + picture: 'http://www.jamkazam.com/assets/web/logo-256.png', name: 'Join me on JamKazam', caption: 'Play live music in real-time sessions with others over the Internet, as if in the same room.', description: '', @@ -216,13 +216,7 @@ function showFacebookDialog(evt) { if (!(evt === undefined)) evt.stopPropagation(); - - facebookHelper.promptLogin() - .done(function(response) { - if (response && response.status == "connected") { - showFeedDialog(); - } - }) + showFeedDialog(); } // END FB handlers diff --git a/web/app/assets/javascripts/jam_rest.js b/web/app/assets/javascripts/jam_rest.js index c0e028ead..7b0baf066 100644 --- a/web/app/assets/javascripts/jam_rest.js +++ b/web/app/assets/javascripts/jam_rest.js @@ -301,6 +301,12 @@ }); } + function getCountriesx() { + return $.ajax('/api/countriesx', { + dataType : 'json' + }); + } + function getIsps(options) { var country = options["country"] @@ -911,6 +917,7 @@ this.getCities = getCities; this.getRegions = getRegions; this.getCountries = getCountries; + this.getCountriesx = getCountriesx; this.getIsps = getIsps; this.getResolvedLocation = getResolvedLocation; this.getInstruments = getInstruments; diff --git a/web/app/controllers/api_maxmind_requests_controller.rb b/web/app/controllers/api_maxmind_requests_controller.rb index 98c0cf8b3..c2f257360 100644 --- a/web/app/controllers/api_maxmind_requests_controller.rb +++ b/web/app/controllers/api_maxmind_requests_controller.rb @@ -3,8 +3,14 @@ class ApiMaxmindRequestsController < ApiController respond_to :json def countries - countries = MaxMindManager.countries() - render :json => { :countries => countries }, :status => 200 + raise "no longer supported, use countriesx" + #countries = MaxMindManager.countries() + #render :json => { :countries => countries }, :status => 200 + end + + def countriesx + countriesx = MaxMindManager.countriesx() + render :json => { :countriesx => countriesx }, :status => 200 end def regions diff --git a/web/app/controllers/users_controller.rb b/web/app/controllers/users_controller.rb index 1420b2012..19a574a8f 100644 --- a/web/app/controllers/users_controller.rb +++ b/web/app/controllers/users_controller.rb @@ -439,7 +439,7 @@ class UsersController < ApplicationController @location[:country] = "US" if @location[:country].nil? # right now we only accept US signups for beta - @countries = MaxMindManager.countries() + @countriesx = MaxMindManager.countriesx() # populate regions based on current country @regions = MaxMindManager.regions(@location[:country]) @cities = @location[:state].nil? ? [] : MaxMindManager.cities(@location[:country], @location[:state]) diff --git a/web/app/views/users/new.html.erb b/web/app/views/users/new.html.erb index 064d7a335..13d101d5f 100644 --- a/web/app/views/users/new.html.erb +++ b/web/app/views/users/new.html.erb @@ -38,9 +38,9 @@ <%= f.label :country, "Country:" %> diff --git a/web/config/routes.rb b/web/config/routes.rb index 64d0dc9f7..cdf6443c5 100644 --- a/web/config/routes.rb +++ b/web/config/routes.rb @@ -316,6 +316,7 @@ SampleApp::Application.routes.draw do # Location lookups match '/countries' => 'api_maxmind_requests#countries', :via => :get + match '/countriesx' => 'api_maxmind_requests#countriesx', :via => :get match '/regions' => 'api_maxmind_requests#regions', :via => :get match '/cities' => 'api_maxmind_requests#cities', :via => :get match '/isps' => 'api_maxmind_requests#isps', :via => :get diff --git a/web/lib/max_mind_manager.rb b/web/lib/max_mind_manager.rb index 4ed9c8c08..e3a2a54f0 100644 --- a/web/lib/max_mind_manager.rb +++ b/web/lib/max_mind_manager.rb @@ -63,8 +63,22 @@ class MaxMindManager < BaseManager # end #end + raise "no longer supported, use countriesx" + # returns ordered array of Country objects (countrycode, countryname) - Country.get_all.map { |c| c.countrycode } + #Country.get_all.map { |c| c.countrycode } + end + + def self.countriesx() + #ActiveRecord::Base.connection_pool.with_connection do |connection| + # pg_conn = connection.instance_variable_get("@connection") + # pg_conn.exec("SELECT DISTINCT country FROM max_mind_geo ORDER BY country ASC").map do |tuple| + # tuple["country"] + # end + #end + + # returns ordered array of Country objects (countrycode, countryname) + Country.get_all.map { |c| {countrycode: c.countrycode, countryname: c.countryname} } end diff --git a/web/spec/managers/maxmind_manager_spec.rb b/web/spec/managers/maxmind_manager_spec.rb index 86fffa19d..af2de4e39 100644 --- a/web/spec/managers/maxmind_manager_spec.rb +++ b/web/spec/managers/maxmind_manager_spec.rb @@ -11,9 +11,9 @@ describe MaxMindManager do end it "looks up countries successfully" do - countries = MaxMindManager.countries() + countries = MaxMindManager.countriesx() countries.length.should == 1 - countries[0] == "US" + countries[0] == {countrycode: "US", countryname: "United States"} end it "looks up regions successfully" do