Add batch actions for approving and rejecting pending accounts (#10469)
parent
2c63e0292a
commit
e1d0390e29
@ -0,0 +1,52 @@ |
|||||||
|
# frozen_string_literal: true |
||||||
|
|
||||||
|
module Admin |
||||||
|
class PendingAccountsController < BaseController |
||||||
|
before_action :set_accounts, only: :index |
||||||
|
|
||||||
|
def index |
||||||
|
@form = Form::AccountBatch.new |
||||||
|
end |
||||||
|
|
||||||
|
def update |
||||||
|
@form = Form::AccountBatch.new(form_account_batch_params.merge(current_account: current_account, action: action_from_button)) |
||||||
|
@form.save |
||||||
|
rescue ActionController::ParameterMissing |
||||||
|
# Do nothing |
||||||
|
ensure |
||||||
|
redirect_to admin_pending_accounts_path(current_params) |
||||||
|
end |
||||||
|
|
||||||
|
def approve_all |
||||||
|
Form::AccountBatch.new(account_ids: User.pending.pluck(:account_id), action: 'approve').save |
||||||
|
redirect_to admin_pending_accounts_path(current_params) |
||||||
|
end |
||||||
|
|
||||||
|
def reject_all |
||||||
|
Form::AccountBatch.new(account_ids: User.pending.pluck(:account_id), action: 'reject').save |
||||||
|
redirect_to admin_pending_accounts_path(current_params) |
||||||
|
end |
||||||
|
|
||||||
|
private |
||||||
|
|
||||||
|
def set_accounts |
||||||
|
@accounts = Account.joins(:user).merge(User.pending).page(params[:page]) |
||||||
|
end |
||||||
|
|
||||||
|
def form_account_batch_params |
||||||
|
params.require(:form_account_batch).permit(:action, account_ids: []) |
||||||
|
end |
||||||
|
|
||||||
|
def action_from_button |
||||||
|
if params[:approve] |
||||||
|
'approve' |
||||||
|
elsif params[:reject] |
||||||
|
'reject' |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
def current_params |
||||||
|
params.slice(:page).permit(:page) |
||||||
|
end |
||||||
|
end |
||||||
|
end |
@ -0,0 +1,14 @@ |
|||||||
|
.batch-table__row |
||||||
|
%label.batch-table__row__select.batch-table__row__select--aligned.batch-checkbox |
||||||
|
= f.check_box :account_ids, { multiple: true, include_hidden: false }, account.id |
||||||
|
.batch-table__row__content.batch-table__row__content--unpadded |
||||||
|
%table.accounts-table |
||||||
|
%tbody |
||||||
|
%tr |
||||||
|
%td |
||||||
|
= account.user_email |
||||||
|
= "(@#{account.username})" |
||||||
|
%br/ |
||||||
|
= account.user_current_sign_in_ip |
||||||
|
%td.accounts-table__count |
||||||
|
= table_link_to 'pencil', t('admin.accounts.edit'), admin_account_path(account.id) |
@ -0,0 +1,33 @@ |
|||||||
|
- content_for :page_title do |
||||||
|
= t('admin.pending_accounts.title', count: User.pending.count) |
||||||
|
|
||||||
|
- content_for :header_tags do |
||||||
|
= javascript_pack_tag 'admin', integrity: true, async: true, crossorigin: 'anonymous' |
||||||
|
|
||||||
|
= form_for(@form, url: admin_pending_accounts_path, method: :patch) do |f| |
||||||
|
= hidden_field_tag :page, params[:page] || 1 |
||||||
|
|
||||||
|
.batch-table |
||||||
|
.batch-table__toolbar |
||||||
|
%label.batch-table__toolbar__select.batch-checkbox-all |
||||||
|
= check_box_tag :batch_checkbox_all, nil, false |
||||||
|
.batch-table__toolbar__actions |
||||||
|
= f.button safe_join([fa_icon('check'), t('admin.accounts.approve')]), name: :approve, class: 'table-action-link', type: :submit, data: { confirm: t('admin.reports.are_you_sure') } |
||||||
|
|
||||||
|
= f.button safe_join([fa_icon('times'), t('admin.accounts.reject')]), name: :reject, class: 'table-action-link', type: :submit, data: { confirm: t('admin.reports.are_you_sure') } |
||||||
|
.batch-table__body |
||||||
|
- if @accounts.empty? |
||||||
|
= nothing_here 'nothing-here--under-tabs' |
||||||
|
- else |
||||||
|
= render partial: 'account', collection: @accounts, locals: { f: f } |
||||||
|
|
||||||
|
= paginate @accounts |
||||||
|
|
||||||
|
%hr.spacer/ |
||||||
|
|
||||||
|
%div{ style: 'overflow: hidden' } |
||||||
|
%div{ style: 'float: right' } |
||||||
|
= link_to t('admin.accounts.reject_all'), reject_all_admin_pending_accounts_path, method: :post, data: { confirm: t('admin.accounts.are_you_sure') }, class: 'button button--destructive' |
||||||
|
|
||||||
|
%div |
||||||
|
= link_to t('admin.accounts.approve_all'), approve_all_admin_pending_accounts_path, method: :post, data: { confirm: t('admin.accounts.are_you_sure') }, class: 'button' |
Loading…
Reference in new issue