From e5f292cf21a5fa72733080a294484e0e4208e0e7 Mon Sep 17 00:00:00 2001 From: Steve Coast Date: Fri, 8 Dec 2006 17:25:23 +0000 Subject: [PATCH] gpx rss and gpx cleanups --- app/controllers/trace_controller.rb | 20 +++++++++++++++----- app/views/trace/_trace.rhtml | 10 ++++------ app/views/trace/list.rhtml | 19 +++++++++++++++++++ config/routes.rb | 8 +++++--- lib/osm.rb | 2 +- 5 files changed, 44 insertions(+), 15 deletions(-) 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') %> <% if trace.inserted %> - - - + <% end %> - <%= link_to trace.name, {:controller => 'trace', :action => 'view', :id => trace.id} %> + <%= link_to trace.name, {:controller => 'trace', :action => 'view', :display_name => trace.user.display_name, :id => trace.id} %> ... <% if trace.inserted %> (<%= trace.size %> points) <% end %> ... <%= time_ago_in_words( trace.timestamp ) %> ago - more / + <%= link_to 'more', {:controller => 'trace', :action => 'view', :display_name => trace.user.display_name, :id => trace.id} %> / map
<%= trace.description %>
- 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| %> diff --git a/app/views/trace/list.rhtml b/app/views/trace/list.rhtml index 6ff6b34a6..dc3861a54 100644 --- a/app/views/trace/list.rhtml +++ b/app/views/trace/list.rhtml @@ -1,8 +1,27 @@

Public GPS Traces

+ +

+ + | <% 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 %> + + +

+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 %>) + 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 -- 2.43.2