mirror of
https://github.com/Growstuff/growstuff.git
synced 2026-01-26 10:17:52 -05:00
Added map to member profile page
This commit is contained in:
30
app/assets/javascripts/members.js.erb
Normal file
30
app/assets/javascripts/members.js.erb
Normal file
@@ -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 © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors under <a href="http://www.openstreetmap.org/copyright">ODbL</a> | Map imagery © <a href="http://mapbox.com">Mapbox</a>',
|
||||
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 = "<a href='" + member_url + "'>" + member.login_name + "</a>";
|
||||
|
||||
where = "<p><i>" + member.location + "</i></p>";
|
||||
|
||||
marker.bindPopup(member_link + where).openPopup();
|
||||
marker.addTo(membermap);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
@@ -113,6 +113,10 @@ p.stats {
|
||||
height: 500px;
|
||||
}
|
||||
|
||||
#membermap {
|
||||
height: 250px;
|
||||
}
|
||||
|
||||
.member-location {
|
||||
font-size: small;
|
||||
font-style: italic;
|
||||
|
||||
@@ -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 }
|
||||
|
||||
12
app/views/members/_account.html.haml
Normal file
12
app/views/members/_account.html.haml
Normal file
@@ -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
|
||||
|
||||
|
||||
5
app/views/members/_map.html.haml
Normal file
5
app/views/members/_map.html.haml
Normal file
@@ -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)
|
||||
@@ -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 }
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user