Move everything over to pterodactyl theme
This commit is contained in:
parent
198a021a97
commit
955d89c0c6
15 changed files with 45 additions and 808 deletions
|
@ -13,6 +13,14 @@ return [
|
|||
'header' => 'File Not Found',
|
||||
'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' => [
|
||||
'header' => 'Your Servers',
|
||||
|
|
|
@ -27,7 +27,6 @@
|
|||
@endsection
|
||||
|
||||
@section('content')
|
||||
<!-- This is why we don't let Pterodactyl's make links... fat fingered dinosaurs... -->
|
||||
<div class="row">
|
||||
<div class="col-md-8 col-md-offset-2 col-sm-10 col-sm-offset-1 col-xs-12">
|
||||
<div class="box box-danger">
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
<body>
|
||||
<div class="container">
|
||||
<div class="content">
|
||||
<div class="title">Be right back.</div>
|
||||
<div class="title">Be right back!</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
|
@ -17,24 +17,30 @@
|
|||
{{-- 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.master')
|
||||
@extends('layouts.error')
|
||||
|
||||
@section('title', '503: Server Temporarily Unavaliable')
|
||||
@section('title')
|
||||
@lang('base.errors.installing.header')
|
||||
@endsection
|
||||
|
||||
@section('content-header')
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<div class="col-md-12">
|
||||
<div class="panel panel-danger">
|
||||
<div class="panel-heading">
|
||||
<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="row">
|
||||
<div class="col-md-8 col-md-offset-2 col-sm-10 col-sm-offset-1 col-xs-12">
|
||||
<div class="box box-info">
|
||||
<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>
|
||||
<p style="text-align:center;"><a href="{{ URL::previous() }}">Take me back</a> or <a href="/">go home</a>.</p>
|
||||
</div>
|
||||
@endsection
|
|
@ -17,20 +17,28 @@
|
|||
{{-- 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.master')
|
||||
@extends('layouts.error')
|
||||
|
||||
@section('title', '503: Server Temporarily Unavaliable')
|
||||
@section('title')
|
||||
@lang('base.errors.suspended.header')
|
||||
@endsection
|
||||
|
||||
@section('content-header')
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<div class="col-md-12">
|
||||
<div class="panel panel-danger">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">HTTP 403: Access Denied</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<p style="margin-bottom:0;">This server has been suspended and cannot be accessed.</p>
|
||||
<div class="row">
|
||||
<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-body text-center">
|
||||
<h1 class="text-red" style="font-size: 160px !important;font-weight: 100 !important;">401</h1>
|
||||
<p class="text-muted">@lang('base.errors.suspended.desc')</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>
|
||||
<p style="text-align:center;"><a href="{{ URL::previous() }}">Take me back</a> or <a href="/">go home</a>.</p>
|
||||
</div>
|
||||
@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 a new issue