]> git.openstreetmap.org Git - rails.git/blob - app/views/user/account.rhtml
d2852b28a8cdc97f5353faed5c98bc805cf10b74
[rails.git] / app / views / user / account.rhtml
1 <h2>User details</h2>
2 <%= error_messages_for 'user' %>
3 <%= start_form_tag :controller => 'user', :action => 'edit', :display_name => @user.display_name %>
4 <table>
5   <tr><td>Name</td><td><%= @user.email %></td></tr>
6   <tr><td>Mapper since</td><td><%= @user.creation_time %> (<%= time_ago_in_words(@user.creation_time) %> ago)</td></tr>
7   <tr><td>Display Name</td><td><%= text_field :user, :display_name, :value => @user.display_name %></td></tr>
8   <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>
9   <tr><td valign="top">Description</td><td><%= text_area :user, :description, :value => @user.description, :class => "editDescription" %></td></tr>
10 </table>
11 <%= submit_tag 'Save Changes' %>
12 <%= end_form_tag %>
13
14 <% nearest_str = "" %>
15 <% if @user.home_lat and @user.home_lon %>
16     <h2>Users in your area</h2>
17
18     <% if @user.nearby.empty? %>
19     There are no users who admit to mapping in your area.  Better go out and spread the word about OSM!
20     <% else %>
21
22     <p>These users are mapping in your area:</p>
23     <table>
24     <tr>
25     <th>Name</th>
26     <th>Contact</th>
27     </tr>
28     <% @user.nearby(1,1).each do |nearby| %>
29     <% nearest_str = "nearest.push( { 'display_name' : '#{nearby.display_name}', 'home_lat' : #{nearby.home_lat}, 'home_lon' : #{nearby.home_lon} } )" %>
30
31     <tr>
32     <td><%= link_to nearby.display_name, :controller => 'user', :action => 'view',  :display_name => nearby.display_name %></td>
33     <td><%= link_to 'send message', :controller => 'message', :action => 'new', :display_name => nearby.display_name %></td>
34     </tr>
35     <%end%>
36     </table>
37
38     <%end%>
39     <br />
40 <% end %>
41 <script type="text/javascript">
42     var nearest = [], friends = [];
43     <%= nearest_str %>
44 </script>
45
46
47
48 <div id="map" style="border: 1px solid black; position: relative; width : 90%; height : 300px;">
49     <h3>Click on the map to (re)set your location</h3>
50 </div>
51
52 <% if @user.home_lat and @user.home_lon %>
53     <% marker = true %>
54     <% mlon = @user.home_lon %> 
55     <% mlat = @user.home_lat %>
56     <% lon =  @user.home_lon %>
57     <% lat =  @user.home_lat  %>
58     <% zoom =  '12' %>
59 <script type="text/javascript">
60   var mlat = <%= mlat %>;
61   var mlon = <%= mlon %>;
62 </script>
63 <% else %>
64     <% lon =  params['lon'] || '-0.1' %>
65     <% lat =  params['lat'] || '51.5' %>
66     <% zoom =  params['zoom'] || '4' %> 
67 <% end %>
68
69
70
71 <script type="text/javascript">
72   var lat = <%= lat %>;
73   var lon = <%= lon %>;
74   var zoom = <%= zoom %>;
75   var PI = 3.14159265358979323846;
76
77
78
79   <% if params['scale'] and params['scale'].length > 0 then %>
80   zoom = Math.log(360.0/(( <% print params['scale'].to_f() %> ) * 512.0)) / Math.log(2.0);
81   <% end %>
82   zoom = zoom;
83   lon = lon * 20037508.34 / 180;
84   lat = Math.log(Math.tan( (90 + lat) * PI / 360)) / (PI / 180);
85   lat = lat * 20037508.34 / 180;
86   <% if marker %>
87   mlon = mlon * 20037508.34 / 180;
88   mlat = Math.log(Math.tan( (90 + mlat) * PI / 360)) / (PI / 180);
89   mlat = mlat * 20037508.34 / 180;
90   <%end%>
91
92 </script>
93 <script type="text/javascript" src="/javascripts/OpenLayers.js"></script>
94
95 <script type="text/javascript">
96   <!--
97   var map, layer, markers, marker;
98
99
100   function mercator2lonlat( merc ) {
101     var lon_deg = (merc.lon / 20037508.34) * 180;
102     var lat_deg = (merc.lat / 20037508.34) * 180;
103     var PI = 3.14159265358979323846;
104     lat_deg = 180/PI * (2 * Math.atan(Math.exp(lat_deg * PI / 180)) - PI / 2);
105     return new OpenLayers.LonLat(lon_deg,lat_deg);
106   }
107
108   function lonlat2mercator( ll ) {
109       var lon = ll.lon * 20037508.34 / 180;
110       var lat = Math.log(Math.tan( (90 + ll.lat) * PI / 360)) / (PI / 180);
111       lat = lat * 20037508.34 / 180;
112       return new OpenLayers.LonLat(lon,lat);
113   }
114
115   function init(){
116
117     OpenLayers.Util.onImageLoadError = function() {
118       this.src = "http://www.openstreetmap.org/javascripts/img/404.png";
119     }
120     map = new OpenLayers.Map( "map", 
121         {maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34), maxZoomLevel:18, maxResolution:156543, units:'meters', projection: "EPSG:41001"} );
122     layer = new OpenLayers.Layer.LikeGoogle( "Mapnik", "http://tile.openstreetmap.org/", {type:'png'} );
123     map.addLayer(layer);
124     layer = new OpenLayers.Layer.LikeGoogle( "Osmarender", "http://dev.openstreetmap.org/~ojw/Tiles/tile.php/", {type:'png'} );
125     map.addLayer(layer);
126
127     //Marker stuff
128
129     markers = new OpenLayers.Layer.Markers("markers");
130     map.addLayer(markers); 
131
132     <% if marker %>
133     marker = new OpenLayers.Marker(new OpenLayers.LonLat(mlon,mlat));
134     markers.addMarker(marker);
135     <%end%>
136
137     var near_icon = OpenLayers.Marker.defaultIcon();
138     near_icon.url = OpenLayers.Util.getImagesLocation() + "marker-green.png";;
139     var i = nearest.length;
140     while( i-- ) {
141         markers.addMarker( new OpenLayers.Marker( lonlat2mercator( new OpenLayers.LonLat( nearest[i].home_lon, nearest[i].home_lat ) ), near_icon ) );
142     }
143
144       map.addControl(new OpenLayers.Control.LayerSwitcher());
145     map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
146
147     map.events.register("click", map, setHome);
148   }        
149
150     function setHome( e ) { 
151         var lonlat = map.getLonLatFromViewPortPx(e.xy)
152
153         var lon_deg = (lonlat.lon / 20037508.34) * 180;
154         var lat_deg = (lonlat.lat / 20037508.34) * 180;
155         var PI = 3.14159265358979323846;
156         lat_deg = 180/PI * (2 * Math.atan(Math.exp(lat_deg * PI / 180)) - PI / 2);
157         var homerow = document.getElementById( 'homerow' );
158         var home_lat = document.getElementById( 'home_lat' );
159         var home_lon = document.getElementById( 'home_lon' );
160         homerow.className = '';
161         home_lat.value = lat_deg;
162         home_lon.value = lon_deg;
163         if( marker ) {
164             markers.removeMarker(marker);
165         }
166         marker = new OpenLayers.Marker(lonlat);
167         markers.addMarker(marker);
168     }
169 window.onload = init;
170 // -->
171 </script>
172
173 <h2>Privacy</h2>
174 <% if @user.data_public? %>
175   All your edits are public.
176 <% else %>
177   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.
178   <br /><br />
179   <%= start_form_tag :controller => 'user', :action => 'go_public'%>
180   <%= submit_tag 'Make all my edits public, forever' %>
181   <%= end_form_tag %>
182 <% end %>