]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/relation_controller.rb
Pass a list of visible nodes when generating XML for a way. Closes #553.
[rails.git] / app / controllers / relation_controller.rb
index d00e9e0775d53e9e0de1a663cf406f426ddd4f13..b239dd405bbe4e1846b14053719b0b4b3ad9fd1b 100644 (file)
@@ -1,9 +1,10 @@
 class RelationController < ApplicationController
   require 'xml/libxml'
 
+  session :off
   before_filter :authorize, :only => [:create, :update, :delete]
-  before_filter :check_availability, :only => [:create, :update, :delete]
-
+  before_filter :check_write_availability, :only => [:create, :update, :delete]
+  before_filter :check_read_availability, :except => [:create, :update, :delete]
   after_filter :compress_output
 
   def create
@@ -140,16 +141,18 @@ class RelationController < ApplicationController
     
         # create XML.
         doc = OSM::API.new.get_xml_doc
+        visible_nodes = {}
         user_display_name_cache = {}
 
         nodes.each do |node|
           if node.visible? # should be unnecessary if data is consistent.
             doc.root << node.to_xml_node(user_display_name_cache)
+            visible_nodes[node.id] = node
           end
         end
         ways.each do |way|
           if way.visible? # should be unnecessary if data is consistent.
-            doc.root << way.to_xml_node(user_display_name_cache)
+            doc.root << way.to_xml_node(visible_nodes, user_display_name_cache)
           end
         end
         relations.each do |rel|