Allow people to add coordinates to diary entries, add them to the RSS feeds and diary display pages using geo microformat.
This commit is contained in:
parent
c81c31775b
commit
b78d25a3a8
3 changed files with 59 additions and 6 deletions
|
@ -41,10 +41,7 @@ class DiaryEntryController < ApplicationController
|
|||
end
|
||||
|
||||
@entries.each do |entry|
|
||||
# add geodata here
|
||||
latitude = nil
|
||||
longitude = nil
|
||||
rss.add(latitude, longitude, entry.title, entry.user.display_name, url_for({:controller => 'diary_entry', :action => 'list', :id => entry.id, :display_name => entry.user.display_name}), entry.body, entry.created_at)
|
||||
rss.add(entry.latitude, entry.longitude, entry.title, entry.user.display_name, url_for({:controller => 'diary_entry', :action => 'list', :id => entry.id, :display_name => entry.user.display_name}), entry.body, entry.created_at)
|
||||
end
|
||||
|
||||
render :text => rss.to_s, :content_type => "application/rss+xml"
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
<b><%= diary_entry.title %></b><br />
|
||||
<%= simple_format(diary_entry.body) %>
|
||||
Posted by user <b><%= link_to diary_entry.user.display_name, :controller => 'user', :action => 'view', :display_name => diary_entry.user.display_name %></b> at <%= diary_entry.created_at %><br />
|
||||
<% if diary_entry.latitude and diary_entry.longitude %>
|
||||
Coordinates: <div class="geo" style="display: inline"><span class="latitude"><%= diary_entry.latitude %></span>; <span class="longitude"><%= diary_entry.longitude %></span></div> (<%=link_to 'map', :controller => 'site', :action => 'index', :lat => diary_entry.latitude, :lon => diary_entry.longitude, :zoom => 14 %> / <%=link_to 'edit', :controller => 'site', :action => 'edit', :lat => diary_entry.latitude, :lon => diary_entry.longitude, :zoom => 14 %>)<br/>
|
||||
<% end %>
|
||||
Posted by <b><%= link_to diary_entry.user.display_name, :controller => 'user', :action => 'view', :display_name => diary_entry.user.display_name %></b> at <%= diary_entry.created_at %><br />
|
||||
<br />
|
||||
<hr />
|
||||
|
|
|
@ -8,11 +8,64 @@
|
|||
</tr>
|
||||
<tr valign="top">
|
||||
<th>Body</th>
|
||||
<td><%= f.text_area :body, :cols => 80 %></td>
|
||||
<td><%= f.text_area :body, :cols => 80, :rows => 10 %></td>
|
||||
</tr>
|
||||
<tr valign="top">
|
||||
<th>Location</th>
|
||||
<td><div id="map" style="border: 1px solid black; position: relative; width : 90%; height : 250px;"></div><br/>
|
||||
<span class="location">Latitude: <%= f.text_field :latitude, :size => 20, :id => "latitude" %> Longitude <%= f.text_field :longitude, :size => 20, :id => "longitude" %></span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th></th>
|
||||
<td><%= submit_tag 'Save' %></td>
|
||||
</tr>
|
||||
</table>
|
||||
<% end %>
|
||||
|
||||
<% if @user.home_lat.nil? or @user.home_lon.nil? %>
|
||||
<% lon = params['lon'] || '-0.1' %>
|
||||
<% lat = params['lat'] || '51.5' %>
|
||||
<% zoom = params['zoom'] || '4' %>
|
||||
<% else %>
|
||||
<% lon = @user.home_lon %>
|
||||
<% lat = @user.home_lat %>
|
||||
<% zoom = '12' %>
|
||||
<% end %>
|
||||
|
||||
<script type="text/javascript" src="/openlayers/OpenLayers.js"></script>
|
||||
<%= javascript_include_tag 'map.js' %>
|
||||
|
||||
<script type="text/javascript">
|
||||
<!--
|
||||
var marker;
|
||||
|
||||
function init(){
|
||||
var centre = lonLatToMercator(new OpenLayers.LonLat(<%= lon %>, <%= lat %>));
|
||||
var zoom = <%= zoom %>;
|
||||
|
||||
var map = createMap("map");
|
||||
|
||||
map.setCenter(centre, zoom);
|
||||
|
||||
map.events.register("click", map, setLocation);
|
||||
}
|
||||
|
||||
function setLocation( e ) {
|
||||
closeMapPopup();
|
||||
|
||||
var merc = map.getLonLatFromViewPortPx(e.xy);
|
||||
var lonlat = mercatorToLonLat(merc);
|
||||
|
||||
document.getElementById('latitude').value = lonlat.lat;
|
||||
document.getElementById('longitude').value = lonlat.lon;
|
||||
|
||||
if (marker) {
|
||||
removeMarkerFromMap(marker);
|
||||
}
|
||||
|
||||
marker = addMarkerToMap(merc, null, "Diary entry location");
|
||||
}
|
||||
|
||||
window.onload = init;
|
||||
// -->
|
||||
</script>
|
Loading…
Add table
Reference in a new issue