Update admin reports views

This commit is contained in:
Daniel Supernault 2021-02-15 02:44:51 -07:00
parent 85bd4847e4
commit 52a120c0db
No known key found for this signature in database
GPG key ID: 0DEF1C662C9033F7
2 changed files with 182 additions and 256 deletions

View file

@ -1,108 +1,90 @@
@extends('admin.partial.template-full')
@section('section')
<div class="title mb-3">
<h3 class="font-weight-bold d-inline-block">Reports</h3>
<span class="float-right">
<a class="btn btn-{{request()->input('filter')=='all'||request()->input('filter')==null?'primary':'light'}} btn-sm font-weight-bold" href="{{route('admin.reports')}}">
ALL
</a>
<a class="btn btn-{{request()->input('filter')=='open'?'primary':'light'}} btn-sm font-weight-bold" href="{{route('admin.reports',['filter'=>'open', 'page' => request()->input('page') ?? 1])}}">
OPEN
</a>
<a class="btn btn-{{request()->input('filter')=='closed'?'primary':'light'}} btn-sm mr-3 font-weight-bold" href="{{route('admin.reports',['filter'=>'closed', 'page' => request()->input('page') ?? 1])}}">
CLOSED
</a>
</span>
</div>
@php($ai = App\AccountInterstitial::whereNotNull('appeal_requested_at')->whereNull('appeal_handled_at')->count())
@php($spam = App\AccountInterstitial::whereType('post.autospam')->whereNull('appeal_handled_at')->count())
@if($ai || $spam)
<div class="mb-4">
<a class="btn btn-outline-primary px-5 py-3 mr-3" href="/i/admin/reports/appeals">
<p class="font-weight-bold h4 mb-0">{{$ai}}</p>
Appeal {{$ai == 1 ? 'Request' : 'Requests'}}
</a>
<a class="btn btn-outline-primary px-5 py-3" href="/i/admin/reports/autospam">
<p class="font-weight-bold h4 mb-0">{{$spam}}</p>
Flagged {{$ai == 1 ? 'Post' : 'Posts'}}
</a>
</div>
@endif
@if($reports->count())
<div class="card shadow-none border">
<div class="list-group list-group-flush">
@foreach($reports as $report)
<div class="list-group-item {{$report->admin_seen ? 'bg-light' : 'bg-white'}}">
<div class="p-4">
<div class="media d-flex align-items-center">
<div class="mr-3 border rounded d-flex justify-content-center align-items-center media-avatar">
<span class="text-lighter lead"><i class="fas fa-camera"></i></span>
</div>
<div class="media-body">
<p class="mb-1 small"><span class="font-weight-bold text-uppercase">{{$report->type}}</span></p>
@if($report->reporter && $report->status)
<p class="mb-0 lead"><a class="font-weight-bold text-dark" href="{{$report->reporter->url()}}">{{$report->reporter->username}}</a> reported this <a href="{{$report->status->url()}}" class="font-weight-bold text-dark">post</a></p>
@else
<p class="mb-0 lead">
@if(!$report->reporter)
<span class="font-weight-bold text-dark">Deleted user</span>
@else
<a class="font-weight-bold text-dark" href="{{$report->reporter->url()}}">{{$report->reporter->username}}</a>
@endif
reported this
@if(!$report->status)
<span class="font-weight-bold text-muted">deleted post</span>
@else
<a href="{{$report->status->url()}}" class="font-weight-bold text-dark">post</a>
@endif
<div class="title mb-3 d-flex justify-content-between align-items-center">
<h3 class="font-weight-bold d-inline-block">Reports</h3>
<div class="float-right">
@if(request()->has('filter') && request()->filter == 'closed')
<a class="mr-3 font-weight-light small text-muted" href="{{route('admin.reports')}}">
View Open Reports
</a>
@else
<a class="mr-3 font-weight-light small text-muted" href="{{route('admin.reports',['filter'=>'closed'])}}">
View Closed Reports
</a>
@endif
</div>
</div>
@php($ai = App\AccountInterstitial::whereNotNull('appeal_requested_at')->whereNull('appeal_handled_at')->count())
@php($spam = App\AccountInterstitial::whereType('post.autospam')->whereNull('appeal_handled_at')->count())
@if($ai || $spam)
<div class="mb-4">
<a class="btn btn-outline-primary px-5 py-3 mr-3" href="/i/admin/reports/appeals">
<p class="font-weight-bold h4 mb-0">{{$ai}}</p>
Appeal {{$ai == 1 ? 'Request' : 'Requests'}}
</a>
<a class="btn btn-outline-primary px-5 py-3" href="/i/admin/reports/autospam">
<p class="font-weight-bold h4 mb-0">{{$spam}}</p>
Flagged {{$ai == 1 ? 'Post' : 'Posts'}}
</a>
</div>
@endif
@if($reports->count())
<div class="col-12 col-md-8 offset-md-2">
<div class="card shadow-none border">
<div class="list-group list-group-flush">
@foreach($reports as $report)
<div class="list-group-item p-1 {{$report->admin_seen ? 'bg-light' : 'bg-white'}}">
<div class="p-0">
<div class="media d-flex align-items-center">
<a class="text-decoration-none" href="{{$report->url()}}">
<img src="{{$report->status->media->count() ? $report->status->thumb(true) : '/storage/no-preview.png'}}" width="64" height="64" class="rounded border shadow mr-3" style="object-fit: cover">
</a>
<div class="media-body">
<p class="mb-1 small"><span class="font-weight-bold text-uppercase text-danger">{{$report->type}}</span></p>
@if($report->reporter && $report->status)
<p class="mb-0"><a class="font-weight-bold text-dark" href="{{$report->reporter->url()}}">{{$report->reporter->username}}</a> reported this <a href="{{$report->status->url()}}" class="font-weight-bold text-dark">post</a></p>
@else
<p class="mb-0 lead">
@if(!$report->reporter)
<span class="font-weight-bold text-dark">Deleted user</span>
@else
<a class="font-weight-bold text-dark" href="{{$report->reporter->url()}}">{{$report->reporter->username}}</a>
@endif
reported this
@if(!$report->status)
<span class="font-weight-bold text-muted">deleted post</span>
@else
<a href="{{$report->status->url()}}" class="font-weight-bold text-dark">post</a>
@endif
</p>
</p>
@endif
</div>
<div class="float-right">
{{-- @if($report->admin_seen == null)
<a class="btn btn-outline-primary btn-sm font-weight-bold py-1 px-2 mr-2" href="{{$report->url()}}/action"><i class="fas fa-check"></i></a>
@endif
<a class="btn btn-outline-primary btn-sm font-weight-bold py-1 px-2 mr-2" href="{{$report->url()}}/action"><i class="fas fa-cog"></i></a> --}}
@if($report->status)
<a class="btn btn-primary btn-sm font-weight-bold py-1 px-3" href="{{$report->url()}}">VIEW</a>
@endif
</div>
</div>
</div>
</div>
@endforeach
</div>
</div>
@else
<div class="card shadow-none border">
<div class="card-body">
<p class="mb-0 p-5 text-center font-weight-bold lead">No reports found</p>
</div>
</div>
@endif
@endif
</div>
<div class="float-right">
@if($report->status)
<a class="text-lighter p-2 text-decoration-none" href="{{$report->url()}}">
View <i class="fas fa-chevron-right ml-2"></i>
</a>
@endif
</div>
</div>
</div>
</div>
@endforeach
</div>
</div>
</div>
@else
<div class="card shadow-none border">
<div class="card-body">
<p class="mb-0 p-5 text-center font-weight-bold lead">No reports found</p>
</div>
</div>
@endif
<div class="d-flex justify-content-center mt-5 small">
{{$reports->appends(['layout'=>request()->layout, 'filter' => request()->filter])->links()}}
</div>
<div class="d-flex justify-content-center mt-5 small">
{{$reports->appends(['layout'=>request()->layout, 'filter' => request()->filter])->links()}}
</div>
@endsection
@push('styles')
<style type="text/css">
.custom-control-label:after, .custom-control-label:before {
top: auto;
bottom: auto;
}
.media-avatar {
width:64px;
height:64px;
background:#e9ecef;
}
</style>
@endpush
@push('scripts')
@endpush

View file

@ -1,167 +1,111 @@
@extends('admin.partial.template-full')
@section('section')
<div class="title">
<h3 class="font-weight-bold">Report #<span class="reportid" data-id="{{$report->id}}">{{$report->id}}</span> - <span class="badge badge-danger">{{ucfirst($report->type)}}</span></h3>
</div>
<div class="d-flex justify-content-between title mb-3">
<div>
<p class="font-weight-bold h3">
Report #{{$report->id}} -
<span class="text-danger">{{ucfirst($report->type)}}</span>
</p>
<p class="text-muted mb-0 lead">
Reported <span class="font-weight-bold">{{$report->created_at->diffForHumans()}}</span> by <a href="{{$report->reporter->url()}}" class="text-muted font-weight-bold">&commat;{{$report->reporter->username}}</a>.
</p>
</div>
</div>
<div class="card">
<div class="card-body">
<h5 class="card-title">Reported: <a href="{{$report->reported()->url()}}">{{$report->reported()->url()}}</a></h5>
<h6 class="card-subtitle mb-2 text-muted">Reported by: <a href="{{$report->reporter->url()}}">{{$report->reporter->username}}</a></h6>
<p class="card-text text-muted">
<span class="font-weight-bold text-dark">Message: </span>
{{$report->message ?? 'No message provided.'}}
</p>
<div class="row">
<div class="col-12 col-md-8 mt-3">
<div class="card shadow-none border">
@if($report->status->media()->count())
<img class="card-img-top border-bottom" src="{{$report->status->thumb(true)}}">
@endif
<div class="card-body">
<div class="mt-2 p-3">
@if($report->status->caption)
<p class="text-break">
{{$report->status->media()->count() ? 'Caption' : 'Comment'}}: <span class="font-weight-bold">{{$report->status->caption}}</span>
</p>
@endif
<p class="mb-0">
Like Count: <span class="font-weight-bold">{{$report->status->likes_count}}</span>
</p>
<p class="mb-0">
Share Count: <span class="font-weight-bold">{{$report->status->reblogs_count}}</span>
</p>
<p class="mb-0">
Timestamp: <span class="font-weight-bold">{{now()->parse($report->status->created_at)->format('r')}}</span>
</p>
<p class="" style="word-break: break-all !important;">
URL: <span class="font-weight-bold text-primary"><a href="{{$report->status->url()}}">{{$report->status->url()}}</a></span>
</p>
</div>
</div>
</div>
</div>
<div class="col-12 col-md-4 mt-3">
<button type="button" class="btn btn-primary btn-block font-weight-bold mb-3 report-action-btn" data-action="cw">Apply Content Warning</button>
<button type="button" class="btn btn-primary btn-block font-weight-bold mb-3 report-action-btn" data-action="unlist">Unlist Post</button>
<button type="button" class="btn btn-light border btn-block font-weight-bold mb-3 report-action-btn" data-action="ignore">Ignore</button>
@if(!$report->admin_seen)
<a href="#" class="card-link report-action-btn font-weight-bold" data-action="ignore">Ignore</a>
{{-- <a href="#" class="card-link font-weight-bold">Request Mod Feedback</a> --}}
<a href="#" class="card-link report-action-btn font-weight-bold" data-action="cw">Add CW</a>
<a href="#" class="card-link report-action-btn font-weight-bold" data-action="unlist">Unlist/Hide</a>
{{-- <a href="#" class="card-link report-action-btn font-weight-bold text-danger" data-action="delete">Delete</a>
<a href="#" class="card-link report-action-btn font-weight-bold text-danger" data-action="shadowban">Shadowban User</a>
<a href="#" class="card-link report-action-btn font-weight-bold text-danger" data-action="ban">Ban User</a> --}}
@else
<p class="font-weight-bold mb-0">Resolved {{$report->admin_seen->diffForHumans()}}</p>
@endif
</div>
</div>
<div class="card shadow-none border mt-5">
<div class="card-header text-center font-weight-bold bg-light">
&commat;{{$report->reportedUser->username}} stats
</div>
<div class="card-body">
<p>
Total Reports: <span class="font-weight-bold text-danger">{{App\Report::whereReportedProfileId($report->reportedUser->id)->count()}}</span>
</p>
<p>
Total Warnings: <span class="font-weight-bold text-danger">{{App\AccountInterstitial::whereUserId($report->reportedUser->user_id)->count()}}</span>
</p>
<p class="">
Status Count: <span class="font-weight-bold">{{$report->reportedUser->status_count}}</span>
</p>
<p class="">
Follower Count: <span class="font-weight-bold">{{$report->reportedUser->followers_count}}</span>
</p>
<p class="mb-0">
Joined: <span class="font-weight-bold">{{$report->reportedUser->created_at->diffForHumans(null, null, false)}}</span>
</p>
</div>
</div>
<div class="accordion mt-3" id="accordianBackground">
<div class="card">
<div class="card-header bg-white" id="headingOne">
<h5 class="mb-0">
<button class="btn btn-link font-weight-bold text-dark" type="button" data-toggle="collapse" data-target="#background" aria-expanded="true" aria-controls="background">
Background
</button>
</h5>
</div>
<div id="background" class="collapse show" aria-labelledby="headingOne">
<div class="card-body">
<div class="row">
<div class="col-12 col-md-6">
<div class="card">
<div class="card-header bg-white font-weight-bold">
Reporter
</div>
<ul class="list-group list-group-flush">
<li class="list-group-item">Joined <span class="font-weight-bold">{{$report->reporter->created_at->diffForHumans()}}</span></li>
<li class="list-group-item">Total Reports: <span class="font-weight-bold">{{App\Report::whereProfileId($report->reporter->id)->count()}}</span></li>
<li class="list-group-item">Total Reported: <span class="font-weight-bold">{{App\Report::whereReportedProfileId($report->reporter->id)->count()}}</span></li>
</ul>
</div>
</div>
<div class="col-12 col-md-6">
<div class="card">
<div class="card-header bg-white font-weight-bold">
Reported
</div>
<ul class="list-group list-group-flush">
<li class="list-group-item">Joined <span class="font-weight-bold">{{$report->reportedUser->created_at->diffForHumans()}}</span></li>
<li class="list-group-item">Total Reports: <span class="font-weight-bold">{{App\Report::whereProfileId($report->reportedUser->id)->count()}}</span></li>
<li class="list-group-item">Total Reported: <span class="font-weight-bold">{{App\Report::whereReportedProfileId($report->reportedUser->id)->count()}}</span></li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="card shadow-none border mt-5">
<div class="card-header text-center font-weight-bold bg-light">
&commat;{{$report->reporter->username}} stats
</div>
<div class="card-body">
<p class="">
Status Count: <span class="font-weight-bold">{{$report->reporter->status_count}}</span>
</p>
<p class="">
Follower Count: <span class="font-weight-bold">{{$report->reporter->followers_count}}</span>
</p>
<p class="mb-0">
Joined: <span class="font-weight-bold">{{$report->reporter->created_at->diffForHumans(null, null, false)}}</span>
</p>
</div>
</div>
{{-- <div class="accordion mt-3" id="accordianLog">
<div class="card">
<div class="card-header bg-white" id="headingTwo">
<h5 class="mb-0">
<button class="btn btn-link font-weight-bold text-dark" type="button" data-toggle="collapse" data-target="#log" aria-expanded="true" aria-controls="log">
Activity Log
</button>
</h5>
</div>
<div id="log" class="collapse show" aria-labelledby="headingTwo">
<div class="card-body" style="max-height: 200px;overflow-y: scroll;">
<div class="my-3 border-left-primary">
<p class="pl-2"><a href="#">admin</a> ignored this report. <span class="float-right pl-2 small font-weight-bold">2m</span></p>
</div>
<div class="my-3 border-left-primary">
<p class="pl-2"><a href="#">admin</a> ignored this report. <span class="float-right pl-2 small font-weight-bold">2m</span></p>
</div>
<div class="my-3 border-left-primary">
<p class="pl-2"><a href="#">admin</a> ignored this report. <span class="float-right pl-2 small font-weight-bold">2m</span></p>
</div>
</div>
</div>
</div>
</div> --}}
{{-- <div class="accordion mt-3" id="accordianComments">
<div class="card">
<div class="card-header bg-white" id="headingThree">
<h5 class="mb-0">
<button class="btn btn-link font-weight-bold text-dark" type="button" data-toggle="collapse" data-target="#comments" aria-expanded="true" aria-controls="comments">
Comments
</button>
</h5>
</div>
<div id="comments" class="collapse show" aria-labelledby="headingThree">
<div class="card-body" style="max-height: 400px; overflow-y: scroll;">
<div class="report-comment-wrapper">
<div class="my-3 report-comment">
<div class="card bg-primary text-white">
<div class="card-body">
<a href="#" class="text-white font-weight-bold">[username]</a>: {{str_limit('Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod.', 150)}} <span class="float-right small p-2">2m</span>
</div>
</div>
</div>
<div class="my-3 report-comment">
<div class="card bg-light">
<div class="card-body">
<a href="#" class="font-weight-bold">me</a>: {{str_limit('Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod.', 150)}} <span class="float-right small p-2">2m</span>
</div>
</div>
</div>
<div class="my-3 report-comment">
<div class="card bg-light">
<div class="card-body">
<a href="#" class="font-weight-bold">me</a>: {{str_limit('Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod.', 150)}} <span class="float-right small p-2">2m</span>
</div>
</div>
</div>
</div>
</div>
<div class="card-footer">
<form>
@csrf
<input type="hidden" name="report_id" value="{{$report->id}}">
<input type="text" class="form-control" name="comment" placeholder="Add a comment here" autocomplete="off">
</form>
</div>
</div>
</div>
</div> --}}
</div>
</div>
@endsection
@push('scripts')
<script type="text/javascript">
$(document).on('click', '.report-action-btn', function(e) {
e.preventDefault();
let el = $(this);
let action = el.data('action');
console.log(action);
axios.post(window.location.href, {
'action': action
})
.then(function(res) {
swal('Success', 'Issue updated successfully!', 'success');
window.location.href = window.location.href;
}).catch(function(res) {
swal('Error', res.data.msg, 'error');
});
})
$(document).on('click', '.report-action-btn', function(e) {
e.preventDefault();
let el = $(this);
let action = el.data('action');
axios.post(window.location.href, {
'action': action
})
.then(function(res) {
swal('Success', 'Issue updated successfully!', 'success');
window.location.href = '/i/admin/reports';
}).catch(function(res) {
swal('Error', res.data.msg, 'error');
});
})
</script>
@endpush