layout 'site'
def list
- @traces = Trace.find(:all, :conditions => ['public = true'])
- end
-
- def mine
- @traces = Trace.find(:all, :conditions => ['user_id = ?', @user.id])
+ @page = params[:page].to_i
+ if @page > 0
+ @traces = Trace.find(:all , :conditions => ['public = true'], :order => 'timestamp DESC', :offset => 20*@page, :limit => 20)
+ else
+ @traces = Trace.find(:all , :conditions => ['public = true'], :order => 'timestamp DESC', :limit => 20)
+ end
end
def view
def georss
traces = Trace.find(:all, :conditions => ['public = true'], :order => 'timestamp DESC', :limit => 20)
+ rss = OSM::GeoRSS.new
+
+ #def add(latitude=0, longitude=0, title_text='dummy title', url='http://www.example.com/', description_text='dummy description', timestamp=Time.now)
+ traces.each do |trace|
+ rss.add(trace.latitude, trace.longitude, trace.name, url_for({:controller => 'trace', :action => 'view', :id => trace.id, :display_name => trace.user.display_name}), "<img src='#{url_for({:controller => 'trace', :action => 'icon', :id => trace.id, :user_login => trace.user.display_name})}'> GPX file with #{trace.size} points from #{trace.user.display_name}", trace.timestamp)
+ end
+
+ response.headers["Content-Type"] = 'application/xml+rss'
+ render :text => rss.to_s
end
def picture
<% cl = cycle('table0', 'table1') %>
<td class="<%= cl %>">
<% if trace.inserted %>
- <a href="<%= url_for :controller => 'trace', :action => 'view', :id => trace.id, :user_login => trace.user.display_name %>">
- <img src="<%= url_for :controller => 'trace', :action => 'icon', :id => trace.id, :user_login => trace.user.display_name %>" border="0">
- </a>
+ <a href="<%= url_for :controller => 'trace', :action => 'view', :id => trace.id, :user_login => trace.user.display_name %>"><img src="<%= url_for :controller => 'trace', :action => 'icon', :id => trace.id, :user_login => trace.user.display_name %>" border="0"></a>
<% end %>
</td>
- <td class="<%= cl %>"><%= link_to trace.name, {:controller => 'trace', :action => 'view', :id => trace.id} %>
+ <td class="<%= cl %>"><%= link_to trace.name, {:controller => 'trace', :action => 'view', :display_name => trace.user.display_name, :id => trace.id} %>
<span class="gpxsummary" title="<%= trace.timestamp %>"> ...
<% if trace.inserted %>
(<%= trace.size %> points)
<% end %>
... <%= time_ago_in_words( trace.timestamp ) %> ago</span>
- <a href="/traces/user/blars/12701" title="more detail..." >more</a> /
+ <%= link_to 'more', {:controller => 'trace', :action => 'view', :display_name => trace.user.display_name, :id => trace.id} %> /
<a href="/edit.html?lat=34.1032333&lon=-118.2272333&zoom=14" title="create maps">map</a><br />
<%= trace.description %>
<br />
- by <%= link_to trace.user.display_name, {:controller => 'trace', :action => 'list', :user => trace.user.display_name} %>
+ by <%= link_to trace.user.display_name, {:controller => 'trace', :action => 'list', :display_name => trace.user.display_name} %>
in
<% if trace.tags %>
<% trace.tags.each do |tag| %>
<h1>Public GPS Traces</h1>
+
+<br /><br />
+
+<span class="rsssmall"><a href="<%= url_for :controller => 'trace', :action => 'georss' %>"><img src="http://www.openstreetmap.org/images/RSS.gif" border="0"></a></span> |
<% if @user %>
<%= link_to 'See just your traces', {:controller => 'trace', :action => 'mine'} %>
+<% else %>
+ <%= link_to 'login', {:controller => 'user', :action => 'login'} %> to see just your traces
+<% end %>
+
+
+<br /><br />
+Showing page
+<% if @page > 0 %>
+ <%= link_to '<<<', {:controller => 'trace', :action => 'list', :page => @page-1}, {:title => 'previous page'} %>
<% end %>
+<%= @page %>
+
+<%= link_to '>>>', {:controller => 'trace', :action => 'list', :page => @page+1}, {:title => 'next page'} %>
+
+(<%= 1+(@page * 20)%>-<%= (1+@page) * 20 %>)
+
<table id="keyvalue" cellpadding="3">
<tr>
<th></th>
# traces
map.connect '/traces', :controller => 'trace', :action => 'list'
+ map.connect '/traces/page/:page', :controller => 'trace', :action => 'list'
map.connect '/traces/mine', :controller => 'trace', :action => 'mine'
- map.connect '/traces/user/:user_login/:id', :controller => 'trace', :action => 'view', :id => nil
- map.connect '/traces/user/:user_login/:id/picture', :controller => 'trace', :action => 'picture', :id => nil
- map.connect '/traces/user/:user_login/:id/icon', :controller => 'trace', :action => 'icon', :id => nil
+ map.connect '/traces/rss', :controller => 'trace', :action => 'georss'
+ map.connect '/traces/user/:display_name/:id', :controller => 'trace', :action => 'view', :id => nil
+ map.connect '/traces/user/:display_name/:id/picture', :controller => 'trace', :action => 'picture', :id => nil
+ map.connect '/traces/user/:display_name/:id/icon', :controller => 'trace', :action => 'icon', :id => nil
# fall through
map.connect ':controller/:action/:id'
lon_el = XML::Node.new 'geo:lon'
lon_el << longitude.to_s
- item << lat_el
+ item << lon_el
@channel << item
end