commit: 9d9f796130407c6dc68118949537235faf25fcb9
parent: d236dcded20b1a561b1f396fbb423811f27c77e5
Author: Eugen Rochko <eugen@zeonfederated.com>
Date: Sun, 4 Dec 2016 18:10:40 +0100
Adding more to admin accounts UI
Diffstat:
5 files changed, 109 insertions(+), 4 deletions(-)
diff --git 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
@@ -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; end
+
+ def update
+ if @account.update(account_params)
+ redirect_to admin_accounts_path
+ else
+ render :show
+ end
end
- def show
+ 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
@@ -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
@@ -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
@@ -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