diff --git a/app/controllers/trace_controller.rb b/app/controllers/trace_controller.rb
index 3448b43ac..3f689fd3a 100644
--- a/app/controllers/trace_controller.rb
+++ b/app/controllers/trace_controller.rb
@@ -3,11 +3,12 @@ class TraceController < ApplicationController
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
@@ -41,7 +42,16 @@ class TraceController < ApplicationController
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}), " '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
diff --git a/app/views/trace/_trace.rhtml b/app/views/trace/_trace.rhtml
index 1b85898d0..a7d4b18c0 100644
--- a/app/views/trace/_trace.rhtml
+++ b/app/views/trace/_trace.rhtml
@@ -2,22 +2,20 @@
<% cl = cycle('table0', 'table1') %>
diff --git a/config/routes.rb b/config/routes.rb index bb6da3785..28d40bd5d 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -31,10 +31,12 @@ ActionController::Routing::Routes.draw do |map| # 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' diff --git a/lib/osm.rb b/lib/osm.rb index e230b5791..c223f0580 100644 --- a/lib/osm.rb +++ b/lib/osm.rb @@ -298,7 +298,7 @@ module OSM lon_el = XML::Node.new 'geo:lon' lon_el << longitude.to_s - item << lat_el + item << lon_el @channel << item end |
---|