X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/ece8999dcdfa84f146aa7ad39071b48260b0d7fe..e5f292cf21a5fa72733080a294484e0e4208e0e7:/app/controllers/trace_controller.rb diff --git a/app/controllers/trace_controller.rb b/app/controllers/trace_controller.rb index 337f27e0e..3f689fd3a 100644 --- a/app/controllers/trace_controller.rb +++ b/app/controllers/trace_controller.rb @@ -3,11 +3,21 @@ class TraceController < ApplicationController layout 'site' def list - @traces = Trace.find(:all) + @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 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 @@ -15,8 +25,6 @@ class TraceController < ApplicationController 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 +38,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}), " '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