]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/trace_controller.rb
innitial by tag / by user code
[rails.git] / app / controllers / trace_controller.rb
index c8b33060134f319224ac2c0cec6267752d7bfacc..fa062b7289534d618f281c71afe39e37f308847f 100644 (file)
@@ -3,11 +3,31 @@ class TraceController < ApplicationController
   layout 'site'
 
   def list
-    @traces = Trace.find(:all)
+    @page = params[:page].to_i
+
+    opt = Hash.new
+    opt[:conditions] = ['public = true']
+    opt[:order] = 'timestamp DESC'
+    opt[:limit] = 20
+
+    if @page > 0
+      opt[:offset => 20*@page]
+    end
+
+    if params[:tag]
+      
+    end
+
+    @traces = Trace.find(:all , opt)
   end
 
-  def mine
-    @traces = Trace.find(:all, :conditions => ['user_id = ?', @user.id])
+  def view
+    @trace = Trace.find(params[:id])
+    unless @trace.public
+      if @user
+        render :nothing, :status => 401 if @trace.user.id != @user.id
+      end
+    end
   end
 
   def create
@@ -28,4 +48,29 @@ class TraceController < ApplicationController
 
     redirect_to :action => 'mine'
   end
+
+  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
+    trace = Trace.find(params[:id])
+    send_data(trace.large_picture, :filename => "#{trace.id}.gif", :type => 'image/png', :disposition => 'inline') if trace.public
+  end
+
+  def icon
+    trace = Trace.find(params[:id])
+    send_data(trace.icon_picture, :filename => "#{trace.id}.gif", :type => 'image/gif', :disposition => 'inline') if trace.public
+  end
 end