40 lines
1.5 KiB
Ruby
40 lines
1.5 KiB
Ruby
class ModerateController < ApplicationController
|
|
|
|
before_action :authenticate_user!
|
|
|
|
def index
|
|
# List of screenshots to be moderated
|
|
@pending_screenshots = Screenshot.where(approved: false)
|
|
# First package with pending screenshots
|
|
@pending_package = Package.joins(:screenshots).where('screenshots.approved=false').distinct(:name).first
|
|
|
|
# List of screenshots that were reported (to be removed)
|
|
@reported_screenshots = Screenshot.where(markedfordelete: true)
|
|
# First package with reported screenshots
|
|
@reported_package = Package.joins(:screenshots).where('screenshots.markedfordelete=true').distinct(:name).first
|
|
|
|
# The next package that has pending screenshots…
|
|
@package = @pending_package or @reported_package
|
|
|
|
if @package
|
|
# Number of screenshots that were already moderated (during this session)
|
|
session[:already_moderated] ||= 0
|
|
@moderated_screenshots = session[:already_moderated]
|
|
# Percentage of already moderated screenshots
|
|
@percent_moderated = 100 * (@moderated_screenshots+1) / (@moderated_screenshots + @pending_screenshots.count + @reported_screenshots.count)
|
|
end
|
|
end
|
|
|
|
# Publish a screenshot from the moderation queue
|
|
def approve_screenshot
|
|
@screenshot = Screenshot.find(params[:id])
|
|
# TODO: Move code to model
|
|
@screenshot.delete_reason = nil
|
|
@screenshot.markedfordelete = false
|
|
@screenshot.approved = true
|
|
@screenshot.save!
|
|
flash['notice'] = "Screenshot approved."
|
|
redirect_to package_path
|
|
end
|
|
|
|
end
|