main.blade.php 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421
  1. <!doctype html>
  2. <html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1">
  6. <!-- CSRF Token -->
  7. <meta name="csrf-token" content="{{ csrf_token() }}">
  8. <title>{{ config('app.name', 'Laravel') }}</title>
  9. <link rel="icon"
  10. href="{{\Illuminate\Support\Facades\Storage::disk('public')->exists('favicon.ico') ? asset('storage/favicon.ico') : asset('favicon.ico')}}"
  11. type="image/x-icon">
  12. <script defer src="https://unpkg.com/alpinejs@3.x.x/dist/cdn.min.js"></script>
  13. {{-- <link rel="stylesheet" href="{{asset('css/adminlte.min.css')}}">--}}
  14. <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/bs4/dt-1.10.24/datatables.min.css"/>
  15. {{-- summernote --}}
  16. <link rel="stylesheet" href="{{asset('plugins/summernote/summernote-bs4.min.css')}}">
  17. {{-- datetimepicker --}}
  18. <link rel="stylesheet" href="{{asset('plugins/tempusdominus-bootstrap-4/css/tempusdominus-bootstrap-4.min.css')}}">
  19. {{-- select2 --}}
  20. <link rel="stylesheet" href="{{asset('plugins/select2/css/select2.min.css')}}">
  21. <link rel="stylesheet" href="{{asset('css/app.css')}}">
  22. <link rel="preload" href="{{asset('plugins/fontawesome-free/css/all.min.css')}}" as="style"
  23. onload="this.onload=null;this.rel='stylesheet'">
  24. <noscript>
  25. <link rel="stylesheet" href="{{asset('plugins/fontawesome-free/css/all.min.css')}}">
  26. </noscript>
  27. </head>
  28. <body class="sidebar-mini layout-fixed dark-mode" style="height: auto;">
  29. <div class="wrapper">
  30. <!-- Navbar -->
  31. <nav class="main-header sticky-top navbar navbar-expand navbar-dark navbar-light">
  32. <!-- Left navbar links -->
  33. <ul class="navbar-nav">
  34. <li class="nav-item">
  35. <a class="nav-link" data-widget="pushmenu" href="#" role="button"><i class="fas fa-bars"></i></a>
  36. </li>
  37. <li class="nav-item d-none d-sm-inline-block">
  38. <a href="{{route('home')}}" class="nav-link">Home</a>
  39. </li>
  40. <li class="nav-item d-none d-sm-inline-block">
  41. <a href="{{env('DISCORD_INVITE_URL')}}" class="nav-link" target="__blank">Discord</a>
  42. </li>
  43. </ul>
  44. <!-- Right navbar links -->
  45. <ul class="navbar-nav ml-auto">
  46. <!-- Notifications Dropdown Menu -->
  47. <li class="nav-item dropdown">
  48. <a class="nav-link" data-toggle="dropdown" href="#">
  49. <i class="far fa-bell"></i>
  50. @if(Auth::user()->unreadNotifications->count() != 0)
  51. <span
  52. class="badge badge-warning navbar-badge">{{Auth::user()->unreadNotifications->count()}}</span>
  53. @endif
  54. </a>
  55. <div class="dropdown-menu dropdown-menu-lg dropdown-menu-right">
  56. <span class="dropdown-item dropdown-header">{{Auth::user()->unreadNotifications->count()}} Notifications</span>
  57. <div class="dropdown-divider"></div>
  58. @foreach(Auth::user()->unreadNotifications->sortBy('created_at')->take(5) as $notification)
  59. <a href="{{route('notifications.show' , $notification->id)}}" class="dropdown-item">
  60. <span class="d-inline-block text-truncate" style="max-width: 150px;"><i
  61. class="fas fa-envelope mr-2"></i>{{$notification->data['title']}}</span>
  62. <span
  63. class="float-right text-muted text-sm">{{$notification->created_at->longAbsoluteDiffForHumans()}} ago</span>
  64. </a>
  65. @endforeach
  66. <div class="dropdown-divider"></div>
  67. <a href="{{route('notifications.index')}}" class="dropdown-item dropdown-footer">See All
  68. Notifications</a>
  69. </div>
  70. </li>
  71. <li class="nav-item dropdown">
  72. <a class="nav-link" href="#" id="userDropdown" role="button" data-toggle="dropdown"
  73. aria-haspopup="true"
  74. aria-expanded="false">
  75. <span class="mr-1 d-lg-inline text-gray-600">
  76. <small><i class="fas fa-coins mr-2"></i></small>{{Auth::user()->credits()}}
  77. </span>
  78. </a>
  79. <div class="dropdown-menu dropdown-menu-right shadow animated--grow-in" aria-labelledby="userDropdown">
  80. <a class="dropdown-item" href="{{route('store.index')}}">
  81. <i class="fas fa-coins fa-sm fa-fw mr-2 text-gray-400"></i>
  82. {{__('Store')}}
  83. </a>
  84. <div class="dropdown-divider"></div>
  85. <a class="dropdown-item" data-toggle="modal" data-target="#redeemVoucherModal"
  86. href="javascript:void(0)">
  87. <i class="fas fa-money-check-alt fa-sm fa-fw mr-2 text-gray-400"></i>
  88. {{__('Redeem code')}}
  89. </a>
  90. </div>
  91. </li>
  92. <li class="nav-item dropdown no-arrow">
  93. <a class="nav-link dropdown-toggle" href="#" id="userDropdown" role="button" data-toggle="dropdown"
  94. aria-haspopup="true"
  95. aria-expanded="false">
  96. <span class="mr-1 d-lg-inline text-gray-600 small">
  97. {{Auth::user()->name}}
  98. <img width="28px" height="28px" class="rounded-circle ml-1" src="{{Auth::user()->getAvatar()}}">
  99. </span>
  100. </a>
  101. <!-- Dropdown - User Information -->
  102. <div class="dropdown-menu dropdown-menu-right shadow animated--grow-in" aria-labelledby="userDropdown">
  103. <a class="dropdown-item" href="{{route('profile.index')}}">
  104. <i class="fas fa-user fa-sm fa-fw mr-2 text-gray-400"></i>
  105. Profile
  106. </a>
  107. {{-- <a class="dropdown-item" href="#">--}}
  108. {{-- <i class="fas fa-list fa-sm fa-fw mr-2 text-gray-400"></i>--}}
  109. {{-- Activity Log--}}
  110. {{-- </a>--}}
  111. @if(session()->get('previousUser'))
  112. <div class="dropdown-divider"></div>
  113. <a class="dropdown-item" href="{{route('users.logbackin')}}">
  114. <i class="fas fa-sign-in-alt fa-sm fa-fw mr-2 text-gray-400"></i>
  115. Log back in
  116. </a>
  117. @endif
  118. <div class="dropdown-divider"></div>
  119. <form method="post" action="{{route('logout')}}">
  120. @csrf
  121. <button class="dropdown-item" href="#" data-toggle="modal" data-target="#logoutModal">
  122. <i class="fas fa-sign-out-alt fa-sm fa-fw mr-2 text-gray-400"></i>
  123. Logout
  124. </button>
  125. </form>
  126. </div>
  127. </li>
  128. </ul>
  129. </nav>
  130. <!-- /.navbar -->
  131. <!-- Main Sidebar Container -->
  132. <aside class="main-sidebar sidebar-open sidebar-dark-primary elevation-4">
  133. <!-- Brand Logo -->
  134. <a href="{{route('home')}}" class="brand-link">
  135. <img width="64" height="64"
  136. src="{{\Illuminate\Support\Facades\Storage::disk('public')->exists('icon.png') ? asset('storage/icon.png') : asset('images/bitsec.png')}}"
  137. alt="{{ config('app.name', 'Laravel') }} Logo" class="brand-image img-circle" style="opacity: .8">
  138. <span class="brand-text font-weight-light">{{ config('app.name', 'Laravel') }}</span>
  139. </a>
  140. <!-- Sidebar -->
  141. <div class="sidebar" style="overflow-y: auto">
  142. <!-- Sidebar Menu -->
  143. <nav class="my-2">
  144. <ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu"
  145. data-accordion="false">
  146. <!-- Add icons to the links using the .nav-icon class
  147. with font-awesome or any other icon font library -->
  148. <li class="nav-item">
  149. <a href="{{route('home')}}" class="nav-link @if(Request::routeIs('home')) active @endif">
  150. <i class="nav-icon fa fa-home"></i>
  151. <p>Dashboard</p>
  152. </a>
  153. </li>
  154. <li class="nav-item">
  155. <a href="{{route('servers.index')}}"
  156. class="nav-link @if(Request::routeIs('servers.*')) active @endif">
  157. <i class="nav-icon fa fa-server"></i>
  158. <p>Servers
  159. <span
  160. class="badge badge-info right">{{Auth::user()->servers()->count()}} / {{Auth::user()->server_limit}}</span>
  161. </p>
  162. </a>
  163. </li>
  164. @if(env('PAYPAL_SECRET') && env('PAYPAL_CLIENT_ID') || env('APP_ENV', 'local') == 'local')
  165. <li class="nav-item">
  166. <a href="{{route('store.index')}}"
  167. class="nav-link @if(Request::routeIs('store.*') || Request::routeIs('checkout')) active @endif">
  168. <i class="nav-icon fa fa-coins"></i>
  169. <p>Store</p>
  170. </a>
  171. </li>
  172. @endif
  173. @if(Auth::user()->role == 'admin')
  174. <li class="nav-header">Administration</li>
  175. <li class="nav-item">
  176. <a href="{{route('admin.overview.index')}}"
  177. class="nav-link @if(Request::routeIs('admin.overview.*')) active @endif">
  178. <i class="nav-icon fa fa-home"></i>
  179. <p>Overview</p>
  180. </a>
  181. </li>
  182. <li class="nav-item">
  183. <a href="{{route('admin.configurations.index')}}"
  184. class="nav-link @if(Request::routeIs('admin.configurations.*')) active @endif">
  185. <i class="nav-icon fas fa-cogs"></i>
  186. <p>Configurations</p>
  187. </a>
  188. </li>
  189. <li class="nav-item">
  190. <a href="{{route('admin.settings.index')}}"
  191. class="nav-link @if(Request::routeIs('admin.settings.*')) active @endif">
  192. <i class="nav-icon fas fa-tools"></i>
  193. <p>Settings</p>
  194. </a>
  195. </li>
  196. <li class="nav-item">
  197. <a href="{{route('admin.api.index')}}"
  198. class="nav-link @if(Request::routeIs('admin.api.*')) active @endif">
  199. <i class="nav-icon fa fa-gamepad"></i>
  200. <p>Application API</p>
  201. </a>
  202. </li>
  203. <li class="nav-header">Management</li>
  204. <li class="nav-item">
  205. <a href="{{route('admin.users.index')}}"
  206. class="nav-link @if(Request::routeIs('admin.users.*')) active @endif">
  207. <i class="nav-icon fas fa-users"></i>
  208. <p>Users</p>
  209. </a>
  210. </li>
  211. <li class="nav-item">
  212. <a href="{{route('admin.servers.index')}}"
  213. class="nav-link @if(Request::routeIs('admin.servers.*')) active @endif">
  214. <i class="nav-icon fas fa-server"></i>
  215. <p>Servers</p>
  216. </a>
  217. </li>
  218. <li class="nav-item">
  219. <a href="{{route('admin.products.index')}}"
  220. class="nav-link @if(Request::routeIs('admin.products.*')) active @endif">
  221. <i class="nav-icon fas fa-sliders-h"></i>
  222. <p>Products</p>
  223. </a>
  224. </li>
  225. <li class="nav-item">
  226. <a href="{{route('admin.store.index')}}"
  227. class="nav-link @if(Request::routeIs('admin.store.*')) active @endif">
  228. <i class="nav-icon fas fa-shopping-basket"></i>
  229. <p>Store</p>
  230. </a>
  231. </li>
  232. <li class="nav-item">
  233. <a href="{{route('admin.vouchers.index')}}"
  234. class="nav-link @if(Request::routeIs('admin.vouchers.*')) active @endif">
  235. <i class="nav-icon fas fa-money-check-alt"></i>
  236. <p>Vouchers</p>
  237. </a>
  238. </li>
  239. {{-- <li class="nav-header">Pterodactyl</li>--}}
  240. {{-- <li class="nav-item">--}}
  241. {{-- <a href="{{route('admin.nodes.index')}}"--}}
  242. {{-- class="nav-link @if(Request::routeIs('admin.nodes.*')) active @endif">--}}
  243. {{-- <i class="nav-icon fas fa-sitemap"></i>--}}
  244. {{-- <p>Nodes</p>--}}
  245. {{-- </a>--}}
  246. {{-- </li>--}}
  247. {{-- <li class="nav-item">--}}
  248. {{-- <a href="{{route('admin.nests.index')}}"--}}
  249. {{-- class="nav-link @if(Request::routeIs('admin.nests.*')) active @endif">--}}
  250. {{-- <i class="nav-icon fas fa-th-large"></i>--}}
  251. {{-- <p>Nests</p>--}}
  252. {{-- </a>--}}
  253. {{-- </li>--}}
  254. <li class="nav-header">Other</li>
  255. <li class="nav-item">
  256. <a href="{{route('admin.usefullinks.index')}}"
  257. class="nav-link @if(Request::routeIs('admin.usefullinks.*')) active @endif">
  258. <i class="nav-icon fas fa-link"></i>
  259. <p>Useful Links</p>
  260. </a>
  261. </li>
  262. <li class="nav-header">Logs</li>
  263. <li class="nav-item">
  264. <a href="{{route('admin.payments.index')}}"
  265. class="nav-link @if(Request::routeIs('admin.payments.*')) active @endif">
  266. <i class="nav-icon fas fa-money-bill-wave"></i>
  267. <p>Payments
  268. <span class="badge badge-success right">{{\App\Models\Payment::count()}}</span>
  269. </p>
  270. </a>
  271. </li>
  272. <li class="nav-item">
  273. <a href="{{route('admin.activitylogs.index')}}"
  274. class="nav-link @if(Request::routeIs('admin.activitylogs.*')) active @endif">
  275. <i class="nav-icon fas fa-clipboard-list"></i>
  276. <p>Activity Logs</p>
  277. </a>
  278. </li>
  279. @endif
  280. </ul>
  281. </nav>
  282. <!-- /.sidebar-menu -->
  283. </div>
  284. <!-- /.sidebar -->
  285. </aside>
  286. <!-- Content Wrapper. Contains page content -->
  287. <div class="content-wrapper">
  288. @if(!Auth::user()->hasVerifiedEmail())
  289. @if(Auth::user()->created_at->diffInHours(now(), false) > 1)
  290. <div class="alert alert-warning p-2 m-2">
  291. <h5><i class="icon fas fa-exclamation-circle"></i> Warning!</h5>
  292. You have not yet verified your email address <a class="text-primary"
  293. href="{{route('verification.send')}}">Click here to
  294. resend
  295. verification email</a> <br>
  296. Please contact support If you didn't receive your verification email.
  297. </div>
  298. @endif
  299. @endif
  300. @yield('content')
  301. @include('models.redeem_voucher_modal')
  302. </div>
  303. <!-- /.content-wrapper -->
  304. <footer class="main-footer">
  305. <strong>Copyright &copy; 2021-{{date('Y')}} <a href="{{url('/')}}">{{env('APP_NAME' , 'Laravel')}}</a>.</strong>
  306. All rights
  307. reserved. Powered by <a href="https://controlpanel.gg">ControlPanel</a>. Version <b>{{config('app')['version']}}</b>
  308. </footer>
  309. <!-- Control Sidebar -->
  310. <aside class="control-sidebar control-sidebar-dark">
  311. <!-- Control sidebar content goes here -->
  312. </aside>
  313. <!-- /.control-sidebar -->
  314. </div>
  315. <!-- ./wrapper -->
  316. <!-- Scripts -->
  317. {{--<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>--}}
  318. {{--<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>--}}
  319. {{--<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>--}}
  320. {{--<script src="{{ asset('js/adminlte.min.js') }}"></script>--}}
  321. <script src="https://cdn.jsdelivr.net/npm/sweetalert2@10.14.1/dist/sweetalert2.all.min.js"></script>
  322. <script src="{{asset('js/app.js')}}"></script>
  323. <script type="text/javascript" src="https://cdn.datatables.net/v/bs4/dt-1.10.24/datatables.min.js"></script>
  324. <!-- Summernote -->
  325. <script src="{{asset('plugins/summernote/summernote-bs4.min.js')}}"></script>
  326. <!-- select2 -->
  327. <script src="{{asset('plugins/select2/js/select2.min.js')}}"></script>
  328. <!-- Moment.js -->
  329. <script src="{{asset('plugins/moment/moment.min.js')}}"></script>
  330. <!-- Datetimepicker -->
  331. <script src="{{asset('plugins/tempusdominus-bootstrap-4/js/tempusdominus-bootstrap-4.min.js')}}"></script>
  332. <!-- Select2 -->
  333. <script src={{asset('plugins/select2/js/select2.min.js')}}>
  334. <script>
  335. $(document).ready(function () {
  336. $('[data-toggle="popover"]').popover();
  337. $.ajaxSetup({
  338. headers: {
  339. 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  340. }
  341. });
  342. });
  343. </script>
  344. <script>
  345. @if(Session::has('error'))
  346. Swal.fire({
  347. icon: 'error',
  348. title: 'Oops...',
  349. html: '{{Session::get('error')}}',
  350. })
  351. @endif
  352. @if(Session::has('success'))
  353. Swal.fire({
  354. icon: 'success',
  355. title: '{{Session::get('success')}}',
  356. position: 'top-end',
  357. showConfirmButton: false,
  358. background: '#343a40',
  359. toast: true,
  360. timer: 3000,
  361. timerProgressBar: true,
  362. didOpen: (toast) => {
  363. toast.addEventListener('mouseenter', Swal.stopTimer)
  364. toast.addEventListener('mouseleave', Swal.resumeTimer)
  365. }
  366. })
  367. @endif
  368. </script>
  369. </body>
  370. </html>