diff --git a/app/assets/javascripts/members.js.erb b/app/assets/javascripts/members.js.erb new file mode 100644 index 000000000..a3f29904d --- /dev/null +++ b/app/assets/javascripts/members.js.erb @@ -0,0 +1,30 @@ +if (document.getElementById("membermap") !== null) { + mapbox_map_id = "<%= Rails.env == 'test' ? 0 : Growstuff::Application.config.mapbox_map_id %>"; + mapbox_base_url = "https://c.tiles.mapbox.com/v3/" + mapbox_map_id + "/{z}/{x}/{y}.png"; + + L.Icon.Default.imagePath = '/assets' + + + $.getJSON(location.pathname + '.json', function(member) { + console.log(JSON.stringify(member.latitude)); + if (member.latitude && member.longitude) { + membermap = L.map('membermap').setView([member.latitude, member.longitude], 4); + + L.tileLayer(mapbox_base_url, { + attribution: 'Map data © OpenStreetMap contributors under ODbL | Map imagery © Mapbox', + maxZoom: 18 + }).addTo(membermap); + console.log("found lat and long") + marker = new L.Marker(new L.LatLng(member.latitude, member.longitude)); + + member_url = "/members/" + member.slug; + member_link = "" + member.login_name + ""; + + where = "

" + member.location + "

"; + + marker.bindPopup(member_link + where).openPopup(); + marker.addTo(membermap); + } + }); + +} diff --git a/app/assets/stylesheets/overrides.css.less b/app/assets/stylesheets/overrides.css.less index 5826d5c4c..a4ac0587f 100644 --- a/app/assets/stylesheets/overrides.css.less +++ b/app/assets/stylesheets/overrides.css.less @@ -113,6 +113,10 @@ p.stats { height: 500px; } +#membermap { + height: 250px; +} + .member-location { font-size: small; font-style: italic; diff --git a/app/controllers/members_controller.rb b/app/controllers/members_controller.rb index ab3de0001..247ac1c8b 100644 --- a/app/controllers/members_controller.rb +++ b/app/controllers/members_controller.rb @@ -10,6 +10,7 @@ class MembersController < ApplicationController respond_to do |format| format.html # index.html.haml + format.json { render :json => @members.to_json(:only => [:id, :login_name, :slug, :bio, :created_at, :location, :latitude, :longitude]) } end end @@ -25,6 +26,7 @@ class MembersController < ApplicationController respond_to do |format| format.html # show.html.haml + format.json { render :json => @member.to_json(:only => [:id, :login_name, :bio, :created_at, :slug, :location, :latitude, :longitude]) } format.rss { render( :layout => false, :locals => { :member => @member } diff --git a/app/views/members/_account.html.haml b/app/views/members/_account.html.haml new file mode 100644 index 000000000..37ff0c699 --- /dev/null +++ b/app/views/members/_account.html.haml @@ -0,0 +1,12 @@ +%h3 Account details + +%p + %strong Member since: + = member.created_at.to_s(:date) + +%p + %strong Account type: + = member.account_type + account + + diff --git a/app/views/members/_map.html.haml b/app/views/members/_map.html.haml new file mode 100644 index 000000000..d98792501 --- /dev/null +++ b/app/views/members/_map.html.haml @@ -0,0 +1,5 @@ +- if member.latitude and member.longitude + %div#membermap + %p + See other members near + = link_to member.location, place_path(member.location) diff --git a/app/views/members/show.html.haml b/app/views/members/show.html.haml index 317caae1b..edf4d0b68 100644 --- a/app/views/members/show.html.haml +++ b/app/views/members/show.html.haml @@ -15,24 +15,12 @@ .col-md-9 + = render :partial => "map", :locals => { :member => @member } = render :partial => "bio", :locals => { :member => @member } - = render :partial => "gardens", :locals => { :member => @member } .col-md-3 = render :partial => "avatar", :locals => { :member => @member } - - %h3 Account details - - %p - %strong Member since: - = @member.created_at.to_s(:date) - - %p - %strong Account type: - = @member.account_type - account - + = render :partial => "account", :locals => { :member => @member } = render :partial => "contact", :locals => { :member => @member, :twitter_auth => @twitter_auth, :flickr_auth => @flickr_auth } - = render :partial => "stats", :locals => { :member => @member } diff --git a/spec/features/member_profile_spec.rb b/spec/features/member_profile_spec.rb index 88f29548a..809b052a8 100644 --- a/spec/features/member_profile_spec.rb +++ b/spec/features/member_profile_spec.rb @@ -32,11 +32,28 @@ feature "member profile" do london_member = FactoryGirl.create(:london_member) visit member_path(london_member) expect(page).to have_css("h1>small", :text => london_member.location) + expect(page).to have_css("#membermap") + expect(page).to have_content "See other members near #{london_member.location}" end scenario "member has not set location" do visit member_path(member) expect(page).not_to have_css("h1>small") + expect(page).not_to have_css("#membermap") + expect(page).not_to have_content "See other members near" + end + + end + + context "email privacy" do + scenario "public email address" do + public_member = FactoryGirl.create(:public_member) + visit member_path(public_member) + expect(page).to have_content public_member.email + end + scenario "private email address" do + visit member_path(member) + expect(page).not_to have_content member.email end end