]> git.openstreetmap.org Git - rails.git/blobdiff - app/views/user/account.rhtml
Add more logging...
[rails.git] / app / views / user / account.rhtml
index f4af984e92c99bccd01c2e1f3e46dde137d22ce3..f17a792fb2bde1132efd04207a51349a9c1422a6 100644 (file)
@@ -1,10 +1,15 @@
 <h2>User details</h2>
 <%= error_messages_for 'user' %>
 <h2>User details</h2>
 <%= error_messages_for 'user' %>
-<%= start_form_tag :controller => 'user', :action => 'edit', :display_name => @user.display_name %>
+<% form_tag :controller => 'user', :action => 'account', :display_name => @user.display_name do %>
 <table style="width : 100%">
 <table style="width : 100%">
-  <tr><td>Name</td><td><%= @user.email %></td></tr>
+  <tr><td>Email</td><td><%= @user.email %></td></tr>
   <tr><td>Mapper since</td><td><%= @user.creation_time %> (<%= time_ago_in_words(@user.creation_time) %> ago)</td></tr>
   <tr><td>Display Name</td><td><%= text_field :user, :display_name, :value => @user.display_name %></td></tr>
   <tr><td>Mapper since</td><td><%= @user.creation_time %> (<%= time_ago_in_words(@user.creation_time) %> ago)</td></tr>
   <tr><td>Display Name</td><td><%= text_field :user, :display_name, :value => @user.display_name %></td></tr>
+  <tr><td>Password</td><td><%= password_field('user', 'pass_crypt',{:value => '', :size => 50, :maxlength => 255}) %></td></tr>
+  <tr><td>Confirm Password</td><td><%= password_field('user', 'pass_crypt_confirmation',{:value => '', :size => 50, :maxlength => 255}) %></td></tr>
+
+  <tr><td valign="top">Description</td><td><%= text_area :user, :description, :value => @user.description, :class => "editDescription" %></td></tr>
+
   <tr id="homerow" <% unless @user.home_lat and @user.home_lon %> class="nohome" <%end%> ><td>Your home</td><td><em class="message">You have not entered your home location.</em><span class="location">Latitude: <%= text_field :user, :home_lat, :value => @user.home_lat, :size => 20, :id => "home_lat" %> Longitude <%= text_field :user, :home_lon, :value => @user.home_lon, :size => 20, :id => "home_lon" %></span>  </td></tr>
 
   <tr><td></td><td>
   <tr id="homerow" <% unless @user.home_lat and @user.home_lon %> class="nohome" <%end%> ><td>Your home</td><td><em class="message">You have not entered your home location.</em><span class="location">Latitude: <%= text_field :user, :home_lat, :value => @user.home_lat, :size => 20, :id => "home_lat" %> Longitude <%= text_field :user, :home_lon, :value => @user.home_lon, :size => 20, :id => "home_lon" %></span>  </td></tr>
 
   <tr><td></td><td>
     <p id="highlightinfo"></p>
   </div>
   </td></tr>
     <p id="highlightinfo"></p>
   </div>
   </td></tr>
-
-  <tr><td valign="top">Description</td><td><%= text_area :user, :description, :value => @user.description, :class => "editDescription" %></td></tr>
 </table>
 <%= submit_tag 'Save Changes' %>
 </table>
 <%= submit_tag 'Save Changes' %>
-<%= end_form_tag %>
+<% end %>
 
 <% nearest_str = "" %>
 <% if @user.home_lat and @user.home_lon %>
 
 <% nearest_str = "" %>
 <% if @user.home_lat and @user.home_lon %>
-    <h2>Users in your area</h2>
-
-    <% if @user.nearby.empty? %>
-    There are no users who admit to mapping in your area.  Better go out and spread the word about OSM!
-    <% else %>
-
-    <p>These users are mapping in your area:</p>
-    <table>
-    <tr>
-    <th>Name</th>
-    <th>Contact</th>
-    </tr>
-    <% @user.nearby(1,1).each do |nearby| %>
-    <% nearest_str = "nearest.push( { 'display_name' : '#{nearby.display_name}', 'home_lat' : #{nearby.home_lat}, 'home_lon' : #{nearby.home_lon} } )" %>
-
-    <tr>
-    <td><%= link_to nearby.display_name, :controller => 'user', :action => 'view',  :display_name => nearby.display_name %></td>
-    <td><%= link_to 'send message', :controller => 'message', :action => 'new', :user_id => nearby.id %></td>
-    </tr>
-    <%end%>
-    </table>
-
-    <%end%>
-    <br />
+  <% 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 = [];
 <% end %>
 <script type="text/javascript">
     var nearest = [], friends = [];
 </script>
 
 <% if @user.home_lat and @user.home_lon %>
 </script>
 
 <% if @user.home_lat and @user.home_lon %>
