Added moderation, report and approval buttons for admins, uploaders and anonymous people
This commit is contained in:
parent
014a840493
commit
9bb9cf1f5d
5 changed files with 43 additions and 10 deletions
|
|
@ -1,5 +1,5 @@
|
||||||
class PackagesController < ApplicationController
|
class PackagesController < ApplicationController
|
||||||
before_action :authenticate_user!, only: [:moderate]
|
before_action :authenticate_user!, only: [:moderate, :moderate_screenshot]
|
||||||
|
|
||||||
def list
|
def list
|
||||||
@packages = query_packages
|
@packages = query_packages
|
||||||
|
|
@ -96,6 +96,28 @@ class PackagesController < ApplicationController
|
||||||
@screenshot = Screenshot.find(params[:id])
|
@screenshot = Screenshot.find(params[:id])
|
||||||
@screenshot.description = params[:description]
|
@screenshot.description = params[:description]
|
||||||
@screenshot.save!
|
@screenshot.save!
|
||||||
|
flash['notice'] = "Description updated."
|
||||||
|
redirect_to package_path
|
||||||
|
end
|
||||||
|
|
||||||
|
# Receive an anonymous report from a user to have a screenshot removed.
|
||||||
|
def report_screenshot
|
||||||
|
@screenshot = Screenshot.find(params[:id])
|
||||||
|
@screenshot.delete_reason = params[:delete_reason]
|
||||||
|
@screenshot.markedfordelete = true
|
||||||
|
@screenshot.save!
|
||||||
|
flash['notice'] = "Screenshot reported. The moderators will deal with it."
|
||||||
|
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
|
redirect_to package_path
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,18 @@
|
||||||
// Button that reveals a dropdown/modal for admins
|
// Button that reveals a dropdown/modal for admins
|
||||||
.text-center
|
.text-right
|
||||||
button.small.dropdown.warning.button type="button" data-toggle="admin-info-#{screenshot.id}"
|
button.small.dropdown.warning.button type="button" data-toggle="admin-info-#{screenshot.id}"
|
||||||
'Admin
|
'Admin
|
||||||
.dropdown-pane data-dropdown=true id="admin-info-#{screenshot.id}"
|
.dropdown-pane data-dropdown=true id="admin-info-#{screenshot.id}"
|
||||||
|
a.button.small.success[
|
||||||
|
href=approve_screenshot_path(@package.name, screenshot.id)
|
||||||
|
method='post'
|
||||||
|
] Approve screenshot
|
||||||
a.button.small.alert[
|
a.button.small.alert[
|
||||||
href=delete_screenshot_path(@package.name, screenshot.id)
|
href=delete_screenshot_path(@package.name, screenshot.id)
|
||||||
onclick="return confirm('Really delete the screenshot?');"
|
onclick="return confirm('Really delete the screenshot?');"
|
||||||
] Delete screenshot
|
] Delete screenshot
|
||||||
|
|
||||||
|
p Status: #{screenshot.status}
|
||||||
p Uploader IP=#{screenshot.uploaderip}
|
p Uploader IP=#{screenshot.uploaderip}
|
||||||
p Uploader Token=#{session[:token]}
|
p Uploader Token=#{session[:token]}
|
||||||
p Uploaded #{screenshot.age_days} (#{screenshot.created_at})
|
p Uploaded #{screenshot.age_days} (#{screenshot.created_at})
|
||||||
p Status: #{screenshot.status}
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// Button that reveals a dropdown/modal for users (for their own screenshots)
|
// Button that reveals a dropdown/modal for users (for their own screenshots)
|
||||||
.text-center
|
.text-right
|
||||||
button.small.dropdown.warning.button type="button" data-toggle="admin-info-#{screenshot.id}"
|
button.small.dropdown.warning.button type="button" data-toggle="admin-info-#{screenshot.id}"
|
||||||
'Manage your screenshot
|
'Manage your screenshot
|
||||||
.dropdown-pane data-dropdown=true id="admin-info-#{screenshot.id}"
|
.dropdown-pane data-dropdown=true id="admin-info-#{screenshot.id}"
|
||||||
|
|
|
||||||
|
|
@ -13,12 +13,16 @@
|
||||||
= image_tag(screenshot.image.url(:large, timestamp: false), alt: screenshot.caption)
|
= image_tag(screenshot.image.url(:large, timestamp: false), alt: screenshot.caption)
|
||||||
.imgcaption =screenshot.caption
|
.imgcaption =screenshot.caption
|
||||||
|
|
||||||
// TODO: Show information only if admin
|
// Is the user an admin?
|
||||||
- if user_signed_in?
|
- if user_signed_in?
|
||||||
// Button that reveals a dropdown/modal for admins
|
= render(partial: 'admin_dropdown', locals: {screenshot: screenshot})
|
||||||
= render(partial: 'admin_dropdown', locals: {screenshot: screenshot})
|
// or does the screenshot belong to the user (determined by session cookie)
|
||||||
- elsif screenshot.uploaderhash == session[:token]
|
- elsif screenshot.uploaderhash == session[:token]
|
||||||
= render(partial: 'user_dropdown', locals: {screenshot: screenshot})
|
= render(partial: 'user_dropdown', locals: {screenshot: screenshot})
|
||||||
|
// or is the user not related to the screenshot and the screenshot is public?
|
||||||
|
- elsif screenshot.approved
|
||||||
|
= render(partial: 'report_dropdown', locals: {screenshot: screenshot})
|
||||||
|
|
||||||
|
|
||||||
// Anonymous users can see their own screenshots
|
// Anonymous users can see their own screenshots
|
||||||
/ - if not screenshot.approved
|
/ - if not screenshot.approved
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,9 @@ Debshots::Application.routes.draw do
|
||||||
# TODO: "get" is probably the wrong method to delete a screenshot
|
# TODO: "get" is probably the wrong method to delete a screenshot
|
||||||
get 'delete_screenshot/:name/:id' => 'packages#delete_screenshot', as: :delete_screenshot
|
get 'delete_screenshot/:name/:id' => 'packages#delete_screenshot', as: :delete_screenshot
|
||||||
post 'update_screenshot_description/:name/:id' => 'packages#update_screenshot_description', as: :update_screenshot_description
|
post 'update_screenshot_description/:name/:id' => 'packages#update_screenshot_description', as: :update_screenshot_description
|
||||||
|
post 'report_screenshot/:name/:id' => 'packages#report_screenshot', as: :report_screenshot
|
||||||
|
# TODO: "get" is probably the wrong method to delete a screenshot
|
||||||
|
get 'approve_screenshot/:name/:id' => 'packages#approve_screenshot', as: :approve_screenshot
|
||||||
get 'about' => 'welcome#about'
|
get 'about' => 'welcome#about'
|
||||||
get 'thumbnail/:name' => 'packages#thumbnail', as: :thumbnail_image, name: /[^\/]+/
|
get 'thumbnail/:name' => 'packages#thumbnail', as: :thumbnail_image, name: /[^\/]+/
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue