forked from mirror/pixelfed
Update admin reports views
This commit is contained in:
parent
85bd4847e4
commit
52a120c0db
2 changed files with 182 additions and 256 deletions
|
@ -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
|
|
@ -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">@{{$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">
|
||||
@{{$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">
|
||||
@{{$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
|
Loading…
Reference in a new issue