-    <% marker = true %>
-    <% mlon = @user.home_lon %> 
-    <% mlat = @user.home_lat %>
-    <% lon =  @user.home_lon %>
-    <% lat =  @user.home_lat  %>
-    <% zoom =  '12' %>
-<script type="text/javascript">
-  var mlat = <%= mlat %>;
-  var mlon = <%= mlon %>;
-</script>
+  <% marker = true %>
+  <% mlon = @user.home_lon %> 
+  <% mlat = @user.home_lat %>
+  <% lon =  @user.home_lon %>
+  <% lat =  @user.home_lat  %>
+  <% zoom =  '12' %>
 <% else %>
 <% else %>
-    <% lon =  params['lon'] || '-0.1' %>
-    <% lat =  params['lat'] || '51.5' %>
-    <% zoom =  params['zoom'] || '4' %> 
+  <% lon =  params['lon'] || '-0.1' %>
+  <% lat =  params['lat'] || '51.5' %>
+  <% zoom =  params['zoom'] || '4' %> 
 <% end %>
 
 <% end %>
 
-
-
-<script type="text/javascript">
-  var lat = <%= lat %>;
-  var lon = <%= lon %>;
-  var zoom = <%= zoom %>;
-  var PI = 3.14159265358979323846;
-
-
-
-  <% if params['scale'] and params['scale'].length > 0 then %>
-  zoom = Math.log(360.0/(( <% print params['scale'].to_f() %> ) * 512.0)) / Math.log(2.0);
-  <% end %>
-  zoom = zoom;
-  lon = lon * 20037508.34 / 180;
-  lat = Math.log(Math.tan( (90 + lat) * PI / 360)) / (PI / 180);
-  lat = lat * 20037508.34 / 180;
-  <% if marker %>
-  mlon = mlon * 20037508.34 / 180;
-  mlat = Math.log(Math.tan( (90 + mlat) * PI / 360)) / (PI / 180);
-  mlat = mlat * 20037508.34 / 180;
-  <%end%>
-
-</script>
-<script type="text/javascript" src="/javascripts/OpenLayers.js"></script>
+<script type="text/javascript" src="/openlayers/OpenLayers.js"></script>
+<%= javascript_include_tag 'map.js' %>
 
 <script type="text/javascript">
   <!--
 
 <script type="text/javascript">
   <!--
