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

220 lines
7.6 KiB
PHP

@extends('admin.partial.template-full')
@section('section')
<div class="title d-flex justify-content-between align-items-center">
<h3 class="font-weight-bold mr-5">Instances</h3>
<div class="btn-group btn-group-sm">
<a class="btn btn-{{!request()->filled('filter')||request()->query('filter')=='all'?'primary':'outline-primary'}} font-weight-bold" href="?filter=all">All</a>
{{-- <a class="btn btn-{{request()->query('filter')=='popular'?'primary':'outline-primary'}} font-weight-bold" href="?filter=popular">Popular</a> --}}
<a class="btn btn-{{request()->query('filter')=='new'?'primary':'outline-primary'}} font-weight-bold" href="?filter=new">New</a>
<a class="btn btn-{{request()->query('filter')=='cw'?'primary':'outline-primary'}} font-weight-bold" href="?filter=cw">CW</a>
<a class="btn btn-{{request()->query('filter')=='banned'?'primary':'outline-primary'}} font-weight-bold" href="?filter=banned">Banned</a>
<a class="btn btn-{{request()->query('filter')=='unlisted'?'primary':'outline-primary'}} font-weight-bold" href="?filter=unlisted">Unlisted</a>
</div>
<div class="">
</div>
<form class="" method="get">
<input class="form-control rounded-pill" name="q" value="{{request()->query('q')}}" placeholder="Search domain">
</form>
</div>
<hr>
<div class="row">
<div class="col-12 col-md-8 offset-md-2">
@if($instances->count() == 0 && !request()->has('filter') && !request()->has('q'))
<div class="alert alert-warning mb-3">
<p class="lead font-weight-bold mb-0">Warning</p>
<p class="font-weight-lighter mb-0">No instances were found.</p>
</div>
<p class="font-weight-lighter">Do you want to scan and populate instances from Profiles and Statuses?</p>
<p>
<form method="post">
@csrf
<button type="submit" class="btn btn-primary py-1 font-weight-bold">Run Scan</button>
</form>
</p>
@else
<ul class="list-group">
@foreach($instances as $instance)
<li class="list-group-item">
<div>
<div class="d-flex justify-content-between align-items-center">
<p class="h4 font-weight-light mb-0 text-break mr-2">
{{$instance->domain}}
</p>
<p class="mb-0 text-right" style="min-width: 210px;">
@if($instance->unlisted)
<i class="fas fa-minus-circle text-danger" data-toggle="tooltip" title="Unlisted from timelines"></i>
@endif
@if($instance->auto_cw)
<i class="fas fa-eye-slash text-danger" data-toggle="tooltip" title="CW applied to all media"></i>
@endif
@if($instance->banned)
<i class="fas fa-shield-alt text-danger" data-toggle="tooltip" title="Instance is banned"></i>
@endif
<a class="btn btn-outline-primary btn-sm py-0 font-weight-normal ml-2" href="{{$instance->getUrl()}}">Overview</a>
<button class="btn btn-outline-secondary btn-sm py-0 font-weight-normal btn-action"
data-instance-id="{{$instance->id}}"
data-instance-domain="{{$instance->domain}}"
data-instance-unlisted="{{$instance->unlisted}}"
data-instance-autocw="{{$instance->auto_cw}}"
data-instance-banned="{{$instance->banned}}"
>Actions</button>
</p>
</div>
</div>
</li>
@endforeach
</ul>
<div class="d-flex justify-content-center mt-5 small">
{{$instances->links()}}
</div>
@endif
@if(request()->filled('q') && $instances->count() == 0)
<p class="text-center lead mb-0">No results found</p>
<p class="text-center font-weight-bold mb-0"><a href="/i/admin/instances">Go back</a></p>
@endif
@if(request()->filled('filter') && $instances->count() == 0)
<p class="text-center lead mb-0">No results found</p>
<p class="text-center font-weight-bold mb-0"><a href="/i/admin/instances">Go back</a></p>
@endif
</div>
</div>
@endsection
@push('scripts')
<script type="text/javascript" src="{{mix('js/components.js')}}"></script>
<script type="text/javascript">
$(document).ready(function() {
$('.filesize').each(function(k,v) {
$(this).text(filesize(v.getAttribute('data-size')))
});
$('.btn-action').on('click', function(e) {
let id = this.getAttribute('data-instance-id');
let instanceDomain = this.getAttribute('data-instance-domain');
let text = 'Domain: ' + instanceDomain;
let unlisted = this.getAttribute('data-instance-unlisted');
let autocw = this.getAttribute('data-instance-autocw');
let banned = this.getAttribute('data-instance-banned');
swal({
title: 'Instance Actions',
text: text,
icon: 'warning',
buttons: {
unlist: {
text: unlisted == 0 ? "Unlist" : "Re-list",
className: "bg-warning",
value: "unlisted",
},
cw: {
text: autocw == 0 ? "CW Media" : "Remove AutoCW",
className: "bg-warning",
value: "autocw",
},
ban: {
text: banned == 0 ? "Ban" : "Unban",
className: "bg-danger",
value: "ban",
},
},
})
.then((value) => {
switch (value) {
case "unlisted":
swal({
title: "Are you sure?",
text: unlisted == 0 ?
"Are you sure you want to unlist " + instanceDomain + " ?" :
"Are you sure you want to remove the unlisted rule of " + instanceDomain + " ?",
icon: "warning",
buttons: true,
dangerMode: true,
})
.then((unlist) => {
if (unlist) {
axios.post('/i/admin/instances/edit/' + id, {
action: 'unlist'
}).then((res) => {
swal("Domain action was successful! The page will now refresh.", {
icon: "success",
});
setTimeout(function() {
window.location.href = window.location.href;
}, 5000);
}).catch((err) => {
swal("Something went wrong!", "Please try again later.", "error");
})
} else {
swal("Action Cancelled", "You successfully cancelled this action.", "error");
}
});
break;
case "autocw":
swal({
title: "Are you sure?",
text: autocw == 0 ?
"Are you sure you want to auto CW all media from " + instanceDomain + " ?" :
"Are you sure you want to remove the auto cw rule for " + instanceDomain + " ?",
icon: "warning",
buttons: true,
dangerMode: true,
})
.then((res) => {
if (res) {
axios.post('/i/admin/instances/edit/' + id, {
action: 'autocw'
}).then((res) => {
swal("Domain action was successful! The page will now refresh.", {
icon: "success",
});
setTimeout(function() {
window.location.href = window.location.href;
}, 5000);
}).catch((err) => {
swal("Something went wrong!", "Please try again later.", "error");
})
} else {
swal("Action Cancelled", "You successfully cancelled this action.", "error");
}
});
break;
case "ban":
swal({
title: "Are you sure?",
text: autocw == 0 ?
"Are you sure you want to ban " + instanceDomain + " ?" :
"Are you sure you want unban " + instanceDomain + " ?",
icon: "warning",
buttons: true,
dangerMode: true,
})
.then((res) => {
if (res) {
axios.post('/i/admin/instances/edit/' + id, {
action: 'ban'
}).then((res) => {
swal("Domain action was successful! The page will now refresh.", {
icon: "success",
});
setTimeout(function() {
window.location.href = window.location.href;
}, 5000);
}).catch((err) => {
swal("Something went wrong!", "Please try again later.", "error");
})
} else {
swal("Action Cancelled", "You successfully cancelled this action.", "error");
}
});
break;
}
});
})
});
</script>
@endpush