mirror of
https://github.com/pixelfed/pixelfed.git
synced 2024-11-26 08:13:16 +00:00
Update admin user views
This commit is contained in:
parent
810dc2190f
commit
fa97073478
8 changed files with 817 additions and 220 deletions
84
resources/views/admin/users/activity.blade.php
Normal file
84
resources/views/admin/users/activity.blade.php
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
@extends('admin.partial.template-full')
|
||||||
|
|
||||||
|
@section('section')
|
||||||
|
<div class="title d-flex justify-content-between align-items-center">
|
||||||
|
<span><a href="/i/admin/users/show/{{$user->id}}" class="btn btn-outline-secondary btn-sm font-weight-bold">Back</a></span>
|
||||||
|
<span class="text-center">
|
||||||
|
<h3 class="font-weight-bold mb-0">@{{$profile->username}}</h3>
|
||||||
|
<p class="mb-0 small text-muted text-uppercase font-weight-bold">
|
||||||
|
<span>{{$profile->statuses()->count()}} Posts</span>
|
||||||
|
<span class="px-1">|</span>
|
||||||
|
<span>{{$profile->followers()->count()}} Followers</span>
|
||||||
|
<span class="px-1">|</span>
|
||||||
|
<span>{{$profile->following()->count()}} Following</span>
|
||||||
|
</p>
|
||||||
|
</span>
|
||||||
|
<span>
|
||||||
|
<div class="dropdown">
|
||||||
|
<button class="btn btn-outline-secondary btn-sm font-weight-bold dropdown-toggle" type="button" id="userActions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="fas fa-bars"></i></button>
|
||||||
|
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="userActions">
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/show/{{$user->id}}">
|
||||||
|
<span class="font-weight-bold">Overview</span>
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/message/{{$user->id}}">
|
||||||
|
<span class="font-weight-bold">Send Message</span>
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-item" href="{{$profile->url()}}">
|
||||||
|
<span class="font-weight-bold">View Profile</span>
|
||||||
|
</a>
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/edit/{{$user->id}}">
|
||||||
|
<span class="font-weight-bold">Edit</span>
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/modtools/{{$user->id}}">
|
||||||
|
<span class="font-weight-bold">Mod Tools</span>
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/modlogs/{{$user->id}}">
|
||||||
|
<span class="font-weight-bold">Mod Logs</span>
|
||||||
|
</a>
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/delete/{{$user->id}}">
|
||||||
|
<span class="text-danger font-weight-bold">Delete Account</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-12 col-md-8 offset-md-2">
|
||||||
|
<p class="title h4 font-weight-bold mt-2 py-2">Recent Activity</p>
|
||||||
|
<hr>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12">
|
||||||
|
@if($logs->count() > 0)
|
||||||
|
<div class="list-group">
|
||||||
|
@foreach($logs as $log)
|
||||||
|
<div class="list-group-item d-flex justify-content-between align-items-center">
|
||||||
|
<div>
|
||||||
|
<p class="small text-muted font-weight-bold mb-0">{{$log->created_at->diffForHumans()}}</p>
|
||||||
|
<p class="lead mb-0">{{$log->message}}</p>
|
||||||
|
<p class="small text-muted font-weight-bold mb-0">
|
||||||
|
IP: {{$log->ip_address}}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<i class="fas fa-chevron-right fa-lg text-lighter"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
|
</div>
|
||||||
|
<div class="d-flex justify-content-center mt-3">
|
||||||
|
{{$logs->links()}}
|
||||||
|
</div>
|
||||||
|
@else
|
||||||
|
<div class="card card-body border shadow-none text-center">
|
||||||
|
No Activity found
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endsection
|
60
resources/views/admin/users/delete.blade.php
Normal file
60
resources/views/admin/users/delete.blade.php
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
@extends('admin.partial.template-full')
|
||||||
|
|
||||||
|
@section('section')
|
||||||
|
<div class="title d-flex justify-content-between align-items-center">
|
||||||
|
<span><a href="/i/admin/users/show/{{$user->id}}" class="btn btn-outline-secondary btn-sm font-weight-bold">Back</a></span>
|
||||||
|
<span class="text-center">
|
||||||
|
<h3 class="font-weight-bold mb-0">@{{$profile->username}}</h3>
|
||||||
|
<p class="mb-0 small text-muted text-uppercase font-weight-bold">
|
||||||
|
<span>{{$profile->statuses()->count()}} Posts</span>
|
||||||
|
<span class="px-1">|</span>
|
||||||
|
<span>{{$profile->followers()->count()}} Followers</span>
|
||||||
|
<span class="px-1">|</span>
|
||||||
|
<span>{{$profile->following()->count()}} Following</span>
|
||||||
|
</p>
|
||||||
|
</span>
|
||||||
|
<span>
|
||||||
|
<div class="dropdown">
|
||||||
|
<button class="btn btn-outline-secondary btn-sm font-weight-bold dropdown-toggle" type="button" id="userActions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="fas fa-bars"></i></button>
|
||||||
|
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="userActions">
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/show/{{$user->id}}">
|
||||||
|
<span class="font-weight-bold">Overview</span>
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/activity/{{$user->id}}">
|
||||||
|
<span class="font-weight-bold">Activity</span>
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/message/{{$user->id}}">
|
||||||
|
<span class="font-weight-bold">Send Message</span>
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-item" href="{{$profile->url()}}">
|
||||||
|
<span class="font-weight-bold">View Profile</span>
|
||||||
|
</a>
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/edit/{{$user->id}}">
|
||||||
|
<span class="font-weight-bold">Edit</span>
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/modtools/{{$user->id}}">
|
||||||
|
<span class="font-weight-bold">Mod Tools</span>
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/modlogs/{{$user->id}}">
|
||||||
|
<span class="font-weight-bold">Mod Logs</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12 col-md-8 offset-md-2">
|
||||||
|
<div class="card card-body">
|
||||||
|
<p class="lead text-center py-5">Are you sure you want to delete this account?</p>
|
||||||
|
<p class="mb-0">
|
||||||
|
<form method="post">
|
||||||
|
@csrf
|
||||||
|
<button type="submit" class="btn btn-danger btn-block font-weight-bold">DELETE ACCOUNT</button>
|
||||||
|
</form>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endsection
|
|
@ -1,101 +1,100 @@
|
||||||
@extends('admin.partial.template')
|
@extends('admin.partial.template-full')
|
||||||
|
|
||||||
@section('section')
|
@section('section')
|
||||||
<div class="title d-flex justify-content-between">
|
<div class="title d-flex justify-content-between align-items-center">
|
||||||
<h3 class="font-weight-bold">Edit User</h3>
|
<span><a href="/i/admin/users/show/{{$user->id}}" class="btn btn-outline-secondary btn-sm font-weight-bold">Back</a></span>
|
||||||
<span><a href="{{route('admin.users')}}" class="btn btn-outline-primary btn-sm font-weight-bold">Back</a></span>
|
<span class="text-center">
|
||||||
</div>
|
<h3 class="font-weight-bold mb-0">@{{$profile->username}}</h3>
|
||||||
<hr>
|
<p class="mb-0 small text-muted text-uppercase font-weight-bold">
|
||||||
|
<span>{{$profile->statuses()->count()}} Posts</span>
|
||||||
|
<span class="px-1">|</span>
|
||||||
|
<span>{{$profile->followers()->count()}} Followers</span>
|
||||||
|
<span class="px-1">|</span>
|
||||||
|
<span>{{$profile->following()->count()}} Following</span>
|
||||||
|
</p>
|
||||||
|
</span>
|
||||||
|
<span>
|
||||||
|
<div class="dropdown">
|
||||||
|
<button class="btn btn-outline-secondary btn-sm font-weight-bold dropdown-toggle" type="button" id="userActions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="fas fa-bars"></i></button>
|
||||||
|
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="userActions">
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/show/{{$user->id}}">
|
||||||
|
<span class="font-weight-bold">Overview</span>
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/activity/{{$user->id}}">
|
||||||
|
<span class="font-weight-bold">Activity</span>
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/message/{{$user->id}}">
|
||||||
|
<span class="font-weight-bold">Send Message</span>
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-item" href="{{$profile->url()}}">
|
||||||
|
<span class="font-weight-bold">View Profile</span>
|
||||||
|
</a>
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/modtools/{{$user->id}}">
|
||||||
|
<span class="font-weight-bold">Mod Tools</span>
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/modlogs/{{$user->id}}">
|
||||||
|
<span class="font-weight-bold">Mod Logs</span>
|
||||||
|
</a>
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/delete/{{$user->id}}">
|
||||||
|
<span class="text-danger font-weight-bold">Delete Account</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
|
||||||
<div class="row mb-3">
|
<div class="col-12 col-md-8 offset-md-2">
|
||||||
<div class="col-12 col-md-3">
|
<p class="title h4 font-weight-bold mt-2 py-2">Edit</p>
|
||||||
<div class="card">
|
<hr>
|
||||||
<div class="card-body text-center">
|
<div class="row">
|
||||||
<p class="h4 mb-0 font-weight-bold">{{$profile->statusCount()}}</p>
|
<div class="col-12">
|
||||||
<p class="text-muted font-weight-bold small mb-0">Posts</p>
|
<form method="post">
|
||||||
</div>
|
@csrf
|
||||||
</div>
|
<div class="form-group">
|
||||||
</div>
|
<label class="font-weight-bold text-muted">Display Name</label>
|
||||||
<div class="col-12 col-md-3">
|
<input type="text" class="form-control" name="name" value="{{$user->name}}">
|
||||||
<div class="card">
|
</div>
|
||||||
<div class="card-body text-center">
|
<div class="form-group">
|
||||||
<p class="h4 mb-0 font-weight-bold">{{$profile->likes()->count()}}</p>
|
<label class="font-weight-bold text-muted">Username</label>
|
||||||
<p class="text-muted font-weight-bold small mb-0">Likes</p>
|
<input type="text" class="form-control" name="username" value="{{$user->username}}">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="form-group">
|
||||||
</div>
|
<label class="font-weight-bold text-muted">Email address</label>
|
||||||
<div class="col-12 col-md-3">
|
<input type="email" class="form-control" name="email" value="{{$user->email}}" placeholder="Enter email">
|
||||||
<div class="card">
|
<p class="help-text small text-muted font-weight-bold">
|
||||||
<div class="card-body text-center">
|
@if($user->email_verified_at)
|
||||||
<p class="h4 mb-0 font-weight-bold">{{$profile->reports()->count()}}</p>
|
<span class="text-success">Verified</span> for {{$user->email_verified_at->diffForHumans()}}
|
||||||
<p class="text-muted font-weight-bold small mb-0">Reports</p>
|
@else
|
||||||
</div>
|
<span class="text-danger">Unverified</span> email.
|
||||||
</div>
|
@endif
|
||||||
</div>
|
</p>
|
||||||
<div class="col-12 col-md-3">
|
</div>
|
||||||
<div class="card">
|
<div class="form-group">
|
||||||
<div class="card-body text-center">
|
<label class="font-weight-bold text-muted">Bio</label>
|
||||||
<p class="h4 mb-0 font-weight-bold">{{PrettyNumber::size($profile->media()->sum('size'))}}</p>
|
<textarea class="form-control" rows="4" name="bio" placeholder="Empty bio">{{$profile->bio}}</textarea>
|
||||||
<p class="text-muted font-weight-bold small mb-0">Storage Used</p>
|
</div>
|
||||||
</div>
|
<div class="form-group">
|
||||||
</div>
|
<label class="font-weight-bold text-muted">Website</label>
|
||||||
</div>
|
<input type="text" class="form-control" name="website" value="{{$user->website}}" placeholder="No website added">
|
||||||
</div>
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label class="font-weight-bold text-muted">Admin</label>
|
||||||
|
<div class="custom-control custom-switch">
|
||||||
|
<input type="checkbox" class="custom-control-input" id="customSwitch1" {{$user->is_admin ? 'checked="checked"' : ''}}>
|
||||||
|
<label class="custom-control-label" for="customSwitch1"></label>
|
||||||
|
</div>
|
||||||
|
<p class="help-text small text-muted font-weight-bold">For security reasons, you cannot change admin status on this form. Use the CLI instead.</p>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<p class="float-right">
|
||||||
|
<button type="submit" class="btn btn-primary font-weight-bold py-1">SAVE</button>
|
||||||
|
</p>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="row mb-2">
|
|
||||||
<div class="col-12 col-md-4">
|
|
||||||
<div class="card">
|
|
||||||
<div class="card-body text-center">
|
|
||||||
<img src="{{$profile->avatarUrl()}}" class="img-thumbnail rounded-circle" width="128px" height="128px">
|
|
||||||
</div>
|
|
||||||
<div class="card-footer bg-white">
|
|
||||||
<p class="font-weight-bold mb-0 small">Last updated: {{$profile->avatar->updated_at->diffForHumans()}}</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="col-12 col-md-8">
|
|
||||||
<div class="card">
|
|
||||||
<div class="card-body p-5 d-flex justify-content-center align-items-center">
|
|
||||||
<div class="text-center py-3">
|
|
||||||
<p class="font-weight-bold mb-0">
|
|
||||||
{{$profile->username}}
|
|
||||||
</p>
|
|
||||||
<p class="h3 font-weight-bold">
|
|
||||||
{{$profile->emailUrl()}}
|
|
||||||
</p>
|
|
||||||
<p class="font-weight-bold mb-0 text-muted">
|
|
||||||
Member Since: {{$profile->created_at->format('M Y')}}
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<hr>
|
|
||||||
<div class="mx-3">
|
|
||||||
<div class="sub-title h4 font-weight-bold mb-4">
|
|
||||||
Account Settings
|
|
||||||
</div>
|
|
||||||
<form>
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="font-weight-bold text-muted">Display Name</label>
|
|
||||||
<input type="text" class="form-control" value="{{$user->name}}">
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="font-weight-bold text-muted">Username</label>
|
|
||||||
<input type="text" class="form-control" value="{{$user->username}}">
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label class="font-weight-bold text-muted">Email address</label>
|
|
||||||
<input type="email" class="form-control" value="{{$user->email}}" placeholder="Enter email">
|
|
||||||
<p class="help-text small text-muted font-weight-bold">
|
|
||||||
@if($user->email_verified_at)
|
|
||||||
<span class="text-success">Verified</span> for {{$user->email_verified_at->diffForHumans()}}
|
|
||||||
@else
|
|
||||||
<span class="text-danger">Unverified</span> email.
|
|
||||||
@endif
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
@endsection
|
@endsection
|
|
@ -2,141 +2,112 @@
|
||||||
|
|
||||||
@section('header')
|
@section('header')
|
||||||
<div class="bg-primary">
|
<div class="bg-primary">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="my-5"></div>
|
<div class="my-5">test</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@endsection
|
@endsection
|
||||||
|
|
||||||
@section('section')
|
@section('section')
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<h3 class="font-weight-bold">Users</h3>
|
<h3 class="font-weight-bold">Users</h3>
|
||||||
</div>
|
</div>
|
||||||
<hr>
|
<hr>
|
||||||
<div class="table-responsive">
|
<div class="table-responsive">
|
||||||
<table class="table">
|
<table class="table">
|
||||||
<thead class="bg-light">
|
<thead class="bg-light">
|
||||||
<tr class="text-center">
|
<tr class="text-center">
|
||||||
<th scope="col" class="border-0" width="10%">
|
<th scope="col" class="border-0" width="10%">
|
||||||
<span>ID</span>
|
<span>ID</span>
|
||||||
</th>
|
</th>
|
||||||
<th scope="col" class="border-0" width="30%">
|
<th scope="col" class="border-0" width="30%">
|
||||||
<span>Username</span>
|
<span>Username</span>
|
||||||
</th>
|
</th>
|
||||||
<th scope="col" class="border-0" width="15%">
|
<th scope="col" class="border-0" width="30%">
|
||||||
<span>Statuses</span>
|
<span>Actions</span>
|
||||||
</th>
|
</th>
|
||||||
<th scope="col" class="border-0" width="15%">
|
</tr>
|
||||||
<span>Storage</span>
|
</thead>
|
||||||
</th>
|
<tbody>
|
||||||
<th scope="col" class="border-0" width="30%">
|
@foreach($users as $user)
|
||||||
<span>Actions</span>
|
@if($user->status == 'deleted')
|
||||||
</th>
|
<tr class="font-weight-bold text-center user-row">
|
||||||
</tr>
|
<th scope="row">
|
||||||
</thead>
|
<span class="text-danger" class="text-monospace">{{$user->id}}</span>
|
||||||
<tbody>
|
</th>
|
||||||
@foreach($users as $user)
|
<td class="text-left">
|
||||||
<tr class="font-weight-bold text-center user-row">
|
<img src="/storage/avatars/default.png?v=3" width="28px" class="rounded-circle mr-2" style="border:1px solid #ccc">
|
||||||
<th scope="row">
|
<span title="{{$user->username}}" data-toggle="tooltip" data-placement="bottom">
|
||||||
<span class="{{$user->status == 'deleted' ? 'text-danger':''}}">{{$user->id}}</span>
|
<span class="text-danger">{{$user->username}}</span>
|
||||||
</th>
|
</span>
|
||||||
<td class="text-left">
|
</td>
|
||||||
<img src="{{$user->profile ? $user->profile->avatarUrl() : '/storage/avatars/default.png?v=1'}}" width="28px" class="rounded-circle mr-2" style="border:1px solid #ccc">
|
<td>
|
||||||
<span title="{{$user->username}}" data-toggle="tooltip" data-placement="bottom">
|
<span class="font-weight-bold small">
|
||||||
<span class="{{$user->status == 'deleted' ? 'text-danger':''}}">{{$user->username}}</span>
|
<span class="text-danger">Account Deleted</span>
|
||||||
@if($user->is_admin)
|
</span>
|
||||||
<i class="text-danger fas fa-certificate" title="Admin"></i>
|
</td>
|
||||||
@endif
|
</tr>
|
||||||
</span>
|
@else
|
||||||
</td>
|
<tr class="font-weight-bold text-center user-row">
|
||||||
<td>
|
<th scope="row">
|
||||||
<span class="{{$user->status == 'deleted' ? 'text-danger':''}}">{{$user->profile ? $user->profile->statusCount() : 0}}</span>
|
<span class="text-monospace">{{$user->id}}</span>
|
||||||
</td>
|
</th>
|
||||||
<td>
|
<td class="text-left">
|
||||||
<span class="{{$user->status == 'deleted' ? 'text-danger':''}}"><p class="human-size mb-0" data-bytes="{{App\Media::whereUserId($user->id)->sum('size')}}"></p></span>
|
<img src="{{$user->profile->avatarUrl()}}" width="28px" class="rounded-circle mr-2" style="border:1px solid #ccc">
|
||||||
</td>
|
<span title="{{$user->username}}" data-toggle="tooltip" data-placement="bottom">
|
||||||
<td>
|
<span>{{$user->username}}</span>
|
||||||
<span class="action-row font-weight-lighter">
|
@if($user->is_admin)
|
||||||
<a href="{{$user->url()}}" class="pr-2 text-muted small font-weight-bold" title="View Profile" data-toggle="tooltip" data-placement="bottom">
|
<i class="text-danger fas fa-certificate" title="Admin"></i>
|
||||||
View
|
@endif
|
||||||
</a>
|
</span>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<span class="action-row font-weight-lighter">
|
||||||
|
<a href="{{$user->url()}}" class="pr-2 text-muted small font-weight-bold" title="View Profile" data-toggle="tooltip" data-placement="bottom">
|
||||||
|
Profile
|
||||||
|
</a>
|
||||||
|
|
||||||
<a href="/i/admin/users/edit/{{$user->id}}" class="pr-2 text-muted small font-weight-bold" title="Edit Profile" data-toggle="tooltip" data-placement="bottom">
|
<a href="/i/admin/users/show/{{$user->id}}" class="pr-2 text-muted small font-weight-bold" title="Profile Review" data-toggle="tooltip" data-placement="bottom">
|
||||||
Edit
|
Review
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a href="#" class="text-muted action-btn small font-weight-bold" title="Delete Profile" data-toggle="tooltip" data-placement="bottom" data-id="{{$user->id}}" data-action="delete">
|
<a href="/i/admin/users/modlogs/{{$user->id}}" class="pr-2 text-muted small font-weight-bold" title="Moderation Logs" data-toggle="tooltip" data-placement="bottom">
|
||||||
Delete
|
Mod Logs
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@endforeach
|
@endif
|
||||||
</tbody>
|
@endforeach
|
||||||
</table>
|
</tbody>
|
||||||
</div>
|
</table>
|
||||||
<div class="d-flex justify-content-center mt-5 small">
|
</div>
|
||||||
{{$users->links()}}
|
<div class="d-flex justify-content-center mt-5 small">
|
||||||
</div>
|
{{$users->links()}}
|
||||||
|
</div>
|
||||||
@endsection
|
@endsection
|
||||||
|
|
||||||
@push('styles')
|
@push('styles')
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
.jqstooltip {
|
.user-row:hover {
|
||||||
-webkit-box-sizing: content-box;
|
background-color: #eff8ff;
|
||||||
-moz-box-sizing: content-box;
|
}
|
||||||
box-sizing: content-box;
|
.user-row:hover .action-row {
|
||||||
border: 0 !important;
|
display: block;
|
||||||
border-radius: 2px;
|
}
|
||||||
max-width: 20px;
|
.user-row:hover .last-active {
|
||||||
}
|
display: none;
|
||||||
|
}
|
||||||
.user-row .action-row {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.user-row:hover {
|
|
||||||
background-color: #eff8ff;
|
|
||||||
}
|
|
||||||
.user-row:hover .action-row {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
.user-row:hover .last-active {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
@endpush
|
@endpush
|
||||||
@push('scripts')
|
@push('scripts')
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
|
$('.human-size').each(function(d,a) {
|
||||||
$('.human-size').each(function(d,a) {
|
let el = $(a);
|
||||||
let el = $(a);
|
let size = el.data('bytes');
|
||||||
let size = el.data('bytes');
|
el.text(filesize(size, {round: 0}));
|
||||||
el.text(filesize(size, {round: 0}));
|
});
|
||||||
});
|
});
|
||||||
|
</script>
|
||||||
$(document).on('click', '.action-btn', function(e) {
|
|
||||||
e.preventDefault();
|
|
||||||
|
|
||||||
let el = $(this);
|
|
||||||
let id = el.data('id');
|
|
||||||
let action = el.data('action');
|
|
||||||
|
|
||||||
switch(action) {
|
|
||||||
case 'view':
|
|
||||||
window.location.href = el.data('url');
|
|
||||||
break;
|
|
||||||
case 'edit':
|
|
||||||
let redirect = '/i/admin/users/edit/' + id;
|
|
||||||
window.location.href = redirect;
|
|
||||||
break;
|
|
||||||
case 'delete':
|
|
||||||
swal('Error', 'Sorry this action is not yet available', 'error');
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
@endpush
|
@endpush
|
||||||
|
|
112
resources/views/admin/users/message.blade.php
Normal file
112
resources/views/admin/users/message.blade.php
Normal file
|
@ -0,0 +1,112 @@
|
||||||
|
@extends('admin.partial.template-full')
|
||||||
|
|
||||||
|
@section('section')
|
||||||
|
<div class="title d-flex justify-content-between align-items-center">
|
||||||
|
<span><a href="/i/admin/users/show/{{$user->id}}" class="btn btn-outline-secondary btn-sm font-weight-bold">Back</a></span>
|
||||||
|
<span class="text-center">
|
||||||
|
<h3 class="font-weight-bold mb-0">@{{$profile->username}}</h3>
|
||||||
|
<p class="mb-0 small text-muted text-uppercase font-weight-bold">
|
||||||
|
<span>{{$profile->statuses()->count()}} Posts</span>
|
||||||
|
<span class="px-1">|</span>
|
||||||
|
<span>{{$profile->followers()->count()}} Followers</span>
|
||||||
|
<span class="px-1">|</span>
|
||||||
|
<span>{{$profile->following()->count()}} Following</span>
|
||||||
|
</p>
|
||||||
|
</span>
|
||||||
|
<span>
|
||||||
|
<div class="dropdown">
|
||||||
|
<button class="btn btn-outline-secondary btn-sm font-weight-bold dropdown-toggle" type="button" id="userActions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="fas fa-bars"></i></button>
|
||||||
|
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="userActions">
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/show/{{$user->id}}">
|
||||||
|
<span class="font-weight-bold">Overview</span>
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-item" href="{{$profile->url()}}">
|
||||||
|
<span class="font-weight-bold">View Profile</span>
|
||||||
|
</a>
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/edit/{{$user->id}}">
|
||||||
|
<span class="font-weight-bold">Edit</span>
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/modtools/{{$user->id}}">
|
||||||
|
<span class="font-weight-bold">Mod Tools</span>
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/modlogs/{{$user->id}}">
|
||||||
|
<span class="font-weight-bold">Mod Logs</span>
|
||||||
|
</a>
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/delete/{{$user->id}}">
|
||||||
|
<span class="text-danger font-weight-bold">Delete Account</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-12 col-md-8 offset-md-2">
|
||||||
|
<p class="title h4 font-weight-bold mt-2 py-2">Send Message</p>
|
||||||
|
<hr>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12">
|
||||||
|
@if ($errors->any())
|
||||||
|
<div class="alert alert-danger">
|
||||||
|
<ul>
|
||||||
|
@foreach ($errors->all() as $error)
|
||||||
|
<li>{{ $error }}</li>
|
||||||
|
@endforeach
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
<form method="post" id="messageForm">
|
||||||
|
@csrf
|
||||||
|
<div class="form-group">
|
||||||
|
<textarea class="form-control" rows="8" placeholder="Message body ..." id="message" name="message"></textarea>
|
||||||
|
<p class="help-text mb-0 small text-muted">
|
||||||
|
<span>Plain text only, html will not be rendered.</span>
|
||||||
|
<span class="float-right msg-counter"><span class="msg-count">0</span>/500</span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<p class="float-right">
|
||||||
|
<button type="button" class="btn btn-primary py-1 font-weight-bold" onclick="submitWarning()"><i class="fas fa-message"></i> SEND</button>
|
||||||
|
</p>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@push('scripts')
|
||||||
|
<script type="text/javascript">
|
||||||
|
$('#message').on('keyup change paste submit', function(e) {
|
||||||
|
let len = e.target.value.length;
|
||||||
|
$('.msg-count').text(len);
|
||||||
|
});
|
||||||
|
function submitWarning() {
|
||||||
|
let msg = document.querySelector('#message');
|
||||||
|
if(msg.value.length < 5) {
|
||||||
|
swal('Oops!', 'Your message must be longer than 5 characters.', 'error');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(msg.value.length > 500) {
|
||||||
|
swal('Oops!', 'Your message must be shorter than 500 characters.', 'error');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
swal({
|
||||||
|
title: "Are you sure?",
|
||||||
|
text: "Are you sure you want to send this message to {{$user->username}}?",
|
||||||
|
icon: "warning",
|
||||||
|
buttons: true,
|
||||||
|
dangerMode: true,
|
||||||
|
})
|
||||||
|
.then((sendMessage) => {
|
||||||
|
if (sendMessage) {
|
||||||
|
$('#messageForm').submit();
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
@endpush
|
143
resources/views/admin/users/modlogs.blade.php
Normal file
143
resources/views/admin/users/modlogs.blade.php
Normal file
|
@ -0,0 +1,143 @@
|
||||||
|
@extends('admin.partial.template-full')
|
||||||
|
|
||||||
|
@section('section')
|
||||||
|
<div class="title d-flex justify-content-between align-items-center">
|
||||||
|
<span><a href="/i/admin/users/show/{{$user->id}}" class="btn btn-outline-secondary btn-sm font-weight-bold">Back</a></span>
|
||||||
|
<span class="text-center">
|
||||||
|
<h3 class="font-weight-bold mb-0">@{{$profile->username}}</h3>
|
||||||
|
<p class="mb-0 small text-muted text-uppercase font-weight-bold">
|
||||||
|
<span>{{$profile->statuses()->count()}} Posts</span>
|
||||||
|
<span class="px-1">|</span>
|
||||||
|
<span>{{$profile->followers()->count()}} Followers</span>
|
||||||
|
<span class="px-1">|</span>
|
||||||
|
<span>{{$profile->following()->count()}} Following</span>
|
||||||
|
</p>
|
||||||
|
</span>
|
||||||
|
<span>
|
||||||
|
<div class="dropdown">
|
||||||
|
<button class="btn btn-outline-secondary btn-sm font-weight-bold dropdown-toggle" type="button" id="userActions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="fas fa-bars"></i></button>
|
||||||
|
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="userActions">
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/show/{{$user->id}}">
|
||||||
|
<span class="font-weight-bold">Overview</span>
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/activity/{{$user->id}}">
|
||||||
|
<span class="font-weight-bold">Activity</span>
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/message/{{$user->id}}">
|
||||||
|
<span class="font-weight-bold">Send Message</span>
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-item" href="{{$profile->url()}}">
|
||||||
|
<span class="font-weight-bold">View Profile</span>
|
||||||
|
</a>
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/edit/{{$user->id}}">
|
||||||
|
<span class="font-weight-bold">Edit</span>
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/modtools/{{$user->id}}">
|
||||||
|
<span class="font-weight-bold">Mod Tools</span>
|
||||||
|
</a>
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/delete/{{$user->id}}">
|
||||||
|
<span class="text-danger font-weight-bold">Delete Account</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-12 col-md-8 offset-md-2">
|
||||||
|
<p class="title h4 font-weight-bold mt-2 py-2">Moderation Logs</p>
|
||||||
|
<hr>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12">
|
||||||
|
<div class="card card-body shadow-none border mb-3">
|
||||||
|
<form method="post">
|
||||||
|
@csrf
|
||||||
|
<div class="form-group">
|
||||||
|
<textarea class="form-control" name="message" id="message" rows="4" style="resize: none;" placeholder="Send a message to other admins and mods, they will be notified"></textarea>
|
||||||
|
@if ($errors->any())
|
||||||
|
@foreach ($errors->all() as $error)
|
||||||
|
<p class="invalid-feedback mb-0" style="display:block;">
|
||||||
|
<strong>{{ $error }}</strong>
|
||||||
|
</p>
|
||||||
|
@endforeach
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span class="small text-muted font-weight-bold">
|
||||||
|
<span class="msg-count">0</span>/500
|
||||||
|
</span>
|
||||||
|
<span class="float-right">
|
||||||
|
<button class="btn btn-primary btn-sm py-1 font-weight-bold">SEND</button>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
@if($logs->count() > 0)
|
||||||
|
<div class="list-group">
|
||||||
|
@foreach($logs as $log)
|
||||||
|
<div class="list-group-item d-flex justify-content-between align-items-center">
|
||||||
|
@if($log->message != null)
|
||||||
|
<div class="d-flex justify-content-between">
|
||||||
|
<div class="mr-3">
|
||||||
|
<img src="{{$log->admin->profile->avatarUrl()}}" width="40px" height="40px" class="border p-1 rounded-circle">
|
||||||
|
</div>
|
||||||
|
<div style="min-width: 400px;">
|
||||||
|
@if($log->user_id != Auth::id())
|
||||||
|
<div class="p-3 bg-primary rounded">
|
||||||
|
<p class="mb-0 text-white" style="font-weight: 500;">{{$log->message}}</p>
|
||||||
|
</div>
|
||||||
|
@else
|
||||||
|
<div class="p-3 bg-light rounded">
|
||||||
|
<p class="mb-0 text-dark" style="font-weight: 500;">{{$log->message}}</p>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
<div class="d-flex justify-content-between small text-muted font-weight-bold mb-0">
|
||||||
|
<span class="mr-4">
|
||||||
|
@{{$log->user_username}}
|
||||||
|
</span>
|
||||||
|
<span>
|
||||||
|
{{$log->created_at->diffForHumans()}}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@else
|
||||||
|
<div>
|
||||||
|
<p class="small text-muted font-weight-bold mb-0">{{$log->created_at->diffForHumans()}}</p>
|
||||||
|
<p class="lead mb-0">{{$log->actionToText()}}</p>
|
||||||
|
<p class="small text-muted font-weight-bold mb-0">
|
||||||
|
by: {{$log->user_username}}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<i class="fas fa-chevron-right fa-lg text-lighter"></i>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
|
</div>
|
||||||
|
<div class="d-flex justify-content-center mt-3">
|
||||||
|
{{$logs->links()}}
|
||||||
|
</div>
|
||||||
|
@else
|
||||||
|
<div class="card card-body border shadow-none text-center">
|
||||||
|
No Activity found
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@push('scripts')
|
||||||
|
<script type="text/javascript">
|
||||||
|
$('#message').on('keyup change paste submit', function(e) {
|
||||||
|
let len = e.target.value.length;
|
||||||
|
$('.msg-count').text(len);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
@endpush
|
107
resources/views/admin/users/modtools.blade.php
Normal file
107
resources/views/admin/users/modtools.blade.php
Normal file
|
@ -0,0 +1,107 @@
|
||||||
|
@extends('admin.partial.template-full')
|
||||||
|
|
||||||
|
@section('section')
|
||||||
|
<div class="title d-flex justify-content-between align-items-center">
|
||||||
|
<span><a href="/i/admin/users/show/{{$user->id}}" class="btn btn-outline-secondary btn-sm font-weight-bold">Back</a></span>
|
||||||
|
<span class="text-center">
|
||||||
|
<h3 class="font-weight-bold mb-0">@{{$profile->username}}</h3>
|
||||||
|
<p class="mb-0 small text-muted text-uppercase font-weight-bold">
|
||||||
|
<span>{{$profile->statuses()->count()}} Posts</span>
|
||||||
|
<span class="px-1">|</span>
|
||||||
|
<span>{{$profile->followers()->count()}} Followers</span>
|
||||||
|
<span class="px-1">|</span>
|
||||||
|
<span>{{$profile->following()->count()}} Following</span>
|
||||||
|
</p>
|
||||||
|
</span>
|
||||||
|
<span>
|
||||||
|
<div class="dropdown">
|
||||||
|
<button class="btn btn-outline-secondary btn-sm font-weight-bold dropdown-toggle" type="button" id="userActions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="fas fa-bars"></i></button>
|
||||||
|
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="userActions">
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/show/{{$user->id}}">
|
||||||
|
<span class="font-weight-bold">Overview</span>
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/activity/{{$user->id}}">
|
||||||
|
<span class="font-weight-bold">Activity</span>
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/message/{{$user->id}}">
|
||||||
|
<span class="font-weight-bold">Send Message</span>
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-item" href="{{$profile->url()}}">
|
||||||
|
<span class="font-weight-bold">View Profile</span>
|
||||||
|
</a>
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/edit/{{$user->id}}">
|
||||||
|
<span class="font-weight-bold">Edit</span>
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/modlogs/{{$user->id}}">
|
||||||
|
<span class="font-weight-bold">Mod Logs</span>
|
||||||
|
</a>
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/delete/{{$user->id}}">
|
||||||
|
<span class="text-danger font-weight-bold">Delete Account</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-12 col-md-8 offset-md-2">
|
||||||
|
<p class="title h4 font-weight-bold mt-2 py-2">Mod Tools</p>
|
||||||
|
<hr>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12 col-md-6">
|
||||||
|
<form method="post" action="/i/admin/users/moderation/update" class="pb-3">
|
||||||
|
@csrf
|
||||||
|
<input type="hidden" name="profile_id" value="{{$profile->id}}">
|
||||||
|
<button class="btn btn-outline-primary py-0 font-weight-bold">Enforce CW</button>
|
||||||
|
<p class="help-text text-muted font-weight-bold small">Adds a CW to every post made by this account.</p>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<div class="col-12 col-md-6">
|
||||||
|
<form method="post" action="/i/admin/users/moderation/update" class="pb-3">
|
||||||
|
@csrf
|
||||||
|
<input type="hidden" name="profile_id" value="{{$profile->id}}">
|
||||||
|
<button class="btn btn-outline-primary py-0 font-weight-bold">Unlisted Posts</button>
|
||||||
|
<p class="help-text text-muted font-weight-bold small">Removes account from public/network timelines.</p>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<div class="col-12 col-md-6">
|
||||||
|
<form method="post" action="/i/admin/users/moderation/update" class="pb-3">
|
||||||
|
@csrf
|
||||||
|
<input type="hidden" name="profile_id" value="{{$profile->id}}">
|
||||||
|
<button class="btn btn-outline-primary py-0 font-weight-bold">No Autolinking</button>
|
||||||
|
<p class="help-text text-muted font-weight-bold small">Do not transform mentions, hashtags or urls into HTML.</p>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<div class="col-12 col-md-6">
|
||||||
|
<form method="post" action="/i/admin/users/moderation/update" class="pb-3">
|
||||||
|
@csrf
|
||||||
|
<input type="hidden" name="profile_id" value="{{$profile->id}}">
|
||||||
|
<button class="btn btn-outline-primary py-0 font-weight-bold">Disable Account</button>
|
||||||
|
<p class="help-text text-muted font-weight-bold small">Temporarily disable account until next time user log in.</p>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-12 col-md-6">
|
||||||
|
<form method="post" action="/i/admin/users/moderation/update" class="pb-3">
|
||||||
|
@csrf
|
||||||
|
<input type="hidden" name="profile_id" value="{{$profile->id}}">
|
||||||
|
<button class="btn btn-outline-primary py-0 font-weight-bold">Suspend Account</button>
|
||||||
|
<p class="help-text text-muted font-weight-bold small">This prevents any new interactions, without deleting existing data.</p>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-12 col-md-6">
|
||||||
|
<form method="post" action="/i/admin/users/moderation/update" class="pb-3">
|
||||||
|
@csrf
|
||||||
|
<input type="hidden" name="profile_id" value="{{$profile->id}}">
|
||||||
|
<button class="btn btn-outline-danger py-0 font-weight-bold">Lock down Account</button>
|
||||||
|
<p class="help-text text-muted font-weight-bold small">This disables the account and changes the password, forcing account to reset password via verified email.</p>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endsection
|
121
resources/views/admin/users/show.blade.php
Normal file
121
resources/views/admin/users/show.blade.php
Normal file
|
@ -0,0 +1,121 @@
|
||||||
|
@extends('admin.partial.template-full')
|
||||||
|
|
||||||
|
@section('section')
|
||||||
|
<div class="title d-flex justify-content-between align-items-center">
|
||||||
|
<span><a href="{{route('admin.users')}}" class="btn btn-outline-secondary btn-sm font-weight-bold">Back</a></span>
|
||||||
|
<span class="text-center">
|
||||||
|
<h3 class="font-weight-bold mb-0">@{{$profile->username}}</h3>
|
||||||
|
<p class="mb-0 small text-muted text-uppercase font-weight-bold">
|
||||||
|
<span>{{$profile->statuses()->count()}} Posts</span>
|
||||||
|
<span class="px-1">|</span>
|
||||||
|
<span>{{$profile->followers()->count()}} Followers</span>
|
||||||
|
<span class="px-1">|</span>
|
||||||
|
<span>{{$profile->following()->count()}} Following</span>
|
||||||
|
</p>
|
||||||
|
</span>
|
||||||
|
<span>
|
||||||
|
<div class="dropdown">
|
||||||
|
<button class="btn btn-outline-secondary btn-sm font-weight-bold dropdown-toggle" type="button" id="userActions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="fas fa-bars"></i></button>
|
||||||
|
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="userActions">
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/activity/{{$user->id}}">
|
||||||
|
<span class="font-weight-bold">Activity</span>
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/message/{{$user->id}}">
|
||||||
|
<span class="font-weight-bold">Send Message</span>
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-item" href="{{$profile->url()}}">
|
||||||
|
<span class="font-weight-bold">View Profile</span>
|
||||||
|
</a>
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/edit/{{$user->id}}">
|
||||||
|
<span class="font-weight-bold">Edit</span>
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/modtools/{{$user->id}}">
|
||||||
|
<span class="font-weight-bold">Mod Tools</span>
|
||||||
|
</a>
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/modlogs/{{$user->id}}">
|
||||||
|
<span class="font-weight-bold">Mod Logs</span>
|
||||||
|
</a>
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
<a class="dropdown-item" href="/i/admin/users/delete/{{$user->id}}">
|
||||||
|
<span class="text-danger font-weight-bold">Delete Account</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-12 col-md-4">
|
||||||
|
<div class="card shadow-none border">
|
||||||
|
<div class="card-body text-center">
|
||||||
|
<img src="{{$profile->avatarUrl()}}" class="box-shadow rounded-circle" width="128px" height="128px">
|
||||||
|
<p class="mt-3 mb-0 lead">
|
||||||
|
<span class="font-weight-bold">{{$profile->name}}</span>
|
||||||
|
</p>
|
||||||
|
@if($user->is_admin == true)
|
||||||
|
<p class="mb-0">
|
||||||
|
<span class="badge badge-danger badge-sm">ADMIN</span>
|
||||||
|
</p>
|
||||||
|
@endif
|
||||||
|
<p class="mb-0 text-center text-muted">
|
||||||
|
Joined {{$profile->created_at->diffForHumans()}}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<table class="table mb-0">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th scope="row" class="font-weight-bold text-muted text-uppercase pl-3 small" style="line-height: 2;">bookmarks</th>
|
||||||
|
<td class="text-right font-weight-bold">{{$profile->bookmarks()->count()}}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th scope="row" class="font-weight-bold text-muted text-uppercase pl-3 small" style="line-height: 2;">collections</th>
|
||||||
|
<td class="text-right font-weight-bold">{{$profile->collections()->count()}}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th scope="row" class="font-weight-bold text-muted text-uppercase pl-3 small" style="line-height: 2;">likes</th>
|
||||||
|
<td class="text-right font-weight-bold">{{$profile->likes()->count()}}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th scope="row" class="font-weight-bold text-muted text-uppercase pl-3 small" style="line-height: 2;">reports</th>
|
||||||
|
<td class="text-right font-weight-bold">{{$profile->reports()->count()}}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th scope="row" class="font-weight-bold text-muted text-uppercase pl-3 small" style="line-height: 2;">reported</th>
|
||||||
|
<td class="text-right font-weight-bold">{{$profile->reported()->count()}}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th scope="row" class="font-weight-bold text-muted text-uppercase pl-3 small" style="line-height: 2;">Active stories</th>
|
||||||
|
<td class="text-right font-weight-bold">{{$profile->stories()->count()}}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th scope="row" class="font-weight-bold text-muted text-uppercase pl-3 small" style="line-height: 2;">storage used</th>
|
||||||
|
<td class="text-right font-weight-bold">{{PrettyNumber::size($profile->media()->sum('size'))}}<span class="text-muted"> / {{PrettyNumber::size(config('pixelfed.max_account_size') * 1000)}}</span></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-12 col-md-8">
|
||||||
|
<p class="title h4 font-weight-bold mt-2 py-2">Recent Posts</p>
|
||||||
|
<hr>
|
||||||
|
<div class="row">
|
||||||
|
@foreach($profile->statuses()->whereHas('media')->latest()->take(9)->get() as $item)
|
||||||
|
<div class="col-12 col-md-4 col-sm-6 px-0" style="margin-bottom: 1px;">
|
||||||
|
<a href="{{$item->url()}}">
|
||||||
|
<img src="{{$item->thumb(true)}}" width="200px" height="200px">
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
|
|
||||||
|
@if($profile->statuses()->whereHas('media')->count() == 0)
|
||||||
|
<div class="col-12">
|
||||||
|
<div class="card card-body border shadow-none bg-transparent">
|
||||||
|
<p class="text-center mb-0 text-muted">No statuses found</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endsection
|
Loading…
Reference in a new issue