Show nearby users map in account view page
authorSteve Coast <steve@asklater.com>
Mon, 21 Jan 2008 17:15:33 +0000 (17:15 +0000)
committerSteve Coast <steve@asklater.com>
Mon, 21 Jan 2008 17:15:33 +0000 (17:15 +0000)
app/controllers/user_controller.rb
app/views/user/_friend_map.rhtml [new file with mode: 0644]
app/views/user/account.rhtml
app/views/user/login.rhtml
app/views/user/view.rhtml

index a9b91098f0f2df58b96b03cc91240d57a2556e85..f279edd804afed98bec48fe988975a599b354891 100644 (file)
@@ -105,9 +105,9 @@ class UserController < ApplicationController
   def login
     @title = 'login'
     if params[:user]
-      email = params[:user][:email]
+      email_or_display_name = params[:user][:email]
       pass = params[:user][:password]
-      user = User.authenticate(:username => email, :password => pass)
+      user = User.authenticate(:username => email_or_display_name, :password => pass)
       if user
         session[:user] = user.id
         if params[:referer]
@@ -116,7 +116,7 @@ class UserController < ApplicationController
           redirect_to :controller => 'site', :action => 'index'
         end
         return
-      elsif User.authenticate(:username => email, :password => pass, :invalid => true)
+      elsif User.authenticate(:username => email_or_display_name, :password => pass, :invalid => true)
         flash[:notice] = "Sorry, your account is not active yet.<br>Please click on the link in the account confirmation email to activate your account."
       else
         flash[:notice] = "Sorry, couldn't log in with those details."
diff --git a/app/views/user/_friend_map.rhtml b/app/views/user/_friend_map.rhtml
new file mode 100644 (file)
index 0000000..05589ac
--- /dev/null
@@ -0,0 +1,85 @@
+<% nearest_str = "" %>
+<% if !@user.home_lat.nil? and !@user.home_lon.nil? %>
+  <% if !@user.nearby.empty? %>
+    <% @user.nearby.each do |nearby| %>
+    <% nearest_str += "nearest.push( { 'display_name' : '#{nearby.display_name}', 'home_lat' : #{nearby.home_lat}, 'home_lon' : #{nearby.home_lon} } );\n" %>
+    <% end %>
+  <% end %>
+<% end %>
+<script type="text/javascript">
+    var nearest = [], friends = [];
+    <%= nearest_str %>
+</script>
+
+<% if @user.home_lat.nil? or @user.home_lon.nil? %>
+  <% lon = h(params['lon'] || '-0.1') %>
+  <% lat = h(params['lat'] || '51.5') %>
+  <% zoom = h(params['zoom'] || '4') %> 
+<% else %>
+  <% marker = true %>
+  <% mlon = @user.home_lon %> 
+  <% mlat = @user.home_lat %>
+  <% lon =  @user.home_lon %>
+  <% lat =  @user.home_lat %>
+  <% zoom =  '12' %>
+<% end %>
+
+<%= javascript_include_tag '/openlayers/OpenLayers.js' %>
+<%= javascript_include_tag '/openlayers/OpenStreetMap.js' %>
+<%= javascript_include_tag 'map.js' %>
+
+<script type="text/javascript">
+  <!--
+  var marker;
+
+  function init(){
+    var centre = lonLatToMercator(new OpenLayers.LonLat(<%= lon %>, <%= lat %>));
+    var zoom = <%= zoom %>;
+
+    <% if params['scale'] and params['scale'].length > 0 then %>
+    zoom = scaleToZoom(<%= params['scale'].to_f() %>);
+    <% end %>
+
+    var map = createMap("map");
+
+    map.setCenter(centre, zoom);
+
+    <% if marker %>
+    marker = addMarkerToMap(lonLatToMercator(new OpenLayers.LonLat(<%= mlon %>, <%= mlat %>)), null, "Your location");
+    <% end %>
+
+    var near_icon = OpenLayers.Marker.defaultIcon();
+    near_icon.url = OpenLayers.Util.getImagesLocation() + "marker-green.png";;
+    var i = nearest.length;
+    while( i-- ) {
+      var description = 'Nearby mapper: <a href="/user/'+nearest[i].display_name+'">'+nearest[i].display_name+'</a>'
+      var nearmarker = addMarkerToMap(lonLatToMercator(new OpenLayers.LonLat(nearest[i].home_lon, nearest[i].home_lat)), near_icon.clone(), description);
+    }
+
+    map.events.register("click", map, setHome);
+  }        
+
+  function setHome( e ) { 
+    closeMapPopup();
+
+    if (document.getElementById('updatehome').checked) {
+      var merc = map.getLonLatFromViewPortPx(e.xy);
+      var lonlat = mercatorToLonLat(merc);
+
+      document.getElementById('homerow').className = '';
+      document.getElementById('home_lat').value = lonlat.lat;
+      document.getElementById('home_lon').value = lonlat.lon;
+
+      if (marker) {
+        removeMarkerFromMap(marker);
+      }
+
+      marker = addMarkerToMap(merc, null, "Your location");
+    }
+  }
+
+  window.onload = init;
+// -->
+</script>
+
+
index c5312686adfa1f77204a0cd4ce088d797ca9cdd9..207043ba33790c5da4f8eb244077c345978c8bcc 100644 (file)
 <%= submit_tag 'Save Changes' %>
 <% end %>
 
