]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/note_controller.rb
Get the per-user note list view working again
[rails.git] / app / controllers / note_controller.rb
index 4c0c98b6320257027a647149ed4f169dc7639d25..1eb0350fd721f69549803f740687dafc3690c1d2 100644 (file)
@@ -81,7 +81,7 @@ class NoteController < ApplicationController
       end
 
       # Save the note
       end
 
       # Save the note
-      @note.save
+      @note.save!
 
       # Add a comment to the note
       add_comment(@note, comment, name, "opened")
 
       # Add a comment to the note
       add_comment(@note, comment, name, "opened")
@@ -160,7 +160,7 @@ class NoteController < ApplicationController
     end
 
     # Find the comments we want to return
     end
 
     # Find the comments we want to return
-    @comments = NoteComment.where(:note => notes).order("created_at DESC").limit(result_limit).include(:note)
+    @comments = NoteComment.where(:note_id => notes).order("created_at DESC").limit(result_limit).preload(:note)
 
     # Render the result
     respond_to do |format|
 
     # Render the result
     respond_to do |format|
@@ -222,64 +222,39 @@ class NoteController < ApplicationController
     raise OSM::APIBadUserInput.new("No query string was given") unless params[:q]
 
     # Get any conditions that need to be applied
     raise OSM::APIBadUserInput.new("No query string was given") unless params[:q]
 
     # Get any conditions that need to be applied
-    conditions = closed_condition
-    conditions = cond_merge conditions, ['note_comments.body ~ ?', params[:q]]
-       
+    @notes = closed_condition(Note.scoped)
+    @notes = @notes.joins(:comments).where("note_comments.body ~ ?", params[:q])
+
     # Find the notes we want to return
     # Find the notes we want to return
-    @notes = Note.find(:all, 
-                       :conditions => conditions,
-                       :order => "updated_at DESC",
-                       :limit => result_limit,
-                       :joins => :comments,
-                       :include => :comments)
+    @notes = @notes.order("updated_at DESC").limit(result_limit).preload(:comments)
 
     # Render the result
     respond_to do |format|
 
     # Render the result
     respond_to do |format|
-      format.html { render :action => :list, :format => :rjs, :content_type => "text/javascript"}
       format.rss { render :action => :list }
       format.rss { render :action => :list }
-      format.js
       format.xml { render :action => :list }
       format.json { render :action => :list }
       format.gpx { render :action => :list }
     end
   end
 
       format.xml { render :action => :list }
       format.json { render :action => :list }
       format.gpx { render :action => :list }
     end
   end
 
+  ##
+  # Display a list of notes by a specified user
   def mine
     if params[:display_name] 
   def mine
     if params[:display_name] 
-      @user2 = User.find_by_display_name(params[:display_name], :conditions => { :status => ["active", "confirmed"] }) 
-      if @user2  
-        if @user2.data_public? or @user2 == @user 
-          conditions = ['note_comments.author_id = ?', @user2.id] 
-        else 
-          conditions = ['false'] 
-        end 
-      else #if request.format == :html 
+      if @this_user = User.active.find_by_display_name(params[:display_name])
+        @title =  t 'note.mine.title', :user => @this_user.display_name 
+        @heading =  t 'note.mine.heading', :user => @this_user.display_name 
+        @description = t 'note.mine.description', :user => render_to_string(:partial => "user", :object => @this_user)
+        @page = (params[:page] || 1).to_i 
+        @page_size = 10
+        @notes = @this_user.notes.order("updated_at DESC").offset((@page - 1) * @page_size).limit(@page_size).preload(:comments => :author)
+      else
         @title = t 'user.no_such_user.title' 
         @not_found_user = params[:display_name] 
         @title = t 'user.no_such_user.title' 
         @not_found_user = params[:display_name] 
+
         render :template => 'user/no_such_user', :status => :not_found 
         render :template => 'user/no_such_user', :status => :not_found 
-        return
       end 
     end
       end 
     end
-
-    if @user2 
-      user_link = render_to_string :partial => "user", :object => @user2 
-    end 
-    
-    @title =  t 'note.mine.title', :user => @user2.display_name 
-    @heading =  t 'note.mine.heading', :user => @user2.display_name 
-    @description = t 'note.mine.description', :user => user_link
-    
-    @page = (params[:page] || 1).to_i 
-    @page_size = 10
-
-    @notes = Note.find(:all, 
-                       :include => [:comments, {:comments => :author}],
-                       :joins => :comments,
-                       :order => "updated_at DESC",
-                       :conditions => conditions,
-                       :offset => (@page - 1) * @page_size, 
-                       :limit => @page_size).uniq
   end
 
 private 
   end
 
 private 
@@ -344,7 +319,7 @@ private
       attributes[:author_name] = name + " (a)"
     end
 
       attributes[:author_name] = name + " (a)"
     end
 
-    note.comments.create(attributes)
+    note.comments.create(attributes, :without_protection => true)
 
     note.comments.map { |c| c.author }.uniq.each do |user|
       if user and user != @user
 
     note.comments.map { |c| c.author }.uniq.each do |user|
       if user and user != @user