Commit 55a5a2a5c88e333ed15c53551cbfa7b405ce0516
Committed by
Antonio Terceiro
1 parent
c00a313f
Exists in
master
and in
29 other branches
Each domain is alowed to have its own GoogleMap key
* Added google_maps_key to domain (ActionItem1341)
Showing
10 changed files
with
90 additions
and
19 deletions
Show diff stats
app/helpers/search_helper.rb
| @@ -20,7 +20,7 @@ module SearchHelper | @@ -20,7 +20,7 @@ module SearchHelper | ||
| 20 | 20 | ||
| 21 | def display_results(use_map = true) | 21 | def display_results(use_map = true) |
| 22 | 22 | ||
| 23 | - unless use_map && GoogleMaps.enabled? | 23 | + unless use_map && GoogleMaps.enabled?(environment.default_hostname) |
| 24 | return render(:partial => 'display_results') | 24 | return render(:partial => 'display_results') |
| 25 | end | 25 | end |
| 26 | 26 |
app/models/google_maps.rb
| @@ -14,20 +14,20 @@ class GoogleMaps | @@ -14,20 +14,20 @@ class GoogleMaps | ||
| 14 | @config ||= (web2_conf['googlemaps'] || {}) | 14 | @config ||= (web2_conf['googlemaps'] || {}) |
| 15 | end | 15 | end |
| 16 | 16 | ||
| 17 | - def enabled? | ||
| 18 | - !config['key'].nil? | 17 | + def enabled?(domain) |
| 18 | + !Domain.find_by_name(domain).google_maps_key.nil? | ||
| 19 | end | 19 | end |
| 20 | 20 | ||
| 21 | - def key | ||
| 22 | - config['key'] || '' | 21 | + def key(domain) |
| 22 | + Domain.find_by_name(domain).google_maps_key || '' | ||
| 23 | end | 23 | end |
| 24 | 24 | ||
| 25 | def initial_zoom | 25 | def initial_zoom |
| 26 | config['initial_zoom'] || 4 | 26 | config['initial_zoom'] || 4 |
| 27 | end | 27 | end |
| 28 | 28 | ||
| 29 | - def api_url | ||
| 30 | - "http://maps.google.com/maps?file=api&v=2&key=#{key}" | 29 | + def api_url(domain) |
| 30 | + "http://maps.google.com/maps?file=api&v=2&key=#{key(domain)}" | ||
| 31 | end | 31 | end |
| 32 | 32 | ||
| 33 | end | 33 | end |
app/models/location_block.rb
| @@ -20,7 +20,7 @@ class LocationBlock < Block | @@ -20,7 +20,7 @@ class LocationBlock < Block | ||
| 20 | '<img src="http://maps.google.com/staticmap?center=' + profile.lat.to_s() + | 20 | '<img src="http://maps.google.com/staticmap?center=' + profile.lat.to_s() + |
| 21 | ',' + profile.lng.to_s() + '&zoom=' + zoom.to_s() + | 21 | ',' + profile.lng.to_s() + '&zoom=' + zoom.to_s() + |
| 22 | '&size=205x250&maptype=' + map_type + '&markers=' + profile.lat.to_s() + ',' + | 22 | '&size=205x250&maptype=' + map_type + '&markers=' + profile.lat.to_s() + ',' + |
| 23 | - profile.lng.to_s() + ',green&key=' + GoogleMaps::key + '&sensor=false"/>', | 23 | + profile.lng.to_s() + ',green&key=' + GoogleMaps::key(profile.default_hostname) + '&sensor=false"/>', |
| 24 | :class => 'the-localization-map' ) | 24 | :class => 'the-localization-map' ) |
| 25 | else | 25 | else |
| 26 | content_tag('i', _('This profile has no geographical position registered.')) | 26 | content_tag('i', _('This profile has no geographical position registered.')) |
app/views/maps/_google_map.rhtml
| 1 | -<%= content_tag('script', '', :src => GoogleMaps.api_url, :type => 'text/javascript') %> | 1 | +<%= content_tag('script', '', :src => GoogleMaps.api_url(profile.default_hostname), :type => 'text/javascript') %> |
| 2 | 2 | ||
| 3 | <script type="text/javascript" > | 3 | <script type="text/javascript" > |
| 4 | var geocoder; | 4 | var geocoder; |
app/views/search/_google_maps.rhtml
test/functional/maps_controller_test.rb
| @@ -45,4 +45,13 @@ class MapsControllerTest < Test::Unit::TestCase | @@ -45,4 +45,13 @@ class MapsControllerTest < Test::Unit::TestCase | ||
| 45 | assert_tag :tag => 'input', :attributes => { :name => 'profile_data[city]' } | 45 | assert_tag :tag => 'input', :attributes => { :name => 'profile_data[city]' } |
| 46 | end | 46 | end |
| 47 | 47 | ||
| 48 | + should 'add script tag for google maps' do | ||
| 49 | + domain = fast_create(Domain, :name => 'domain-with-key', :google_maps_key => 'DOMAIN_KEY') | ||
| 50 | + profile.preferred_domain = domain | ||
| 51 | + profile.save! | ||
| 52 | + | ||
| 53 | + get 'edit_location', :profile => profile.identifier | ||
| 54 | + | ||
| 55 | + assert_tag :tag => 'script', :attributes => { :src => 'http://maps.google.com/maps?file=api&v=2&key=DOMAIN_KEY'} | ||
| 56 | + end | ||
| 48 | end | 57 | end |
test/functional/search_controller_test.rb
| @@ -13,6 +13,10 @@ class SearchControllerTest < Test::Unit::TestCase | @@ -13,6 +13,10 @@ class SearchControllerTest < Test::Unit::TestCase | ||
| 13 | @category = Category.create!(:name => 'my category', :environment => Environment.default) | 13 | @category = Category.create!(:name => 'my category', :environment => Environment.default) |
| 14 | Profile.rebuild_index | 14 | Profile.rebuild_index |
| 15 | Article.rebuild_index | 15 | Article.rebuild_index |
| 16 | + | ||
| 17 | + domain = Environment.default.domains.first | ||
| 18 | + domain.google_maps_key = 'ENVIRONMENT_KEY' | ||
| 19 | + domain.save! | ||
| 16 | end | 20 | end |
| 17 | 21 | ||
| 18 | def test_local_files_reference | 22 | def test_local_files_reference |
| @@ -1001,6 +1005,36 @@ class SearchControllerTest < Test::Unit::TestCase | @@ -1001,6 +1005,36 @@ class SearchControllerTest < Test::Unit::TestCase | ||
| 1001 | assert_includes assigns(:results)[:products], prod | 1005 | assert_includes assigns(:results)[:products], prod |
| 1002 | end | 1006 | end |
| 1003 | 1007 | ||
| 1008 | + should 'add script tag for google maps if searching products' do | ||
| 1009 | + get 'index', :query => 'product', :display => 'map', :find_in => ['products'] | ||
| 1010 | + | ||
| 1011 | + assert_tag :tag => 'script', :attributes => { :src => 'http://maps.google.com/maps?file=api&v=2&key=ENVIRONMENT_KEY'} | ||
| 1012 | + end | ||
| 1013 | + | ||
| 1014 | + should 'add script tag for google maps if searching enterprises' do | ||
| 1015 | + get 'index', :query => 'enterprise', :display => 'map', :find_in => ['enterprises'] | ||
| 1016 | + | ||
| 1017 | + assert_tag :tag => 'script', :attributes => { :src => 'http://maps.google.com/maps?file=api&v=2&key=ENVIRONMENT_KEY'} | ||
| 1018 | + end | ||
| 1019 | + | ||
| 1020 | + should 'not add script tag for google maps if searching articles' do | ||
| 1021 | + get 'index', :query => 'article', :display => 'map', :find_in => ['articles'] | ||
| 1022 | + | ||
| 1023 | + assert_no_tag :tag => 'script', :attributes => { :src => 'http://maps.google.com/maps?file=api&v=2&key=ENVIRONMENT_KEY'} | ||
| 1024 | + end | ||
| 1025 | + | ||
| 1026 | + should 'not add script tag for google maps if searching people' do | ||
| 1027 | + get 'index', :query => 'person', :display => 'map', :find_in => ['people'] | ||
| 1028 | + | ||
| 1029 | + assert_no_tag :tag => 'script', :attributes => { :src => 'http://maps.google.com/maps?file=api&v=2&key=ENVIRONMENT_KEY'} | ||
| 1030 | + end | ||
| 1031 | + | ||
| 1032 | + should 'not add script tag for google maps if searching communities' do | ||
| 1033 | + get 'index', :query => 'community', :display => 'map', :find_in => ['communities'] | ||
| 1034 | + | ||
| 1035 | + assert_no_tag :tag => 'script', :attributes => { :src => 'http://maps.google.com/maps?file=api&v=2&key=ENVIRONMENT_KEY'} | ||
| 1036 | + end | ||
| 1037 | + | ||
| 1004 | should 'show events of specific day' do | 1038 | should 'show events of specific day' do |
| 1005 | person = create_user('anotheruser').person | 1039 | person = create_user('anotheruser').person |
| 1006 | event = create_event(person, :name => 'Joao Birthday', :start_date => Date.new(2009, 10, 28)) | 1040 | event = create_event(person, :name => 'Joao Birthday', :start_date => Date.new(2009, 10, 28)) |
test/unit/domain_test.rb
| @@ -100,4 +100,14 @@ class DomainTest < Test::Unit::TestCase | @@ -100,4 +100,14 @@ class DomainTest < Test::Unit::TestCase | ||
| 100 | assert_equal false, Domain.hosting_profile_at('example.com') | 100 | assert_equal false, Domain.hosting_profile_at('example.com') |
| 101 | end | 101 | end |
| 102 | 102 | ||
| 103 | + should 'not crash if key is not defined' do | ||
| 104 | + domain = fast_create(Domain, :name => 'domain-without-key') | ||
| 105 | + assert_nil domain.google_maps_key | ||
| 106 | + end | ||
| 107 | + | ||
| 108 | + should 'return key if defined' do | ||
| 109 | + domain = fast_create(Domain, :name => 'domain-with-key', :google_maps_key => 'DOMAIN_KEY') | ||
| 110 | + assert_equal 'DOMAIN_KEY', domain.google_maps_key | ||
| 111 | + end | ||
| 112 | + | ||
| 103 | end | 113 | end |
test/unit/google_maps_test.rb
| @@ -3,28 +3,29 @@ require File.dirname(__FILE__) + '/../test_helper' | @@ -3,28 +3,29 @@ require File.dirname(__FILE__) + '/../test_helper' | ||
| 3 | class GoogleMapsTest < Test::Unit::TestCase | 3 | class GoogleMapsTest < Test::Unit::TestCase |
| 4 | 4 | ||
| 5 | def setup | 5 | def setup |
| 6 | + @domain = fast_create(Domain, :name => 'example-domain', :google_maps_key => 'DOMAIN_KEY') | ||
| 6 | # force loading of config at every test | 7 | # force loading of config at every test |
| 7 | GoogleMaps.erase_config | 8 | GoogleMaps.erase_config |
| 8 | end | 9 | end |
| 9 | 10 | ||
| 10 | - should 'enable when key is defined' do | ||
| 11 | - GoogleMaps.stubs(:config).returns({ 'key' => 'MYKEY' }) | ||
| 12 | - assert GoogleMaps.enabled? | 11 | + attr_reader :domain |
| 12 | + | ||
| 13 | + should 'enable when key on domain is defined' do | ||
| 14 | + assert GoogleMaps.enabled?(domain.name) | ||
| 13 | end | 15 | end |
| 14 | 16 | ||
| 15 | - should 'disable if key not defined' do | ||
| 16 | - GoogleMaps.stubs(:config).returns({}) | ||
| 17 | - assert !GoogleMaps.enabled? | 17 | + should 'disable if key on domain is not defined' do |
| 18 | + fast_create(Domain, :name => 'domain-without-key') | ||
| 19 | + assert !GoogleMaps.enabled?('domain-without-key') | ||
| 18 | end | 20 | end |
| 19 | 21 | ||
| 20 | should 'not crash if config not informed' do | 22 | should 'not crash if config not informed' do |
| 21 | GoogleMaps.stubs(:config).returns({}) | 23 | GoogleMaps.stubs(:config).returns({}) |
| 22 | - assert_equal '', GoogleMaps.key | 24 | + assert_equal({}, GoogleMaps.config) |
| 23 | end | 25 | end |
| 24 | 26 | ||
| 25 | should 'point correctly to google maps' do | 27 | should 'point correctly to google maps' do |
| 26 | - GoogleMaps.expects(:key).returns('MY_FUCKING_KEY') | ||
| 27 | - assert_equal 'http://maps.google.com/maps?file=api&v=2&key=MY_FUCKING_KEY', GoogleMaps.api_url | 28 | + assert_equal 'http://maps.google.com/maps?file=api&v=2&key=DOMAIN_KEY', GoogleMaps.api_url(domain.name) |
| 28 | end | 29 | end |
| 29 | 30 | ||
| 30 | should 'provide initial_zoom setting' do | 31 | should 'provide initial_zoom setting' do |
| @@ -37,4 +38,10 @@ class GoogleMapsTest < Test::Unit::TestCase | @@ -37,4 +38,10 @@ class GoogleMapsTest < Test::Unit::TestCase | ||
| 37 | assert_equal 4, GoogleMaps.initial_zoom | 38 | assert_equal 4, GoogleMaps.initial_zoom |
| 38 | end | 39 | end |
| 39 | 40 | ||
| 41 | + should 'have different keys to different domains' do | ||
| 42 | + other_domain = fast_create(Domain, :name => 'different-domain', :google_maps_key => 'DIFFERENT_DOMAIN_KEY') | ||
| 43 | + | ||
| 44 | + assert_equal 'http://maps.google.com/maps?file=api&v=2&key=DOMAIN_KEY', GoogleMaps.api_url(domain.name) | ||
| 45 | + assert_equal 'http://maps.google.com/maps?file=api&v=2&key=DIFFERENT_DOMAIN_KEY', GoogleMaps.api_url(other_domain.name) | ||
| 46 | + end | ||
| 40 | end | 47 | end |