Adds storing note's properties to notes
Adds storing note's description, author_id and author_ip to notes table too when creating new note.
This commit is contained in:
parent
d642adc6e4
commit
fadbee0af0
1 changed files with 22 additions and 8 deletions
|
@ -81,19 +81,22 @@ module Api
|
|||
# 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
|
||||
|
@ -379,17 +382,28 @@ module Api
|
|||
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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue