@ -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' |