Merge branch 'develop' into feature/vuejs
This commit is contained in:
commit
5f70502f20
31 changed files with 835 additions and 7 deletions
|
@ -21,6 +21,11 @@ return [
|
|||
'header' => 'Server Suspended',
|
||||
'desc' => 'This server has been suspended and cannot be accessed.',
|
||||
],
|
||||
'maintenance' => [
|
||||
'header' => 'Node Under Maintenance',
|
||||
'title' => 'Temporarily Unavailable',
|
||||
'desc' => 'This node is under maintenance, therefore your server can temporarily not be accessed.',
|
||||
],
|
||||
],
|
||||
'index' => [
|
||||
'header' => 'Your Servers',
|
||||
|
|
|
@ -74,6 +74,7 @@ return [
|
|||
'tasks' => 'Tasks',
|
||||
'seconds' => 'Seconds',
|
||||
'minutes' => 'Minutes',
|
||||
'under_maintenance' => 'Under Maintenance',
|
||||
'days' => [
|
||||
'sun' => 'Sunday',
|
||||
'mon' => 'Monday',
|
||||
|
|
|
@ -56,7 +56,7 @@
|
|||
@foreach ($nodes as $node)
|
||||
<tr>
|
||||
<td class="text-center text-muted left-icon" data-action="ping" data-secret="{{ $node->daemonSecret }}" data-location="{{ $node->scheme }}://{{ $node->fqdn }}:{{ $node->daemonListen }}/v1"><i class="fa fa-fw fa-refresh fa-spin"></i></td>
|
||||
<td><a href="{{ route('admin.nodes.view', $node->id) }}">{{ $node->name }}</a></td>
|
||||
<td>{!! $node->maintenance_mode ? '<span class="label label-warning"><i class="fa fa-wrench"></i></span> ' : '' !!}<a href="{{ route('admin.nodes.view', $node->id) }}">{{ $node->name }}</a></td>
|
||||
<td>{{ $node->location->short }}</td>
|
||||
<td>{{ $node->memory }} MB</td>
|
||||
<td>{{ $node->disk }} MB</td>
|
||||
|
|
|
@ -96,6 +96,17 @@
|
|||
</div>
|
||||
<div class="box-body">
|
||||
<div class="row">
|
||||
@if($node->maintenance_mode)
|
||||
<div class="col-sm-12">
|
||||
<div class="info-box bg-orange">
|
||||
<span class="info-box-icon"><i class="ion ion-wrench"></i></span>
|
||||
<div class="info-box-content" style="padding: 23px 10px 0;">
|
||||
<span class="info-box-text">This node is under</span>
|
||||
<span class="info-box-number">Maintenance</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
<div class="col-sm-12">
|
||||
<div class="info-box bg-{{ $stats['disk']['css'] }}">
|
||||
<span class="info-box-icon"><i class="ion ion-ios-folder-outline"></i></span>
|
||||
|
|
|
@ -108,6 +108,20 @@
|
|||
</div>
|
||||
<p class="text-muted small">If you are running the daemon behind a proxy such as Cloudflare, select this to have the daemon skip looking for certificates on boot.</p>
|
||||
</div>
|
||||
<div class="form-group col-xs-12">
|
||||
<label class="form-label"><span class="label label-warning"><i class="fa fa-wrench"></i></span> Maintenance Mode</label>
|
||||
<div>
|
||||
<div class="radio radio-success radio-inline">
|
||||
<input type="radio" id="pMaintenanceFalse" value="0" name="maintenance_mode" {{ (old('behind_proxy', $node->maintenance_mode) == false) ? 'checked' : '' }}>
|
||||
<label for="pMaintenanceFalse"> Disabled</label>
|
||||
</div>
|
||||
<div class="radio radio-warning radio-inline">
|
||||
<input type="radio" id="pMaintenanceTrue" value="1" name="maintenance_mode" {{ (old('behind_proxy', $node->maintenance_mode) == true) ? 'checked' : '' }}>
|
||||
<label for="pMaintenanceTrue"> Enabled</label>
|
||||
</div>
|
||||
</div>
|
||||
<p class="text-muted small">If the node is marked as 'Under Maintenance' users won't be able to access servers that are on this node.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
141
resources/themes/pterodactyl/admin/statistics.blade.php
Normal file
141
resources/themes/pterodactyl/admin/statistics.blade.php
Normal file
|
@ -0,0 +1,141 @@
|
|||
@extends('layouts.admin')
|
||||
@include('partials/admin.settings.nav', ['activeTab' => 'basic'])
|
||||
|
||||
@section('title')
|
||||
Statistics Overview
|
||||
@endsection
|
||||
|
||||
@section('content-header')
|
||||
<h1>Statistics Overview<small>Monitor your panel usage.</small></h1>
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="{{ route('admin.index') }}">Admin</a></li>
|
||||
<li class="active">Statistics</li>
|
||||
</ol>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-md-8">
|
||||
<div class="box box-primary">
|
||||
<div class="box-header with-border">
|
||||
Servers
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<div class="col-xs-12 col-md-6">
|
||||
<canvas id="servers_chart" width="100%" height="50"></canvas>
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-6">
|
||||
<canvas id="status_chart" width="100%" height="50"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-4">
|
||||
<div class="info-box bg-blue">
|
||||
<span class="info-box-icon"><i class="fa fa-server"></i></span>
|
||||
<div class="info-box-content number-info-box-content">
|
||||
<span class="info-box-text">Servers</span>
|
||||
<span class="info-box-number">{{ count($servers) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="info-box bg-blue">
|
||||
<span class="info-box-icon"><i class="ion ion-ios-barcode-outline"></i></span>
|
||||
<div class="info-box-content number-info-box-content">
|
||||
<span class="info-box-text">Total used Memory (in MB)</span>
|
||||
<span class="info-box-number">{{ $totalServerRam }}MB</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="info-box bg-blue">
|
||||
<span class="info-box-icon"><i class="ion ion-stats-bars"></i></span>
|
||||
<div class="info-box-content number-info-box-content">
|
||||
<span class="info-box-text">Total used Disk (in MB)</span>
|
||||
<span class="info-box-number">{{ $totalServerDisk }}MB</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-md-8">
|
||||
<div class="box box-primary">
|
||||
<div class="box-header with-border">
|
||||
Nodes
|
||||
</div>
|
||||
<div class="box-body">
|
||||
<div class="col-xs-12 col-md-6">
|
||||
<canvas id="ram_chart" width="100%" height="50"></canvas>
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-6">
|
||||
<canvas id="disk_chart" width="100%" height="50"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-4">
|
||||
<div class="info-box bg-blue">
|
||||
<span class="info-box-icon"><i class="ion ion-ios-barcode-outline"></i></span>
|
||||
<div class="info-box-content number-info-box-content">
|
||||
<span class="info-box-text">Total RAM</span>
|
||||
<span class="info-box-number">{{ $totalNodeRam }}MB</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="info-box bg-blue">
|
||||
<span class="info-box-icon"><i class="ion ion-stats-bars"></i></span>
|
||||
<div class="info-box-content number-info-box-content">
|
||||
<span class="info-box-text">Total Disk Space</span>
|
||||
<span class="info-box-number">{{ $totalNodeDisk }}MB</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="info-box bg-blue">
|
||||
<span class="info-box-icon"><i class="fa fa-location-arrow"></i></span>
|
||||
<div class="info-box-content number-info-box-content">
|
||||
<span class="info-box-text">Total Allocations</span>
|
||||
<span class="info-box-number">{{ $totalAllocations }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-md-3">
|
||||
<div class="info-box bg-blue">
|
||||
<span class="info-box-icon"><i class="fa fa-gamepad"></i></span>
|
||||
<div class="info-box-content number-info-box-content">
|
||||
<span class="info-box-text">Total Eggs</span>
|
||||
<span class="info-box-number">{{ $eggsCount }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-3">
|
||||
<div class="info-box bg-blue">
|
||||
<span class="info-box-icon"><i class="fa fa-users"></i></span>
|
||||
<div class="info-box-content number-info-box-content">
|
||||
<span class="info-box-text">Total Users</span>
|
||||
<span class="info-box-number">{{ $usersCount }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-3">
|
||||
<div class="info-box bg-blue">
|
||||
<span class="info-box-icon"><i class="fa fa-server"></i></span>
|
||||
<div class="info-box-content number-info-box-content">
|
||||
<span class="info-box-text">Total Nodes</span>
|
||||
<span class="info-box-number">{{ count($nodes) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-md-3">
|
||||
<div class="info-box bg-blue">
|
||||
<span class="info-box-icon"><i class="fa fa-database"></i></span>
|
||||
<div class="info-box-content number-info-box-content">
|
||||
<span class="info-box-text">Total Databases</span>
|
||||
<span class="info-box-number">{{ $databasesCount }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('footer-scripts')
|
||||
@parent
|
||||
{!! Theme::js('vendor/chartjs/chart.min.js') !!}
|
||||
{!! Theme::js('js/admin/statistics.js') !!}
|
||||
@endsection
|
|
@ -64,9 +64,15 @@
|
|||
<span class="label bg-blue">@lang('strings.subuser')</span>
|
||||
@endif
|
||||
</td>
|
||||
<td class="text-center" data-action="status">
|
||||
<span class="label label-default"><i class="fa fa-refresh fa-fw fa-spin"></i></span>
|
||||
</td>
|
||||
@if($server->node->maintenance_mode)
|
||||
<td class="text-center">
|
||||
<span class="label label-warning">@lang('strings.under_maintenance')</span>
|
||||
</td>
|
||||
@else
|
||||
<td class="text-center" data-action="status">
|
||||
<span class="label label-default"><i class="fa fa-refresh fa-fw fa-spin"></i></span>
|
||||
</td>
|
||||
@endif
|
||||
</tr>
|
||||
@if (! empty($server->description))
|
||||
<tr class="server-description">
|
||||
|
|
30
resources/themes/pterodactyl/errors/maintenance.blade.php
Normal file
30
resources/themes/pterodactyl/errors/maintenance.blade.php
Normal file
|
@ -0,0 +1,30 @@
|
|||
{{-- Pterodactyl - Panel --}}
|
||||
{{-- Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com> --}}
|
||||
|
||||
{{-- This software is licensed under the terms of the MIT license. --}}
|
||||
{{-- https://opensource.org/licenses/MIT --}}
|
||||
@extends('layouts.error')
|
||||
|
||||
@section('title')
|
||||
@lang('base.errors.maintenance.header')
|
||||
@endsection
|
||||
|
||||
@section('content-header')
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<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: 3em !important;font-weight: 100 !important;">@lang('base.errors.maintenance.title')</h1>
|
||||
<p class="text-muted">@lang('base.errors.maintenance.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>
|
||||
</div>
|
||||
@endsection
|
|
@ -80,6 +80,11 @@
|
|||
<i class="fa fa-home"></i> <span>Overview</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="{{ Route::currentRouteName() !== 'admin.statistics' ?: 'active' }}">
|
||||
<a href="{{ route('admin.statistics') }}">
|
||||
<i class="fa fa-tachometer"></i> <span>Statistics</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="{{ ! starts_with(Route::currentRouteName(), 'admin.settings') ?: 'active' }}">
|
||||
<a href="{{ route('admin.settings')}}">
|
||||
<i class="fa fa-wrench"></i> <span>Settings</span>
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
<header class="main-header">
|
||||
<a href="{{ route('index') }}" class="logo">
|
||||
<span class="logo-lg">{{ config('app.name', 'Pterodactyl') }}</span>
|
||||
<span class="logo-mini"><img src="favicons/android-chrome-192x192.png"></span>
|
||||
<span class="logo-mini"><img src="/favicons/android-chrome-192x192.png"></span>
|
||||
</a>
|
||||
<nav class="navbar navbar-static-top">
|
||||
<a href="#" class="sidebar-toggle" data-toggle="push-menu" role="button">
|
||||
|
|
|
@ -52,6 +52,7 @@
|
|||
<script>
|
||||
$(document).ready(function () {
|
||||
Editor.setValue($('#editorSetContent').val(), -1);
|
||||
Editor.getSession().setUndoManager(new ace.UndoManager());
|
||||
$('#editorLoadingOverlay').hide();
|
||||
});
|
||||
</script>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue