Merge pull request #78 from cp6/Development
Changes for the move to NPM Webpack asset loading
This commit is contained in:
commit
14f1e808eb
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -57,3 +57,7 @@ fabric.properties
|
|||
# .idea/misc.xml
|
||||
# *.ipr
|
||||
storage/clockwork/
|
||||
public/css/
|
||||
public/js/
|
||||
public/fonts/
|
||||
public/webfonts/
|
||||
|
|
11204
package-lock.json
generated
11204
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
32
package.json
32
package.json
|
@ -7,26 +7,26 @@
|
|||
"watch-poll": "mix watch -- --watch-options-poll=1000",
|
||||
"hot": "mix watch --hot",
|
||||
"prod": "npm run production",
|
||||
"production": "mix --production"
|
||||
"production": "mix --production",
|
||||
"build": "webpack --config webpack.config.js"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@popperjs/core": "^2.10.2",
|
||||
"@tailwindcss/forms": "^0.4.0",
|
||||
"alpinejs": "^3.4.2",
|
||||
"autoprefixer": "^10.1.0",
|
||||
"axios": "^0.21.4",
|
||||
"bootstrap": "^5.1.3",
|
||||
"bootstrap": "^5.2.2",
|
||||
"bootstrap-dark-5": "^1.1.3",
|
||||
"bootstrap-data-table": "^1.0.0",
|
||||
"datatables": "^1.10.18",
|
||||
"datatables.net-bs": "^1.13.1",
|
||||
"font-awesome": "^4.7.0",
|
||||
"jquery": "^3.6.1",
|
||||
"laravel-mix": "^6.0.41",
|
||||
"lodash": "^4.17.21",
|
||||
"postcss": "^8.2.1",
|
||||
"postcss-import": "^14.0.1",
|
||||
"resolve-url-loader": "^3.1.2",
|
||||
"sass": "^1.32.11",
|
||||
"sass-loader": "^11.0.1",
|
||||
"tailwindcss": "^3.0.0",
|
||||
"vue": "^2.6.12",
|
||||
"vue-loader": "^15.9.5",
|
||||
"vue": "^2.7.14",
|
||||
"vue-loader": "^17.0.1",
|
||||
"vue-resource": "^1.5.3",
|
||||
"vue-template-compiler": "^2.6.12"
|
||||
"vue-template-compiler": "^2.7.14"
|
||||
},
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome-free": "^6.2.0",
|
||||
"datatables.net-bs5": "^1.13.1"
|
||||
}
|
||||
}
|
||||
|
|
6
resources/css/app.css
vendored
6
resources/css/app.css
vendored
|
@ -1,3 +1,3 @@
|
|||
@import 'tailwindcss/base';
|
||||
@import 'tailwindcss/components';
|
||||
@import 'tailwindcss/utilities';
|
||||
@import '~@fortawesome/fontawesome-free/css/all.min.css';
|
||||
@import "datatables.net-bs5";
|
||||
@import "style.css";
|
||||
|
|
1
resources/css/dark.css
vendored
Normal file
1
resources/css/dark.css
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
@import 'bootstrap-dark-5';
|
1
resources/css/light.css
vendored
Normal file
1
resources/css/light.css
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
@import 'bootstrap';
|
28
resources/css/style.css
vendored
Normal file
28
resources/css/style.css
vendored
Normal file
|
@ -0,0 +1,28 @@
|
|||
/*
|
||||
Custom styles go in here
|
||||
*/
|
||||
|
||||
.modal-mask {
|
||||
position: fixed;
|
||||
z-index: 9998;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: rgba(0, 0, 0, .5);
|
||||
transition: opacity .3s ease;
|
||||
}
|
||||
|
||||
.modal-body {
|
||||
margin: 10px 0;
|
||||
}
|
||||
|
||||
.modal {
|
||||
display: contents !important;
|
||||
}
|
||||
|
||||
@media (min-width: 1400px) {
|
||||
.container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {
|
||||
max-width: 1520px;
|
||||
}
|
||||
}
|
14
resources/js/app.js
vendored
14
resources/js/app.js
vendored
|
@ -1,6 +1,8 @@
|
|||
require('./bootstrap');
|
||||
import Alpine from 'alpinejs';
|
||||
|
||||
window.Alpine = Alpine;
|
||||
|
||||
Alpine.start();
|
||||
require('bootstrap')
|
||||
require('datatables')
|
||||
window.Vue = require('vue/dist/vue');
|
||||
window.axios = require('axios');
|
||||
import $ from 'jquery';
|
||||
window.jQuery = $;
|
||||
window.$ = $;
|
||||
require('datatables.net-bs5');
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<div v-if="showModal">
|
||||
<transition name="modal">
|
||||
<div class="modal-mask">
|
||||
<div class="modal-wrapper">
|
||||
<transition name="modal">
|
||||
<div id="confirmDeleteModal" class="modal-mask d-none">
|
||||
<div class="modal">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header py-1">
|
||||
|
|
|
@ -1,19 +1,22 @@
|
|||
<script>
|
||||
let app = new Vue({
|
||||
el: "#app",
|
||||
data: {
|
||||
"modal_hostname": '',
|
||||
"modal_id": '',
|
||||
"delete_form_action": '',
|
||||
showModal: false
|
||||
},
|
||||
methods: {
|
||||
confirmDeleteModal(event) {
|
||||
this.showModal = true;
|
||||
this.modal_hostname = event.target.title;
|
||||
this.modal_id = event.target.id;
|
||||
this.delete_form_action = '{{$uri}}/' + this.modal_id;
|
||||
window.addEventListener('load', function() {
|
||||
document.getElementById("confirmDeleteModal").classList.remove("d-none");
|
||||
let app = new Vue({
|
||||
el: "#app",
|
||||
data: {
|
||||
"modal_hostname": '',
|
||||
"modal_id": '',
|
||||
"delete_form_action": '',
|
||||
showModal: false
|
||||
},
|
||||
methods: {
|
||||
confirmDeleteModal(event) {
|
||||
this.showModal = true;
|
||||
this.modal_hostname = event.target.title;
|
||||
this.modal_id = event.target.id;
|
||||
this.delete_form_action = '{{$uri}}/' + this.modal_id;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
})
|
||||
</script>
|
||||
|
|
|
@ -1,12 +1,8 @@
|
|||
@extends('layouts.index')
|
||||
@section('title', 'Domain names')
|
||||
@section('css_style')
|
||||
<x-modal-style></x-modal-style>
|
||||
@endsection
|
||||
@section('header')
|
||||
{{ __('Domains') }}
|
||||
@endsection
|
||||
@section('content')
|
||||
<x-app-layout>
|
||||
<x-slot name="header">
|
||||
{{ __('Domains') }}
|
||||
</x-slot>
|
||||
<div class="container" id="app">
|
||||
<x-delete-confirm-modal></x-delete-confirm-modal>
|
||||
<x-card class="shadow mt-3">
|
||||
|
@ -67,4 +63,4 @@
|
|||
<x-modal-delete-script>
|
||||
<x-slot name="uri">domains</x-slot>
|
||||
</x-modal-delete-script>
|
||||
@endsection
|
||||
</x-app-layout>
|
||||
|
|
|
@ -1,80 +1,74 @@
|
|||
@section("title", "IP addresses")
|
||||
@section('css_links')
|
||||
<link rel="stylesheet" href="{{ asset('css/datatables.bootstrap.min.css') }}">
|
||||
@endsection
|
||||
@section('style')
|
||||
<x-modal-style></x-modal-style>
|
||||
@endsection
|
||||
@section('scripts')
|
||||
<script src="{{ asset('js/vue.min.js') }}"></script>
|
||||
@endsection
|
||||
@section('title', 'IP addresses')
|
||||
<x-app-layout>
|
||||
<x-slot name="header">
|
||||
{{ __('IP Addresses') }}
|
||||
{{ __('IP addresses') }}
|
||||
</x-slot>
|
||||
<div class="container" id="app">
|
||||
<x-delete-confirm-modal></x-delete-confirm-modal>
|
||||
<x-card class="shadow mt-3">
|
||||
<a href="{{ route('IPs.create') }}" class="btn btn-primary mb-3">Add IP</a>
|
||||
<x-response-alerts></x-response-alerts>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered" id="ips-table">
|
||||
<thead class="table-light">
|
||||
<tr>
|
||||
<th class="text-nowrap">Type</th>
|
||||
<th class="text-nowrap">Address</th>
|
||||
<th class="text-nowrap">Actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@if(!empty($ips))
|
||||
@foreach($ips as $ip)
|
||||
<tr>
|
||||
<td class="text-nowrap">@if ($ip->is_ipv4 === 1)
|
||||
IPv4
|
||||
@else
|
||||
IPv6
|
||||
@endif</td>
|
||||
<td class="text-nowrap">{{ $ip->address}}</td>
|
||||
<td class="text-nowrap">
|
||||
<form action="{{ route('IPs.destroy', $ip->id) }}" method="POST">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
<i class="fas fa-trash text-danger ms-3" @click="confirmDeleteModal"
|
||||
id="{{$ip->id}}" title="{{$ip->address}}"></i>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@else
|
||||
<x-card class="shadow mt-3">
|
||||
<a href="{{ route('IPs.create') }}" class="btn btn-primary mb-3">Add IP</a>
|
||||
<x-response-alerts></x-response-alerts>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-bordered" id="ips-table">
|
||||
<thead class="table-light">
|
||||
<tr>
|
||||
<td class="px-4 py-2 border text-red-500" colspan="3">No IPs found.</td>
|
||||
<th class="text-nowrap">Type</th>
|
||||
<th class="text-nowrap">Address</th>
|
||||
<th class="text-nowrap">Actions</th>
|
||||
</tr>
|
||||
@endif
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</x-card>
|
||||
</thead>
|
||||
<tbody>
|
||||
@if(!empty($ips))
|
||||
@foreach($ips as $ip)
|
||||
<tr>
|
||||
<td class="text-nowrap">@if ($ip->is_ipv4 === 1)
|
||||
IPv4
|
||||
@else
|
||||
IPv6
|
||||
@endif</td>
|
||||
<td class="text-nowrap">{{ $ip->address}}</td>
|
||||
<td class="text-nowrap">
|
||||
<form action="{{ route('IPs.destroy', $ip->id) }}" method="POST">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
<i class="fas fa-trash text-danger ms-3" @click="confirmDeleteModal"
|
||||
id="{{$ip->id}}" title="{{$ip->address}}"></i>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@else
|
||||
<tr>
|
||||
<td class="px-4 py-2 border text-red-500" colspan="3">No IPs found.</td>
|
||||
</tr>
|
||||
@endif
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</x-card>
|
||||
<x-details-footer></x-details-footer>
|
||||
<x-delete-confirm-modal></x-delete-confirm-modal>
|
||||
</div>
|
||||
<x-datatables-assets></x-datatables-assets>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function () {
|
||||
$('#ips-table').DataTable({
|
||||
"pageLength": 15,
|
||||
"lengthMenu": [5, 10, 15, 25, 30, 50, 75, 100],
|
||||
"columnDefs": [
|
||||
{"orderable": false, "targets": 1}
|
||||
],
|
||||
"initComplete": function () {
|
||||
$('.dataTables_length,.dataTables_filter').addClass('mb-2');
|
||||
$('.dataTables_paginate').addClass('mt-2');
|
||||
$('.dataTables_info').addClass('mt-2 text-muted ');
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<x-modal-delete-script>
|
||||
<x-slot name="uri">IPs</x-slot>
|
||||
</x-modal-delete-script>
|
||||
@section('scripts')
|
||||
<script>
|
||||
window.addEventListener('load', function () {
|
||||
$('#ips-table').DataTable({
|
||||
"pageLength": 15,
|
||||
"lengthMenu": [5, 10, 15, 25, 30, 50, 75, 100],
|
||||
"columnDefs": [
|
||||
{"orderable": false, "targets": 1}
|
||||
],
|
||||
"initComplete": function () {
|
||||
$('.dataTables_length,.dataTables_filter').addClass('mb-2');
|
||||
$('.dataTables_paginate').addClass('mt-2');
|
||||
$('.dataTables_info').addClass('mt-2 text-muted ');
|
||||
}
|
||||
});
|
||||
})
|
||||
</script>
|
||||
@endsection
|
||||
</x-app-layout>
|
||||
|
||||
|
|
|
@ -1,19 +1,9 @@
|
|||
@section("title", "Labels")
|
||||
@section('css_links')
|
||||
<link rel="stylesheet" href="{{ asset('css/datatables.bootstrap.min.css') }}">
|
||||
@endsection
|
||||
@section('style')
|
||||
<x-modal-style></x-modal-style>
|
||||
@endsection
|
||||
@section('scripts')
|
||||
<script src="{{ asset('js/vue.min.js') }}"></script>
|
||||
@endsection
|
||||
@section('title', 'Labels')
|
||||
<x-app-layout>
|
||||
<x-slot name="header">
|
||||
{{ __('Labels') }}
|
||||
</x-slot>
|
||||
<div class="container" id="app">
|
||||
<x-delete-confirm-modal></x-delete-confirm-modal>
|
||||
<x-card class="shadow mt-3">
|
||||
<a href="{{ route('labels.create') }}" class="btn btn-primary mb-3">Add a label</a>
|
||||
<x-response-alerts></x-response-alerts>
|
||||
|
@ -49,26 +39,28 @@
|
|||
</tbody>
|
||||
</table>
|
||||
</x-card>
|
||||
<x-details-footer></x-details-footer>
|
||||
<x-details-footer></x-details-footer>
|
||||
<x-delete-confirm-modal></x-delete-confirm-modal>
|
||||
</div>
|
||||
<x-datatables-assets></x-datatables-assets>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function () {
|
||||
$('#labels-table').DataTable({
|
||||
"pageLength": 15,
|
||||
"lengthMenu": [5, 10, 15, 25, 30, 50, 75, 100],
|
||||
"columnDefs": [
|
||||
{"orderable": false, "targets": 1}
|
||||
],
|
||||
"initComplete": function () {
|
||||
$('.dataTables_length,.dataTables_filter').addClass('mb-2');
|
||||
$('.dataTables_paginate').addClass('mt-2');
|
||||
$('.dataTables_info').addClass('mt-2 text-muted ');
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<x-modal-delete-script>
|
||||
<x-slot name="uri">labels</x-slot>
|
||||
</x-modal-delete-script>
|
||||
@section('scripts')
|
||||
<script>
|
||||
window.addEventListener('load', function () {
|
||||
$('#labels-table').DataTable({
|
||||
"pageLength": 15,
|
||||
"lengthMenu": [5, 10, 15, 25, 30, 50, 75, 100],
|
||||
"columnDefs": [
|
||||
{"orderable": false, "targets": 1}
|
||||
],
|
||||
"initComplete": function () {
|
||||
$('.dataTables_length,.dataTables_filter').addClass('mb-2');
|
||||
$('.dataTables_paginate').addClass('mt-2');
|
||||
$('.dataTables_info').addClass('mt-2 text-muted ');
|
||||
}
|
||||
});
|
||||
})
|
||||
</script>
|
||||
@endsection
|
||||
</x-app-layout>
|
||||
|
|
|
@ -11,19 +11,16 @@
|
|||
<title>@yield('title') - @if (config()->has('app.name')) {{ config('app.name') }} @else My idlers @endif</title>
|
||||
|
||||
@if(Session::get('dark_mode'))
|
||||
<link rel="stylesheet" href="{{ asset('css/bootstrap-dark.min.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('css/dark.css') }}">
|
||||
@else
|
||||
<link rel="stylesheet" href="{{ asset('css/bootstrap.min.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('css/light.css') }}">
|
||||
@endif
|
||||
|
||||
<link rel="stylesheet" href="{{ asset('css/fa.min.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('css/app.css') }}">
|
||||
|
||||
@yield('css_links')
|
||||
@yield('style')
|
||||
|
||||
<script src="{{ asset('js/bootstrap.min.js') }}" defer></script>
|
||||
|
||||
@yield('scripts')
|
||||
</head>
|
||||
<body class="font-sans antialiased">
|
||||
<div class="container-fluid">
|
||||
|
@ -40,5 +37,7 @@
|
|||
<div class="container">
|
||||
{{ $slot }}
|
||||
</div>
|
||||
<script src="{{ asset('js/app.js') }}" defer></script>
|
||||
@yield('scripts')
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,19 +1,9 @@
|
|||
@section("title", "Locations")
|
||||
@section('css_links')
|
||||
<link rel="stylesheet" href="{{ asset('css/datatables.bootstrap.min.css') }}">
|
||||
@endsection
|
||||
@section('style')
|
||||
<x-modal-style></x-modal-style>
|
||||
@endsection
|
||||
@section('scripts')
|
||||
<script src="{{ asset('js/vue.min.js') }}"></script>
|
||||
@endsection
|
||||
@section('title', 'Locations')
|
||||
<x-app-layout>
|
||||
<x-slot name="header">
|
||||
{{ __('Locations') }}
|
||||
</x-slot>
|
||||
<div class="container" id="app">
|
||||
<x-delete-confirm-modal></x-delete-confirm-modal>
|
||||
<x-card class="shadow mt-3">
|
||||
<a href="{{ route('locations.create') }}" class="btn btn-primary mb-3">Add a location</a>
|
||||
<x-response-alerts></x-response-alerts>
|
||||
|
@ -49,25 +39,27 @@
|
|||
</table>
|
||||
</x-card>
|
||||
<x-details-footer></x-details-footer>
|
||||
<x-delete-confirm-modal></x-delete-confirm-modal>
|
||||
</div>
|
||||
<x-datatables-assets></x-datatables-assets>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function () {
|
||||
$('#locations-table').DataTable({
|
||||
"pageLength": 15,
|
||||
"lengthMenu": [5, 10, 15, 25, 30, 50, 75, 100],
|
||||
"columnDefs": [
|
||||
{"orderable": false, "targets": 1}
|
||||
],
|
||||
"initComplete": function () {
|
||||
$('.dataTables_length,.dataTables_filter').addClass('mb-2');
|
||||
$('.dataTables_paginate').addClass('mt-2');
|
||||
$('.dataTables_info').addClass('mt-2 text-muted ');
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<x-modal-delete-script>
|
||||
<x-slot name="uri">locations</x-slot>
|
||||
</x-modal-delete-script>
|
||||
@section('scripts')
|
||||
<script>
|
||||
window.addEventListener('load', function () {
|
||||
$('#locations-table').DataTable({
|
||||
"pageLength": 15,
|
||||
"lengthMenu": [5, 10, 15, 25, 30, 50, 75, 100],
|
||||
"columnDefs": [
|
||||
{"orderable": false, "targets": 1}
|
||||
],
|
||||
"initComplete": function () {
|
||||
$('.dataTables_length,.dataTables_filter').addClass('mb-2');
|
||||
$('.dataTables_paginate').addClass('mt-2');
|
||||
$('.dataTables_info').addClass('mt-2 text-muted ');
|
||||
}
|
||||
});
|
||||
})
|
||||
</script>
|
||||
@endsection
|
||||
</x-app-layout>
|
||||
|
|
|
@ -1,12 +1,8 @@
|
|||
@extends('layouts.index')
|
||||
@section('title', 'Misc services')
|
||||
@section('css_style')
|
||||
<x-modal-style></x-modal-style>
|
||||
@endsection
|
||||
@section('header')
|
||||
{{ __('Misc') }}
|
||||
@endsection
|
||||
@section('content')
|
||||
<x-app-layout>
|
||||
<x-slot name="header">
|
||||
{{ __('Misc') }}
|
||||
</x-slot>
|
||||
<div class="container" id="app">
|
||||
<x-delete-confirm-modal></x-delete-confirm-modal>
|
||||
<x-card class="shadow mt-3">
|
||||
|
@ -68,4 +64,4 @@
|
|||
<x-modal-delete-script>
|
||||
<x-slot name="uri">misc</x-slot>
|
||||
</x-modal-delete-script>
|
||||
@endsection
|
||||
</x-app-layout>
|
||||
|
|
|
@ -1,19 +1,9 @@
|
|||
@section("title", "Operating systems")
|
||||
@section('css_links')
|
||||
<link rel="stylesheet" href="{{ asset('css/datatables.bootstrap.min.css') }}">
|
||||
@endsection
|
||||
@section('style')
|
||||
<x-modal-style></x-modal-style>
|
||||
@endsection
|
||||
@section('scripts')
|
||||
<script src="{{ asset('js/vue.min.js') }}"></script>
|
||||
@endsection
|
||||
@section('title', 'Operating systems')
|
||||
<x-app-layout>
|
||||
<x-slot name="header">
|
||||
{{ __('Operating systems') }}
|
||||
</x-slot>
|
||||
<div class="container" id="app">
|
||||
<x-delete-confirm-modal></x-delete-confirm-modal>
|
||||
<x-card class="shadow mt-3">
|
||||
<a href="{{ route('os.create') }}" class="btn btn-primary mb-3">Add an OS</a>
|
||||
<x-response-alerts></x-response-alerts>
|
||||
|
@ -46,25 +36,27 @@
|
|||
</table>
|
||||
</x-card>
|
||||
<x-details-footer></x-details-footer>
|
||||
<x-delete-confirm-modal></x-delete-confirm-modal>
|
||||
</div>
|
||||
<x-datatables-assets></x-datatables-assets>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function () {
|
||||
$('#os-table').DataTable({
|
||||
"pageLength": 15,
|
||||
"lengthMenu": [5, 10, 15, 25, 30, 50, 75, 100],
|
||||
"columnDefs": [
|
||||
{"orderable": false, "targets": 1}
|
||||
],
|
||||
"initComplete": function () {
|
||||
$('.dataTables_length,.dataTables_filter').addClass('mb-2');
|
||||
$('.dataTables_paginate').addClass('mt-2');
|
||||
$('.dataTables_info').addClass('mt-2 text-muted ');
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<x-modal-delete-script>
|
||||
<x-slot name="uri">os</x-slot>
|
||||
</x-modal-delete-script>
|
||||
@section('scripts')
|
||||
<script>
|
||||
window.addEventListener('load', function () {
|
||||
$('#os-table').DataTable({
|
||||
"pageLength": 15,
|
||||
"lengthMenu": [5, 10, 15, 25, 30, 50, 75, 100],
|
||||
"columnDefs": [
|
||||
{"orderable": false, "targets": 1}
|
||||
],
|
||||
"initComplete": function () {
|
||||
$('.dataTables_length,.dataTables_filter').addClass('mb-2');
|
||||
$('.dataTables_paginate').addClass('mt-2');
|
||||
$('.dataTables_info').addClass('mt-2 text-muted ');
|
||||
}
|
||||
});
|
||||
})
|
||||
</script>
|
||||
@endsection
|
||||
</x-app-layout>
|
||||
|
|
|
@ -1,19 +1,9 @@
|
|||
@section("title", "Providers")
|
||||
@section('css_links')
|
||||
<link rel="stylesheet" href="{{ asset('css/datatables.bootstrap.min.css') }}">
|
||||
@endsection
|
||||
@section('style')
|
||||
<x-modal-style></x-modal-style>
|
||||
@endsection
|
||||
@section('scripts')
|
||||
<script src="{{ asset('js/vue.min.js') }}"></script>
|
||||
@endsection
|
||||
<x-app-layout>
|
||||
<x-slot name="header">
|
||||
{{ __('Providers') }}
|
||||
</x-slot>
|
||||
<div class="container" id="app">
|
||||
<x-delete-confirm-modal></x-delete-confirm-modal>
|
||||
<x-card class="shadow mt-3">
|
||||
<a href="{{ route('providers.create') }}" class="btn btn-primary mb-3">Add a provider</a>
|
||||
<x-response-alerts></x-response-alerts>
|
||||
|
@ -49,23 +39,25 @@
|
|||
</table>
|
||||
</x-card>
|
||||
<x-details-footer></x-details-footer>
|
||||
<x-delete-confirm-modal></x-delete-confirm-modal>
|
||||
</div>
|
||||
<x-datatables-assets></x-datatables-assets>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function () {
|
||||
$('#providers-table').DataTable({
|
||||
"pageLength": 15,
|
||||
"lengthMenu": [5, 10, 15, 25, 30, 50, 75, 100],
|
||||
"columnDefs": [
|
||||
{"orderable": false, "targets": 1}
|
||||
],
|
||||
"initComplete": function () {
|
||||
$('.dataTables_length,.dataTables_filter').addClass('mb-2');
|
||||
$('.dataTables_paginate').addClass('mt-2');
|
||||
$('.dataTables_info').addClass('mt-2 text-muted ');
|
||||
}
|
||||
window.addEventListener('load', function () {
|
||||
$(document).ready(function () {
|
||||
$('#providers-table').DataTable({
|
||||
"pageLength": 15,
|
||||
"lengthMenu": [5, 10, 15, 25, 30, 50, 75, 100],
|
||||
"columnDefs": [
|
||||
{"orderable": false, "targets": 1}
|
||||
],
|
||||
"initComplete": function () {
|
||||
$('.dataTables_length,.dataTables_filter').addClass('mb-2');
|
||||
$('.dataTables_paginate').addClass('mt-2');
|
||||
$('.dataTables_info').addClass('mt-2 text-muted ');
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
})
|
||||
</script>
|
||||
<x-modal-delete-script>
|
||||
<x-slot name="uri">providers</x-slot>
|
||||
|
|
|
@ -1,14 +1,9 @@
|
|||
@extends('layouts.index')
|
||||
@section('title', 'Resellers')
|
||||
@section('css_style')
|
||||
<x-modal-style></x-modal-style>
|
||||
@endsection
|
||||
@section('header')
|
||||
{{ __('Reseller') }}
|
||||
@endsection
|
||||
@section('content')
|
||||
<x-app-layout>
|
||||
<x-slot name="header">
|
||||
{{ __('Reseller') }}
|
||||
</x-slot>
|
||||
<div class="container" id="app">
|
||||
<x-delete-confirm-modal></x-delete-confirm-modal>
|
||||
<div class="card shadow mt-3">
|
||||
<div class="card-body">
|
||||
<a href="{{ route('reseller.create') }}" class="btn btn-primary mb-3">Add a reseller</a>
|
||||
|
@ -68,8 +63,9 @@
|
|||
</div>
|
||||
</div>
|
||||
<x-details-footer></x-details-footer>
|
||||
<x-delete-confirm-modal></x-delete-confirm-modal>
|
||||
</div>
|
||||
<x-modal-delete-script>
|
||||
<x-slot name="uri">reseller</x-slot>
|
||||
</x-modal-delete-script>
|
||||
@endsection
|
||||
</x-app-layout>
|
||||
|
|
|
@ -1,14 +1,9 @@
|
|||
@extends('layouts.index')
|
||||
@section('title', 'Seed boxes')
|
||||
@section('css_style')
|
||||
<x-modal-style></x-modal-style>
|
||||
@endsection
|
||||
@section('header')
|
||||
{{ __('Seed boxes') }}
|
||||
@endsection
|
||||
@section('content')
|
||||
<x-app-layout>
|
||||
<x-slot name="header">
|
||||
{{ __('Seed boxes') }}
|
||||
</x-slot>
|
||||
<div class="container" id="app">
|
||||
<x-delete-confirm-modal></x-delete-confirm-modal>
|
||||
<div class="card shadow mt-3">
|
||||
<div class="card-body">
|
||||
<a href="{{ route('seedboxes.create') }}" class="btn btn-primary mb-3">Add a seed box</a>
|
||||
|
@ -90,8 +85,9 @@
|
|||
</div>
|
||||
</div>
|
||||
<x-details-footer></x-details-footer>
|
||||
<x-delete-confirm-modal></x-delete-confirm-modal>
|
||||
</div>
|
||||
<x-modal-delete-script>
|
||||
<x-slot name="uri">seedboxes</x-slot>
|
||||
</x-modal-delete-script>
|
||||
@endsection
|
||||
</x-app-layout>
|
||||
|
|
|
@ -1,8 +1,4 @@
|
|||
@section("title", "Add a server")
|
||||
@section('scripts')
|
||||
<script src="{{ asset('js/vue.min.js') }}"></script>
|
||||
<script src="{{ asset('js/axios.min.js') }}"></script>
|
||||
@endsection
|
||||
<x-app-layout>
|
||||
<x-slot name="header">
|
||||
{{ __('Insert a new server') }}
|
||||
|
@ -224,7 +220,8 @@
|
|||
</x-labels-select>
|
||||
</div>
|
||||
</div>
|
||||
<x-form-check text="Allow this data to be public, restrict values in settings" name="show_public"></x-form-check>
|
||||
<x-form-check text="Allow this data to be public, restrict values in settings"
|
||||
name="show_public"></x-form-check>
|
||||
<div class="row">
|
||||
<div class="col-12 col-lg-4">
|
||||
<x-submit-button>Insert server</x-submit-button>
|
||||
|
@ -233,35 +230,39 @@
|
|||
</form>
|
||||
</x-card>
|
||||
</div>
|
||||
@section('scripts')
|
||||
<script>
|
||||
window.addEventListener('load', function () {
|
||||
|
||||
<script>
|
||||
axios.defaults.headers.common = {
|
||||
'Content-Type': 'application/json',
|
||||
'X-Requested-With': 'XMLHttpRequest',
|
||||
'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').getAttribute('content'),
|
||||
'Accept': 'application/json',
|
||||
};
|
||||
axios.defaults.headers.common = {
|
||||
'Content-Type': 'application/json',
|
||||
'X-Requested-With': 'XMLHttpRequest',
|
||||
'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').getAttribute('content'),
|
||||
'Accept': 'application/json',
|
||||
};
|
||||
|
||||
let app = new Vue({
|
||||
el: "#app",
|
||||
data: {
|
||||
"ipv4_in": '',
|
||||
"ipv6_in": ''
|
||||
},
|
||||
methods: {
|
||||
fetchDnsRecords(event) {
|
||||
var hostname = document.getElementById('hostname').value;
|
||||
let app = new Vue({
|
||||
el: "#app",
|
||||
data: {
|
||||
"ipv4_in": '',
|
||||
"ipv6_in": ''
|
||||
},
|
||||
methods: {
|
||||
fetchDnsRecords(event) {
|
||||
var hostname = document.getElementById('hostname').value;
|
||||
|
||||
if (hostname) {
|
||||
axios
|
||||
.get('/api/dns/' + hostname + '/A', {headers: {'Authorization': 'Bearer ' + document.querySelector('meta[name="api_token"]').getAttribute('content')}})
|
||||
.then(response => (this.ipv4_in = response.data.ip));
|
||||
axios
|
||||
.get('/api/dns/' + hostname + '/AAAA', {headers: {'Authorization': 'Bearer ' + document.querySelector('meta[name="api_token"]').getAttribute('content')}})
|
||||
.then(response => (this.ipv6_in = response.data.ip));
|
||||
if (hostname) {
|
||||
axios
|
||||
.get('/api/dns/' + hostname + '/A', {headers: {'Authorization': 'Bearer ' + document.querySelector('meta[name="api_token"]').getAttribute('content')}})
|
||||
.then(response => (this.ipv4_in = response.data.ip));
|
||||
axios
|
||||
.get('/api/dns/' + hostname + '/AAAA', {headers: {'Authorization': 'Bearer ' + document.querySelector('meta[name="api_token"]').getAttribute('content')}})
|
||||
.then(response => (this.ipv6_in = response.data.ip));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
||||
});
|
||||
})
|
||||
</script>
|
||||
@endsection
|
||||
</x-app-layout>
|
||||
|
|
|
@ -1,17 +1,9 @@
|
|||
@section("title", "Servers")
|
||||
@section('style')
|
||||
<x-modal-style></x-modal-style>
|
||||
@endsection
|
||||
@section('scripts')
|
||||
<script src="{{ asset('js/vue.min.js') }}"></script>
|
||||
<script src="{{ asset('js/axios.min.js') }}"></script>
|
||||
@endsection
|
||||
@section('title', 'Servers')
|
||||
<x-app-layout>
|
||||
<x-slot name="header">
|
||||
{{ __('Servers') }}
|
||||
</x-slot>
|
||||
<div class="container" id="app">
|
||||
<x-delete-confirm-modal></x-delete-confirm-modal>
|
||||
<x-response-alerts></x-response-alerts>
|
||||
<ul class="nav nav-tabs mt-3" id="myTab" role="tablist">
|
||||
<li class="nav-item" role="presentation">
|
||||
|
@ -94,7 +86,7 @@
|
|||
|
||||
<i class="fas fa-plug mx-1" id="{{$server->hostname}}"
|
||||
title="check if up"
|
||||
@click="checkUp">
|
||||
@click="checkIfUp">
|
||||
</i>
|
||||
<i class="fas fa-trash text-danger ms-3" @click="confirmDeleteModal"
|
||||
id="{{$server->id}}" title="{{$server->hostname}}"></i>
|
||||
|
@ -175,7 +167,7 @@
|
|||
|
||||
<i class="fas fa-plug mx-1" id="{{$server->hostname}}"
|
||||
title="check if up"
|
||||
@click="checkUp">
|
||||
@click="checkIfUp">
|
||||
</i>
|
||||
<i class="fas fa-trash text-danger ms-3" @click="confirmDeleteModal"
|
||||
id="{{$server->id}}" title="{{$server->hostname}}"></i>
|
||||
|
@ -196,47 +188,54 @@
|
|||
</div>
|
||||
<x-details-footer></x-details-footer>
|
||||
</div>
|
||||
<x-delete-confirm-modal></x-delete-confirm-modal>
|
||||
</div>
|
||||
@section('scripts')
|
||||
<script>
|
||||
axios.defaults.headers.common = {
|
||||
'Content-Type': 'application/json',
|
||||
'X-Requested-With': 'XMLHttpRequest',
|
||||
'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').getAttribute('content'),
|
||||
'Accept': 'application/json',
|
||||
};
|
||||
window.addEventListener('load', function () {
|
||||
document.getElementById("confirmDeleteModal").classList.remove("d-none");
|
||||
axios.defaults.headers.common = {
|
||||
'Content-Type': 'application/json',
|
||||
'X-Requested-With': 'XMLHttpRequest',
|
||||
'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').getAttribute('content'),
|
||||
'Accept': 'application/json',
|
||||
};
|
||||
|
||||
let app = new Vue({
|
||||
el: "#app",
|
||||
data: {
|
||||
"status": false,
|
||||
"modal_hostname": '',
|
||||
"modal_id": '',
|
||||
"delete_form_action": '',
|
||||
showModal: false
|
||||
},
|
||||
methods: {
|
||||
checkUp(event) {
|
||||
var hostname = event.target.id;
|
||||
|
||||
if (hostname) {
|
||||
axios
|
||||
.get('/api/online/' + event.target.id, {headers: {'Authorization': 'Bearer ' + document.querySelector('meta[name="api_token"]').getAttribute('content')}})
|
||||
.then(response => (this.status = response.data.is_online))
|
||||
.finally(() => {
|
||||
if (this.status) {
|
||||
event.target.className = "fas fa-plug text-success mx-1";
|
||||
} else if (!this.status) {
|
||||
event.target.className = "fas fa-plug text-danger mx-1";
|
||||
}
|
||||
});
|
||||
}
|
||||
let app = new Vue({
|
||||
el: "#app",
|
||||
data: {
|
||||
"status": false,
|
||||
"modal_hostname": '',
|
||||
"modal_id": '',
|
||||
"delete_form_action": '',
|
||||
showModal: false
|
||||
},
|
||||
confirmDeleteModal(event) {
|
||||
this.showModal = true;
|
||||
this.modal_hostname = event.target.title;
|
||||
this.modal_id = event.target.id;
|
||||
this.delete_form_action = 'servers/' + this.modal_id;
|
||||
methods: {
|
||||
checkIfUp(event) {
|
||||
var hostname = event.target.id;
|
||||
|
||||
if (hostname) {
|
||||
axios
|
||||
.get('/api/online/' + event.target.id, {headers: {'Authorization': 'Bearer ' + document.querySelector('meta[name="api_token"]').getAttribute('content')}})
|
||||
.then(response => (this.status = response.data.is_online))
|
||||
.finally(() => {
|
||||
if (this.status) {
|
||||
event.target.className = "fas fa-plug text-success mx-1";
|
||||
} else if (!this.status) {
|
||||
event.target.className = "fas fa-plug text-danger mx-1";
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
confirmDeleteModal(event) {
|
||||
this.showModal = true;
|
||||
this.modal_hostname = event.target.title;
|
||||
this.modal_id = event.target.id;
|
||||
this.delete_form_action = 'servers/' + this.modal_id;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
})
|
||||
</script>
|
||||
@endsection
|
||||
</x-app-layout>
|
||||
|
|
|
@ -1,14 +1,9 @@
|
|||
@extends('layouts.index')
|
||||
@section('title', 'Shared hosting')
|
||||
@section('css_style')
|
||||
<x-modal-style></x-modal-style>
|
||||
@endsection
|
||||
@section('header')
|
||||
{{ __('Shared') }}
|
||||
@endsection
|
||||
@section('content')
|
||||
<x-app-layout>
|
||||
<x-slot name="header">
|
||||
{{ __('Shared') }}
|
||||
</x-slot>
|
||||
<div class="container" id="app">
|
||||
<x-delete-confirm-modal></x-delete-confirm-modal>
|
||||
<div class="card shadow mt-3">
|
||||
<div class="card-body">
|
||||
<a href="{{ route('shared.create') }}" class="btn btn-primary mb-3">Add shared hosting</a>
|
||||
|
@ -70,8 +65,9 @@
|
|||
</div>
|
||||
</div>
|
||||
<x-details-footer></x-details-footer>
|
||||
<x-delete-confirm-modal></x-delete-confirm-modal>
|
||||
</div>
|
||||
<x-modal-delete-script>
|
||||
<x-slot name="uri">shared</x-slot>
|
||||
</x-modal-delete-script>
|
||||
@endsection
|
||||
</x-app-layout>
|
||||
|
|
|
@ -1,10 +1,4 @@
|
|||
@section("title", "YABS results")
|
||||
@section('style')
|
||||
<x-modal-style></x-modal-style>
|
||||
@endsection
|
||||
@section('scripts')
|
||||
<script src="{{ asset('js/vue.min.js') }}"></script>
|
||||
@endsection
|
||||
@section('title', 'YABS results')
|
||||
<x-app-layout>
|
||||
<x-slot name="header">
|
||||
{{ __('YABS') }}
|
||||
|
|
7
webpack.mix.js
vendored
7
webpack.mix.js
vendored
|
@ -12,7 +12,8 @@ const mix = require('laravel-mix');
|
|||
*/
|
||||
|
||||
mix.js('resources/js/app.js', 'public/js').postCss('resources/css/app.css', 'public/css', [
|
||||
require('postcss-import'),
|
||||
require('tailwindcss'),
|
||||
require('autoprefixer'),
|
||||
|
||||
]);
|
||||
|
||||
mix.postCss('resources/css/light.css', 'public/css');
|
||||
mix.postCss('resources/css/dark.css', 'public/css');
|
||||
|
|
Loading…
Reference in New Issue
Block a user