coolify/resources/views/layouts/base.blade.php

157 lines
6.5 KiB
PHP
Raw Normal View History

2023-08-29 16:31:46 +02:00
<!DOCTYPE html>
2023-08-29 20:25:42 +02:00
<html data-theme="coollabs" lang="{{ str_replace('_', '-', app()->getLocale()) }}">
2023-11-21 12:07:06 +01:00
2023-08-29 16:31:46 +02:00
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="preconnect" href="https://api.fonts.coollabs.io" crossorigin>
<link href="https://api.fonts.coollabs.io/css2?family=Inter&display=swap" rel="stylesheet">
2023-10-17 13:28:33 +02:00
<meta name="robots" content="noindex">
2023-08-29 16:31:46 +02:00
<title>Coolify</title>
@env('local')
<link rel="icon" href="{{ asset('favicon-dev.png') }}" type="image/x-icon" />
@else
<link rel="icon" href="{{ asset('coolify-transparent.png') }}" type="image/x-icon" />
@endenv
<meta name="csrf-token" content="{{ csrf_token() }}">
@vite(['resources/js/app.js', 'resources/css/app.css'])
<style>
[x-cloak] {
display: none !important;
}
</style>
2023-09-11 16:41:43 +02:00
@if (config('app.name') == 'Coolify Cloud')
<script defer data-domain="app.coolify.io" src="https://analytics.coollabs.io/js/plausible.js"></script>
@endif
2023-12-06 10:32:49 +01:00
@auth
2023-12-06 12:28:05 +01:00
<script src="https://cdnjs.cloudflare.com/ajax/libs/laravel-echo/1.15.3/echo.iife.min.js"
integrity="sha512-aPAh2oRUr3ALz2MwVWkd6lmdgBQC0wSr0R++zclNjXZreT/JrwDPZQwA/p6R3wOCTcXKIHgA9pQGEQBWQmdLaA=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/pusher/8.3.0/pusher.min.js"
integrity="sha512-tXL5mrkSoP49uQf2jO0LbvzMyFgki//znmq0wYXGq94gVF6TU0QlrSbwGuPpKTeN1mIjReeqKZ4/NJPjHN1d2Q=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
2023-12-06 10:32:49 +01:00
@endauth
2023-08-29 16:31:46 +02:00
</head>
@section('body')
2023-11-21 12:07:06 +01:00
2023-08-29 16:31:46 +02:00
<body>
2023-12-07 19:06:32 +01:00
@livewire('wire-elements-modal')
2023-09-12 15:06:07 +02:00
<dialog id="help" class="modal">
<livewire:help />
<form method="dialog" class="modal-backdrop">
<button>close</button>
</form>
</dialog>
2023-08-31 21:56:53 +02:00
<x-toaster-hub />
<x-version class="fixed left-2 bottom-1" />
2023-12-07 19:06:32 +01:00
<script data-navigate-once>
2023-12-10 15:57:46 +01:00
@auth
window.Pusher = Pusher;
window.Echo = new Echo({
broadcaster: 'pusher',
2023-12-11 18:06:29 +01:00
cluster: "{{ env('PUSHER_HOST') }}" || window.location.hostname,
2023-12-10 15:57:46 +01:00
key: "{{ env('PUSHER_APP_KEY') }}" || 'coolify',
2023-12-11 18:06:29 +01:00
wsHost: "{{ env('PUSHER_HOST') }}" || window.location.hostname,
2023-12-11 20:01:54 +01:00
wsPort: "{{ getRealtime() }}",
wssPort: "{{ getRealtime() }}",
2023-12-10 15:57:46 +01:00
forceTLS: false,
encrypted: true,
enableStats: false,
enableLogging: true,
enabledTransports: ['ws', 'wss'],
});
@endauth
2023-08-31 21:56:53 +02:00
let checkHealthInterval = null;
let checkIfIamDeadInterval = null;
2023-08-29 16:31:46 +02:00
2023-08-31 21:56:53 +02:00
function changePasswordFieldType(event) {
let element = event.target
for (let i = 0; i < 10; i++) {
if (element.className === "relative") {
break;
2023-08-29 16:31:46 +02:00
}
2023-08-31 21:56:53 +02:00
element = element.parentElement;
}
element = element.children[1];
if (element.nodeName === 'INPUT') {
if (element.type === 'password') {
element.type = 'text';
} else {
element.type = 'password';
2023-08-29 16:31:46 +02:00
}
}
2023-08-31 21:56:53 +02:00
}
2023-08-29 16:31:46 +02:00
2023-09-15 15:50:37 +02:00
function revive() {
if (checkHealthInterval) return true;
console.log('Checking server\'s health...')
checkHealthInterval = setInterval(() => {
fetch('/api/health')
.then(response => {
if (response.ok) {
Toaster.success('Coolify is back online. Reloading...')
if (checkHealthInterval) clearInterval(checkHealthInterval);
setTimeout(() => {
window.location.reload();
}, 5000)
} else {
console.log('Waiting for server to come back from dead...');
}
})
}, 2000);
}
function upgrade() {
if (checkIfIamDeadInterval) return true;
console.log('Update initiated.')
checkIfIamDeadInterval = setInterval(() => {
fetch('/api/health')
.then(response => {
if (response.ok) {
console.log('It\'s alive. Waiting for server to be dead...');
} else {
Toaster.success('Update done, restarting Coolify!')
console.log('It\'s dead. Reviving... Standby... Bzz... Bzz...')
if (checkIfIamDeadInterval) clearInterval(checkIfIamDeadInterval);
revive();
}
})
}, 2000);
}
2023-09-25 09:34:32 +02:00
2023-08-31 21:56:53 +02:00
function copyToClipboard(text) {
navigator?.clipboard?.writeText(text) && window.Livewire.dispatch('success', 'Copied to clipboard.');
2023-08-31 21:56:53 +02:00
}
2023-12-07 19:06:32 +01:00
document.addEventListener('livewire:init', () => {
window.Livewire.on('reloadWindow', (timeout) => {
if (timeout) {
setTimeout(() => {
window.location.reload();
}, timeout);
return;
} else {
2023-08-29 16:31:46 +02:00
window.location.reload();
2023-12-07 19:06:32 +01:00
}
})
window.Livewire.on('info', (message) => {
if (message) Toaster.info(message)
})
window.Livewire.on('error', (message) => {
if (message) Toaster.error(message)
})
window.Livewire.on('warning', (message) => {
if (message) Toaster.warning(message)
})
window.Livewire.on('success', (message) => {
if (message) Toaster.success(message)
})
window.Livewire.on('installDocker', () => {
installDocker.showModal();
})
});
2023-08-31 21:56:53 +02:00
</script>
2023-08-29 16:31:46 +02:00
</body>
@show
</html>