pixelfed/resources/views/admin/reports/home.blade.php

175 lines
5.8 KiB
PHP
Raw Normal View History

2018-08-24 00:58:41 +00:00
@extends('admin.partial.template')
@section('section')
2018-09-01 02:26:56 +00:00
<div class="title font-weight-bold">
2018-09-03 01:24:38 +00:00
<h3 class="font-weight-bold">Reports</h3>
2018-09-01 02:26:56 +00:00
<p>
<span class="pr-3">
<span>Open:</span>
<span class="text-danger">{{App\Report::whereNull('admin_seen')->count()}}</span>
</span>
<span class="">
<span>Closed:</span>
<span class="text-success">{{App\Report::whereNotNull('admin_seen')->count()}}</span>
</span>
</p>
2018-08-24 00:58:41 +00:00
</div>
<hr>
2018-09-02 03:50:54 +00:00
<div class="mb-3 bulk-actions d-none">
<div class="d-flex justify-content-between">
<span>
<span class="bulk-count font-weight-bold" data-count="0">
0
</span>
<span class="bulk-desc"> items selected</span>
</span>
<span class="d-inline-flex">
<select class="custom-select custom-select-sm font-weight-bold bulk-action">
<option selected disabled="">Select Bulk Action</option>
<option value="1">Ignore</option>
<option value="2">Add C/W</option>
<option value="3">Unlist from timelines</option>
</select>
<a class="btn btn-outline-primary btn-sm ml-3 font-weight-bold apply-bulk" href="#">
Apply
</a>
</span>
</div>
</div>
2018-09-01 02:26:56 +00:00
<table class="table table-responsive">
2018-09-02 03:50:54 +00:00
<thead class="bg-light">
2018-08-24 00:58:41 +00:00
<tr>
2018-09-02 03:50:54 +00:00
<th scope="col">
<div class="">
<div class="custom-control custom-checkbox table-check">
<input type="checkbox" class="custom-control-input" id="row-check-all">
<label class="custom-control-label" for="row-check-all"></label>
</div>
</div>
</th>
2018-08-24 00:58:41 +00:00
<th scope="col">#</th>
<th scope="col">Reporter</th>
<th scope="col">Type</th>
<th scope="col">Reported</th>
<th scope="col">Status</th>
<th scope="col">Created</th>
</tr>
</thead>
<tbody>
@foreach($reports as $report)
<tr>
2018-09-02 03:50:54 +00:00
<td class="py-0">
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input row-check-item" id="row-check-{{$report->id}}" data-resolved="{{$report->admin_seen?'true':'false'}}" data-id="{{$report->id}}">
<label class="custom-control-label" for="row-check-{{$report->id}}"></label>
</div>
</td>
<td>
2018-09-01 02:26:56 +00:00
<a href="{{$report->url()}}" class="btn btn-sm btn-outline-primary">
2018-08-24 00:58:41 +00:00
{{$report->id}}
</a>
2018-09-02 03:50:54 +00:00
</td>
2018-08-24 00:58:41 +00:00
<td class="font-weight-bold"><a href="{{$report->reporter->url()}}">{{$report->reporter->username}}</a></td>
<td class="font-weight-bold">{{$report->type}}</td>
<td class="font-weight-bold"><a href="{{$report->reported()->url()}}">{{str_limit($report->reported()->url(), 25)}}</a></td>
@if(!$report->admin_seen)
<td><span class="text-danger font-weight-bold">Unresolved</span></td>
@else
<td><span class="text-success font-weight-bold">Resolved</span></td>
@endif
<td class="font-weight-bold">{{$report->created_at->diffForHumans(null, true, true, true)}}</td>
</tr>
@endforeach
</tbody>
</table>
<div class="d-flex justify-content-center mt-5 small">
{{$reports->links()}}
</div>
@endsection
2018-09-02 03:50:54 +00:00
@push('styles')
<style type="text/css">
.custom-control-label:after, .custom-control-label:before {
top: auto;
bottom: auto;
}
.table-check .custom-control-label {
top: -11px;
}
</style>
@endpush
2018-08-24 00:58:41 +00:00
@push('scripts')
<script type="text/javascript">
$(document).ready(function() {
2018-09-02 03:50:54 +00:00
$(document).on('click', '#row-check-all', function(e) {
let el = $(this);
let attr = el.attr('checked');
if (typeof attr !== typeof undefined && attr !== false) {
$('.bulk-actions').addClass('d-none');
$('.row-check-item[data-resolved=false]').removeAttr('checked').prop('checked', false);
el.removeAttr('checked').prop('checked', false);
} else {
$('.bulk-actions').removeClass('d-none');
el.attr('checked', '').prop('checked', true);
$('.row-check-item[data-resolved=false]').attr('checked', '').prop('checked', true);
}
let len = $('.row-check-item[checked]').length;
$('.bulk-count').text(len).attr('data-count', len);
});
$(document).on('click', '.row-check-item', function(e) {
var el = $(this)[0];
let len = $('.bulk-count').attr('data-count');
if(el.checked == true) {
len++;
$('.bulk-count').text(len).attr('data-count', len);
} else {
len--;
$('.bulk-count').text(len).attr('data-count', len);
}
if(len == 0) {
$('.bulk-actions').addClass('d-none');
$('#row-check-all').prop('checked', false);
} else {
$('.bulk-actions').removeClass('d-none');
}
});
$(document).on('click', '.apply-bulk', function(e) {
e.preventDefault();
let ids = $('.row-check-item:checked').map(function(i,k) {
return $(this).attr('data-id');
}).get();
let action = $('.bulk-action option:selected').val();
if(action == 'Select Bulk Action') {
swal('Error', 'You need to select a bulk action first.', 'error');
$('.bulk-action').focus();
return;
}
axios.post('/i/admin/reports/bulk',{
'action': action,
'ids': ids
}).then(function(res) {
swal('Success', 'Bulk Update was successful!', 'success');
window.location.href = window.location.href;
}).catch(function(res) {
swal('Ooops!', 'Something went wrong', 'error');
});
});
2018-08-24 00:58:41 +00:00
$('.human-size').each(function(d,a) {
let el = $(a);
let size = el.data('bytes');
el.text(filesize(size, {round: 0}));
});
});
</script>
@endpush