]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/trace_controller.rb
trace bits and a georss class
[rails.git] / app / controllers / trace_controller.rb
index 337f27e0e80c32164f8d0790e4a6062c3833574a..3448b43acf42e5226fa2e3d8bd5e8117cbe06a93 100644 (file)
@@ -3,20 +3,27 @@ class TraceController < ApplicationController
   layout 'site'
 
   def list
-    @traces = Trace.find(:all)
+    @traces = Trace.find(:all, :conditions => ['public = true'])
   end
 
   def mine
     @traces = Trace.find(:all, :conditions => ['user_id = ?', @user.id])
   end
 
+  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
     filename = "/tmp/#{rand}"
 
     File.open(filename, "w") { |f| f.write(@params['trace']['gpx_file'].read) }
     @params['trace']['name'] = @params['trace']['gpx_file'].original_filename.gsub(/[^a-zA-Z0-9.]/, '_') # This makes sure filenames are sane
-    #@params['trace']['data'] = @params['trace']['gpx_file'].read
-#    @params['trace']['mime_type'] = @params['trace']['gpx_file'].content_type.chomp
     @params['trace'].delete('gpx_file') # let's remove the field from the hash, because there's no such field in the DB anyway.
     @trace = Trace.new(@params['trace'])
     @trace.inserted = false
@@ -30,4 +37,20 @@ class TraceController < ApplicationController
 
     redirect_to :action => 'mine'
   end
+
+  def georss
+    traces = Trace.find(:all, :conditions => ['public = true'], :order => 'timestamp DESC', :limit => 20)
+
+
+  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