]> git.openstreetmap.org Git - rails.git/commitdiff
Merge remote-tracking branch 'upstream/pull/5622'
authorTom Hughes <tom@compton.nu>
Wed, 12 Feb 2025 17:59:25 +0000 (17:59 +0000)
committerTom Hughes <tom@compton.nu>
Wed, 12 Feb 2025 17:59:25 +0000 (17:59 +0000)
1  2 
app/controllers/api/notes_controller.rb

index 1a53877e6e9ffa8d2d5fa084b9f744502460a361,f6d6dede9b0c76f03219a42e854273266d82db8e..bc4d2eaf2ceaa47076e57e4182fdcca583d65809
@@@ -81,22 -81,19 +81,22 @@@ module Ap
        # Extract the arguments
        lon = OSM.parse_float(params[:lon], OSM::APIBadUserInput, "lon was not a number")
        lat = OSM.parse_float(params[:lat], OSM::APIBadUserInput, "lat was not a number")
 -      comment = params[:text]
 +      description = params[:text]
 +
 +      # Get note's author info (for logged in users - user_id, for logged out users - IP address)
 +      note_author_info = author_info
  
        # Include in a transaction to ensure that there is always a note_comment for every note
        Note.transaction do
          # Create the note
 -        @note = Note.create(:lat => lat, :lon => lon)
 +        @note = Note.create(:lat => lat, :lon => lon, :description => description, :user_id => note_author_info[:user_id], :user_ip => note_author_info[:user_ip])
          raise OSM::APIBadUserInput, "The note is outside this world" unless @note.in_world?
  
          # Save the note
          @note.save!
  
 -        # Add a comment to the note
 -        add_comment(@note, comment, "opened")
 +        # Add opening comment (description) to the note
 +        add_comment(@note, description, "opened")
        end
  
        # Return a copy of the new note
        end
  
        # Add any text filter
-       @notes = @notes.joins(:comments).where("to_tsvector('english', note_comments.body) @@ plainto_tsquery('english', ?)", params[:q]) if params[:q]
+       if params[:q]
+         @notes = @notes.joins(:comments).where("to_tsvector('english', note_comments.body) @@ plainto_tsquery('english', ?) OR to_tsvector('english', notes.description) @@ plainto_tsquery('english', ?)", params[:q], params[:q])
+       end
  
        # Add any date filter
        if params[:from]
        end
      end
  
 +    ##
 +    # Get author's information (for logged in users - user_id, for logged out users - IP address)
 +    def author_info
 +      if scope_enabled?(:write_notes)
 +        { :user_id => current_user.id }
 +      else
 +        { :user_ip => request.remote_ip }
 +      end
 +    end
 +
      ##
      # Add a comment to a note
      def add_comment(note, text, event, notify: true)
        attributes = { :visible => true, :event => event, :body => text }
  
 -      author = current_user if scope_enabled?(:write_notes)
 +      # Get note comment's author info (for logged in users - user_id, for logged out users - IP address)
 +      note_comment_author_info = author_info
  
 -      if author
 -        attributes[:author_id] = author.id
 +      if note_comment_author_info[:user_ip].nil?
 +        attributes[:author_id] = note_comment_author_info[:user_id]
        else
 -        attributes[:author_ip] = request.remote_ip
 +        attributes[:author_ip] = note_comment_author_info[:user_ip]
        end
  
        comment = note.comments.create!(attributes)