Moved moderation code to new moderate controller
This commit is contained in:
parent
b32f26a1b8
commit
a153391615
12 changed files with 79 additions and 48 deletions
3
app/assets/javascripts/moderate.coffee
Normal file
3
app/assets/javascripts/moderate.coffee
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
# Place all the behaviors and hooks related to the matching controller here.
|
||||
# All this logic will automatically be available in application.js.
|
||||
# You can use CoffeeScript in this file: http://coffeescript.org/
|
||||
3
app/assets/stylesheets/moderate.scss
Normal file
3
app/assets/stylesheets/moderate.scss
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
// Place all the styles related to the Moderate controller here.
|
||||
// They will automatically be included in application.css.
|
||||
// You can use Sass (SCSS) here: http://sass-lang.com/
|
||||
30
app/controllers/moderate_controller.rb
Normal file
30
app/controllers/moderate_controller.rb
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
class ModerateController < ApplicationController
|
||||
|
||||
before_action :authenticate_user!
|
||||
|
||||
def index
|
||||
# List of screenshots to be moderated
|
||||
@pending_screenshots = Screenshot.where(approved: false)
|
||||
# List of packages with pending screenshots
|
||||
@pending_packages = Package.joins(:screenshots).where('screenshots.approved=false').distinct(:name)
|
||||
# The next package that has pending screenshots…
|
||||
@package = @pending_packages.first
|
||||
# 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)
|
||||
end
|
||||
|
||||
# Publish a screenshot from the moderation queue
|
||||
def approve_screenshot
|
||||
@screenshot = Screenshot.find(params[:id])
|
||||
@screenshot.delete_reason = nil
|
||||
@screenshot.markedfordelete = false
|
||||
@screenshot.approved = true
|
||||
@screenshot.save!
|
||||
flash['notice'] = "Screenshot approved."
|
||||
redirect_to package_path
|
||||
end
|
||||
|
||||
end
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
class PackagesController < ApplicationController
|
||||
before_action :authenticate_user!, only: [:moderate, :moderate_screenshot]
|
||||
|
||||
def list
|
||||
@packages = query_packages
|
||||
|
|
@ -17,16 +16,6 @@ class PackagesController < ApplicationController
|
|||
@package = Package.find_by(name: params[:name])
|
||||
end
|
||||
|
||||
def moderate
|
||||
# List of screenshots to be moderated
|
||||
@pending_screenshots = Screenshot.where(approved: false)
|
||||
# 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)
|
||||
end
|
||||
|
||||
def upload
|
||||
raise "name not given" unless params[:name]
|
||||
@package = Package.find_by(name: params[:name])
|
||||
|
|
@ -116,17 +105,6 @@ class PackagesController < ApplicationController
|
|||
redirect_to package_path
|
||||
end
|
||||
|
||||
# Publish a screenshot from the moderation queue
|
||||
def approve_screenshot
|
||||
@screenshot = Screenshot.find(params[:id])
|
||||
@screenshot.delete_reason = nil
|
||||
@screenshot.markedfordelete = false
|
||||
@screenshot.approved = true
|
||||
@screenshot.save!
|
||||
flash['notice'] = "Screenshot approved."
|
||||
redirect_to package_path
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
# Send a dummy thumbnail reading "No screenshot available. Sorry."
|
||||
|
|
|
|||
2
app/helpers/moderate_helper.rb
Normal file
2
app/helpers/moderate_helper.rb
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
module ModerateHelper
|
||||
end
|
||||
|
|
@ -28,8 +28,8 @@ header
|
|||
li.divider
|
||||
// TODO: Show link for admin/moderation view if admin is logged in
|
||||
- if user_signed_in?
|
||||
li class=('active' if controller_name=='packages' and action_name=='moderate')
|
||||
= link_to 'Moderate', packages_moderate_path
|
||||
li class=('active' if controller_name=='moderate')
|
||||
= link_to 'Moderate', moderate_path
|
||||
li.has-form
|
||||
- if user_signed_in?
|
||||
= link_to "#{current_user.email} (Logout)", destroy_user_session_path, :method => :delete
|
||||
|
|
|
|||
24
app/views/moderate/index.slim
Normal file
24
app/views/moderate/index.slim
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
.row
|
||||
h1 Moderation queue
|
||||
|
||||
// Progress bar
|
||||
.progress.warning role="progressbar" tabindex="0" aria-valuenow="20" aria-valuemin="0" aria-valuetext="25 percent" aria-valuemax="100"
|
||||
span.progress-meter style="width: #{@percent_moderated}%"
|
||||
p.progress-meter-text #{@percent_moderated}%
|
||||
|
||||
h2 Package: #{@package.name}
|
||||
|
||||
// Package list
|
||||
.row.packagepage
|
||||
.small-9.medium-10.columns
|
||||
- if @pending_screenshots.length>0
|
||||
- @pending_screenshots.each do |screenshot|
|
||||
.row.listview
|
||||
.small-12.columns
|
||||
.text-center
|
||||
a.black.fancybox href=screenshot.image.url(:large, timestamp: false) rel='fancybox-thumb' title=screenshot.caption
|
||||
= image_tag(screenshot.image.url(:large, timestamp: false), alt: screenshot.caption)
|
||||
.imgcaption =screenshot.caption
|
||||
|
||||
- else
|
||||
p No screenshots left in the moderation queue. Great.
|
||||
|
|
@ -23,10 +23,6 @@
|
|||
- elsif screenshot.approved
|
||||
= render(partial: 'report_dropdown', locals: {screenshot: screenshot})
|
||||
|
||||
|
||||
// Anonymous users can see their own screenshots
|
||||
/ - if not screenshot.approved
|
||||
|
||||
- else
|
||||
.row.listview
|
||||
img src='/images/dummy/no-screenshots-available.svg' width='100%' style='padding: 0 10%'
|
||||
|
|
|
|||
|
|
@ -1,19 +0,0 @@
|
|||
// TODO: Show progressbar of how far the admin went through the moderation queue
|
||||
|
||||
.row
|
||||
h1 Moderation queue
|
||||
|
||||
// Progress bar
|
||||
.progress.warning role="progressbar" tabindex="0" aria-valuenow="20" aria-valuemin="0" aria-valuetext="25 percent" aria-valuemax="100"
|
||||
span.progress-meter style="width: #{@percent_moderated}%"
|
||||
p.progress-meter-text #{@percent_moderated}%
|
||||
|
||||
// Package list
|
||||
.row.packagepage
|
||||
.small-9.medium-10.columns
|
||||
- if @pending_screenshots.length>0
|
||||
- @pending_screenshots.each do |screenshot|
|
||||
= screenshot.id
|
||||
|
||||
- else
|
||||
p No screenshots left in the moderation queue. Great.
|
||||
|
|
@ -14,7 +14,7 @@ Debshots::Application.routes.draw do
|
|||
|
||||
get 'packages' => 'packages#grid', as: :packages_grid
|
||||
get 'packages/list' => 'packages#list', as: :packages_list
|
||||
get 'packages/moderate' => 'packages#moderate', as: :packages_moderate
|
||||
get 'moderate' => 'moderate#index'
|
||||
get 'package/:name' => 'packages#details', as: :package, name: /[^\/]+/
|
||||
get 'upload', to: redirect('/packages')
|
||||
get 'upload/:name' => 'packages#upload', as: :upload_package_by_name
|
||||
|
|
|
|||
7
test/controllers/moderate_controller_test.rb
Normal file
7
test/controllers/moderate_controller_test.rb
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
require "test_helper"
|
||||
|
||||
class ModerateControllerTest < ActionController::TestCase
|
||||
def test_sanity
|
||||
flunk "Need real tests"
|
||||
end
|
||||
end
|
||||
7
test/helpers/moderate_helper_test.rb
Normal file
7
test/helpers/moderate_helper_test.rb
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
require "test_helper"
|
||||
|
||||
class ModerateHelperTest < ActionView::TestCase
|
||||
def test_sanity
|
||||
flunk "Need real tests"
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue