Create api changeset comment visibility resource

This commit is contained in:
Anton Khorev 2025-02-23 04:59:26 +03:00
parent 457cc99349
commit 84a0c76ab2
13 changed files with 356 additions and 299 deletions

View file

@ -0,0 +1,60 @@
module Api
module ChangesetComments
class VisibilitiesController < ApiController
before_action :check_api_writable
before_action :authorize
authorize_resource :class => :changeset_comment_visibility
before_action :set_request_formats
##
# Sets visible flag on comment to true
def create
# Check the arguments are sane
raise OSM::APIBadUserInput, "No id was given" unless params[:changeset_comment_id]
# Extract the arguments
changeset_comment_id = params[:changeset_comment_id].to_i
# Find the changeset
comment = ChangesetComment.find(changeset_comment_id)
# Unhide the comment
comment.update(:visible => true)
# Return a copy of the updated changeset
@changeset = comment.changeset
respond_to do |format|
format.xml
format.json
end
end
##
# Sets visible flag on comment to false
def destroy
# Check the arguments are sane
raise OSM::APIBadUserInput, "No id was given" unless params[:changeset_comment_id]
# Extract the arguments
changeset_comment_id = params[:changeset_comment_id].to_i
# Find the changeset
comment = ChangesetComment.find(changeset_comment_id)
# Hide the comment
comment.update(:visible => false)
# Return a copy of the updated changeset
@changeset = comment.changeset
respond_to do |format|
format.xml
format.json
end
end
end
end
end

View file

@ -59,56 +59,6 @@ module Api
end
end
##
# Sets visible flag on comment to false
def destroy
# Check the arguments are sane
raise OSM::APIBadUserInput, "No id was given" unless params[:id]
# Extract the arguments
id = params[:id].to_i
# Find the changeset
comment = ChangesetComment.find(id)
# Hide the comment
comment.update(:visible => false)
# Return a copy of the updated changeset
@changeset = comment.changeset
render "api/changesets/show"
respond_to do |format|
format.xml
format.json
end
end
##
# Sets visible flag on comment to true
def restore
# Check the arguments are sane
raise OSM::APIBadUserInput, "No id was given" unless params[:id]
# Extract the arguments
id = params[:id].to_i
# Find the changeset
comment = ChangesetComment.find(id)
# Unhide the comment
comment.update(:visible => true)
# Return a copy of the updated changeset
@changeset = comment.changeset
render "api/changesets/show"
respond_to do |format|
format.xml
format.json
end
end
private
##

View file

@ -63,7 +63,7 @@ module Api
@changeset = Changeset.find(params[:id])
if params[:include_discussion].presence
@comments = @changeset.comments
@comments = @comments.unscope(:where => :visible) if params[:show_hidden_comments].presence && can?(:restore, ChangesetComment)
@comments = @comments.unscope(:where => :visible) if params[:show_hidden_comments].presence && can?(:create, :changeset_comment_visibility)
@comments = @comments.includes(:author)
end