-  var map, layer, markers, marker, popup;
-
-
-  function mercator2lonlat( merc ) {
-    var lon_deg = (merc.lon / 20037508.34) * 180;
-    var lat_deg = (merc.lat / 20037508.34) * 180;
-    var PI = 3.14159265358979323846;
-    lat_deg = 180/PI * (2 * Math.atan(Math.exp(lat_deg * PI / 180)) - PI / 2);
-    return new OpenLayers.LonLat(lon_deg,lat_deg);
-  }
-
-  function lonlat2mercator( ll ) {
-      var lon = ll.lon * 20037508.34 / 180;
-      var lat = Math.log(Math.tan( (90 + ll.lat) * PI / 360)) / (PI / 180);
-      lat = lat * 20037508.34 / 180;
-      return new OpenLayers.LonLat(lon,lat);
-  }
+  var marker;
 
   function init(){
 
   function init(){
+    var centre = lonLatToMercator(new OpenLayers.LonLat(<%= lon %>, <%= lat %>));
+    var zoom = <%= zoom %>;
 
 
-    OpenLayers.Util.onImageLoadError = function() {
-      this.src = "http://www.openstreetmap.org/javascripts/img/404.png";
-    }
-    map = new OpenLayers.Map( "map", 
-        {maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34), maxZoomLevel:18, maxResolution:156543, units:'meters', projection: "EPSG:41001"} );
-    layer = new OpenLayers.Layer.LikeGoogle( "Mapnik", "http://tile.openstreetmap.org/", {type:'png'} );
-    map.addLayer(layer);
-    layer = new OpenLayers.Layer.LikeGoogle( "Osmarender", "http://dev.openstreetmap.org/~ojw/Tiles/tile.php/", {type:'png'} );
-    map.addLayer(layer);
-
-    //Marker stuff
+    <% if params['scale'] and params['scale'].length > 0 then %>
+    zoom = scaleToZoom(<%= params['scale'].to_f() %>);
+    <% end %>
 
 
-    markers = new OpenLayers.Layer.Markers("markers");
-    map.addLayer(markers); 
+    var map = createMap("map", centre, zoom);
 
     <% if marker %>
 
     <% if marker %>
-    marker = new OpenLayers.Marker(new OpenLayers.LonLat(mlon,mlat));
-    marker.events.register("click", "marker", markerOnClick );
-    markers.addMarker(marker);
-    <%end%>
+    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 near_icon = OpenLayers.Marker.defaultIcon();
     near_icon.url = OpenLayers.Util.getImagesLocation() + "marker-green.png";;
     var i = nearest.length;
     while( i-- ) {
-        var nearmarker = new OpenLayers.Marker( lonlat2mercator( new OpenLayers.LonLat( nearest[i].home_lon, nearest[i].home_lat ) ), near_icon );
-        markers.addMarker( nearmarker );
-        nearmarker.events.register("click", "nearmarker", makeMarkerFunction( 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.addControl(new OpenLayers.Control.LayerSwitcher());
-    map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
-
     map.events.register("click", map, setHome);
   }        
 
     map.events.register("click", map, setHome);
   }        
 
-  function makeMarkerFunction( i ) {
-    return function() { markerOnClick( i ); };
-  }
+  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;
 
 
-  function markerOnClick( i ) {
-    var html, position;
-    if( typeof( i ) == 'number'  ) {
-        html = '<p>Nearby mapper: <a href="/user/'+nearest[i].display_name+'">'+nearest[i].display_name+'</a></p>';
-        html += '<p style="text-align:right">(<a href="#" onclick="return closePopup();">close</a>)</p>';
-        position = lonlat2mercator( new OpenLayers.LonLat( nearest[i].home_lon, nearest[i].home_lat ) );
-    } else {
-        html = '<p>Your location (<a href="#" onclick="return closePopup()">close</a>)</p>';
-        position = new OpenLayers.LonLat(mlon,mlat);
+      if (marker) {
+        removeMarkerFromMap(marker);
+      }
+
+      marker = addMarkerToMap(merc, null, "Your location");
     }
     }
-    var box = document.getElementById( 'highlightinfo' );
-    box.innerHTML = html;
-    closePopup();
-    popup = new OpenLayers.Popup.AnchoredBubble( 'popup', position, new OpenLayers.Size( box.offsetWidth, box.offsetHeight ), html, OpenLayers.Marker.defaultIcon(), true );
-    map.addPopup( popup );
   }
   }
-  
-    function closePopup() {
-        if( popup ) {
-            map.removePopup( popup );
-            delete popup;
-        }
-        return false;
-    }
 
 
-    function setHome( e ) { 
-        closePopup();
-        if( ! document.getElementById( 'updatehome' ).checked )
-            return;
-        var lonlat = map.getLonLatFromViewPortPx(e.xy)
-
-        var lon_deg = (lonlat.lon / 20037508.34) * 180;
-        var lat_deg = (lonlat.lat / 20037508.34) * 180;
-        var PI = 3.14159265358979323846;
-        lat_deg = 180/PI * (2 * Math.atan(Math.exp(lat_deg * PI / 180)) - PI / 2);
-        var homerow = document.getElementById( 'homerow' );
-        var home_lat = document.getElementById( 'home_lat' );
-        var home_lon = document.getElementById( 'home_lon' );
-        homerow.className = '';
-        home_lat.value = lat_deg;
-        home_lon.value = lon_deg;
-        if( marker ) {
-            markers.removeMarker(marker);
-        }
-        marker = new OpenLayers.Marker(lonlat);
-        markers.addMarker(marker);
-    }
-window.onload = init;
+  window.onload = init;
 // -->
 </script>
 
 // -->
 </script>
 
@@ -214,7 +110,7 @@ window.onload = init;
 <% else %>
   Currently your edits are anonymous and people can't find out where you are located. To show what you edited and allow people to contact you through the website, click the button below. This action cannot be reversed.
   <br /><br />
 <% else %>
   Currently your edits are anonymous and people can't find out where you are located. To show what you edited and allow people to contact you through the website, click the button below. This action cannot be reversed.
   <br /><br />
-  <%= start_form_tag :controller => 'user', :action => 'go_public'%>
+  <% form_tag :controller => 'user', :action => 'go_public' do %>
   <%= submit_tag 'Make all my edits public, forever' %>
   <%= submit_tag 'Make all my edits public, forever' %>
-  <%= end_form_tag %>
+  <% end %>
 <% end %>
 <% end %>