75 lines
2.3 KiB
Ruby
75 lines
2.3 KiB
Ruby
class InboxController < ApplicationController
|
|
include BlockHelper
|
|
|
|
before_action :load_user
|
|
before_action :check_ownership_or_admin
|
|
|
|
before_action :load_commentable, only: :reply
|
|
before_action :check_blocked, only: :reply
|
|
|
|
def load_user
|
|
@user = User.find_by(login: params[:user_id])
|
|
@check_ownership_of = @user
|
|
end
|
|
|
|
def show
|
|
authorize InboxComment if logged_in_as_admin?
|
|
@page_subtitle = t(".page_title", user: @user.login)
|
|
@inbox_total = @user.inbox_comments.with_bad_comments_removed.count
|
|
@unread = @user.inbox_comments.with_bad_comments_removed.count_unread
|
|
@filters = filter_params[:filters] || {}
|
|
@inbox_comments = @user.inbox_comments.with_bad_comments_removed.find_by_filters(@filters).page(params[:page])
|
|
end
|
|
|
|
def reply
|
|
@comment = Comment.new
|
|
respond_to do |format|
|
|
format.html do
|
|
redirect_to comment_path(@commentable, add_comment_reply_id: @commentable.id, anchor: 'comment_' + @commentable.id.to_s)
|
|
end
|
|
format.js
|
|
end
|
|
end
|
|
|
|
def update
|
|
authorize InboxComment if logged_in_as_admin?
|
|
begin
|
|
@inbox_comments = InboxComment.find(params[:inbox_comments])
|
|
if params[:read]
|
|
@inbox_comments.each { |i| i.update_attribute(:read, true) }
|
|
elsif params[:unread]
|
|
@inbox_comments.each { |i| i.update_attribute(:read, false) }
|
|
elsif params[:delete]
|
|
@inbox_comments.each { |i| i.destroy }
|
|
end
|
|
success_message = t(".success")
|
|
rescue
|
|
flash[:caution] = t(".must_select_item")
|
|
end
|
|
respond_to do |format|
|
|
format.html { redirect_to request.referer || user_inbox_path(@user, page: params[:page], filters: params[:filters]), notice: success_message }
|
|
format.json { render json: { item_success_message: success_message }, status: :ok }
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
# Allow flexible params through, since we're not posting any data
|
|
def filter_params
|
|
params.permit!
|
|
end
|
|
|
|
def load_commentable
|
|
@commentable = Comment.find(params[:comment_id])
|
|
end
|
|
|
|
def check_blocked
|
|
if blocked_by?(@commentable.ultimate_parent)
|
|
flash[:error] = t("comments.check_blocked.parent")
|
|
redirect_back(fallback_location: user_inbox_path(@user))
|
|
elsif blocked_by_comment?(@commentable)
|
|
flash[:error] = t("comments.check_blocked.reply")
|
|
redirect_back(fallback_location: user_inbox_path(@user))
|
|
end
|
|
end
|
|
end
|