diff --git a/app/assets/stylesheets/tables.scss b/app/assets/stylesheets/tables.scss index 89b35891d..b28b91191 100644 --- a/app/assets/stylesheets/tables.scss +++ b/app/assets/stylesheets/tables.scss @@ -3,6 +3,7 @@ max-width: 100%; border-spacing: 0; border-collapse: collapse; + margin-bottom: 20px; th, td { padding: 8px; @@ -18,8 +19,39 @@ border-top: 0; font-weight: 500; } + + & > tbody > tr > th { + font-weight: 500; + } + + a { + color: #2b90d9; + text-decoration: underline; + + &:hover { + text-decoration: none; + } + } } samp { font-family: 'Roboto Mono', monospace; } + +.filters { + list-style: none; + margin-bottom: 20px; + + li { + display: inline-block; + } + + a { + color: #2b90d9; + text-decoration: underline; + + &:hover { + text-decoration: none; + } + } +} diff --git a/app/controllers/admin/accounts_controller.rb b/app/controllers/admin/accounts_controller.rb index 92ebffc87..79fb37eb9 100644 --- a/app/controllers/admin/accounts_controller.rb +++ b/app/controllers/admin/accounts_controller.rb @@ -2,14 +2,37 @@ class Admin::AccountsController < ApplicationController before_action :require_admin! + before_action :set_account, except: :index layout 'public' def index @accounts = Account.order('domain ASC, username ASC').paginate(page: params[:page], per_page: 40) + + @accounts = @accounts.local if params[:local].present? + @accounts = @accounts.remote if params[:remote].present? + @accounts = @accounts.where(domain: params[:by_domain]) if params[:by_domain].present? + @accounts = @accounts.where(silenced: true) if params[:silenced].present? + @accounts = @accounts.reorder('id desc') if params[:recent].present? end - def show + def show; end + + def update + if @account.update(account_params) + redirect_to admin_accounts_path + else + render :show + end + end + + private + + def set_account @account = Account.find(params[:id]) end + + def account_params + params.require(:account).permit(:silenced) + end end diff --git a/app/views/admin/accounts/index.html.haml b/app/views/admin/accounts/index.html.haml index 32474c2a4..a074f0ad9 100644 --- a/app/views/admin/accounts/index.html.haml +++ b/app/views/admin/accounts/index.html.haml @@ -1,20 +1,36 @@ +%ul.filters + %li= link_to 'Local', admin_accounts_path(local: '1') + %li= link_to 'Remote', admin_accounts_path(remote: '1') + %li= link_to 'Silenced', admin_accounts_path(silenced: '1') + %li= link_to 'Most recent', admin_accounts_path(recent: '1') + %table.table %thead %tr %th Username %th Domain %th Subscribed + %th Silenced + %th %tbody - @accounts.each do |account| %tr %td= account.username - %td= account.domain - %th + %td + - unless account.local? + = link_to account.domain, admin_accounts_path(by_domain: account.domain) + %td - if account.local? Local - elsif account.subscribed? %i.fa.fa-check - else %i.fa.fa-times + %td + - if account.silenced? + %i.fa.fa-check + - else + %i.fa.fa-times + %td= link_to 'Edit', admin_account_path(account.id) = will_paginate @accounts, pagination_options diff --git a/app/views/admin/accounts/show.html.haml b/app/views/admin/accounts/show.html.haml index e69de29bb..02f7dcfe9 100644 --- a/app/views/admin/accounts/show.html.haml +++ b/app/views/admin/accounts/show.html.haml @@ -0,0 +1,34 @@ +%table.table + %tbody + %tr + %th Username + %td= @account.username + %tr + %th Domain + %td= @account.domain + %tr + %th Display name + %td= @account.display_name + + - if @account.local? + %tr + %th E-mail + %td= @account.user.email + %tr + %th Current IP + %td= @account.user.current_sign_in_ip + - else + %tr + %th Profile URL + %td= link_to @account.url + %tr + %th Feed URL + %td= link_to @account.remote_url + += simple_form_for @account, url: admin_account_path(@account.id) do |f| + = render 'shared/error_messages', object: @account + + = f.input :silenced, as: :boolean, wrapper: :with_label + + .actions + = f.button :button, t('generic.save_changes'), type: :submit diff --git a/config/routes.rb b/config/routes.rb index 35e5c269a..ac53bbed6 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -46,7 +46,7 @@ Rails.application.routes.draw do namespace :admin do resources :pubsubhubbub, only: [:index] - resources :accounts, only: [:index, :show] + resources :accounts, only: [:index, :show, :update] end namespace :api do