diff --git a/app/controllers/packages_controller.rb b/app/controllers/packages_controller.rb index 4e9c95f..f331023 100644 --- a/app/controllers/packages_controller.rb +++ b/app/controllers/packages_controller.rb @@ -220,6 +220,14 @@ class PackagesController < ApplicationController auditlog "Screenshot #{@screenshot.id} deleted", package: @screenshot.package @screenshot.destroy + + # Increase the rejection counter for the user (social scoring) + # if the screenshot is new and pending approval + if !@screenshot.approved + @screenshot.user.rejected_screenshots += 1 + @screenshot.user.save! + end + flash['notice'] = "Screenshot deleted." redirect_back(fallback_location: package_path(name: @screenshot.package.name)) else @@ -234,6 +242,11 @@ class PackagesController < ApplicationController @screenshot.approve! auditlog "Screenshot approved", package: @screenshot.package, screenshot: @screenshot + + # Increase the approval counter for the user (social scoring) + @screenshot.user.approved_screenshots += 1 + @screenshot.user.save! + flash['notice'] = "Screenshot approved." redirect_back(fallback_location: package_path(name: @screenshot.package.name)) else diff --git a/app/models/user.rb b/app/models/user.rb index 473dc5a..e66e967 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -79,10 +79,6 @@ class User < ApplicationRecord end end - def approved_screenshots - self.screenshots.where(approved: true) - end - # Seamlessly create a user account for the current visitor. # It helps track uploads because uploaded screenshots get assigned # to this user record. diff --git a/app/views/my/profile.slim b/app/views/my/profile.slim index ac1c0b8..3f8e41b 100644 --- a/app/views/my/profile.slim +++ b/app/views/my/profile.slim @@ -54,28 +54,39 @@ h1 Your data hr .card-section - h3 Your permissions - ul - - if can? :approve, Screenshot.new - li - => fa_icon 'thumbs-up' - 'approve uploaded screenshots - - if can? :destroy, Screenshot.new - li - => fa_icon 'trash' - 'delete screenshots - - if can? :hide, Screenshot.new - li - => fa_icon 'eye-slash' - 'hide screenshots from the public - - if can? :unhide, Screenshot.new - li - => fa_icon 'eye' - 'restore (unhide) screenshots for the public - - if can? :view, Log - li - => fa_icon 'book' - 'view logs + h3 Statistics + p + = pluralize(current_user.approved_screenshots, 'approved screenshot') + p + = pluralize(current_user.rejected_screenshots, 'rejected screenshot') + - unless current_user.pseudo + + .cell + hr + + .card-section + h3 Your permissions + ul + - if can? :approve, Screenshot.new + li + => fa_icon 'thumbs-up' + 'approve uploaded screenshots + - if can? :destroy, Screenshot.new + li + => fa_icon 'trash' + 'delete screenshots + - if can? :hide, Screenshot.new + li + => fa_icon 'eye-slash' + 'hide screenshots from the public + - if can? :unhide, Screenshot.new + li + => fa_icon 'eye' + 'restore (unhide) screenshots for the public + - if can? :view, Log + li + => fa_icon 'book' + 'view logs .cell.auto diff --git a/db/migrate/20210321215433_add_upload_counter_to_users.rb b/db/migrate/20210321215433_add_upload_counter_to_users.rb new file mode 100644 index 0000000..46c54eb --- /dev/null +++ b/db/migrate/20210321215433_add_upload_counter_to_users.rb @@ -0,0 +1,6 @@ +class AddUploadCounterToUsers < ActiveRecord::Migration[6.1] + def change + add_column :users, :approved_screenshots, :integer, default: 0 + add_column :users, :rejected_screenshots, :integer, default: 0 + end +end diff --git a/db/schema.rb b/db/schema.rb index 6688f86..c3d9703 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2021_03_09_233239) do +ActiveRecord::Schema.define(version: 2021_03_21_215433) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -120,6 +120,8 @@ ActiveRecord::Schema.define(version: 2021_03_09_233239) do t.boolean "admin_role", default: false t.boolean "moderator_role", default: false t.boolean "pseudo", default: false + t.integer "approved_screenshots", default: 0 + t.integer "rejected_screenshots", default: 0 t.index ["email", "provider"], name: "index_users_on_email_and_provider", unique: true end