forked from Alex/Pterodactyl-Panel
Move everything over to pterodactyl theme
This commit is contained in:
parent
198a021a97
commit
955d89c0c6
@ -13,6 +13,14 @@ return [
|
|||||||
'header' => 'File Not Found',
|
'header' => 'File Not Found',
|
||||||
'desc' => 'We were unable to locate the requested resource on the server.',
|
'desc' => 'We were unable to locate the requested resource on the server.',
|
||||||
],
|
],
|
||||||
|
'installing' => [
|
||||||
|
'header' => 'Server Installing',
|
||||||
|
'desc' => 'The requested server is still completing the install process. Please check back in a few minutes, you should recieve an email as soon as this process is completed.',
|
||||||
|
],
|
||||||
|
'suspended' => [
|
||||||
|
'header' => 'Server Suspended',
|
||||||
|
'desc' => 'This server has been suspended and cannot be accessed.',
|
||||||
|
],
|
||||||
],
|
],
|
||||||
'index' => [
|
'index' => [
|
||||||
'header' => 'Your Servers',
|
'header' => 'Your Servers',
|
||||||
|
@ -27,7 +27,6 @@
|
|||||||
@endsection
|
@endsection
|
||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
<!-- This is why we don't let Pterodactyl's make links... fat fingered dinosaurs... -->
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-8 col-md-offset-2 col-sm-10 col-sm-offset-1 col-xs-12">
|
<div class="col-md-8 col-md-offset-2 col-sm-10 col-sm-offset-1 col-xs-12">
|
||||||
<div class="box box-danger">
|
<div class="box box-danger">
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
<body>
|
<body>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="title">Be right back.</div>
|
<div class="title">Be right back!</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
@ -17,24 +17,30 @@
|
|||||||
{{-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, --}}
|
{{-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, --}}
|
||||||
{{-- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE --}}
|
{{-- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE --}}
|
||||||
{{-- SOFTWARE. --}}
|
{{-- SOFTWARE. --}}
|
||||||
@extends('layouts.master')
|
@extends('layouts.error')
|
||||||
|
|
||||||
@section('title', '503: Server Temporarily Unavaliable')
|
@section('title')
|
||||||
|
@lang('base.errors.installing.header')
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@section('content-header')
|
||||||
|
@endsection
|
||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
<div class="col-md-12">
|
<div class="row">
|
||||||
<div class="panel panel-danger">
|
<div class="col-md-8 col-md-offset-2 col-sm-10 col-sm-offset-1 col-xs-12">
|
||||||
<div class="panel-heading">
|
<div class="box box-info">
|
||||||
<h3 class="panel-title">HTTP 503: Temporarily Unavaliable</h3>
|
|
||||||
</div>
|
|
||||||
<div class="panel-body">
|
|
||||||
<p style="margin-bottom:0;">The requested server is still completing the install process. Please check back in a few minutes, you should recieve an email as soon as this process is completed.</p>
|
|
||||||
<br /><br />
|
|
||||||
<div class="progress progress-striped active">
|
<div class="progress progress-striped active">
|
||||||
<div class="progress-bar progress-bar-danger" style="width: 75%"></div>
|
<div class="progress-bar progress-bar-info" style="width: 75%"></div>
|
||||||
|
</div>
|
||||||
|
<div class="box-body text-center">
|
||||||
|
<p class="text-muted">@lang('base.errors.installing.desc')</p>
|
||||||
|
</div>
|
||||||
|
<div class="box-footer with-border">
|
||||||
|
<a href="{{ URL::previous() }}"><button class="btn btn-info">← @lang('base.errors.return')</button></a>
|
||||||
|
<a href="/"><button class="btn btn-default">@lang('base.errors.home')</button></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p style="text-align:center;"><a href="{{ URL::previous() }}">Take me back</a> or <a href="/">go home</a>.</p>
|
|
||||||
</div>
|
</div>
|
||||||
@endsection
|
@endsection
|
@ -17,20 +17,28 @@
|
|||||||
{{-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, --}}
|
{{-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, --}}
|
||||||
{{-- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE --}}
|
{{-- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE --}}
|
||||||
{{-- SOFTWARE. --}}
|
{{-- SOFTWARE. --}}
|
||||||
@extends('layouts.master')
|
@extends('layouts.error')
|
||||||
|
|
||||||
@section('title', '503: Server Temporarily Unavaliable')
|
@section('title')
|
||||||
|
@lang('base.errors.suspended.header')
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@section('content-header')
|
||||||
|
@endsection
|
||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
<div class="col-md-12">
|
<div class="row">
|
||||||
<div class="panel panel-danger">
|
<div class="col-md-8 col-md-offset-2 col-sm-10 col-sm-offset-1 col-xs-12">
|
||||||
<div class="panel-heading">
|
<div class="box box-danger">
|
||||||
<h3 class="panel-title">HTTP 403: Access Denied</h3>
|
<div class="box-body text-center">
|
||||||
</div>
|
<h1 class="text-red" style="font-size: 160px !important;font-weight: 100 !important;">401</h1>
|
||||||
<div class="panel-body">
|
<p class="text-muted">@lang('base.errors.suspended.desc')</p>
|
||||||
<p style="margin-bottom:0;">This server has been suspended and cannot be accessed.</p>
|
</div>
|
||||||
|
<div class="box-footer with-border">
|
||||||
|
<a href="{{ URL::previous() }}"><button class="btn btn-danger">← @lang('base.errors.return')</button></a>
|
||||||
|
<a href="/"><button class="btn btn-default">@lang('base.errors.home')</button></a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p style="text-align:center;"><a href="{{ URL::previous() }}">Take me back</a> or <a href="/">go home</a>.</p>
|
|
||||||
</div>
|
</div>
|
||||||
@endsection
|
@endsection
|
@ -1,150 +0,0 @@
|
|||||||
{{-- Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com> --}}
|
|
||||||
|
|
||||||
{{-- Permission is hereby granted, free of charge, to any person obtaining a copy --}}
|
|
||||||
{{-- of this software and associated documentation files (the "Software"), to deal --}}
|
|
||||||
{{-- in the Software without restriction, including without limitation the rights --}}
|
|
||||||
{{-- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell --}}
|
|
||||||
{{-- copies of the Software, and to permit persons to whom the Software is --}}
|
|
||||||
{{-- furnished to do so, subject to the following conditions: --}}
|
|
||||||
|
|
||||||
{{-- The above copyright notice and this permission notice shall be included in all --}}
|
|
||||||
{{-- copies or substantial portions of the Software. --}}
|
|
||||||
|
|
||||||
{{-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR --}}
|
|
||||||
{{-- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, --}}
|
|
||||||
{{-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE --}}
|
|
||||||
{{-- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER --}}
|
|
||||||
{{-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, --}}
|
|
||||||
{{-- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE --}}
|
|
||||||
{{-- SOFTWARE. --}}
|
|
||||||
@extends('layouts.admin')
|
|
||||||
|
|
||||||
@section('title')
|
|
||||||
Database Management
|
|
||||||
@endsection
|
|
||||||
|
|
||||||
@section('content')
|
|
||||||
<div class="col-md-12">
|
|
||||||
<ul class="breadcrumb">
|
|
||||||
<li><a href="/admin">Admin Control</a></li>
|
|
||||||
<li class="active">Databases</li>
|
|
||||||
</ul>
|
|
||||||
<h3>Manage Databases</h3><hr />
|
|
||||||
<ul class="nav nav-tabs tabs_with_panel" id="config_tabs">
|
|
||||||
<li class="active"><a href="#tab_databases" data-toggle="tab">Databases</a></li>
|
|
||||||
<li><a href="#tab_dbservers" data-toggle="tab">Database Servers</a></li>
|
|
||||||
<li><a href="{{ route('admin.databases.new') }}"><i class="fa fa-plus"></i></a></li>
|
|
||||||
</ul>
|
|
||||||
<div class="tab-content">
|
|
||||||
<div class="tab-pane {{ Request::input('tab') == 'tab_dbservers' ? '' : 'active' }}" id="tab_databases">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading"></div>
|
|
||||||
<div class="panel-body">
|
|
||||||
<table class="table table-bordered table-hover" style="margin-bottom:0;">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>Server</th>
|
|
||||||
<th>Database</th>
|
|
||||||
<th>Username</th>
|
|
||||||
<th>Connection</th>
|
|
||||||
<th></th>
|
|
||||||
<th></th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
@foreach($databases as $database)
|
|
||||||
<tr>
|
|
||||||
<td>{{ $database->server->name }}</td>
|
|
||||||
<td>{{ $database->database }}</td>
|
|
||||||
<td>{{ $database->username }} ({{ $database->remote }})</td>
|
|
||||||
<?php $host = $hosts->where('id', $database->db_server)->first(); ?>
|
|
||||||
<td><code>{{ $host->host }}:{{ $host->port }}</code></td>
|
|
||||||
<td class="text-center"><a href="/admin/servers/view/{{ $database->server->id }}?tab=tab_database"><i class="fa fa-search"></i></a></td>
|
|
||||||
<td class="text-center"><a href="#" data-action="delete" data-type="delete" data-attr="{{ $database->id }}" class="text-danger"><i class="fa fa-trash-o"></i></a></td>
|
|
||||||
</tr>
|
|
||||||
@endforeach
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
<div class="col-md-12 text-center">
|
|
||||||
{{ $databases->appends(['tab' => 'tab_databases'])->links() }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="tab-pane {{ Request::input('tab') == 'tab_dbservers' ? 'active' : '' }}" id="tab_dbservers">
|
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading"></div>
|
|
||||||
<div class="panel-body">
|
|
||||||
<table class="table table-bordered table-hover" style="margin-bottom:0;">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>Name</th>
|
|
||||||
<th>Connection</th>
|
|
||||||
<th>Username</th>
|
|
||||||
<th class="text-center">Databases</th>
|
|
||||||
<th>Linked Node</th>
|
|
||||||
<th></th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
@foreach($hosts as $database)
|
|
||||||
<tr>
|
|
||||||
<td>{{ $database->name }}</td>
|
|
||||||
<td><code>{{ $database->host }}:{{ $database->port }}</code></td>
|
|
||||||
<td>{{ $database->username }}</td>
|
|
||||||
<td class="text-center">{{ $database->databases_count }}</td>
|
|
||||||
<td>@if(is_null($database->node))<em>unlinked</em>@else{{ $database->node->name }}@endif</td>
|
|
||||||
<td class="text-center"><a href="#" class="text-danger" data-action="delete" data-type="delete-server" data-attr="{{ $database->id }}"><i class="fa fa-trash-o"></i></a></td>
|
|
||||||
</tr>
|
|
||||||
@endforeach
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
<div class="col-md-12 text-center">
|
|
||||||
{{ $hosts->appends('tab', 'tab_dbservers')->render() }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
$(document).ready(function () {
|
|
||||||
$('#sidebar_links').find("a[href='/admin/databases']").addClass('active');
|
|
||||||
$('[data-action="delete"]').click(function (event) {
|
|
||||||
event.preventDefault();
|
|
||||||
var self = $(this);
|
|
||||||
swal({
|
|
||||||
title: '',
|
|
||||||
type: 'warning',
|
|
||||||
text: 'Are you sure that you want to remove this database from the system?',
|
|
||||||
showCancelButton: true,
|
|
||||||
confirmButtonText: 'Delete',
|
|
||||||
confirmButtonColor: '#d9534f',
|
|
||||||
closeOnConfirm: false
|
|
||||||
}, function () {
|
|
||||||
$.ajax({
|
|
||||||
method: 'DELETE',
|
|
||||||
url: '{{ route('admin.databases') }}/' + self.data('type') + '/' + self.data('attr'),
|
|
||||||
headers: {
|
|
||||||
'X-CSRF-TOKEN': '{{ csrf_token() }}'
|
|
||||||
}
|
|
||||||
}).done(function () {
|
|
||||||
self.parent().parent().slideUp();
|
|
||||||
swal({
|
|
||||||
title: '',
|
|
||||||
type: 'success',
|
|
||||||
text: ''
|
|
||||||
});
|
|
||||||
}).fail(function (jqXHR) {
|
|
||||||
console.error(jqXHR);
|
|
||||||
swal({
|
|
||||||
type: 'error',
|
|
||||||
title: 'Whoops!',
|
|
||||||
text: (typeof jqXHR.responseJSON.error !== 'undefined') ? jqXHR.responseJSON.error : 'An error occured while processing this request.'
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
@endsection
|
|
@ -1,103 +0,0 @@
|
|||||||
{{-- Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com> --}}
|
|
||||||
|
|
||||||
{{-- Permission is hereby granted, free of charge, to any person obtaining a copy --}}
|
|
||||||
{{-- of this software and associated documentation files (the "Software"), to deal --}}
|
|
||||||
{{-- in the Software without restriction, including without limitation the rights --}}
|
|
||||||
{{-- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell --}}
|
|
||||||
{{-- copies of the Software, and to permit persons to whom the Software is --}}
|
|
||||||
{{-- furnished to do so, subject to the following conditions: --}}
|
|
||||||
|
|
||||||
{{-- The above copyright notice and this permission notice shall be included in all --}}
|
|
||||||
{{-- copies or substantial portions of the Software. --}}
|
|
||||||
|
|
||||||
{{-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR --}}
|
|
||||||
{{-- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, --}}
|
|
||||||
{{-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE --}}
|
|
||||||
{{-- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER --}}
|
|
||||||
{{-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, --}}
|
|
||||||
{{-- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE --}}
|
|
||||||
{{-- SOFTWARE. --}}
|
|
||||||
@extends('layouts.admin')
|
|
||||||
|
|
||||||
@section('title')
|
|
||||||
Add New Database Server
|
|
||||||
@endsection
|
|
||||||
|
|
||||||
@section('content')
|
|
||||||
<div class="col-md-12">
|
|
||||||
<ul class="breadcrumb">
|
|
||||||
<li><a href="/admin">Admin Control</a></li>
|
|
||||||
<li><a href="/admin/databases">Databases</a></li>
|
|
||||||
<li class="active">New Database Server</li>
|
|
||||||
</ul>
|
|
||||||
<h3>New Database Server</h3><hr />
|
|
||||||
<div class="alert alert-info">If you are trying to add a new database to an existing server please visit that server's control page and visit the 'Databases' tab. This page is for adding a new database server that individual per-server databases can be deployed to.</div>
|
|
||||||
<form action="{{ route('admin.databases.new') }}" method="POST">
|
|
||||||
<div class="row">
|
|
||||||
<div class="form-group col-xs-6">
|
|
||||||
<label class="control-label">Descriptive Name:</label>
|
|
||||||
<div>
|
|
||||||
<input type="text" class="form-control" name="name" value="{{ old('name') }}" />
|
|
||||||
<p class="text-muted"><small>Enter a descriptive name for this database server.</small></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group col-xs-6">
|
|
||||||
<label class="control-label">Linked Node:</label>
|
|
||||||
<div>
|
|
||||||
<select name="linked_node" class="form-control">
|
|
||||||
<option>None</option>
|
|
||||||
@foreach($nodes as $node)
|
|
||||||
<option value="{{ $node->id }}" @if((int) old('linked_node') === $node->id) selected="selected" @endif>{{ $node->name }} ({{ $node->location->short }})</option>
|
|
||||||
@endforeach
|
|
||||||
</select>
|
|
||||||
<p class="text-muted"><small>A linked node implies that this Database Server is running on that node and it will be auto-selected when adding a database to servers on that node.</small></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<hr />
|
|
||||||
<div class="row">
|
|
||||||
<div class="form-group col-xs-6">
|
|
||||||
<label class="control-label">Database Host:</label>
|
|
||||||
<div>
|
|
||||||
<input type="text" class="form-control" name="host" value="{{ old('host') }}" />
|
|
||||||
<p class="text-muted"><small>Enter the IP address that this database server is listening on.</small></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group col-xs-6">
|
|
||||||
<label class="control-label">Database Port:</label>
|
|
||||||
<div>
|
|
||||||
<input type="text" class="form-control" name="port" value="{{ old('port', 3306) }}" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="form-group col-md-6">
|
|
||||||
<label class="control-label">Database Username:</label>
|
|
||||||
<div>
|
|
||||||
<input type="text" class="form-control" name="username" value="{{ old('username') }}" />
|
|
||||||
<p class="text-muted"><small>The panel must be able to access this database, you may need to allow access from <code>{{ Request::server('SERVER_ADDR') }}</code> for this user.</small></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group col-md-6">
|
|
||||||
<label class="control-label">Database User Passwod:</label>
|
|
||||||
<div>
|
|
||||||
<input type="password" class="form-control" autocomplete="off" name="password" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="well well-sm">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-12">
|
|
||||||
{!! csrf_field() !!}
|
|
||||||
<input type="submit" value="Add Database Server" class="btn btn-sm btn-primary" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
$(document).ready(function () {
|
|
||||||
$('#sidebar_links').find("a[href='/admin/databases']").addClass('active');
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
@endsection
|
|
@ -1,211 +0,0 @@
|
|||||||
{{-- Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com> --}}
|
|
||||||
|
|
||||||
{{-- Permission is hereby granted, free of charge, to any person obtaining a copy --}}
|
|
||||||
{{-- of this software and associated documentation files (the "Software"), to deal --}}
|
|
||||||
{{-- in the Software without restriction, including without limitation the rights --}}
|
|
||||||
{{-- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell --}}
|
|
||||||
{{-- copies of the Software, and to permit persons to whom the Software is --}}
|
|
||||||
{{-- furnished to do so, subject to the following conditions: --}}
|
|
||||||
|
|
||||||
{{-- The above copyright notice and this permission notice shall be included in all --}}
|
|
||||||
{{-- copies or substantial portions of the Software. --}}
|
|
||||||
|
|
||||||
{{-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR --}}
|
|
||||||
{{-- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, --}}
|
|
||||||
{{-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE --}}
|
|
||||||
{{-- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER --}}
|
|
||||||
{{-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, --}}
|
|
||||||
{{-- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE --}}
|
|
||||||
{{-- SOFTWARE. --}}
|
|
||||||
@extends('layouts.admin')
|
|
||||||
|
|
||||||
@section('title')
|
|
||||||
Location List
|
|
||||||
@endsection
|
|
||||||
|
|
||||||
@section('content')
|
|
||||||
<div class="col-md-12">
|
|
||||||
<ul class="breadcrumb">
|
|
||||||
<li><a href="/admin">Admin Control</a></li>
|
|
||||||
<li class="active">Locations</li>
|
|
||||||
</ul>
|
|
||||||
<h3>All Locations</h3><hr />
|
|
||||||
<table class="table table-bordered table-hover table-striped">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>Location</th>
|
|
||||||
<th>Description</th>
|
|
||||||
<th class="text-center">Nodes</th>
|
|
||||||
<th class="text-center">Servers</th>
|
|
||||||
<th class="text-center"></th>
|
|
||||||
<th class="text-center"></th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
@foreach ($locations as $location)
|
|
||||||
<tr>
|
|
||||||
<td><code>{{ $location->short }}</code></td>
|
|
||||||
<td>{{ $location->long }}</td>
|
|
||||||
<td class="text-center">{{ $location->nodes_count }}</td>
|
|
||||||
<td class="text-center">{{ $location->servers_count }}</td>
|
|
||||||
<td class="text-center"><a href="#edit"><i class="fa fa-wrench" data-toggle="modal" data-target="#editModal" data-action="edit" data-id="{{ $location->id }}" data-short="{{ $location->short }}" data-long="{{ $location->long }}"></i></a></td>
|
|
||||||
<td class="text-center"><a href="#delete" class="text-danger" data-action="delete" data-id="{{ $location->id }}"><i class="fa fa-trash-o"></i></a></td>
|
|
||||||
</tr>
|
|
||||||
@endforeach
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-12 text-center">{!! $locations->render() !!}</div>
|
|
||||||
</div>
|
|
||||||
<div class="well">
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-md-12">
|
|
||||||
<button class="btn btn-sm btn-success" data-toggle="modal" data-target="#addModal">Add New Location</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="modal fade" id="editModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel">
|
|
||||||
<div class="modal-dialog" role="document">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
|
||||||
<h4 class="modal-title">Editing Location</h4>
|
|
||||||
</div>
|
|
||||||
<form action="{{ route('admin.locations') }}" method="POST" id="editLocationForm">
|
|
||||||
<div class="modal-body">
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="location-short" class="control-label">Location Code:</label>
|
|
||||||
<input type="text" class="form-control" id="location-short">
|
|
||||||
<p class="text-muted"><small>This should be a short identifier for this location (e.g. <code>ny1</code>). This field is limited to a maximum of 10 characters from the following list: <code>a-zA-Z0-9_-.</code></small></p>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="location-long" class="control-label">Description:</label>
|
|
||||||
<input type="text" class="form-control" id="location-long">
|
|
||||||
<p class="text-muted"><small>This should be a longer description of the location for internal reference.</small></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="modal-footer">
|
|
||||||
<input type="hidden" id="location-id">
|
|
||||||
<button type="button" class="btn btn-sm btn-default" data-dismiss="modal">Close</button>
|
|
||||||
<button type="submit" class="btn btn-sm btn-primary">Edit Location</button>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="modal fade" id="addModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel">
|
|
||||||
<div class="modal-dialog" role="document">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
|
||||||
<h4 class="modal-title">Add New Location</h4>
|
|
||||||
</div>
|
|
||||||
<form action="{{ route('admin.locations') }}" method="POST" id="addLocationForm">
|
|
||||||
<div class="modal-body">
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="short" class="control-label">Location Code:</label>
|
|
||||||
<div>
|
|
||||||
<input type="text" class="form-control" name="short" value="{{ old('short') }}">
|
|
||||||
<p class="text-muted"><small>This should be a short identifier for this location (e.g. <code>ny1</code>). This field is limited to a maximum of 10 characters from the following list: <code>a-zA-Z0-9_-.</code></small></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="long" class="control-label">Description:</label>
|
|
||||||
<div>
|
|
||||||
<input type="text" class="form-control" name="long" value="{{ old('long') }}">
|
|
||||||
<p class="text-muted"><small>This should be a longer description of the location for internal reference.</small></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="modal-footer">
|
|
||||||
{!! csrf_field() !!}
|
|
||||||
<button type="button" class="btn btn-sm btn-default" data-dismiss="modal">Close</button>
|
|
||||||
<button type="submit" class="btn btn-sm btn-primary">Add Location</button>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<script>
|
|
||||||
$(document).ready(function () {
|
|
||||||
$('#sidebar_links').find("a[href='/admin/locations']").addClass('active');
|
|
||||||
$('#editModal').on('show.bs.modal', function (event) {
|
|
||||||
var button = $(event.relatedTarget);
|
|
||||||
var short = button.data('short');
|
|
||||||
var long = button.data('long');
|
|
||||||
var id = button.data('id');
|
|
||||||
var modal = $(this);
|
|
||||||
|
|
||||||
modal.find('#location-id').val(id);
|
|
||||||
modal.find('#location-short').val(short);
|
|
||||||
modal.find('#location-long').val(long);
|
|
||||||
});
|
|
||||||
$('#editLocationForm').submit(function (event) {
|
|
||||||
event.preventDefault();
|
|
||||||
$.ajax({
|
|
||||||
method: 'PATCH',
|
|
||||||
url: '{{ route('admin.locations') }}/' + $('#location-id').val(),
|
|
||||||
headers: {
|
|
||||||
'X-CSRF-TOKEN': '{{ csrf_token() }}'
|
|
||||||
},
|
|
||||||
data: {
|
|
||||||
short: $('#location-short').val(),
|
|
||||||
long: $('#location-long').val()
|
|
||||||
}
|
|
||||||
}).done(function (data) {
|
|
||||||
swal({
|
|
||||||
type: 'success',
|
|
||||||
title: '',
|
|
||||||
text: 'Successfully updated location information.',
|
|
||||||
closeOnConfirm: false,
|
|
||||||
showLoaderOnConfirm: true
|
|
||||||
}, function () {
|
|
||||||
window.location = '{{ route('admin.locations') }}';
|
|
||||||
});
|
|
||||||
}).fail(function (jqXHR) {
|
|
||||||
console.error(jqXHR);
|
|
||||||
swal({
|
|
||||||
type: 'error',
|
|
||||||
title: 'Whoops!',
|
|
||||||
text: (typeof jqXHR.responseJSON.error !== 'undefined') ? jqXHR.responseJSON.error : 'An error occured while processing this request.'
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
$('[data-action="delete"]').click(function (event) {
|
|
||||||
event.preventDefault();
|
|
||||||
var self = $(this);
|
|
||||||
swal({
|
|
||||||
type: 'warning',
|
|
||||||
title: '',
|
|
||||||
text: 'Do you really want to delete this location?',
|
|
||||||
showCancelButton: true,
|
|
||||||
closeOnConfirm: false,
|
|
||||||
showLoaderOnConfirm: true
|
|
||||||
}, function () {
|
|
||||||
$.ajax({
|
|
||||||
method: 'DELETE',
|
|
||||||
url: '{{ route('admin.locations') }}/' + self.data('id'),
|
|
||||||
headers: {
|
|
||||||
'X-CSRF-TOKEN': '{{ csrf_token() }}'
|
|
||||||
}
|
|
||||||
}).done(function () {
|
|
||||||
swal({
|
|
||||||
type: 'success',
|
|
||||||
title: '',
|
|
||||||
text: 'Location was successfully deleted.'
|
|
||||||
});
|
|
||||||
self.parent().parent().slideUp();
|
|
||||||
}).fail(function (jqXHR) {
|
|
||||||
console.error(jqXHR);
|
|
||||||
swal({
|
|
||||||
type: 'error',
|
|
||||||
title: 'Whoops!',
|
|
||||||
text: (typeof jqXHR.responseJSON.error !== 'undefined') ? jqXHR.responseJSON.error : 'An error occured while processing this request.'
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
@endsection
|
|
0
resources/views/vendor/.gitkeep
vendored
0
resources/views/vendor/.gitkeep
vendored
@ -1,22 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
if (! empty($greeting)) {
|
|
||||||
echo $greeting, "\n\n";
|
|
||||||
} else {
|
|
||||||
echo $level == 'error' ? 'Whoops!' : 'Hello!', "\n\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (! empty($introLines)) {
|
|
||||||
echo implode("\n", $introLines), "\n\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($actionText)) {
|
|
||||||
echo "{$actionText}: {$actionUrl}", "\n\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (! empty($outroLines)) {
|
|
||||||
echo implode("\n", $outroLines), "\n\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
echo 'Regards,', "\n";
|
|
||||||
echo Settings::get('company', 'Pterodactyl Panel'), "\n";
|
|
192
resources/views/vendor/notifications/email.blade.php
vendored
192
resources/views/vendor/notifications/email.blade.php
vendored
@ -1,192 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
|
||||||
|
|
||||||
<style type="text/css" rel="stylesheet" media="all">
|
|
||||||
/* Media Queries */
|
|
||||||
@media only screen and (max-width: 500px) {
|
|
||||||
.button {
|
|
||||||
width: 100% !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<?php
|
|
||||||
|
|
||||||
$style = [
|
|
||||||
/* Layout ------------------------------ */
|
|
||||||
|
|
||||||
'body' => 'margin: 0; padding: 0; width: 100%; background-color: #F2F4F6;',
|
|
||||||
'email-wrapper' => 'width: 100%; margin: 0; padding: 0; background-color: #F2F4F6;',
|
|
||||||
|
|
||||||
/* Masthead ----------------------- */
|
|
||||||
|
|
||||||
'email-masthead' => 'padding: 25px 0; text-align: center;',
|
|
||||||
'email-masthead_name' => 'font-size: 16px; font-weight: bold; color: #2F3133; text-decoration: none; text-shadow: 0 1px 0 white;',
|
|
||||||
|
|
||||||
'email-body' => 'width: 100%; margin: 0; padding: 0; border-top: 1px solid #EDEFF2; border-bottom: 1px solid #EDEFF2; background-color: #FFF;',
|
|
||||||
'email-body_inner' => 'width: auto; max-width: 570px; margin: 0 auto; padding: 0;',
|
|
||||||
'email-body_cell' => 'padding: 35px;',
|
|
||||||
|
|
||||||
'email-footer' => 'width: auto; max-width: 570px; margin: 0 auto; padding: 0; text-align: center;',
|
|
||||||
'email-footer_cell' => 'color: #AEAEAE; padding: 35px; text-align: center;',
|
|
||||||
|
|
||||||
/* Body ------------------------------ */
|
|
||||||
|
|
||||||
'body_action' => 'width: 100%; margin: 30px auto; padding: 0; text-align: center;',
|
|
||||||
'body_sub' => 'margin-top: 25px; padding-top: 25px; border-top: 1px solid #EDEFF2;',
|
|
||||||
|
|
||||||
/* Type ------------------------------ */
|
|
||||||
|
|
||||||
'anchor' => 'color: #3869D4;',
|
|
||||||
'header-1' => 'margin-top: 0; color: #2F3133; font-size: 19px; font-weight: bold; text-align: left;',
|
|
||||||
'paragraph' => 'margin-top: 0; color: #74787E; font-size: 16px; line-height: 1.5em;',
|
|
||||||
'paragraph-sub' => 'margin-top: 0; color: #74787E; font-size: 12px; line-height: 1.5em;',
|
|
||||||
'paragraph-center' => 'text-align: center;',
|
|
||||||
|
|
||||||
/* Buttons ------------------------------ */
|
|
||||||
|
|
||||||
'button' => 'display: block; display: inline-block; width: 200px; min-height: 20px; padding: 10px;
|
|
||||||
background-color: #3869D4; border-radius: 3px; color: #ffffff; font-size: 15px; line-height: 25px;
|
|
||||||
text-align: center; text-decoration: none; -webkit-text-size-adjust: none;',
|
|
||||||
|
|
||||||
'button--green' => 'background-color: #22BC66;',
|
|
||||||
'button--red' => 'background-color: #dc4d2f;',
|
|
||||||
'button--blue' => 'background-color: #3869D4;',
|
|
||||||
];
|
|
||||||
?>
|
|
||||||
|
|
||||||
<?php $fontFamily = 'font-family: Arial, \'Helvetica Neue\', Helvetica, sans-serif;'; ?>
|
|
||||||
|
|
||||||
<body style="{{ $style['body'] }}">
|
|
||||||
<table width="100%" cellpadding="0" cellspacing="0">
|
|
||||||
<tr>
|
|
||||||
<td style="{{ $style['email-wrapper'] }}" align="center">
|
|
||||||
<table width="100%" cellpadding="0" cellspacing="0">
|
|
||||||
<!-- Logo -->
|
|
||||||
<tr>
|
|
||||||
<td style="{{ $style['email-masthead'] }}">
|
|
||||||
<a style="{{ $fontFamily }} {{ $style['email-masthead_name'] }}" href="{{ url('/') }}" target="_blank">
|
|
||||||
{{ Settings::get('company', 'Pterodactyl Panel') }}
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<!-- Email Body -->
|
|
||||||
<tr>
|
|
||||||
<td style="{{ $style['email-body'] }}" width="100%">
|
|
||||||
<table style="{{ $style['email-body_inner'] }}" align="center" width="570" cellpadding="0" cellspacing="0">
|
|
||||||
<tr>
|
|
||||||
<td style="{{ $fontFamily }} {{ $style['email-body_cell'] }}">
|
|
||||||
<!-- Greeting -->
|
|
||||||
<h1 style="{{ $style['header-1'] }}">
|
|
||||||
@if (! empty($greeting))
|
|
||||||
{{ $greeting }}
|
|
||||||
@else
|
|
||||||
@if ($level == 'error')
|
|
||||||
Whoops!
|
|
||||||
@else
|
|
||||||
Hello!
|
|
||||||
@endif
|
|
||||||
@endif
|
|
||||||
</h1>
|
|
||||||
|
|
||||||
<!-- Intro -->
|
|
||||||
@foreach ($introLines as $line)
|
|
||||||
<p style="{{ $style['paragraph'] }}">
|
|
||||||
{{ $line }}
|
|
||||||
</p>
|
|
||||||
@endforeach
|
|
||||||
|
|
||||||
<!-- Action Button -->
|
|
||||||
@if (isset($actionText))
|
|
||||||
<table style="{{ $style['body_action'] }}" align="center" width="100%" cellpadding="0" cellspacing="0">
|
|
||||||
<tr>
|
|
||||||
<td align="center">
|
|
||||||
<?php
|
|
||||||
switch ($level) {
|
|
||||||
case 'success':
|
|
||||||
$actionColor = 'button--green';
|
|
||||||
break;
|
|
||||||
case 'error':
|
|
||||||
$actionColor = 'button--red';
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
$actionColor = 'button--blue';
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
|
|
||||||
<a href="{{ $actionUrl }}"
|
|
||||||
style="{{ $fontFamily }} {{ $style['button'] }} {{ $style[$actionColor] }}"
|
|
||||||
class="button"
|
|
||||||
target="_blank">
|
|
||||||
{{ $actionText }}
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
@endif
|
|
||||||
|
|
||||||
<!-- Outro -->
|
|
||||||
@foreach ($outroLines as $line)
|
|
||||||
<p style="{{ $style['paragraph'] }}">
|
|
||||||
{{ $line }}
|
|
||||||
</p>
|
|
||||||
@endforeach
|
|
||||||
|
|
||||||
<!-- Salutation -->
|
|
||||||
<p style="{{ $style['paragraph'] }}">
|
|
||||||
Regards,<br>{{ Settings::get('company') }}
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<!-- Sub Copy -->
|
|
||||||
@if (isset($actionText))
|
|
||||||
<table style="{{ $style['body_sub'] }}">
|
|
||||||
<tr>
|
|
||||||
<td style="{{ $fontFamily }}">
|
|
||||||
<p style="{{ $style['paragraph-sub'] }}">
|
|
||||||
If you’re having trouble clicking the "{{ $actionText }}" button,
|
|
||||||
copy and paste the URL below into your web browser:
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p style="{{ $style['paragraph-sub'] }}">
|
|
||||||
<a style="{{ $style['anchor'] }}" href="{{ $actionUrl }}" target="_blank">
|
|
||||||
{{ $actionUrl }}
|
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
@endif
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<!-- Footer -->
|
|
||||||
<tr>
|
|
||||||
<td>
|
|
||||||
<table style="{{ $style['email-footer'] }}" align="center" width="570" cellpadding="0" cellspacing="0">
|
|
||||||
<tr>
|
|
||||||
<td style="{{ $fontFamily }} {{ $style['email-footer_cell'] }}">
|
|
||||||
<p style="{{ $style['paragraph-sub'] }}">
|
|
||||||
© {{ date('Y') }}
|
|
||||||
<a style="{{ $style['anchor'] }}" href="{{ url('/') }}" target="_blank">{{ Settings::get('company', 'Pterodactyl Panel') }}</a>.
|
|
||||||
All rights reserved.
|
|
||||||
</p>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,36 +0,0 @@
|
|||||||
@if ($paginator->count() > 1)
|
|
||||||
<ul class="pagination">
|
|
||||||
<!-- Previous Page Link -->
|
|
||||||
@if ($paginator->onFirstPage())
|
|
||||||
<li class="page-item disabled"><span class="page-link">«</span></li>
|
|
||||||
@else
|
|
||||||
<li class="page-item"><a class="page-link" href="{{ $paginator->previousPageUrl() }}" rel="prev">«</a></li>
|
|
||||||
@endif
|
|
||||||
|
|
||||||
<!-- Pagination Elements -->
|
|
||||||
@foreach ($elements as $element)
|
|
||||||
<!-- "Three Dots" Separator -->
|
|
||||||
@if (is_string($element))
|
|
||||||
<li class="page-item disabled"><span class="page-link">{{ $element }}</span></li>
|
|
||||||
@endif
|
|
||||||
|
|
||||||
<!-- Array Of Links -->
|
|
||||||
@if (is_array($element))
|
|
||||||
@foreach ($element as $page => $url)
|
|
||||||
@if ($page == $paginator->currentPage())
|
|
||||||
<li class="page-item active"><span class="page-link">{{ $page }}</span></li>
|
|
||||||
@else
|
|
||||||
<li class="page-item"><a class="page-link" href="{{ $url }}">{{ $page }}</a></li>
|
|
||||||
@endif
|
|
||||||
@endforeach
|
|
||||||
@endif
|
|
||||||
@endforeach
|
|
||||||
|
|
||||||
<!-- Next Page Link -->
|
|
||||||
@if ($paginator->hasMorePages())
|
|
||||||
<li class="page-item"><a class="page-link" href="{{ $paginator->nextPageUrl() }}" rel="next">»</a></li>
|
|
||||||
@else
|
|
||||||
<li class="page-item disabled"><span class="page-link">»</span></li>
|
|
||||||
@endif
|
|
||||||
</ul>
|
|
||||||
@endif
|
|
@ -1,36 +0,0 @@
|
|||||||
@if ($paginator->lastPage() > 1)
|
|
||||||
<ul class="pagination">
|
|
||||||
<!-- Previous Page Link -->
|
|
||||||
@if ($paginator->onFirstPage())
|
|
||||||
{{-- <li class="disabled"><span>«</span></li> --}}
|
|
||||||
@else
|
|
||||||
<li><a href="{{ $paginator->previousPageUrl() }}" rel="prev">«</a></li>
|
|
||||||
@endif
|
|
||||||
|
|
||||||
<!-- Pagination Elements -->
|
|
||||||
@foreach ($elements as $element)
|
|
||||||
<!-- "Three Dots" Separator -->
|
|
||||||
@if (is_string($element))
|
|
||||||
<li class="disabled"><span>{{ $element }}</span></li>
|
|
||||||
@endif
|
|
||||||
|
|
||||||
<!-- Array Of Links -->
|
|
||||||
@if (is_array($element))
|
|
||||||
@foreach ($element as $page => $url)
|
|
||||||
@if ($page == $paginator->currentPage())
|
|
||||||
<li class="active"><span>{{ $page }}</span></li>
|
|
||||||
@else
|
|
||||||
<li><a href="{{ $url }}">{{ $page }}</a></li>
|
|
||||||
@endif
|
|
||||||
@endforeach
|
|
||||||
@endif
|
|
||||||
@endforeach
|
|
||||||
|
|
||||||
<!-- Next Page Link -->
|
|
||||||
@if ($paginator->hasMorePages())
|
|
||||||
<li><a href="{{ $paginator->nextPageUrl() }}" rel="next">»</a></li>
|
|
||||||
@else
|
|
||||||
{{-- <li class="disabled"><span>»</span></li> --}}
|
|
||||||
@endif
|
|
||||||
</ul>
|
|
||||||
@endif
|
|
@ -1,17 +0,0 @@
|
|||||||
@if ($paginator->count() > 1)
|
|
||||||
<ul class="pagination">
|
|
||||||
<!-- Previous Page Link -->
|
|
||||||
@if ($paginator->onFirstPage())
|
|
||||||
<li class="page-item disabled"><span class="page-link">«</span></li>
|
|
||||||
@else
|
|
||||||
<li class="page-item"><a class="page-link" href="{{ $paginator->previousPageUrl() }}" rel="prev">«</a></li>
|
|
||||||
@endif
|
|
||||||
|
|
||||||
<!-- Next Page Link -->
|
|
||||||
@if ($paginator->hasMorePages())
|
|
||||||
<li class="page-item"><a class="page-link" href="{{ $paginator->nextPageUrl() }}" rel="next">»</a></li>
|
|
||||||
@else
|
|
||||||
<li class="page-item disabled"><span class="page-link">»</span></li>
|
|
||||||
@endif
|
|
||||||
</ul>
|
|
||||||
@endif
|
|
@ -1,17 +0,0 @@
|
|||||||
@if ($paginator->count() > 1)
|
|
||||||
<ul class="pagination">
|
|
||||||
<!-- Previous Page Link -->
|
|
||||||
@if ($paginator->onFirstPage())
|
|
||||||
<li class="disabled"><span>«</span></li>
|
|
||||||
@else
|
|
||||||
<li><a href="{{ $paginator->previousPageUrl() }}" rel="prev">«</a></li>
|
|
||||||
@endif
|
|
||||||
|
|
||||||
<!-- Next Page Link -->
|
|
||||||
@if ($paginator->hasMorePages())
|
|
||||||
<li><a href="{{ $paginator->nextPageUrl() }}" rel="next">»</a></li>
|
|
||||||
@else
|
|
||||||
<li class="disabled"><span>»</span></li>
|
|
||||||
@endif
|
|
||||||
</ul>
|
|
||||||
@endif
|
|
Loading…
Reference in New Issue
Block a user