-<% nearest_str = "" %>
-<% if !@user.home_lat.nil? and !@user.home_lon.nil? %>
-  <% if !@user.nearby.empty? %>
-    <% @user.nearby.each do |nearby| %>
-    <% nearest_str += "nearest.push( { 'display_name' : '#{nearby.display_name}', 'home_lat' : #{nearby.home_lat}, 'home_lon' : #{nearby.home_lon} } );\n" %>
-    <% end %>
-  <% end %>
-<% end %>
-<script type="text/javascript">
-    var nearest = [], friends = [];
-    <%= nearest_str %>
-</script>
-
-<% if @user.home_lat.nil? or @user.home_lon.nil? %>
-  <% lon = h(params['lon'] || '-0.1') %>
-  <% lat = h(params['lat'] || '51.5') %>
-  <% zoom = h(params['zoom'] || '4') %> 
-<% else %>
-  <% marker = true %>
-  <% mlon = @user.home_lon %> 
-  <% mlat = @user.home_lat %>
-  <% lon =  @user.home_lon %>
-  <% lat =  @user.home_lat %>
-  <% zoom =  '12' %>
-<% end %>
-
-<%= javascript_include_tag '/openlayers/OpenLayers.js' %>
-<%= javascript_include_tag '/openlayers/OpenStreetMap.js' %>
-<%= javascript_include_tag 'map.js' %>
-
-<script type="text/javascript">
-  <!--
-  var marker;
-
-  function init(){
-    var centre = lonLatToMercator(new OpenLayers.LonLat(<%= lon %>, <%= lat %>));
-    var zoom = <%= zoom %>;
-
-    <% if params['scale'] and params['scale'].length > 0 then %>
-    zoom = scaleToZoom(<%= params['scale'].to_f() %>);
-    <% end %>
-
-    var map = createMap("map");
-
-    map.setCenter(centre, zoom);
-
-    <% if marker %>
-    marker = addMarkerToMap(lonLatToMercator(new OpenLayers.LonLat(<%= mlon %>, <%= mlat %>)), null, "Your location");
-    <% end %>
-
-    var near_icon = OpenLayers.Marker.defaultIcon();
-    near_icon.url = OpenLayers.Util.getImagesLocation() + "marker-green.png";;
-    var i = nearest.length;
-    while( i-- ) {
-      var description = 'Nearby mapper: <a href="/user/'+nearest[i].display_name+'">'+nearest[i].display_name+'</a>'
-      var nearmarker = addMarkerToMap(lonLatToMercator(new OpenLayers.LonLat(nearest[i].home_lon, nearest[i].home_lat)), near_icon.clone(), description);
-    }
-
-    map.events.register("click", map, setHome);
-  }        
-
-  function setHome( e ) { 
-    closeMapPopup();
-
-    if (document.getElementById('updatehome').checked) {
-      var merc = map.getLonLatFromViewPortPx(e.xy);
-      var lonlat = mercatorToLonLat(merc);
-
-      document.getElementById('homerow').className = '';
-      document.getElementById('home_lat').value = lonlat.lat;
-      document.getElementById('home_lon').value = lonlat.lon;
-
-      if (marker) {
-        removeMarkerFromMap(marker);
-      }
-
-      marker = addMarkerToMap(merc, null, "Your location");
-    }
-  }
-
-  window.onload = init;
-// -->
-</script>
+<%= render :partial => 'friend_map' %>
 
 <h2>Public editing</h2>
 <% if @user.data_public? %>
index 5c6ec3ec5db92a5f6c78073d0536832cebe50383..ff988f070be1ff76b97a4e1811e8306ac61fc714 100644 (file)
@@ -4,7 +4,7 @@ Please login or <%= link_to 'create an account', :controller => 'user', :action
 <% form_tag :action => 'login' do %>
 <%= hidden_field_tag('referer', h(params[:referer])) %>
 <table>
-  <tr><td>Email Address:</td><td><%= text_field('user', 'email',{:size => 50, :maxlength => 255}) %></td></tr>
+  <tr><td>Email Address or username:</td><td><%= text_field('user', 'email',{:size => 50, :maxlength => 255}) %></td></tr>
   <tr><td>Password:</td><td><%= password_field('user', 'password',{:size => 50, :maxlength => 255}) %></td></tr>
 </table>
 
index a96fd5b1917c4a24dcc5a9f1f287a0b46c64ec52..f9448da8370921b06b3e4ef2ba60d4b89d5c11c7 100644 (file)
@@ -29,7 +29,7 @@
 <% else %>
 
   <% if @user and @this_user.id == @user.id %>
-    Your friends:<br/>
+    <h3>Your friends</h3>
     <% if @this_user.friends.empty? %>
       You have not added any friends yet.
     <% else %>
     <br/>
   <%end%>
 
-  Nearby users:<br/>
+  <h3>Nearby users:</h3>
   <% if @this_user.nearby.empty? %>
     There are no users who admit to mapping nearby yet.
   <% else %>
+
+
+  <div id="map" style="border: 1px solid black; position: relative; width : 90%; height : 300px;"></div>
+  <%= render :partial => 'friend_map' %>
     <table id="nearbyusers">
     <% @this_user.nearby.each do |nearby| %>
     <tr>