2 class ChangesetCommentsController < ApplicationController
3 skip_before_action :verify_authenticity_token
4 before_action :authorize
5 before_action :api_deny_access_handler
9 before_action :require_public_data, :only => [:create]
10 before_action :check_api_writable
11 before_action :check_api_readable, :except => [:create]
12 around_action :api_call_handle_error
13 around_action :api_call_timeout
16 # Add a comment to a changeset
18 # Check the arguments are sane
19 raise OSM::APIBadUserInput, "No id was given" unless params[:id]
20 raise OSM::APIBadUserInput, "No text was given" if params[:text].blank?
22 # Extract the arguments
26 # Find the changeset and check it is valid
27 changeset = Changeset.find(id)
28 raise OSM::APIChangesetNotYetClosedError, changeset if changeset.is_open?
30 # Add a comment to the changeset
31 comment = changeset.comments.create(:changeset => changeset,
33 :author => current_user)
35 # Notify current subscribers of the new comment
36 changeset.subscribers.visible.each do |user|
37 Notifier.changeset_comment_notification(comment, user).deliver_later if current_user != user
40 # Add the commenter to the subscribers if necessary
41 changeset.subscribers << current_user unless changeset.subscribers.exists?(current_user.id)
43 # Return a copy of the updated changeset
44 @changeset = changeset
45 render "changesets/changeset"
49 # Sets visible flag on comment to false
51 # Check the arguments are sane
52 raise OSM::APIBadUserInput, "No id was given" unless params[:id]
54 # Extract the arguments
58 comment = ChangesetComment.find(id)
61 comment.update(:visible => false)
63 # Return a copy of the updated changeset
64 @changeset = comment.changeset
65 render "changesets/changeset"
69 # Sets visible flag on comment to true
71 # Check the arguments are sane
72 raise OSM::APIBadUserInput, "No id was given" unless params[:id]
74 # Extract the arguments
78 comment = ChangesetComment.find(id)
81 comment.update(:visible => true)
83 # Return a copy of the updated changeset
84 @changeset = comment.changeset
85 render "changesets/changeset"