forked from openstreetmap/openstreetmap-website
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge remote-tracking branch 'upstream/pull/2050'
- Loading branch information
Showing
12 changed files
with
420 additions
and
380 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,125 @@ | ||
class ChangesetCommentsController < ApplicationController | ||
before_action :authorize_web, :only => [:index] | ||
before_action :set_locale, :only => [:index] | ||
before_action :authorize, :only => [:create, :destroy, :restore] | ||
before_action :require_moderator, :only => [:destroy, :restore] | ||
before_action :require_allow_write_api, :only => [:create, :destroy, :restore] | ||
before_action :require_public_data, :only => [:create] | ||
before_action :check_api_writable, :only => [:create, :destroy, :restore] | ||
before_action :check_api_readable, :except => [:create, :index] | ||
before_action(:only => [:index]) { |c| c.check_database_readable(true) } | ||
around_action :api_call_handle_error, :except => [:index] | ||
around_action :api_call_timeout, :except => [:index] | ||
around_action :web_timeout, :only => [:index] | ||
|
||
## | ||
# Add a comment to a changeset | ||
def create | ||
# Check the arguments are sane | ||
raise OSM::APIBadUserInput, "No id was given" unless params[:id] | ||
raise OSM::APIBadUserInput, "No text was given" if params[:text].blank? | ||
|
||
# Extract the arguments | ||
id = params[:id].to_i | ||
body = params[:text] | ||
|
||
# Find the changeset and check it is valid | ||
changeset = Changeset.find(id) | ||
raise OSM::APIChangesetNotYetClosedError, changeset if changeset.is_open? | ||
|
||
# Add a comment to the changeset | ||
comment = changeset.comments.create(:changeset => changeset, | ||
:body => body, | ||
:author => current_user) | ||
|
||
# Notify current subscribers of the new comment | ||
changeset.subscribers.visible.each do |user| | ||
Notifier.changeset_comment_notification(comment, user).deliver_later if current_user != user | ||
end | ||
|
||
# Add the commenter to the subscribers if necessary | ||
changeset.subscribers << current_user unless changeset.subscribers.exists?(current_user.id) | ||
|
||
# Return a copy of the updated changeset | ||
render :xml => changeset.to_xml.to_s | ||
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 | ||
render :xml => comment.changeset.to_xml.to_s | ||
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 | ||
render :xml => comment.changeset.to_xml.to_s | ||
end | ||
|
||
## | ||
# Get a feed of recent changeset comments | ||
def index | ||
if params[:id] | ||
# Extract the arguments | ||
id = params[:id].to_i | ||
|
||
# Find the changeset | ||
changeset = Changeset.find(id) | ||
|
||
# Return comments for this changeset only | ||
@comments = changeset.comments.includes(:author, :changeset).limit(comments_limit) | ||
else | ||
# Return comments | ||
@comments = ChangesetComment.includes(:author, :changeset).where(:visible => true).order("created_at DESC").limit(comments_limit).preload(:changeset) | ||
end | ||
|
||
# Render the result | ||
respond_to do |format| | ||
format.rss | ||
end | ||
rescue OSM::APIBadUserInput | ||
head :bad_request | ||
end | ||
|
||
private | ||
|
||
## | ||
# Get the maximum number of comments to return | ||
def comments_limit | ||
if params[:limit] | ||
if params[:limit].to_i.positive? && params[:limit].to_i <= 10000 | ||
params[:limit].to_i | ||
else | ||
raise OSM::APIBadUserInput, "Comments limit must be between 1 and 10000" | ||
end | ||
else | ||
100 | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
4 changes: 2 additions & 2 deletions
4
app/views/changeset/_comment.html.erb → ...iews/changeset_comments/_comment.html.erb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,6 @@ | ||
<h2><%= t "changeset.rss.comment", :author => comment.author.display_name, | ||
<h2><%= t ".comment", :author => comment.author.display_name, | ||
:changeset_id => comment.changeset.id.to_s %></h2> | ||
<div class="changeset-comment" style="margin-top: 5px"> | ||
<div class="changeset-comment-description" style="font-size: smaller; color: #999999"><%= t "changeset.rss.commented_at_by_html", :when => friendly_date(comment.created_at), :user => comment.author.display_name %></div> | ||
<div class="changeset-comment-description" style="font-size: smaller; color: #999999"><%= t ".commented_at_by_html", :when => friendly_date(comment.created_at), :user => comment.author.display_name %></div> | ||
<div class="changeset-comment-text"><%= comment.body %></div> | ||
</div> |
2 changes: 1 addition & 1 deletion
2
app/views/changeset/_comments.rss.builder → .../changeset_comments/_comments.rss.builder
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
atom_feed(:language => I18n.locale, :schema_date => 2009, | ||
:id => url_for(params.merge(:only_path => false)), | ||
:root_url => url_for(params.merge(:only_path => false, :format => nil)), | ||
"xmlns:georss" => "http://www.georss.org/georss") do |feed| | ||
feed.title @title | ||
|
||
feed.subtitle :type => "xhtml" do |xhtml| | ||
xhtml.p do |p| | ||
p << t(".sorry") | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
<p><%= t '.sorry' %></p> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.