openstreetmap-website/app/controllers/notes_controller.rb
Nenad Vujicic 592b28fd23 Removes dropping note's first comment
Removes dropping note's first visible comment in case of deleted note's author. After adding displaying "deleted" as note's description, first visible comment is now displayed as note's comment. Moves logic of calculating which note comments will be displayed and if note contains anonymous author / comments to the controller.
2025-02-06 11:43:53 +01:00

55 lines
1.7 KiB
Ruby

class NotesController < ApplicationController
include UserMethods
layout :map_layout
before_action :check_api_readable
before_action :authorize_web
before_action :require_oauth
authorize_resource
before_action :lookup_user, :only => [:index]
before_action :set_locale
around_action :web_timeout
##
# Display a list of notes by a specified user
def index
param! :page, Integer, :min => 1
@params = params.permit(:display_name, :status)
@title = t ".title", :user => @user.display_name
@page = (params[:page] || 1).to_i
@page_size = 10
@notes = @user.notes
@notes = @notes.visible unless current_user&.moderator?
@notes = @notes.where(:status => params[:status]) unless params[:status] == "all" || params[:status].blank?
@notes = @notes.order("updated_at DESC, id").distinct.offset((@page - 1) * @page_size).limit(@page_size).preload(:comments => :author)
render :layout => "site"
end
def show
@type = "note"
if current_user&.moderator?
@note = Note.find(params[:id])
@note_comments = @note.comments.unscope(:where => :visible)
else
@note = Note.visible.find(params[:id])
@note_comments = @note.comments
end
@note_includes_anonymous = @note.author.nil? || @note_comments.find { |comment| comment.author.nil? }
@note_comments = @note_comments.drop(1) unless !@note.author.nil? && @note.author.status == "deleted"
rescue ActiveRecord::RecordNotFound
render :template => "browse/not_found", :status => :not_found
end
def new
@anonymous_notes_count = request.cookies["_osm_anonymous_notes_count"].to_i || 0
render :action => :new_readonly if api_status != "online"
end
end