]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/changeset_controller.rb
Refactor browse templates
[rails.git] / app / controllers / changeset_controller.rb
index b280de58907e10eb1ad76dcfee3f031b81499013..bd908879fe423c71a861bab62d0339d53b7703a4 100644 (file)
@@ -55,7 +55,7 @@ class ChangesetController < ApplicationController
     changeset.set_closed_time_now
 
     changeset.save!
-    render :nothing => true
+    render :text => ""
   end
 
   ##
@@ -161,6 +161,10 @@ class ChangesetController < ApplicationController
       end
     end
 
+    # create changeset and user caches
+    changeset_cache = {}
+    user_display_name_cache = {}
+
     # create an osmChange document for the output
     result = OSM::API.new.get_xml_doc
     result.root.name = "osmChange"
@@ -173,16 +177,16 @@ class ChangesetController < ApplicationController
         if (elt.version == 1)
           # first version, so it must be newly-created.
           created = XML::Node.new "create"
-          created << elt.to_xml_node
+          created << elt.to_xml_node(changeset_cache, user_display_name_cache)
         else
           unless elt.visible
             # if the element isn't visible then it must have been deleted
             deleted = XML::Node.new "delete"
-            deleted << elt.to_xml_node
+            deleted << elt.to_xml_node(changeset_cache, user_display_name_cache)
           else
             # must be a modify
             modified = XML::Node.new "modify"
-            modified << elt.to_xml_node
+            modified << elt.to_xml_node(changeset_cache, user_display_name_cache)
           end
         end
     end
@@ -200,7 +204,7 @@ class ChangesetController < ApplicationController
 
     # create the conditions that the user asked for. some or all of
     # these may be nil.
-    changesets = Changeset.scoped
+    changesets = Changeset.all
     changesets = conditions_bbox(changesets, bbox)
     changesets = conditions_user(changesets, params['user'], params['display_name'])
     changesets = conditions_time(changesets, params['time'])
@@ -239,7 +243,7 @@ class ChangesetController < ApplicationController
       render :text => changeset.to_xml, :mime_type => "text/xml"
     else
 
-      render :nothing => true, :status => :bad_request
+      render :text => "", :status => :bad_request
     end
   end
 
@@ -248,8 +252,10 @@ class ChangesetController < ApplicationController
   def list
     if request.format == :atom and params[:page]
       redirect_to params.merge({ :page => nil }), :status => :moved_permanently
+    elsif request.format == :html and !params[:bbox]
+      render :action => :history, :layout => map_layout
     else
-      changesets = conditions_nonempty(Changeset.scoped)
+      changesets = conditions_nonempty(Changeset.all)
 
       if params[:display_name]
         user = User.find_by_display_name(params[:display_name])
@@ -285,52 +291,16 @@ class ChangesetController < ApplicationController
       end
 
       if params[:bbox]
-        bbox = BoundingBox.from_bbox_params(params)
-      elsif params[:minlon] and params[:minlat] and params[:maxlon] and params[:maxlat]
-        bbox = BoundingBox.from_lon_lat_params(params)
-      end
-
-      if bbox
-        changesets = conditions_bbox(changesets, bbox)
-        bbox_link = render_to_string :partial => "bbox", :object => bbox
+        changesets = conditions_bbox(changesets, BoundingBox.from_bbox_params(params))
       end
 
-      if user
-        user_link = render_to_string :partial => "user", :object => user
+      if params[:max_id]
+        changesets = changesets.where("changesets.id <= ?", params[:max_id])
       end
 
-      if params[:friends] and @user
-        @title =  t 'changeset.list.title_friend'
-        @heading =  t 'changeset.list.heading_friend'
-        @description = t 'changeset.list.description_friend'
-      elsif params[:nearby] and @user
-        @title = t 'changeset.list.title_nearby'
-        @heading = t 'changeset.list.heading_nearby'
-        @description = t 'changeset.list.description_nearby'
-      elsif user and bbox
-        @title =  t 'changeset.list.title_user_bbox', :user => user.display_name, :bbox => bbox.to_s
-        @heading =  t 'changeset.list.heading_user_bbox', :user => user.display_name, :bbox => bbox.to_s
-        @description = t 'changeset.list.description_user_bbox', :user => user_link, :bbox => bbox_link
-      elsif user
-        @title =  t 'changeset.list.title_user', :user => user.display_name
-        @heading =  t 'changeset.list.heading_user', :user => user.display_name
-        @description = t 'changeset.list.description_user', :user => user_link
-      elsif bbox
-        @title =  t 'changeset.list.title_bbox', :bbox => bbox.to_s
-        @heading =  t 'changeset.list.heading_bbox', :bbox => bbox.to_s
-        @description = t 'changeset.list.description_bbox', :bbox => bbox_link
-      else
-        @title =  t 'changeset.list.title'
-        @heading =  t 'changeset.list.heading'
-        @description = t 'changeset.list.description'
-      end
-
-      @page = (params[:page] || 1).to_i
-      @page_size = 20
-
-      @edits = changesets.order("changesets.created_at DESC").offset((@page - 1) * @page_size).limit(@page_size).preload(:user, :changeset_tags)
+      @edits = changesets.order("changesets.created_at DESC").limit(20).preload(:user, :changeset_tags)
 
-      render :action => :list
+      render :action => :list, :layout => false
     end
   end