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
|
class PackagesController < ApplicationController
|
||||||
before_action :authenticate_user!, only: [:moderate, :moderate_screenshot]
|
|
||||||
|
|
||||||
def list
|
def list
|
||||||
@packages = query_packages
|
@packages = query_packages
|
||||||
|
|
@ -17,16 +16,6 @@ class PackagesController < ApplicationController
|
||||||
@package = Package.find_by(name: params[:name])
|
@package = Package.find_by(name: params[:name])
|
||||||
end
|
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
|
def upload
|
||||||
raise "name not given" unless params[:name]
|
raise "name not given" unless params[:name]
|
||||||
@package = Package.find_by(name: params[:name])
|
@package = Package.find_by(name: params[:name])
|
||||||
|
|
@ -116,17 +105,6 @@ class PackagesController < ApplicationController
|
||||||
redirect_to package_path
|
redirect_to package_path
|
||||||
end
|
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
|
private
|
||||||
|
|
||||||
# Send a dummy thumbnail reading "No screenshot available. Sorry."
|
# 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
|
li.divider
|
||||||
// TODO: Show link for admin/moderation view if admin is logged in
|
// TODO: Show link for admin/moderation view if admin is logged in
|
||||||
- if user_signed_in?
|
- if user_signed_in?
|
||||||
li class=('active' if controller_name=='packages' and action_name=='moderate')
|
li class=('active' if controller_name=='moderate')
|
||||||
= link_to 'Moderate', packages_moderate_path
|
= link_to 'Moderate', moderate_path
|
||||||
li.has-form
|
li.has-form
|
||||||
- if user_signed_in?
|
- if user_signed_in?
|
||||||
= link_to "#{current_user.email} (Logout)", destroy_user_session_path, :method => :delete
|
= 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
|
- elsif screenshot.approved
|
||||||
= render(partial: 'report_dropdown', locals: {screenshot: screenshot})
|
= render(partial: 'report_dropdown', locals: {screenshot: screenshot})
|
||||||
|
|
||||||
|
|
||||||
// Anonymous users can see their own screenshots
|
|
||||||
/ - if not screenshot.approved
|
|
||||||
|
|
||||||
- else
|
- else
|
||||||
.row.listview
|
.row.listview
|
||||||
img src='/images/dummy/no-screenshots-available.svg' width='100%' style='padding: 0 10%'
|
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' => 'packages#grid', as: :packages_grid
|
||||||
get 'packages/list' => 'packages#list', as: :packages_list
|
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 'package/:name' => 'packages#details', as: :package, name: /[^\/]+/
|
||||||
get 'upload', to: redirect('/packages')
|
get 'upload', to: redirect('/packages')
|
||||||
get 'upload/:name' => 'packages#upload', as: :upload_package_by_name
|
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