From: Tom Hughes Date: Sat, 7 May 2011 13:53:30 +0000 (+0100) Subject: Get returning of bugs as GPX files working X-Git-Tag: live~5068^2~176 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/cc311ff3012a4d8d829ff87ebb49a7512fa2a57a Get returning of bugs as GPX files working --- diff --git a/app/controllers/map_bugs_controller.rb b/app/controllers/map_bugs_controller.rb index d1790a0de..2de11ba75 100644 --- a/app/controllers/map_bugs_controller.rb +++ b/app/controllers/map_bugs_controller.rb @@ -47,7 +47,7 @@ class MapBugsController < ApplicationController format.js format.xml {render :template => 'map_bugs/get_bugs.xml'} format.json { render :json => @bugs.to_json(:methods => [:lat, :lon], :only => [:id, :status, :date_created], :include => { :map_bug_comment => { :only => [:commenter_name, :date_created, :comment]}}) } -# format.gpx {render :template => 'map_bugs/get_bugs.gpx'} + format.gpx {render :template => 'map_bugs/get_bugs.gpx'} end end @@ -166,6 +166,7 @@ class MapBugsController < ApplicationController format.rss format.xml format.json { render :json => @bug.to_json(:methods => [:lat, :lon], :only => [:id, :status, :date_created], :include => { :map_bug_comment => { :only => [:commenter_name, :date_created, :comment]}}) } + format.gpx end end @@ -200,7 +201,7 @@ class MapBugsController < ApplicationController format.js format.xml {render :template => 'map_bugs/get_bugs.xml'} format.json { render :json => @bugs.to_json(:methods => [:lat, :lon], :only => [:id, :status, :date_created], :include => { :map_bug_comment => { :only => [:commenter_name, :date_created, :comment]}}) } -# format.gpx {render :template => 'map_bugs/get_bugs.gpx'} + format.gpx {render :template => 'map_bugs/get_bugs.gpx'} end end diff --git a/app/views/map_bugs/_bug.gpx.builder b/app/views/map_bugs/_bug.gpx.builder new file mode 100644 index 000000000..18a84bac7 --- /dev/null +++ b/app/views/map_bugs/_bug.gpx.builder @@ -0,0 +1,15 @@ +xml.wpt("lon" => bug.lon, "lat" => bug.lat) do + xml.desc do + xml.cdata! bug.flatten_comment("
") + end + + xml.extension do + if bug.status = "open" + xml.closed "0" + else + xml.closed "1" + end + + xml.id bug.id + end +end diff --git a/app/views/map_bugs/get_bugs.gpx.builder b/app/views/map_bugs/get_bugs.gpx.builder index be7e9cf7a..f543c1a02 100644 --- a/app/views/map_bugs/get_bugs.gpx.builder +++ b/app/views/map_bugs/get_bugs.gpx.builder @@ -1,23 +1,7 @@ xml.instruct! - xml.gpx("version" => "1.1", "xmlns:xsi" => "http://www.w3.org/2001/XMLSchema-instance", - "xsi:schemaLocation" => "http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd") do - - for bug in @bugs - xml.wpt("lon" => bug.lon, "lat" => bug.lat) do - xml.desc do - xml.cdata! bug.flatten_comment("
") - end - xml.extension do - if bug.status = "open" - xml.closed "0" - else - xml.closed "1" - end - xml.id bug.id - end - end - end + "xsi:schemaLocation" => "http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd") do + xml << render(:partial => "bug", :collection => @bugs) end diff --git a/app/views/map_bugs/read.gpx.builder b/app/views/map_bugs/read.gpx.builder new file mode 100644 index 000000000..0108a261b --- /dev/null +++ b/app/views/map_bugs/read.gpx.builder @@ -0,0 +1,7 @@ +xml.instruct! + +xml.gpx("version" => "1.1", + "xmlns:xsi" => "http://www.w3.org/2001/XMLSchema-instance", + "xsi:schemaLocation" => "http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd") do + xml << render(:partial => "bug", :object => @bug) +end diff --git a/config/initializers/mime_types.rb b/config/initializers/mime_types.rb index 72aca7e44..18df05cf2 100644 --- a/config/initializers/mime_types.rb +++ b/config/initializers/mime_types.rb @@ -1,5 +1,3 @@ -# Be sure to restart your server when you modify this file. - # Add new mime types for use in respond_to blocks: -# Mime::Type.register "text/richtext", :rtf -# Mime::Type.register_alias "text/html", :iphone + +Mime::Type.register "application/gpx+xml", :gpx