cleanup language

This commit is contained in:
1Day 2022-01-05 15:03:29 +01:00
parent df47880fd7
commit 7bd0f2a9d3
6 changed files with 428 additions and 406 deletions

View file

@ -20,7 +20,7 @@ class LanguageSettingsC
public function updateLanguageSettings(Request $request) public function updateLanguageSettings(Request $request)
{ {
$values=[ $values = [
//SETTINGS::VALUE => REQUEST-VALUE (coming from the html-form) //SETTINGS::VALUE => REQUEST-VALUE (coming from the html-form)
"SETTINGS::LOCALE:DEFAULT" => "defaultLanguage", "SETTINGS::LOCALE:DEFAULT" => "defaultLanguage",
"SETTINGS::LOCALE:DYNAMIC" => "autotranslate", "SETTINGS::LOCALE:DYNAMIC" => "autotranslate",
@ -29,9 +29,9 @@ class LanguageSettingsC
"SETTINGS::LOCALE:DATATABLES" => "datatable-language" "SETTINGS::LOCALE:DATATABLES" => "datatable-language"
]; ];
foreach($values as $key=>$value){ foreach ($values as $key => $value) {
Settings::where('key', $key)->update(['value' => $request->get($value)]); Settings::where('key', $key)->update(['value' => $request->get($value)]);
Cache::forget("setting" .':'. $key); Cache::forget("setting" . ':' . $key);
} }

View file

@ -18,4 +18,6 @@ class TranslationController extends Controller
Session::put('locale', $request->inputLocale); Session::put('locale', $request->inputLocale);
return redirect()->back(); return redirect()->back();
} }
} }

View file

@ -21,20 +21,20 @@ class SetLocale
*/ */
public function handle($request, Closure $next) public function handle($request, Closure $next)
{ {
if (Session::has('locale')) { if (Session::has('locale')) {
$locale = Session::get('locale', Settings::getValueByKey("SETTINGS::LOCALE:DEFAULT")); $locale = Session::get('locale', Settings::getValueByKey("SETTINGS::LOCALE:DEFAULT"));
} else {
if (Settings::getValueByKey("SETTINGS::LOCALE:DYNAMIC") == "false") {
$locale = Settings::getValueByKey("SETTINGS::LOCALE:DEFAULT");
} else { } else {
if (Settings::getValueByKey("SETTINGS::LOCALE:DYNAMIC") == "false") { $locale = substr($request->server('HTTP_ACCEPT_LANGUAGE'), 0, 2);
if (!in_array($locale, json_decode(Settings::getValueByKey("SETTINGS::LOCALE:AVAILABLE")))) {
$locale = Settings::getValueByKey("SETTINGS::LOCALE:DEFAULT"); $locale = Settings::getValueByKey("SETTINGS::LOCALE:DEFAULT");
}else{
$locale = substr($request->server('HTTP_ACCEPT_LANGUAGE'), 0, 2);
if (!in_array($locale, json_decode(Settings::getValueByKey("SETTINGS::LOCALE:AVAILABLE")))){
$locale = Settings::getValueByKey("SETTINGS::LOCALE:DEFAULT");
}
} }
} }
}
App::setLocale($locale); App::setLocale($locale);
return $next($request); return $next($request);

View file

@ -86,6 +86,19 @@ return [
'locale' =>"en", 'locale' =>"en",
/*
|--------------------------------------------------------------------------
| Available Languages
|--------------------------------------------------------------------------
|
| The application locale determines the default locale that will be used
| by the translation service provider. You are free to set this value
| to any of the locales which will be supported by the application.
|
*/
'available_locales' =>["en","cs","de","es","fr","hi","it","pl","zh"],
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Application Fallback Locale | Application Fallback Locale

View file

@ -12,10 +12,9 @@
<select id="languages" style="width:100%" <select id="languages" style="width:100%"
class="custom-select" name="languages[]" class="custom-select" name="languages[]"
multiple="multiple" autocomplete="off"> multiple="multiple" autocomplete="off">
<option value="de">German</option> @foreach(config("app.available_locales") as $lang)
<option value="en">English</option> <option value="{{$lang}}">{{__($lang)}}</option>
<option value="fr">French</option> @endforeach
<option value="cz">Czech</option>
</select> </select>
<label for="defaultLanguage">{{__("Default language")}}: <i data-toggle="popover" <label for="defaultLanguage">{{__("Default language")}}: <i data-toggle="popover"
@ -26,49 +25,51 @@
<select id="defaultLanguage" style="width:100%" <select id="defaultLanguage" style="width:100%"
class="custom-select" name="defaultLanguage" class="custom-select" name="defaultLanguage"
autocomplete="off"> autocomplete="off">
<option value="de">German</option> <option disabled
<option value="en">English</option> selected>{{__(\App\Models\Settings::getValueByKey("SETTINGS::LOCALE:DEFAULT"))}}</option>
<option value="fr">French</option> @foreach(config("app.available_locales") as $lang)
<option value="cz">Czech</option> <option value="{{$lang}}">{{__($lang)}}</option>
@endforeach
</select> </select>
</div> </div>
<label for="datatable-language">Datable Language <i data-toggle="popover" <label for="datatable-language">Datable Language <i data-toggle="popover"
data-trigger="hover" data-trigger="hover"
data-content="{{__('The Language of the Datatables. Grab the Language-Codes from here')}} https://datatables.net/plug-ins/i18n/" data-content="{{__('The Language of the Datatables. Grab the Language-Codes from here')}} https://datatables.net/plug-ins/i18n/"
class="fas fa-info-circle"></i></label> class="fas fa-info-circle"></i></label>
<input x-model="datatable-language" id="datatable-language" name="datatable-language" type="text" required <input x-model="datatable-language" id="datatable-language" name="datatable-language" type="text"
value="{{ App\Models\Settings::getValueByKey("SETTINGS::LOCALE:DATATABLES") }}" required
class="form-control @error('datatable-language') is-invalid @enderror"> value="{{ App\Models\Settings::getValueByKey("SETTINGS::LOCALE:DATATABLES") }}"
</div> class="form-control @error('datatable-language') is-invalid @enderror">
</div>
<div class="form-group">
<input value="true" id="autotranslate" name="autotranslate"
{{(\App\Models\Settings::getValueByKey("SETTINGS::LOCALE:DYNAMIC")?"checked":"")}}
type="checkbox">
<label for="autotranslate">{{__('Auto-translate')}} <i data-toggle="popover"
data-trigger="hover"
data-content="{{__('If this is checked, the Dashboard will translate itself to the Clients language, if available')}}"
class="fas fa-info-circle"></i></label>
<br/>
<input value="true" id="canClientChangeLanguage" name="canClientChangeLanguage"
{{(\App\Models\Settings::getValueByKey("SETTINGS::LOCALE:CLIENTS_CAN_CHANGE")?"checked":"")}}
type="checkbox">
<label for="canClientChangeLanguage">{{__('Let the Client change the Language')}} <i
data-toggle="popover"
data-trigger="hover"
data-content="{{__('If this is checked, Clients will have the ability to manually change their Dashboard language')}}"
class="fas fa-info-circle"></i></label>
</div>
</div> </div>
</div> </div>
<button class="btn btn-primary">{{ __('Save') }}</button> <div class="form-group">
</form> <input value="true" id="autotranslate" name="autotranslate"
{{(\App\Models\Settings::getValueByKey("SETTINGS::LOCALE:DYNAMIC")?"checked":"")}}
type="checkbox">
<label for="autotranslate">{{__('Auto-translate')}} <i data-toggle="popover"
data-trigger="hover"
data-content="{{__('If this is checked, the Dashboard will translate itself to the Clients language, if available')}}"
class="fas fa-info-circle"></i></label>
<br/>
<input value="true" id="canClientChangeLanguage" name="canClientChangeLanguage"
{{(\App\Models\Settings::getValueByKey("SETTINGS::LOCALE:CLIENTS_CAN_CHANGE")?"checked":"")}}
type="checkbox">
<label for="canClientChangeLanguage">{{__('Let the Client change the Language')}} <i
data-toggle="popover"
data-trigger="hover"
data-content="{{__('If this is checked, Clients will have the ability to manually change their Dashboard language')}}"
class="fas fa-info-circle"></i></label>
</div>
</div>
</div>
<button class="btn btn-primary">{{ __('Save') }}</button>
</form>
</div> </div>

View file

@ -8,440 +8,446 @@
<meta name="csrf-token" content="{{ csrf_token() }}"> <meta name="csrf-token" content="{{ csrf_token() }}">
<title>{{ config('app.name', 'Laravel') }}</title> <title>{{ config('app.name', 'Laravel') }}</title>
<link rel="icon" <link rel="icon"
href="{{ \Illuminate\Support\Facades\Storage::disk('public')->exists('favicon.ico') ? asset('storage/favicon.ico') : asset('favicon.ico') }}" href="{{ \Illuminate\Support\Facades\Storage::disk('public')->exists('favicon.ico') ? asset('storage/favicon.ico') : asset('favicon.ico') }}"
type="image/x-icon"> type="image/x-icon">
<script defer src="https://unpkg.com/alpinejs@3.x.x/dist/cdn.min.js"></script> <script defer src="https://unpkg.com/alpinejs@3.x.x/dist/cdn.min.js"></script>
{{-- <link rel="stylesheet" href="{{asset('css/adminlte.min.css')}}"> --}} {{-- <link rel="stylesheet" href="{{asset('css/adminlte.min.css')}}"> --}}
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/bs4/dt-1.10.24/datatables.min.css" /> <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/bs4/dt-1.10.24/datatables.min.css"/>
{{-- summernote --}} {{-- summernote --}}
<link rel="stylesheet" href="{{ asset('plugins/summernote/summernote-bs4.min.css') }}"> <link rel="stylesheet" href="{{ asset('plugins/summernote/summernote-bs4.min.css') }}">
{{-- datetimepicker --}} {{-- datetimepicker --}}
<link rel="stylesheet" <link rel="stylesheet"
href="{{ asset('plugins/tempusdominus-bootstrap-4/css/tempusdominus-bootstrap-4.min.css') }}"> href="{{ asset('plugins/tempusdominus-bootstrap-4/css/tempusdominus-bootstrap-4.min.css') }}">
{{-- select2 --}} {{-- select2 --}}
<link rel="stylesheet" href="{{ asset('plugins/select2/css/select2.min.css') }}"> <link rel="stylesheet" href="{{ asset('plugins/select2/css/select2.min.css') }}">
<link rel="stylesheet" href="{{ asset('css/app.css') }}"> <link rel="stylesheet" href="{{ asset('css/app.css') }}">
<link rel="preload" href="{{ asset('plugins/fontawesome-free/css/all.min.css') }}" as="style" <link rel="preload" href="{{ asset('plugins/fontawesome-free/css/all.min.css') }}" as="style"
onload="this.onload=null;this.rel='stylesheet'"> onload="this.onload=null;this.rel='stylesheet'">
<noscript> <noscript>
<link rel="stylesheet" href="{{ asset('plugins/fontawesome-free/css/all.min.css') }}"> <link rel="stylesheet" href="{{ asset('plugins/fontawesome-free/css/all.min.css') }}">
</noscript> </noscript>
</head> </head>
<body class="sidebar-mini layout-fixed dark-mode" style="height: auto;"> <body class="sidebar-mini layout-fixed dark-mode" style="height: auto;">
<div class="wrapper"> <div class="wrapper">
<!-- Navbar --> <!-- Navbar -->
<nav class="main-header sticky-top navbar navbar-expand navbar-dark navbar-light"> <nav class="main-header sticky-top navbar navbar-expand navbar-dark navbar-light">
<!-- Left navbar links --> <!-- Left navbar links -->
<ul class="navbar-nav"> <ul class="navbar-nav">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link" data-widget="pushmenu" href="#" role="button"><i <a class="nav-link" data-widget="pushmenu" href="#" role="button"><i
class="fas fa-bars"></i></a> class="fas fa-bars"></i></a>
</li> </li>
<li class="nav-item d-none d-sm-inline-block"> <li class="nav-item d-none d-sm-inline-block">
<a href="{{ route('home') }}" class="nav-link"><i <a href="{{ route('home') }}" class="nav-link"><i
class="fas fa-home mr-2"></i>{{ __('Home') }}</a> class="fas fa-home mr-2"></i>{{ __('Home') }}</a>
</li> </li>
<li class="nav-item d-none d-sm-inline-block"> <li class="nav-item d-none d-sm-inline-block">
<a href="{{ env('DISCORD_INVITE_URL') }}" class="nav-link" target="__blank"><i <a href="{{ env('DISCORD_INVITE_URL') }}" class="nav-link" target="__blank"><i
class="fab fa-discord mr-2"></i>{{ __('Discord') }}</a> class="fab fa-discord mr-2"></i>{{ __('Discord') }}</a>
</li> </li>
<!-- Language Selection --> <!-- Language Selection -->
@if (\App\Models\Settings::getValueByKey("SETTINGS::LOCALE:CLIENTS_CAN_CHANGE") == 'true') @if (\App\Models\Settings::getValueByKey("SETTINGS::LOCALE:CLIENTS_CAN_CHANGE") == 'true')
<li class="nav-item dropdown"> <li class="nav-item dropdown">
<a class="nav-link" href="#" id="languageDropdown" role="button" data-toggle="dropdown" <a class="nav-link" href="#" id="languageDropdown" role="button" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false"> aria-haspopup="true" aria-expanded="false">
<span class="mr-1 d-lg-inline text-gray-600"> <span class="mr-1 d-lg-inline text-gray-600">
<small><i class="fa fa-language mr-2"></i></small>{{ __('Language') }} <small><i class="fa fa-language mr-2"></i></small>{{ __('Language') }}
</span> </span>
</a> </a>
<div class="dropdown-menu dropdown-menu-right shadow animated--grow-in" <div class="dropdown-menu dropdown-menu-right shadow animated--grow-in"
aria-labelledby="changeLocale"> aria-labelledby="changeLocale">
<form method="post" action="{{ route('changeLocale') }}" class="nav-item text-center"> <form method="post" action="{{ route('changeLocale') }}" class="nav-item text-center">
@csrf @csrf
@foreach (json_decode(\App\Models\Settings::getValueByKey("SETTINGS::LOCALE:AVAILABLE")) as $key) @foreach (json_decode(\App\Models\Settings::getValueByKey("SETTINGS::LOCALE:AVAILABLE")) as $key)
<button class="dropdown-item" name="inputLocale" value="{{ $key }}"> <button class="dropdown-item" name="inputLocale" value="{{ $key }}">
{{ __($key) }} {{ __($key) }}
</button> </button>
@endforeach @endforeach
</form> </form>
</div> </div>
</li> </li>
@endif @endif
<!-- End Language Selection --> <!-- End Language Selection -->
</ul> </ul>
<!-- Right navbar links --> <!-- Right navbar links -->
<ul class="navbar-nav ml-auto"> <ul class="navbar-nav ml-auto">
<!-- Notifications Dropdown Menu --> <!-- Notifications Dropdown Menu -->
<li class="nav-item dropdown"> <li class="nav-item dropdown">
<a class="nav-link" data-toggle="dropdown" href="#"> <a class="nav-link" data-toggle="dropdown" href="#">
<i class="far fa-bell"></i> <i class="far fa-bell"></i>
@if (Auth::user()->unreadNotifications->count() != 0) @if (Auth::user()->unreadNotifications->count() != 0)
<span <span
class="badge badge-warning navbar-badge">{{ Auth::user()->unreadNotifications->count() }}</span> class="badge badge-warning navbar-badge">{{ Auth::user()->unreadNotifications->count() }}</span>
@endif @endif
</a> </a>
<div class="dropdown-menu dropdown-menu-lg dropdown-menu-right"> <div class="dropdown-menu dropdown-menu-lg dropdown-menu-right">
<span class="dropdown-item dropdown-header">{{ Auth::user()->unreadNotifications->count() }} <span class="dropdown-item dropdown-header">{{ Auth::user()->unreadNotifications->count() }}
{{ __('Notifications') }}</span> {{ __('Notifications') }}</span>
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
@foreach (Auth::user()->unreadNotifications->sortBy('created_at')->take(5) @foreach (Auth::user()->unreadNotifications->sortBy('created_at')->take(5)
as $notification) as $notification)
<a href="{{ route('notifications.show', $notification->id) }}" class="dropdown-item"> <a href="{{ route('notifications.show', $notification->id) }}" class="dropdown-item">
<span class="d-inline-block text-truncate" style="max-width: 150px;"><i <span class="d-inline-block text-truncate" style="max-width: 150px;"><i
class="fas fa-envelope mr-2"></i>{{ $notification->data['title'] }}</span> class="fas fa-envelope mr-2"></i>{{ $notification->data['title'] }}</span>
<span <span
class="float-right text-muted text-sm">{{ $notification->created_at->longAbsoluteDiffForHumans() }} class="float-right text-muted text-sm">{{ $notification->created_at->longAbsoluteDiffForHumans() }}
ago</span> ago</span>
</a> </a>
@endforeach @endforeach
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<a href="{{ route('notifications.index') }}" <a href="{{ route('notifications.index') }}"
class="dropdown-item dropdown-footer">{{ __('See all Notifications') }}</a> class="dropdown-item dropdown-footer">{{ __('See all Notifications') }}</a>
</div> </div>
</li> </li>
<li class="nav-item dropdown"> <li class="nav-item dropdown">
<a class="nav-link" href="#" id="userDropdown" role="button" data-toggle="dropdown" <a class="nav-link" href="#" id="userDropdown" role="button" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false"> aria-haspopup="true" aria-expanded="false">
<span class="mr-1 d-lg-inline text-gray-600"> <span class="mr-1 d-lg-inline text-gray-600">
<small><i class="fas fa-coins mr-2"></i></small>{{ Auth::user()->credits() }} <small><i class="fas fa-coins mr-2"></i></small>{{ Auth::user()->credits() }}
</span> </span>
</a>
<div class="dropdown-menu dropdown-menu-right shadow animated--grow-in"
aria-labelledby="userDropdown">
<a class="dropdown-item" href="{{ route('store.index') }}">
<i class="fas fa-coins fa-sm fa-fw mr-2 text-gray-400"></i>
{{ __('Store') }}
</a> </a>
<div class="dropdown-menu dropdown-menu-right shadow animated--grow-in" <div class="dropdown-divider"></div>
aria-labelledby="userDropdown"> <a class="dropdown-item" data-toggle="modal" data-target="#redeemVoucherModal"
<a class="dropdown-item" href="{{ route('store.index') }}"> href="javascript:void(0)">
<i class="fas fa-coins fa-sm fa-fw mr-2 text-gray-400"></i> <i class="fas fa-money-check-alt fa-sm fa-fw mr-2 text-gray-400"></i>
{{ __('Store') }} {{ __('Redeem code') }}
</a> </a>
<div class="dropdown-divider"></div> </div>
<a class="dropdown-item" data-toggle="modal" data-target="#redeemVoucherModal" </li>
href="javascript:void(0)">
<i class="fas fa-money-check-alt fa-sm fa-fw mr-2 text-gray-400"></i>
{{ __('Redeem code') }}
</a>
</div>
</li>
<li class="nav-item dropdown no-arrow"> <li class="nav-item dropdown no-arrow">
<a class="nav-link dropdown-toggle" href="#" id="userDropdown" role="button" data-toggle="dropdown" <a class="nav-link dropdown-toggle" href="#" id="userDropdown" role="button" data-toggle="dropdown"
aria-haspopup="true" aria-expanded="false"> aria-haspopup="true" aria-expanded="false">
<span class="mr-1 d-lg-inline text-gray-600 small"> <span class="mr-1 d-lg-inline text-gray-600 small">
{{ Auth::user()->name }} {{ Auth::user()->name }}
<img width="28px" height="28px" class="rounded-circle ml-1" <img width="28px" height="28px" class="rounded-circle ml-1"
src="{{ Auth::user()->getAvatar() }}"> src="{{ Auth::user()->getAvatar() }}">
</span> </span>
</a>
<!-- Dropdown - User Information -->
<div class="dropdown-menu dropdown-menu-right shadow animated--grow-in"
aria-labelledby="userDropdown">
<a class="dropdown-item" href="{{ route('profile.index') }}">
<i class="fas fa-user fa-sm fa-fw mr-2 text-gray-400"></i>
{{ __('Profile') }}
</a> </a>
<!-- Dropdown - User Information --> {{-- <a class="dropdown-item" href="#"> --}}
<div class="dropdown-menu dropdown-menu-right shadow animated--grow-in" {{-- <i class="fas fa-list fa-sm fa-fw mr-2 text-gray-400"></i> --}}
aria-labelledby="userDropdown"> {{-- Activity Log --}}
<a class="dropdown-item" href="{{ route('profile.index') }}"> {{-- </a> --}}
<i class="fas fa-user fa-sm fa-fw mr-2 text-gray-400"></i> @if (session()->get('previousUser'))
{{ __('Profile') }}
</a>
{{-- <a class="dropdown-item" href="#"> --}}
{{-- <i class="fas fa-list fa-sm fa-fw mr-2 text-gray-400"></i> --}}
{{-- Activity Log --}}
{{-- </a> --}}
@if (session()->get('previousUser'))
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="{{ route('users.logbackin') }}">
<i class="fas fa-sign-in-alt fa-sm fa-fw mr-2 text-gray-400"></i>
{{ __('Log back in') }}
</a>
@endif
<div class="dropdown-divider"></div> <div class="dropdown-divider"></div>
<form method="post" action="{{ route('logout') }}"> <a class="dropdown-item" href="{{ route('users.logbackin') }}">
@csrf <i class="fas fa-sign-in-alt fa-sm fa-fw mr-2 text-gray-400"></i>
<button class="dropdown-item" href="#" data-toggle="modal" data-target="#logoutModal"> {{ __('Log back in') }}
<i class="fas fa-sign-out-alt fa-sm fa-fw mr-2 text-gray-400"></i> </a>
{{ __('Logout') }} @endif
</button> <div class="dropdown-divider"></div>
</form> <form method="post" action="{{ route('logout') }}">
</div> @csrf
</li> <button class="dropdown-item" href="#" data-toggle="modal" data-target="#logoutModal">
</ul> <i class="fas fa-sign-out-alt fa-sm fa-fw mr-2 text-gray-400"></i>
</nav> {{ __('Logout') }}
<!-- /.navbar --> </button>
<!-- Main Sidebar Container --> </form>
<aside class="main-sidebar sidebar-open sidebar-dark-primary elevation-4"> </div>
<!-- Brand Logo --> </li>
<a href="{{ route('home') }}" class="brand-link"> </ul>
<img width="64" height="64" </nav>
src="{{ \Illuminate\Support\Facades\Storage::disk('public')->exists('icon.png') ? asset('storage/icon.png') : asset('images/bitsec.png') }}" <!-- /.navbar -->
alt="{{ config('app.name', 'Laravel') }} Logo" class="brand-image img-circle" <!-- Main Sidebar Container -->
style="opacity: .8"> <aside class="main-sidebar sidebar-open sidebar-dark-primary elevation-4">
<span class="brand-text font-weight-light">{{ config('app.name', 'Laravel') }}</span> <!-- Brand Logo -->
</a> <a href="{{ route('home') }}" class="brand-link">
<img width="64" height="64"
src="{{ \Illuminate\Support\Facades\Storage::disk('public')->exists('icon.png') ? asset('storage/icon.png') : asset('images/bitsec.png') }}"
alt="{{ config('app.name', 'Laravel') }} Logo" class="brand-image img-circle"
style="opacity: .8">
<span class="brand-text font-weight-light">{{ config('app.name', 'Laravel') }}</span>
</a>
<!-- Sidebar --> <!-- Sidebar -->
<div class="sidebar" style="overflow-y: auto"> <div class="sidebar" style="overflow-y: auto">
<!-- Sidebar Menu --> <!-- Sidebar Menu -->
<nav class="my-2"> <nav class="my-2">
<ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu" <ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu"
data-accordion="false"> data-accordion="false">
<!-- Add icons to the links using the .nav-icon class <!-- Add icons to the links using the .nav-icon class
with font-awesome or any other icon font library --> with font-awesome or any other icon font library -->
<li class="nav-item">
<a href="{{ route('home') }}" class="nav-link @if (Request::routeIs('home')) active @endif">
<i class="nav-icon fa fa-home"></i>
<p>{{ __('Dashboard') }}</p>
</a>
</li>
<li class="nav-item">
<a href="{{ route('servers.index') }}"
class="nav-link @if (Request::routeIs('servers.*')) active @endif">
<i class="nav-icon fa fa-server"></i>
<p>{{ __('Servers') }}
<span class="badge badge-info right">{{ Auth::user()->servers()->count() }} /
{{ Auth::user()->server_limit }}</span>
</p>
</a>
</li>
@if ((env('PAYPAL_SECRET') && env('PAYPAL_CLIENT_ID')) || env('APP_ENV', 'local') == 'local')
<li class="nav-item"> <li class="nav-item">
<a href="{{ route('home') }}" class="nav-link @if (Request::routeIs('home')) active @endif"> <a href="{{ route('store.index') }}"
class="nav-link @if (Request::routeIs('store.*') || Request::routeIs('checkout')) active @endif">
<i class="nav-icon fa fa-coins"></i>
<p>{{ __('Store') }}</p>
</a>
</li>
@endif
@if (Auth::user()->role == 'admin')
<li class="nav-header">{{ __('Administration') }}</li>
<li class="nav-item">
<a href="{{ route('admin.overview.index') }}"
class="nav-link @if (Request::routeIs('admin.overview.*')) active @endif">
<i class="nav-icon fa fa-home"></i> <i class="nav-icon fa fa-home"></i>
<p>{{ __('Dashboard') }}</p> <p>{{ __('Overview') }}</p>
</a>
</li>
<li class="nav-item">
<a href="{{ route('admin.settings.index') }}"
class="nav-link @if (Request::routeIs('admin.settings.*')) active @endif">
<i class="nav-icon fas fa-tools"></i>
<p>{{ __('Settings') }}</p>
</a> </a>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<a href="{{ route('servers.index') }}" class="nav-link @if (Request::routeIs('servers.*')) active @endif"> <a href="{{ route('admin.api.index') }}"
<i class="nav-icon fa fa-server"></i> class="nav-link @if (Request::routeIs('admin.api.*')) active @endif">
<p>{{ __('Servers') }} <i class="nav-icon fa fa-gamepad"></i>
<span class="badge badge-info right">{{ Auth::user()->servers()->count() }} / <p>{{ __('Application API') }}</p>
{{ Auth::user()->server_limit }}</span> </a>
</li>
<li class="nav-header">{{ __('Management') }}</li>
<li class="nav-item">
<a href="{{ route('admin.users.index') }}"
class="nav-link @if (Request::routeIs('admin.users.*')) active @endif">
<i class="nav-icon fas fa-users"></i>
<p>{{ __('Users') }}</p>
</a>
</li>
<li class="nav-item">
<a href="{{ route('admin.servers.index') }}"
class="nav-link @if (Request::routeIs('admin.servers.*')) active @endif">
<i class="nav-icon fas fa-server"></i>
<p>{{ __('Servers') }}</p>
</a>
</li>
<li class="nav-item">
<a href="{{ route('admin.products.index') }}"
class="nav-link @if (Request::routeIs('admin.products.*')) active @endif">
<i class="nav-icon fas fa-sliders-h"></i>
<p>{{ __('Products') }}</p>
</a>
</li>
<li class="nav-item">
<a href="{{ route('admin.store.index') }}"
class="nav-link @if (Request::routeIs('admin.store.*')) active @endif">
<i class="nav-icon fas fa-shopping-basket"></i>
<p>{{ __('Store') }}</p>
</a>
</li>
<li class="nav-item">
<a href="{{ route('admin.vouchers.index') }}"
class="nav-link @if (Request::routeIs('admin.vouchers.*')) active @endif">
<i class="nav-icon fas fa-money-check-alt"></i>
<p>{{ __('Vouchers') }}</p>
</a>
</li>
{{-- <li class="nav-header">Pterodactyl</li> --}}
{{-- <li class="nav-item"> --}}
{{-- <a href="{{route('admin.nodes.index')}}" --}}
{{-- class="nav-link @if (Request::routeIs('admin.nodes.*')) active @endif"> --}}
{{-- <i class="nav-icon fas fa-sitemap"></i> --}}
{{-- <p>Nodes</p> --}}
{{-- </a> --}}
{{-- </li> --}}
{{-- <li class="nav-item"> --}}
{{-- <a href="{{route('admin.nests.index')}}" --}}
{{-- class="nav-link @if (Request::routeIs('admin.nests.*')) active @endif"> --}}
{{-- <i class="nav-icon fas fa-th-large"></i> --}}
{{-- <p>Nests</p> --}}
{{-- </a> --}}
{{-- </li> --}}
<li class="nav-header">{{ __('Other') }}</li>
<li class="nav-item">
<a href="{{ route('admin.usefullinks.index') }}"
class="nav-link @if (Request::routeIs('admin.usefullinks.*')) active @endif">
<i class="nav-icon fas fa-link"></i>
<p>{{ __('Useful Links') }}</p>
</a>
</li>
<li class="nav-header">{{ __('Logs') }}</li>
<li class="nav-item">
<a href="{{ route('admin.payments.index') }}"
class="nav-link @if (Request::routeIs('admin.payments.*')) active @endif">
<i class="nav-icon fas fa-money-bill-wave"></i>
<p>{{ __('Payments') }}
<span
class="badge badge-success right">{{ \App\Models\Payment::count() }}</span>
</p> </p>
</a> </a>
</li> </li>
@if ((env('PAYPAL_SECRET') && env('PAYPAL_CLIENT_ID')) || env('APP_ENV', 'local') == 'local') <li class="nav-item">
<li class="nav-item"> <a href="{{ route('admin.activitylogs.index') }}"
<a href="{{ route('store.index') }}" class="nav-link @if (Request::routeIs('store.*') || Request::routeIs('checkout')) active @endif"> class="nav-link @if (Request::routeIs('admin.activitylogs.*')) active @endif">
<i class="nav-icon fa fa-coins"></i> <i class="nav-icon fas fa-clipboard-list"></i>
<p>{{ __('Store') }}</p> <p>{{ __('Activity Logs') }}</p>
</a> </a>
</li> </li>
@endif
@if (Auth::user()->role == 'admin') @endif
<li class="nav-header">{{ __('Administration') }}</li> </ul>
</nav>
<li class="nav-item"> <!-- /.sidebar-menu -->
<a href="{{ route('admin.overview.index') }}"
class="nav-link @if (Request::routeIs('admin.overview.*')) active @endif">
<i class="nav-icon fa fa-home"></i>
<p>{{ __('Overview') }}</p>
</a>
</li>
<li class="nav-item">
<a href="{{ route('admin.settings.index') }}"
class="nav-link @if (Request::routeIs('admin.settings.*')) active @endif">
<i class="nav-icon fas fa-tools"></i>
<p>{{ __('Settings') }}</p>
</a>
</li>
<li class="nav-item">
<a href="{{ route('admin.api.index') }}" class="nav-link @if (Request::routeIs('admin.api.*')) active @endif">
<i class="nav-icon fa fa-gamepad"></i>
<p>{{ __('Application API') }}</p>
</a>
</li>
<li class="nav-header">{{ __('Management') }}</li>
<li class="nav-item">
<a href="{{ route('admin.users.index') }}" class="nav-link @if (Request::routeIs('admin.users.*')) active @endif">
<i class="nav-icon fas fa-users"></i>
<p>{{ __('Users') }}</p>
</a>
</li>
<li class="nav-item">
<a href="{{ route('admin.servers.index') }}" class="nav-link @if (Request::routeIs('admin.servers.*')) active @endif">
<i class="nav-icon fas fa-server"></i>
<p>{{ __('Servers') }}</p>
</a>
</li>
<li class="nav-item">
<a href="{{ route('admin.products.index') }}"
class="nav-link @if (Request::routeIs('admin.products.*')) active @endif">
<i class="nav-icon fas fa-sliders-h"></i>
<p>{{ __('Products') }}</p>
</a>
</li>
<li class="nav-item">
<a href="{{ route('admin.store.index') }}" class="nav-link @if (Request::routeIs('admin.store.*')) active @endif">
<i class="nav-icon fas fa-shopping-basket"></i>
<p>{{ __('Store') }}</p>
</a>
</li>
<li class="nav-item">
<a href="{{ route('admin.vouchers.index') }}"
class="nav-link @if (Request::routeIs('admin.vouchers.*')) active @endif">
<i class="nav-icon fas fa-money-check-alt"></i>
<p>{{ __('Vouchers') }}</p>
</a>
</li>
{{-- <li class="nav-header">Pterodactyl</li> --}}
{{-- <li class="nav-item"> --}}
{{-- <a href="{{route('admin.nodes.index')}}" --}}
{{-- class="nav-link @if (Request::routeIs('admin.nodes.*')) active @endif"> --}}
{{-- <i class="nav-icon fas fa-sitemap"></i> --}}
{{-- <p>Nodes</p> --}}
{{-- </a> --}}
{{-- </li> --}}
{{-- <li class="nav-item"> --}}
{{-- <a href="{{route('admin.nests.index')}}" --}}
{{-- class="nav-link @if (Request::routeIs('admin.nests.*')) active @endif"> --}}
{{-- <i class="nav-icon fas fa-th-large"></i> --}}
{{-- <p>Nests</p> --}}
{{-- </a> --}}
{{-- </li> --}}
<li class="nav-header">{{ __('Other') }}</li>
<li class="nav-item">
<a href="{{ route('admin.usefullinks.index') }}"
class="nav-link @if (Request::routeIs('admin.usefullinks.*')) active @endif">
<i class="nav-icon fas fa-link"></i>
<p>{{ __('Useful Links') }}</p>
</a>
</li>
<li class="nav-header">{{ __('Logs') }}</li>
<li class="nav-item">
<a href="{{ route('admin.payments.index') }}"
class="nav-link @if (Request::routeIs('admin.payments.*')) active @endif">
<i class="nav-icon fas fa-money-bill-wave"></i>
<p>{{ __('Payments') }}
<span
class="badge badge-success right">{{ \App\Models\Payment::count() }}</span>
</p>
</a>
</li>
<li class="nav-item">
<a href="{{ route('admin.activitylogs.index') }}"
class="nav-link @if (Request::routeIs('admin.activitylogs.*')) active @endif">
<i class="nav-icon fas fa-clipboard-list"></i>
<p>{{ __('Activity Logs') }}</p>
</a>
</li>
@endif
</ul>
</nav>
<!-- /.sidebar-menu -->
</div>
<!-- /.sidebar -->
</aside>
<!-- Content Wrapper. Contains page content -->
<div class="content-wrapper">
@if (!Auth::user()->hasVerifiedEmail())
@if (Auth::user()->created_at->diffInHours(now(), false) > 1)
<div class="alert alert-warning p-2 m-2">
<h5><i class="icon fas fa-exclamation-circle"></i> {{ __('Warning!') }}</h5>
{{ __('You have not yet verified your email address') }} <a class="text-primary"
href="{{ route('verification.send') }}">{{ __('Click here to resend verification email') }}</a>
<br>
{{ __('Please contact support If you didnt receive your verification email.') }}
</div>
@endif
@endif
@yield('content')
@include('models.redeem_voucher_modal')
</div> </div>
<!-- /.content-wrapper --> <!-- /.sidebar -->
<footer class="main-footer"> </aside>
<strong>Copyright &copy; 2021-{{ date('Y') }} <a
href="{{ url('/') }}">{{ env('APP_NAME', 'Laravel') }}</a>.</strong>
All rights
reserved. Powered by <a href="https://controlpanel.gg">ControlPanel</a>. Version
<b>{{ config('app')['version'] }}</b>
</footer>
<!-- Control Sidebar --> <!-- Content Wrapper. Contains page content -->
<aside class="control-sidebar control-sidebar-dark">
<!-- Control sidebar content goes here -->
</aside>
<!-- /.control-sidebar -->
</div>
<!-- ./wrapper -->
<!-- Scripts --> <div class="content-wrapper">
{{-- <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> --}}
{{-- <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script> --}}
{{-- <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script> --}}
{{-- <script src="{{ asset('js/adminlte.min.js') }}"></script> --}}
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@10.14.1/dist/sweetalert2.all.min.js"></script>
<script src="{{ asset('js/app.js') }}"></script>
<script type="text/javascript" src="https://cdn.datatables.net/v/bs4/dt-1.10.24/datatables.min.js"></script>
<!-- Summernote -->
<script src="{{ asset('plugins/summernote/summernote-bs4.min.js') }}"></script>
<!-- select2 -->
<script src="{{ asset('plugins/select2/js/select2.min.js') }}"></script>
<!-- Moment.js --> @if (!Auth::user()->hasVerifiedEmail())
<script src="{{ asset('plugins/moment/moment.min.js') }}"></script> @if (Auth::user()->created_at->diffInHours(now(), false) > 1)
<div class="alert alert-warning p-2 m-2">
<!-- Datetimepicker --> <h5><i class="icon fas fa-exclamation-circle"></i> {{ __('Warning!') }}</h5>
<script src="{{ asset('plugins/tempusdominus-bootstrap-4/js/tempusdominus-bootstrap-4.min.js') }}"></script> {{ __('You have not yet verified your email address') }} <a class="text-primary"
href="{{ route('verification.send') }}">{{ __('Click here to resend verification email') }}</a>
<!-- Select2 --> <br>
<script src={{ asset('plugins/select2/js/select2.min.js') }}> {{ __('Please contact support If you didnt receive your verification email.') }}
< script > </div>
$(document).ready(function() { @endif
$('[data-toggle="popover"]').popover();
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
});
</script>
<script>
@if (Session::has('error'))
Swal.fire({
icon: 'error',
title: 'Oops...',
html: '{{ Session::get('error') }}',
})
@endif @endif
@if (Session::has('success')) @yield('content')
Swal.fire({
icon: 'success', @include('models.redeem_voucher_modal')
title: '{{ Session::get('success') }}', </div>
position: 'top-end', <!-- /.content-wrapper -->
showConfirmButton: false, <footer class="main-footer">
background: '#343a40', <strong>Copyright &copy; 2021-{{ date('Y') }} <a
toast: true, href="{{ url('/') }}">{{ env('APP_NAME', 'Laravel') }}</a>.</strong>
timer: 3000, All rights
timerProgressBar: true, reserved. Powered by <a href="https://controlpanel.gg">ControlPanel</a>. Version
didOpen: (toast) => { <b>{{ config('app')['version'] }}</b>
</footer>
<!-- Control Sidebar -->
<aside class="control-sidebar control-sidebar-dark">
<!-- Control sidebar content goes here -->
</aside>
<!-- /.control-sidebar -->
</div>
<!-- ./wrapper -->
<!-- Scripts -->
{{-- <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> --}}
{{-- <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script> --}}
{{-- <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script> --}}
{{-- <script src="{{ asset('js/adminlte.min.js') }}"></script> --}}
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@10.14.1/dist/sweetalert2.all.min.js"></script>
<script src="{{ asset('js/app.js') }}"></script>
<script type="text/javascript" src="https://cdn.datatables.net/v/bs4/dt-1.10.24/datatables.min.js"></script>
<!-- Summernote -->
<script src="{{ asset('plugins/summernote/summernote-bs4.min.js') }}"></script>
<!-- select2 -->
<script src="{{ asset('plugins/select2/js/select2.min.js') }}"></script>
<!-- Moment.js -->
<script src="{{ asset('plugins/moment/moment.min.js') }}"></script>
<!-- Datetimepicker -->
<script src="{{ asset('plugins/tempusdominus-bootstrap-4/js/tempusdominus-bootstrap-4.min.js') }}"></script>
<!-- Select2 -->
<script src={{ asset('plugins/select2/js/select2.min.js') }}>
< script>
$(document).ready(function() {
$('[data-toggle="popover"]').popover();
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
});
</script>
<script>
@if (Session::has('error'))
Swal.fire({
icon: 'error',
title: 'Oops...',
html: '{{ Session::get('error') }}',
})
@endif
@if (Session::has('success'))
Swal.fire({
icon: 'success',
title: '{{ Session::get('success') }}',
position: 'top-end',
showConfirmButton: false,
background: '#343a40',
toast: true,
timer: 3000,
timerProgressBar: true,
didOpen: (toast) => {
toast.addEventListener('mouseenter', Swal.stopTimer) toast.addEventListener('mouseenter', Swal.stopTimer)
toast.addEventListener('mouseleave', Swal.resumeTimer) toast.addEventListener('mouseleave', Swal.resumeTimer)
} }
}) })
@endif @endif
</script> </script>
</body> </body>
</html> </html>