wip: migrate to livewire 3
This commit is contained in:
@@ -1,19 +1,8 @@
|
||||
import Alpine from "alpinejs";
|
||||
import focus from '@alpinejs/focus';
|
||||
import { createApp } from "vue";
|
||||
import MagicBar from "./components/MagicBar.vue";
|
||||
import Toaster from "../../vendor/masmerise/livewire-toaster/resources/js";
|
||||
import '../../vendor/masmerise/livewire-toaster/resources/js';
|
||||
import "../../vendor/wire-elements/modal/resources/js/modal";
|
||||
|
||||
Alpine.plugin(focus);
|
||||
Alpine.plugin(Toaster);
|
||||
|
||||
window.Alpine = Alpine;
|
||||
Alpine.start();
|
||||
|
||||
const app = createApp({});
|
||||
app.component("magic-bar", MagicBar);
|
||||
app.mount("#vue");
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
<div>
|
||||
<form action="/login" method="POST" class="flex flex-col gap-2">
|
||||
@csrf
|
||||
@env('local')
|
||||
@env('local')
|
||||
<x-forms.input value="test@example.com" type="email" name="email" required
|
||||
label="{{ __('input.email') }}" autofocus />
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<div class="min-w-fit">
|
||||
<h1> Verification Email Sent </h1>
|
||||
<div class="flex justify-center gap-2 text-center">
|
||||
<br>To activate your account, please open the email and follow the
|
||||
<br>To activate your account, please open the email and follow the
|
||||
instructions.
|
||||
</div>
|
||||
<livewire:verify-email />
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<div class="group">
|
||||
@if (data_get($application, 'fqdn') ||
|
||||
collect(json_decode($this->application->docker_compose_domains))->count() > 0 ||
|
||||
collect(json_decode($this->application->docker_compose_domains))->count() > 0 ||
|
||||
data_get($application, 'previews', collect([]))->count() > 0 ||
|
||||
data_get($application, 'ports_mappings_array'))
|
||||
<label tabindex="0" class="flex items-center gap-2 cursor-pointer hover:text-white"> Open Application
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
<div class="navbar-main">
|
||||
<a class="{{ request()->routeIs('project.application.configuration') ? 'text-white' : '' }}"
|
||||
<a wire:navigate class="{{ request()->routeIs('project.application.configuration') ? 'text-white' : '' }}"
|
||||
href="{{ route('project.application.configuration', $parameters) }}">
|
||||
<button>Configuration</button>
|
||||
</a>
|
||||
<a class="{{ request()->routeIs('project.application.command') ? 'text-white' : '' }}"
|
||||
<a wire:navigate class="{{ request()->routeIs('project.application.command') ? 'text-white' : '' }}"
|
||||
href="{{ route('project.application.command', $parameters) }}">
|
||||
<button>Execute Command</button>
|
||||
</a>
|
||||
<a class="{{ request()->routeIs('project.application.logs') ? 'text-white' : '' }}"
|
||||
<a wire:navigate class="{{ request()->routeIs('project.application.logs') ? 'text-white' : '' }}"
|
||||
href="{{ route('project.application.logs', $parameters) }}">
|
||||
<button>Logs</button>
|
||||
</a>
|
||||
<a class="{{ request()->routeIs('project.application.deployments') ? 'text-white' : '' }}"
|
||||
<a wire:navigate class="{{ request()->routeIs('project.application.deployments') ? 'text-white' : '' }}"
|
||||
href="{{ route('project.application.deployments', $parameters) }}">
|
||||
<button>Deployments</button>
|
||||
</a>
|
||||
|
||||
@@ -1,25 +1,25 @@
|
||||
<div class="grid grid-cols-1 gap-4 md:grid-cols-3">
|
||||
<div class="box-border col-span-2 min-w-[24rem] min-h-[21rem]">
|
||||
<h1 class="text-5xl font-bold">{{$title}}</h1>
|
||||
<h1 class="text-5xl font-bold">{{ $title }}</h1>
|
||||
<div class="py-6 ">
|
||||
@isset($question)
|
||||
<p class="text-base">
|
||||
{{$question}}
|
||||
</p>
|
||||
<p class="text-base">
|
||||
{{ $question }}
|
||||
</p>
|
||||
@endisset
|
||||
</div>
|
||||
@if($actions)
|
||||
<div class="flex flex-col flex-wrap gap-4 md:flex-row">
|
||||
{{$actions}}
|
||||
</div>
|
||||
@if ($actions)
|
||||
<div class="flex flex-col flex-wrap gap-4 md:flex-row">
|
||||
{{ $actions }}
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
@isset($explanation)
|
||||
<div class="col-span-1">
|
||||
<h1 class="pb-8 font-bold">Explanation</h1>
|
||||
<div class="space-y-4">
|
||||
{{$explanation}}
|
||||
<div class="col-span-1">
|
||||
<h1 class="pb-8 font-bold">Explanation</h1>
|
||||
<div class="space-y-4">
|
||||
{{ $explanation }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endisset
|
||||
</div>
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
<x-emails.header />
|
||||
{{ Illuminate\Mail\Markdown::parse($slot) }}
|
||||
<x-emails.footer />
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -12,6 +12,6 @@
|
||||
</span>
|
||||
<input @disabled($disabled) type="checkbox" {{ $attributes->merge(['class' => $defaultClass]) }}
|
||||
@if ($instantSave) wire:loading.attr="disabled" wire:click='{{ $instantSave === 'instantSave' || $instantSave == '1' ? 'instantSave' : $instantSave }}'
|
||||
wire:model.defer={{ $id }} @else wire:model.defer={{ $value ?? $id }} @endif />
|
||||
wire:model={{ $id }} @else wire:model={{ $value ?? $id }} @endif />
|
||||
</label>
|
||||
</div>
|
||||
|
||||
@@ -23,16 +23,15 @@
|
||||
</div>
|
||||
@endif
|
||||
<input {{ $attributes->merge(['class' => $defaultClass . ' pl-10']) }} @required($required)
|
||||
wire:model.defer={{ $id }} wire:dirty.class.remove='text-white'
|
||||
wire:dirty.class="input-warning" wire:loading.attr="disabled" type="{{ $type }}"
|
||||
@readonly($readonly) @disabled($disabled) id="{{ $id }}" name="{{ $name }}"
|
||||
placeholder="{{ $attributes->get('placeholder') }}"
|
||||
wire:model={{ $id }} wire:dirty.class.remove='text-white' wire:dirty.class="input-warning"
|
||||
wire:loading.attr="disabled" type="{{ $type }}" @readonly($readonly) @disabled($disabled)
|
||||
id="{{ $id }}" name="{{ $name }}" placeholder="{{ $attributes->get('placeholder') }}"
|
||||
aria-placeholder="{{ $attributes->get('placeholder') }}">
|
||||
|
||||
</div>
|
||||
@else
|
||||
<input {{ $attributes->merge(['class' => $defaultClass]) }} @required($required) @readonly($readonly)
|
||||
wire:model.defer={{ $id }} wire:dirty.class.remove='text-white' wire:dirty.class="input-warning"
|
||||
wire:model={{ $id }} wire:dirty.class.remove='text-white' wire:dirty.class="input-warning"
|
||||
wire:loading.attr="disabled" type="{{ $type }}" @disabled($disabled)
|
||||
id="{{ $id }}" name="{{ $name }}" placeholder="{{ $attributes->get('placeholder') }}">
|
||||
@endif
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
@endif
|
||||
<select {{ $attributes->merge(['class' => $defaultClass]) }} @required($required) wire:dirty.class.remove='text-white'
|
||||
wire:dirty.class="text-black bg-warning" wire:loading.attr="disabled" name={{ $id }}
|
||||
@if ($attributes->whereStartsWith('wire:model')->first()) {{ $attributes->whereStartsWith('wire:model')->first() }} @else wire:model.defer={{ $id }} @endif>
|
||||
@if ($attributes->whereStartsWith('wire:model')->first()) {{ $attributes->whereStartsWith('wire:model')->first() }} @else wire:model={{ $id }} @endif>
|
||||
{{ $slot }}
|
||||
</select>
|
||||
@error($id)
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<textarea placeholder="{{ $placeholder }}" {{ $attributes->merge(['class' => $defaultClass]) }}
|
||||
@if ($realtimeValidation) wire:model.debounce.200ms="{{ $id }}"
|
||||
@else
|
||||
wire:model.defer={{ $value ?? $id }}
|
||||
wire:model={{ $value ?? $id }}
|
||||
wire:dirty.class="input-warning" @endif
|
||||
@disabled($disabled) @readonly($readonly) @required($required) id="{{ $id }}" name="{{ $name }}"
|
||||
name={{ $id }}></textarea>
|
||||
|
||||
@@ -1 +1 @@
|
||||
<span class="inline-block text-warning">{{$text}}</span>
|
||||
<span class="inline-block text-warning">{{ $text }}</span>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<div class="flex flex-col items-center justify-center h-screen">
|
||||
<span class="text-xl font-bold text-white">You have reached the limit of {{ $name }} you can create.</span>
|
||||
<span>Please <a class="text-white underline "href="{{ route('team.index') }}">upgrade your
|
||||
subscription<a /> to create more
|
||||
{{ $name }}.</span>
|
||||
subscription</a> to create more
|
||||
{{ $name }}.</span>
|
||||
</div>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<dialog id="{{ $modalId }}" class="modal">
|
||||
@if ($yesOrNo)
|
||||
<form method="dialog" class="rounded modal-box" @if(!$noSubmit) wire:submit.prevent='submit' @endif>
|
||||
<form method="dialog" class="rounded modal-box" @if (!$noSubmit) wire:submit='submit' @endif>
|
||||
<div class="flex items-start">
|
||||
<div class="flex items-center justify-center flex-shrink-0 w-10 h-10 mr-4 rounded-full">
|
||||
<svg class="w-8 h-8 text-error" fill="none" viewBox="0 0 24 24" stroke-width="1.5"
|
||||
@@ -34,8 +34,8 @@
|
||||
</form>
|
||||
@else
|
||||
<form method="dialog" class="flex flex-col w-11/12 max-w-5xl gap-2 rounded modal-box"
|
||||
@if($submitWireAction) wire:submit.prevent={{$submitWireAction}} @endif
|
||||
@if(!$noSubmit && !$submitWireAction) wire:submit.prevent='submit' @endif>
|
||||
@if ($submitWireAction) wire:submit={{ $submitWireAction }} @endif
|
||||
@if (!$noSubmit && !$submitWireAction) wire:submit='submit' @endif>
|
||||
@isset($modalTitle)
|
||||
<h3 class="text-lg font-bold">{{ $modalTitle }}</h3>
|
||||
@endisset
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
class="transition rounded w-11 h-11" src="{{ asset('coolify-transparent.png') }}"></a>
|
||||
<ul class="flex flex-col h-full gap-4 menu flex-nowrap">
|
||||
<li title="Dashboard">
|
||||
<a class="hover:bg-transparent" @if (!request()->is('/')) href="/" @endif>
|
||||
<a wire:navigate class="hover:bg-transparent" href="/">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="{{ request()->is('/') ? 'text-warning icon' : 'icon' }}"
|
||||
fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
@@ -13,7 +13,7 @@
|
||||
</a>
|
||||
</li>
|
||||
<li title="Servers">
|
||||
<a class="hover:bg-transparent" @if (!request()->is('servers')) href="/servers" @endif>
|
||||
<a wire:navigate class="hover:bg-transparent" href="/servers">
|
||||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
class="{{ request()->is('server/*') || request()->is('servers') ? 'text-warning icon' : 'icon' }}"
|
||||
viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round"
|
||||
@@ -28,7 +28,7 @@
|
||||
</a>
|
||||
</li>
|
||||
<li title="Projects">
|
||||
<a class="hover:bg-transparent" @if (!request()->is('projects')) href="/projects" @endif>
|
||||
<a wire:navigate class="hover:bg-transparent" href="/projects">
|
||||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
class="{{ request()->is('project/*') || request()->is('projects') ? 'text-warning icon' : 'icon' }}"
|
||||
viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round"
|
||||
@@ -41,7 +41,7 @@
|
||||
</a>
|
||||
</li>
|
||||
<li title="Command Center">
|
||||
<a class="hover:bg-transparent" @if (!request()->is('command-center')) href="/command-center" @endif>
|
||||
<a wire:navigate class="hover:bg-transparent" href="/command-center">
|
||||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
class="{{ request()->is('command-center') ? 'text-warning icon' : 'icon' }}" viewBox="0 0 24 24"
|
||||
stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round"
|
||||
@@ -53,7 +53,7 @@
|
||||
</a>
|
||||
</li>
|
||||
<li title="Source">
|
||||
<a class="hover:bg-transparent" href="{{ route('source.all') }}">
|
||||
<a wire:navigate class="hover:bg-transparent" href="{{ route('source.all') }}">
|
||||
<svg class="icon" viewBox="0 0 15 15" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill="currentColor"
|
||||
d="m6.793 1.207l.353.354l-.353-.354ZM1.207 6.793l-.353-.354l.353.354Zm0 1.414l.354-.353l-.354.353Zm5.586 5.586l-.354.353l.354-.353Zm1.414 0l-.353-.354l.353.354Zm5.586-5.586l.353.354l-.353-.354Zm0-1.414l-.354.353l.354-.353ZM8.207 1.207l.354-.353l-.354.353ZM6.44.854L.854 6.439l.707.707l5.585-5.585L6.44.854ZM.854 8.56l5.585 5.585l.707-.707l-5.585-5.585l-.707.707Zm7.707 5.585l5.585-5.585l-.707-.707l-5.585 5.585l.707.707Zm5.585-7.707L8.561.854l-.707.707l5.585 5.585l.707-.707Zm0 2.122a1.5 1.5 0 0 0 0-2.122l-.707.707a.5.5 0 0 1 0 .708l.707.707ZM6.44 14.146a1.5 1.5 0 0 0 2.122 0l-.707-.707a.5.5 0 0 1-.708 0l-.707.707ZM.854 6.44a1.5 1.5 0 0 0 0 2.122l.707-.707a.5.5 0 0 1 0-.708L.854 6.44Zm6.292-4.878a.5.5 0 0 1 .708 0L8.56.854a1.5 1.5 0 0 0-2.122 0l.707.707Zm-2 1.293l1 1l.708-.708l-1-1l-.708.708ZM7.5 5a.5.5 0 0 1-.5-.5H6A1.5 1.5 0 0 0 7.5 6V5Zm.5-.5a.5.5 0 0 1-.5.5v1A1.5 1.5 0 0 0 9 4.5H8ZM7.5 4a.5.5 0 0 1 .5.5h1A1.5 1.5 0 0 0 7.5 3v1Zm0-1A1.5 1.5 0 0 0 6 4.5h1a.5.5 0 0 1 .5-.5V3Zm.646 2.854l1.5 1.5l.707-.708l-1.5-1.5l-.707.708ZM10.5 8a.5.5 0 0 1-.5-.5H9A1.5 1.5 0 0 0 10.5 9V8Zm.5-.5a.5.5 0 0 1-.5.5v1A1.5 1.5 0 0 0 12 7.5h-1Zm-.5-.5a.5.5 0 0 1 .5.5h1A1.5 1.5 0 0 0 10.5 6v1Zm0-1A1.5 1.5 0 0 0 9 7.5h1a.5.5 0 0 1 .5-.5V6ZM7 5.5v4h1v-4H7Zm.5 5.5a.5.5 0 0 1-.5-.5H6A1.5 1.5 0 0 0 7.5 12v-1Zm.5-.5a.5.5 0 0 1-.5.5v1A1.5 1.5 0 0 0 9 10.5H8Zm-.5-.5a.5.5 0 0 1 .5.5h1A1.5 1.5 0 0 0 7.5 9v1Zm0-1A1.5 1.5 0 0 0 6 10.5h1a.5.5 0 0 1 .5-.5V9Z" />
|
||||
@@ -61,7 +61,7 @@
|
||||
</a>
|
||||
</li>
|
||||
<li title="Security">
|
||||
<a class="hover:bg-transparent" href="{{ route('security.private-key.index') }}">
|
||||
<a wire:navigate class="hover:bg-transparent" href="{{ route('security.private-key.index') }}">
|
||||
<svg class="icon" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"
|
||||
stroke-width="2"
|
||||
@@ -70,7 +70,7 @@
|
||||
</a>
|
||||
</li>
|
||||
<li title="Teams">
|
||||
<a class="hover:bg-transparent" href="{{ route('team.index') }}">
|
||||
<a wire:navigate class="hover:bg-transparent" href="{{ route('team.index') }}">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon" viewBox="0 0 24 24" stroke-width="1.5"
|
||||
stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
@@ -86,10 +86,12 @@
|
||||
|
||||
<div class="flex-1"></div>
|
||||
@if (isInstanceAdmin() && !isCloud())
|
||||
<livewire:upgrade />
|
||||
@persist('upgrade')
|
||||
<livewire:upgrade />
|
||||
@endpersist
|
||||
@endif
|
||||
<li title="Help us!">
|
||||
<a class="hover:bg-transparent"href="https://coolify.io/sponsorships" target="_blank">
|
||||
<a class="hover:bg-transparent" href="https://coolify.io/sponsorships" target="_blank">
|
||||
<svg class="icon hover:text-pink-500" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"
|
||||
stroke-width="2">
|
||||
@@ -101,7 +103,7 @@
|
||||
</a>
|
||||
</li>
|
||||
<li title="Profile">
|
||||
<a class="hover:bg-transparent" @if (!request()->is('profile')) href="/profile" @endif>
|
||||
<a wire:navigate class="hover:bg-transparent" href="/profile">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon" viewBox="0 0 24 24" stroke-width="1.5"
|
||||
stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path stroke="none" d="M0 0h24v24H0z" fill="none" />
|
||||
@@ -114,7 +116,7 @@
|
||||
|
||||
@if (isInstanceAdmin())
|
||||
<li title="Settings" class="mt-auto">
|
||||
<a class="hover:bg-transparent" @if (!request()->is('settings')) href="/settings" @endif>
|
||||
<a wire:navigate class="hover:bg-transparent" href="/settings">
|
||||
<svg xmlns="http://www.w3.org/2000/svg"
|
||||
class="{{ request()->is('settings*') ? 'text-warning icon' : 'icon' }}" viewBox="0 0 24 24"
|
||||
stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<nav class="flex pt-2 pb-10">
|
||||
<ol class="flex items-center">
|
||||
<li class="inline-flex items-center">
|
||||
<a class="text-xs truncate lg:text-sm"
|
||||
<a wire:nagivate class="text-xs truncate lg:text-sm"
|
||||
href="{{ route('project.show', ['project_uuid' => $this->parameters['project_uuid']]) }}">
|
||||
{{ data_get($resource, 'environment.project.name', 'Undefined Name') }}</a>
|
||||
</li>
|
||||
@@ -13,7 +13,7 @@
|
||||
d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"
|
||||
clip-rule="evenodd"></path>
|
||||
</svg>
|
||||
<a class="text-xs truncate lg:text-sm"
|
||||
<a wire:nagivate class="text-xs truncate lg:text-sm"
|
||||
href="{{ route('project.resources', ['environment_name' => $this->parameters['environment_name'], 'project_uuid' => $this->parameters['project_uuid']]) }}">{{ $this->parameters['environment_name'] }}</a>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
@@ -6,6 +6,6 @@
|
||||
[{{ $fqdn }}]({{ $fqdn }}).
|
||||
@endif
|
||||
|
||||
[View Deployment Logs]({{ $deployment_url }})
|
||||
[View Deployment Logs]({{ $deployment_url }})
|
||||
|
||||
</x-emails.layout>
|
||||
|
||||
@@ -2,9 +2,10 @@
|
||||
@if ($pull_request_id === 0)
|
||||
A new version of {{ $name }} is available at [{{ $fqdn }}]({{ $fqdn }}) .
|
||||
@else
|
||||
Pull request #{{ $pull_request_id }} of {{ $name }} deployed successfully [{{ $fqdn }}]({{ $fqdn }}).
|
||||
Pull request #{{ $pull_request_id }} of {{ $name }} deployed successfully
|
||||
[{{ $fqdn }}]({{ $fqdn }}).
|
||||
@endif
|
||||
|
||||
[View Deployment Logs]({{ $deployment_url }})
|
||||
[View Deployment Logs]({{ $deployment_url }})
|
||||
|
||||
</x-emails.layout>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<x-emails.layout>
|
||||
|
||||
{{ $name }} has been stopped.
|
||||
{{ $name }} has been stopped.
|
||||
|
||||
If it was your intention to stop this application, you can ignore this email.
|
||||
If it was your intention to stop this application, you can ignore this email.
|
||||
|
||||
If not, [check what is going on]({{ $application_url }}).
|
||||
If not, [check what is going on]({{ $application_url }}).
|
||||
|
||||
</x-emails.layout>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<x-emails.layout>
|
||||
Database backup for {{ $name }} with frequency of {{ $frequency }} was FAILED.
|
||||
Database backup for {{ $name }} with frequency of {{ $frequency }} was FAILED.
|
||||
|
||||
### Reason
|
||||
### Reason
|
||||
|
||||
{{ $output }}
|
||||
{{ $output }}
|
||||
|
||||
</x-emails.layout>
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
<x-emails.layout>
|
||||
Database backup for {{ $name }} with frequency of {{ $frequency }} was successful.
|
||||
Database backup for {{ $name }} with frequency of {{ $frequency }} was successful.
|
||||
</x-emails.layout>
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
<x-emails.layout>
|
||||
We would like to inform you that a {{config('constants.limits.trial_period')}} days of trial has been added to all subscription plans.
|
||||
We would like to inform you that a {{ config('constants.limits.trial_period') }} days of trial has been added to all
|
||||
subscription plans.
|
||||
|
||||
You can try out Coolify, without payment information for free. If you like it, you can upgrade to a paid plan at any time.
|
||||
You can try out Coolify, without payment information for free. If you like it, you can upgrade to a paid plan at any
|
||||
time.
|
||||
|
||||
[Click here](https://app.coolify.io/subscription) to start your trial.
|
||||
[Click here](https://app.coolify.io/subscription) to start your trial.
|
||||
</x-emails.layout>
|
||||
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
<x-emails.layout>
|
||||
|
||||
A service ({{ $containerName }}) has been restarted automatically on {{$serverName}}, because it was stopped unexpectedly.
|
||||
A service ({{ $containerName }}) has been restarted automatically on {{ $serverName }}, because it was stopped
|
||||
unexpectedly.
|
||||
|
||||
@if ($containerName === 'coolify-proxy')
|
||||
Coolify Proxy should run on your server as you have FQDNs set up in one of your resources.
|
||||
@if ($containerName === 'coolify-proxy')
|
||||
Coolify Proxy should run on your server as you have FQDNs set up in one of your resources.
|
||||
|
||||
If you don't want to use Coolify Proxy, please remove FQDN from your resources or set Proxy type to Custom(None).
|
||||
@endif
|
||||
If you don't want to use Coolify Proxy, please remove FQDN from your resources or set Proxy type to
|
||||
Custom(None).
|
||||
@endif
|
||||
|
||||
</x-emails.layout>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<x-emails.layout>
|
||||
|
||||
A service ({{ $containerName }}) has been stopped unexpectedly on {{$serverName}}.
|
||||
A service ({{ $containerName }}) has been stopped unexpectedly on {{ $serverName }}.
|
||||
|
||||
@if ($url)
|
||||
Please check what is going on [here]({{ $url }}).
|
||||
@endif
|
||||
@if ($url)
|
||||
Please check what is going on [here]({{ $url }}).
|
||||
@endif
|
||||
|
||||
</x-emails.layout>
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
<x-emails.layout>
|
||||
|
||||
Your server ({{ $name }}) has high disk usage ({{ $disk_usage }}% used). Threshold is {{ $threshold }}%.
|
||||
Your server ({{ $name }}) has high disk usage ({{ $disk_usage }}% used). Threshold is
|
||||
{{ $threshold }}%.
|
||||
|
||||
Please cleanup your disk to prevent data-loss. Here are some [tips](https://coolify.io/docs/automated-cleanup).
|
||||
Please cleanup your disk to prevent data-loss. Here are some [tips](https://coolify.io/docs/automated-cleanup).
|
||||
|
||||
(You can change the threshold in the Server Settings menu.)
|
||||
(You can change the threshold in the Server Settings menu.)
|
||||
|
||||
</x-emails.layout>
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<x-emails.layout>
|
||||
|
||||
You have been invited to "{{ $team }}" on "{{ config('app.name') }}".
|
||||
You have been invited to "{{ $team }}" on "{{ config('app.name') }}".
|
||||
|
||||
Please [click here]({{ $invitation_link }}) to accept the invitation.
|
||||
Please [click here]({{ $invitation_link }}) to accept the invitation.
|
||||
|
||||
If you have any questions, please contact the team owner.<br><br>
|
||||
If you have any questions, please contact the team owner.<br><br>
|
||||
|
||||
If it was not you who requested this invitation, please ignore this email.
|
||||
If it was not you who requested this invitation, please ignore this email.
|
||||
</x-emails.layout>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<x-emails.layout>
|
||||
A password reset has been requested for this email address.
|
||||
A password reset has been requested for this email address.
|
||||
|
||||
Click [here]({{ $url }}) to reset your password.
|
||||
Click [here]({{ $url }}) to reset your password.
|
||||
|
||||
This link will expire in {{ $count }} minutes.
|
||||
This link will expire in {{ $count }} minutes.
|
||||
</x-emails.layout>
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
<x-emails.layout>
|
||||
|
||||
Coolify cannot connect to your server ({{$name}}). Please check your server and make sure it is running.
|
||||
Coolify cannot connect to your server ({{ $name }}). Please check your server and make sure it is running.
|
||||
|
||||
All automations & integrations are turned off!
|
||||
All automations & integrations are turned off!
|
||||
|
||||
IMPORTANT: We automatically try to revive your server. If your server is back online, we will automatically turn on all automations & integrations.
|
||||
IMPORTANT: We automatically try to revive your server. If your server is back online, we will automatically turn on
|
||||
all automations & integrations.
|
||||
|
||||
If you have any questions, please contact us.
|
||||
If you have any questions, please contact us.
|
||||
|
||||
</x-emails.layout>
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<x-emails.layout>
|
||||
|
||||
Your server ({{$name}}) was offline for a while, but it is back online now. All automations & integrations are turned on again.
|
||||
Your server ({{ $name }}) was offline for a while, but it is back online now. All automations & integrations
|
||||
are turned on again.
|
||||
|
||||
</x-emails.layout>
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<x-emails.layout>
|
||||
Your last invoice has failed to be paid for Coolify Cloud.
|
||||
Your last invoice has failed to be paid for Coolify Cloud.
|
||||
|
||||
Please update payment details [here]({{$stripeCustomerPortal}}).
|
||||
Please update payment details [here]({{ $stripeCustomerPortal }}).
|
||||
|
||||
</x-emails.layout>
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
<x-emails.layout>
|
||||
If you are seeing this, it means that your Email settings are correct.
|
||||
If you are seeing this, it means that your Email settings are correct.
|
||||
</x-emails.layout>
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
<x-emails.layout>
|
||||
|
||||
Your trial ended. All automations and integrations are disabled for all of your servers.
|
||||
Your trial ended. All automations and integrations are disabled for all of your servers.
|
||||
|
||||
Please update payment details [here]({{$stripeCustomerPortal}}) or in [Coolify Cloud](https://app.coolify.io) to continue using our services.
|
||||
Please update payment details [here]({{ $stripeCustomerPortal }}) or in [Coolify Cloud](https://app.coolify.io) to
|
||||
continue using our services.
|
||||
|
||||
</x-emails.layout>
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
<x-emails.layout>
|
||||
|
||||
Your trial ends soon. Please update payment details [here]({{$stripeCustomerPortal}}),
|
||||
Your trial ends soon. Please update payment details [here]({{ $stripeCustomerPortal }}),
|
||||
|
||||
Your servers & deployed resources will be untouched, but you won't be able to deploy new resources and lost all automations and integrations.
|
||||
Your servers & deployed resources will be untouched, but you won't be able to deploy new resources and lost all
|
||||
automations and integrations.
|
||||
|
||||
</x-emails.layout>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<x-emails.layout>
|
||||
|
||||
<br><br>
|
||||
If you do not like to receive these emails, you can unsubscribe [here]({{$unsubscribeUrl}}).
|
||||
<br><br>
|
||||
If you do not like to receive these emails, you can unsubscribe [here]({{ $unsubscribeUrl }}).
|
||||
</x-emails.layout>
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
<x-emails.layout>
|
||||
Someone added this email to the Coolify Cloud's waitlist. [Click here]({{ $confirmation_url }}) to confirm!
|
||||
Someone added this email to the Coolify Cloud's waitlist. [Click here]({{ $confirmation_url }}) to confirm!
|
||||
|
||||
The link will expire in {{config('constants.waitlist.expiration')}} minutes.
|
||||
The link will expire in {{ config('constants.waitlist.expiration') }} minutes.
|
||||
|
||||
|
||||
You have no idea what [Coolify Cloud](https://coolify.io) is or this waitlist? [Click here]({{ $cancel_url }}) to remove you from the waitlist.
|
||||
You have no idea what [Coolify Cloud](https://coolify.io) is or this waitlist? [Click here]({{ $cancel_url }}) to
|
||||
remove you from the waitlist.
|
||||
|
||||
</x-emails.layout>
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
<x-emails.layout>
|
||||
You have been invited to join the Coolify Cloud: [Get Started]({{$loginLink}})
|
||||
You have been invited to join the Coolify Cloud: [Get Started]({{ $loginLink }})
|
||||
</x-emails.layout>
|
||||
|
||||
|
||||
@@ -4,7 +4,8 @@
|
||||
<div class="">
|
||||
<p class="font-mono text-6xl font-semibold text-warning">429</p>
|
||||
<h1 class="mt-4 font-bold tracking-tight text-white">Woah, slow down there!</h1>
|
||||
<p class="mt-6 text-base leading-7 text-neutral-300">You're making too many requests. Please wait a few seconds before trying again.
|
||||
<p class="mt-6 text-base leading-7 text-neutral-300">You're making too many requests. Please wait a few
|
||||
seconds before trying again.
|
||||
</p>
|
||||
<div class="flex items-center justify-center mt-10 gap-x-6">
|
||||
<a href="/">
|
||||
|
||||
@@ -2,9 +2,11 @@
|
||||
@section('body')
|
||||
@parent
|
||||
<x-navbar />
|
||||
<div class="fixed z-30 top-[4.5rem] left-4" id="vue">
|
||||
<magic-bar></magic-bar>
|
||||
</div>
|
||||
@persist('magic-bar')
|
||||
<div class="fixed z-30 top-[4.5rem] left-4" id="vue">
|
||||
<magic-bar></magic-bar>
|
||||
</div>
|
||||
@endpersist
|
||||
<livewire:sponsorship />
|
||||
<main class="pb-10 main max-w-screen-2xl">
|
||||
{{ $slot }}
|
||||
|
||||
@@ -20,7 +20,6 @@
|
||||
display: none !important;
|
||||
}
|
||||
</style>
|
||||
@livewireStyles
|
||||
@if (config('app.name') == 'Coolify Cloud')
|
||||
<script defer data-domain="app.coolify.io" src="https://analytics.coollabs.io/js/plausible.js"></script>
|
||||
@endif
|
||||
@@ -36,8 +35,7 @@
|
||||
@section('body')
|
||||
|
||||
<body>
|
||||
@livewireScripts
|
||||
@livewire('livewire-ui-modal')
|
||||
@livewire('wire-elements-modal')
|
||||
<dialog id="help" class="modal">
|
||||
<livewire:help />
|
||||
<form method="dialog" class="modal-backdrop">
|
||||
@@ -47,7 +45,7 @@
|
||||
<x-toaster-hub />
|
||||
<x-version class="fixed left-2 bottom-1" />
|
||||
|
||||
<script>
|
||||
<script data-navigate-once>
|
||||
@auth
|
||||
window.Pusher = Pusher;
|
||||
window.Echo = new Echo({
|
||||
@@ -67,7 +65,8 @@
|
||||
if ("{{ auth()->user()->id }}" == 0) {
|
||||
let checkPusherInterval = null;
|
||||
let checkNumber = 0;
|
||||
let errorMessage = "Coolify could not connect to the new realtime service introduced in beta.154.<br>Please check the related <a href='https://coolify.io/docs/cloudflare-tunnels' target='_blank'>documentation</a> or get help on <a href='https://coollabs.io/discord' target='_blank'>Discord</a>.";
|
||||
let errorMessage =
|
||||
"Coolify could not connect to the new realtime service introduced in beta.154.<br>Please check the related <a href='https://coolify.io/docs/cloudflare-tunnels' target='_blank'>documentation</a> or get help on <a href='https://coollabs.io/discord' target='_blank'>Discord</a>.";
|
||||
checkPusherInterval = setInterval(() => {
|
||||
if (window.Echo) {
|
||||
if (window.Echo.connector.pusher.connection.state !== 'connected') {
|
||||
@@ -77,7 +76,7 @@
|
||||
Livewire.emit('error', errorMessage);
|
||||
}
|
||||
} else {
|
||||
console.log('Coolify is now connected to the new realtime service introduced in beta.154.');
|
||||
console.log('Coolify is now connected to the new realtime service introduced in beta.154.');
|
||||
clearInterval(checkPusherInterval);
|
||||
}
|
||||
} else {
|
||||
@@ -146,34 +145,35 @@
|
||||
}
|
||||
|
||||
function copyToClipboard(text) {
|
||||
navigator?.clipboard?.writeText(text) && Livewire.emit('success', 'Copied to clipboard.');
|
||||
navigator?.clipboard?.writeText(text) && window.Livewire.emit('success', 'Copied to clipboard.');
|
||||
}
|
||||
|
||||
Livewire.on('reloadWindow', (timeout) => {
|
||||
if (timeout) {
|
||||
setTimeout(() => {
|
||||
document.addEventListener('livewire:init', () => {
|
||||
window.Livewire.on('reloadWindow', (timeout) => {
|
||||
if (timeout) {
|
||||
setTimeout(() => {
|
||||
window.location.reload();
|
||||
}, timeout);
|
||||
return;
|
||||
} else {
|
||||
window.location.reload();
|
||||
}, timeout);
|
||||
return;
|
||||
} else {
|
||||
window.location.reload();
|
||||
}
|
||||
})
|
||||
Livewire.on('info', (message) => {
|
||||
if (message) Toaster.info(message)
|
||||
})
|
||||
Livewire.on('error', (message) => {
|
||||
if (message) Toaster.error(message)
|
||||
})
|
||||
Livewire.on('warning', (message) => {
|
||||
if (message) Toaster.warning(message)
|
||||
})
|
||||
Livewire.on('success', (message) => {
|
||||
if (message) Toaster.success(message)
|
||||
})
|
||||
Livewire.on('installDocker', () => {
|
||||
installDocker.showModal();
|
||||
})
|
||||
}
|
||||
})
|
||||
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();
|
||||
})
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
@show
|
||||
|
||||
@@ -2,9 +2,11 @@
|
||||
@section('body')
|
||||
@parent
|
||||
@if (isSubscriptionOnGracePeriod())
|
||||
<div class="fixed top-[4.5rem] left-4 z-50" id="vue">
|
||||
<magic-bar></magic-bar>
|
||||
</div>
|
||||
@persist('magic-bar')
|
||||
<div class="fixed top-[4.5rem] left-4 z-50" id="vue">
|
||||
<magic-bar></magic-bar>
|
||||
</div>
|
||||
@endpersist
|
||||
<x-navbar />
|
||||
@else
|
||||
<x-navbar-subscription />
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
wire:click="setPrivateKey('create')">No (create one for me)
|
||||
</x-forms.button>
|
||||
@if (count($privateKeys) > 0)
|
||||
<form wire:submit.prevent='selectExistingPrivateKey' class="flex flex-col w-full gap-4 pr-10">
|
||||
<form wire:submit='selectExistingPrivateKey' class="flex flex-col w-full gap-4 pr-10">
|
||||
<x-forms.select label="Existing SSH Keys" id='selectedExistingPrivateKey'>
|
||||
@foreach ($privateKeys as $privateKey)
|
||||
<option wire:key="{{ $loop->index }}" value="{{ $privateKey->id }}">
|
||||
@@ -120,7 +120,7 @@
|
||||
<x-forms.button class="justify-center box" wire:click="createNewServer">No (create one for me)
|
||||
</x-forms.button>
|
||||
<div>
|
||||
<form wire:submit.prevent='selectExistingServer' class="flex flex-col w-full gap-4 lg:w-96">
|
||||
<form wire:submit='selectExistingServer' class="flex flex-col w-full gap-4 lg:w-96">
|
||||
<x-forms.select label="Existing servers" class="w-96" id='selectedExistingServer'>
|
||||
@foreach ($servers as $server)
|
||||
<option wire:key="{{ $loop->index }}" value="{{ $server->id }}">
|
||||
@@ -159,7 +159,7 @@
|
||||
Please let me know your key details.
|
||||
</x-slot:question>
|
||||
<x-slot:actions>
|
||||
<form wire:submit.prevent='savePrivateKey' class="flex flex-col w-full gap-4 pr-10">
|
||||
<form wire:submit='savePrivateKey' class="flex flex-col w-full gap-4 pr-10">
|
||||
<x-forms.input required placeholder="Choose a name for your Private Key. Could be anything."
|
||||
label="Name" id="privateKeyName" />
|
||||
<x-forms.input placeholder="Description, so others will know more about this."
|
||||
@@ -192,7 +192,7 @@
|
||||
Please let me know your server details.
|
||||
</x-slot:question>
|
||||
<x-slot:actions>
|
||||
<form wire:submit.prevent='saveServer' class="flex flex-col w-full gap-4 pr-10">
|
||||
<form wire:submit='saveServer' class="flex flex-col w-full gap-4 pr-10">
|
||||
<div class="flex gap-2">
|
||||
<x-forms.input required placeholder="Choose a name for your Server. Could be anything."
|
||||
label="Name" id="remoteServerName" />
|
||||
@@ -291,8 +291,7 @@
|
||||
one!</x-forms.button>
|
||||
<div>
|
||||
@if (count($projects) > 0)
|
||||
<form wire:submit.prevent='selectExistingProject'
|
||||
class="flex flex-col w-full gap-4 lg:w-96">
|
||||
<form wire:submit='selectExistingProject' class="flex flex-col w-full gap-4 lg:w-96">
|
||||
<x-forms.select label="Existing projects" class="w-96"
|
||||
id='selectedExistingProject'>
|
||||
@foreach ($projects as $project)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<form wire:submit.prevent='submit' class="flex flex-col gap-2">
|
||||
<form wire:submit='submit' class="flex flex-col gap-2">
|
||||
<div>
|
||||
@if ($settings->is_resale_license_active)
|
||||
<div class="text-success">License is active</div>
|
||||
|
||||
@@ -27,17 +27,16 @@
|
||||
<div class="grid grid-cols-1 gap-2 xl:grid-cols-2">
|
||||
@endif
|
||||
@foreach ($projects as $project)
|
||||
<div class="gap-2 border border-transparent cursor-pointer box group" x-data
|
||||
x-on:click="gotoProject('{{ $project->uuid }}','{{ data_get($project, 'environments.0.name', 'production') }}')">
|
||||
<div class="gap-2 border border-transparent cursor-pointer box group">
|
||||
@if (data_get($project, 'environments.0.name'))
|
||||
<a class="flex flex-col flex-1 mx-6 hover:no-underline"
|
||||
<a wire:navigate class="flex flex-col flex-1 mx-6 hover:no-underline"
|
||||
href="{{ route('project.resources', ['project_uuid' => data_get($project, 'uuid'), 'environment_name' => data_get($project, 'environments.0.name', 'production')]) }}">
|
||||
<div class="font-bold text-white">{{ $project->name }}</div>
|
||||
<div class="description">
|
||||
{{ $project->description }}</div>
|
||||
</a>
|
||||
@else
|
||||
<a class="flex flex-col flex-1 mx-6 hover:no-underline"
|
||||
<a wire:navigate class="flex flex-col flex-1 mx-6 hover:no-underline"
|
||||
href="{{ route('project.show', ['project_uuid' => data_get($project, 'uuid')]) }}">
|
||||
<div class="font-bold text-white">{{ $project->name }}</div>
|
||||
<div class="description">
|
||||
@@ -45,11 +44,11 @@
|
||||
</a>
|
||||
@endif
|
||||
<div class="flex items-center">
|
||||
<a class="mx-4 rounded group-hover:text-white hover:no-underline"
|
||||
<a wire:navigate class="mx-4 rounded group-hover:text-white hover:no-underline"
|
||||
href="{{ route('project.resources.new', ['project_uuid' => data_get($project, 'uuid'), 'environment_name' => data_get($project, 'environments.0.name', 'production')]) }}">
|
||||
<span class="font-bold hover:text-warning">+ New Resource</span>
|
||||
</a>
|
||||
<a class="mx-4 rounded group-hover:text-white"
|
||||
<a wire:navigate class="mx-4 rounded group-hover:text-white"
|
||||
href="{{ route('project.edit', ['project_uuid' => data_get($project, 'uuid')]) }}">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon hover:text-warning" viewBox="0 0 24 24"
|
||||
stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round"
|
||||
@@ -73,11 +72,12 @@
|
||||
<div class="grid grid-cols-3 gap-2">
|
||||
@endif
|
||||
@foreach ($servers as $server)
|
||||
<a href="{{ route('server.show', ['server_uuid' => data_get($server, 'uuid')]) }}" @class([
|
||||
'gap-2 border cursor-pointer box group',
|
||||
'border-transparent' => $server->settings->is_reachable,
|
||||
'border-red-500' => !$server->settings->is_reachable,
|
||||
])>
|
||||
<a wire:navigate href="{{ route('server.show', ['server_uuid' => data_get($server, 'uuid')]) }}"
|
||||
@class([
|
||||
'gap-2 border cursor-pointer box group',
|
||||
'border-transparent' => $server->settings->is_reachable,
|
||||
'border-red-500' => !$server->settings->is_reachable,
|
||||
])>
|
||||
<div class="flex flex-col mx-6">
|
||||
<div class="font-bold text-white">
|
||||
{{ $server->name }}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<div>
|
||||
<h1>Create a new Destination</h1>
|
||||
<div class="subtitle ">Destinations are used to segregate resources by network.</div>
|
||||
<form class="flex flex-col gap-4" wire:submit.prevent='submit'>
|
||||
<form class="flex flex-col gap-4" wire:submit='submit'>
|
||||
<div class="flex gap-2">
|
||||
<x-forms.input id="name" label="Name" required />
|
||||
<x-forms.input id="network" label="Network" required />
|
||||
|
||||
@@ -23,17 +23,16 @@
|
||||
<h3 class="pb-4">Found Destinations</h3>
|
||||
@endif
|
||||
<div class="flex flex-wrap gap-2 ">
|
||||
@foreach ($networks as $network)
|
||||
<div >
|
||||
<a
|
||||
|
||||
href="{{ route('destination.new', ['server_id' => $server->id, 'network_name' => data_get($network, 'Name')]) }}">
|
||||
<x-forms.button >+<x-highlighted text="{{ data_get($network, 'Name') }}" />
|
||||
</x-forms.button>
|
||||
</a>
|
||||
@foreach ($networks as $network)
|
||||
<div>
|
||||
<a
|
||||
href="{{ route('destination.new', ['server_id' => $server->id, 'network_name' => data_get($network, 'Name')]) }}">
|
||||
<x-forms.button>+<x-highlighted text="{{ data_get($network, 'Name') }}" />
|
||||
</x-forms.button>
|
||||
</a>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
@else
|
||||
<div>Server is not validated. Validate first.</div>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<div>
|
||||
<h2>S3 Test</h2>
|
||||
<form wire:submit.prevent="save">
|
||||
<form wire:submit="save">
|
||||
<input type="file" wire:model="file">
|
||||
@error('file')
|
||||
<span class="error">{{ $message }}</span>
|
||||
|
||||
@@ -8,10 +8,11 @@
|
||||
<div class="flex items-center justify-center pb-4 text-center">
|
||||
<h2>Set your initial password</h2>
|
||||
</div>
|
||||
<form class="flex flex-col gap-2" wire:submit.prevent='submit'>
|
||||
<form class="flex flex-col gap-2" wire:submit='submit'>
|
||||
<x-forms.input id="email" type="email" placeholder="Email" readonly label="Email" />
|
||||
<x-forms.input id="password" type="password" placeholder="New Password" label="New Password" required />
|
||||
<x-forms.input id="password_confirmation" type="password" placeholder="Confirm New Password" label="Confirm New Password" required />
|
||||
<x-forms.input id="password_confirmation" type="password" placeholder="Confirm New Password"
|
||||
label="Confirm New Password" required />
|
||||
<x-forms.button type="submit">Reset Password</x-forms.button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<div class="flex flex-col w-11/12 max-w-5xl gap-2 modal-box">
|
||||
<h3>How can we help?</h3>
|
||||
<div>Your feedback helps us to improve Coolify. Thank you! 💜</div>
|
||||
<form wire:submit.prevent="submit" class="flex flex-col gap-4 pt-4">
|
||||
<form wire:submit="submit" class="flex flex-col gap-4 pt-4">
|
||||
<x-forms.input id="subject" label="Subject" placeholder="Summary of your problem."></x-forms.input>
|
||||
<x-forms.textarea rows="10" id="description" label="Description"
|
||||
placeholder="Please provide as much information as possible."></x-forms.textarea>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<form x-data="{ raw: true }" class="custom-modal" wire:submit.prevent='submit'>
|
||||
<form x-data="{ raw: true }" class="custom-modal" wire:submit='submit'>
|
||||
<div class="flex items-end gap-2">
|
||||
<h1>Docker Compose</h1>
|
||||
<div x-cloak x-show="raw">
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<div>
|
||||
<form wire:submit.prevent='submit' class="flex flex-col">
|
||||
<form wire:submit='submit' class="flex flex-col">
|
||||
<div class="flex items-center gap-2">
|
||||
<h2>Discord</h2>
|
||||
<x-forms.button type="submit">
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<div>
|
||||
<dialog id="sendTestEmail" class="modal">
|
||||
<form method="dialog" class="flex flex-col gap-2 rounded modal-box" wire:submit.prevent='submit'>
|
||||
<form method="dialog" class="flex flex-col gap-2 rounded modal-box" wire:submit='submit'>
|
||||
<x-forms.input placeholder="test@example.com" id="emails" label="Recepients" required />
|
||||
<x-forms.button onclick="sendTestEmail.close()" wire:click="sendTestNotification">
|
||||
Send Email
|
||||
@@ -10,7 +10,7 @@
|
||||
<button>close</button>
|
||||
</form>
|
||||
</dialog>
|
||||
<form wire:submit.prevent='submit' class="flex flex-col">
|
||||
<form wire:submit='submit' class="flex flex-col">
|
||||
<div class="flex items-center gap-2">
|
||||
<h2>Email</h2>
|
||||
<x-forms.button type="submit">
|
||||
@@ -51,7 +51,7 @@
|
||||
</div>
|
||||
@endif
|
||||
@if (!$team->use_instance_email_settings)
|
||||
<form class="flex flex-col items-end gap-2 pb-4 xl:flex-row" wire:submit.prevent='submitFromFields'>
|
||||
<form class="flex flex-col items-end gap-2 pb-4 xl:flex-row" wire:submit='submitFromFields'>
|
||||
<x-forms.input required id="team.smtp_from_name" helper="Name used in emails." label="From Name" />
|
||||
<x-forms.input required id="team.smtp_from_address" helper="Email address used in emails."
|
||||
label="From Address" />
|
||||
@@ -65,7 +65,7 @@
|
||||
<div class="w-32">
|
||||
<x-forms.checkbox instantSave id="team.smtp_enabled" label="Enabled" />
|
||||
</div>
|
||||
<form wire:submit.prevent='submit' class="flex flex-col">
|
||||
<form wire:submit='submit' class="flex flex-col">
|
||||
<div class="flex flex-col gap-4">
|
||||
<div class="flex flex-col w-full gap-2 xl:flex-row">
|
||||
<x-forms.input required id="team.smtp_host" placeholder="smtp.mailgun.org" label="Host" />
|
||||
@@ -92,7 +92,7 @@
|
||||
<div class="w-32">
|
||||
<x-forms.checkbox instantSave='instantSaveResend' id="team.resend_enabled" label="Enabled" />
|
||||
</div>
|
||||
<form wire:submit.prevent='submitResend' class="flex flex-col">
|
||||
<form wire:submit='submitResend' class="flex flex-col">
|
||||
<div class="flex flex-col gap-4">
|
||||
<div class="flex flex-col w-full gap-2 xl:flex-row">
|
||||
<x-forms.input required type="password" id="team.resend_api_key" placeholder="API key"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<div>
|
||||
<form wire:submit.prevent='submit' class="flex flex-col">
|
||||
<form wire:submit='submit' class="flex flex-col">
|
||||
<div class="flex items-center gap-2">
|
||||
<h2>Telegram</h2>
|
||||
<x-forms.button type="submit">
|
||||
@@ -19,43 +19,43 @@
|
||||
<x-forms.input type="password"
|
||||
helper="Get it from the <a class='inline-block text-white underline' href='https://t.me/botfather' target='_blank'>BotFather Bot</a> on Telegram."
|
||||
required id="team.telegram_token" label="Token" />
|
||||
<x-forms.input
|
||||
helper="Recommended to add your bot to a group chat and add its Chat ID here." required
|
||||
<x-forms.input helper="Recommended to add your bot to a group chat and add its Chat ID here." required
|
||||
id="team.telegram_chat_id" label="Chat ID" />
|
||||
</div>
|
||||
@if (data_get($team, 'telegram_enabled'))
|
||||
<h2 class="mt-4">Subscribe to events</h2>
|
||||
<div class="w-96">
|
||||
@if (isDev())
|
||||
@if (data_get($team, 'telegram_enabled'))
|
||||
<h2 class="mt-4">Subscribe to events</h2>
|
||||
<div class="w-96">
|
||||
@if (isDev())
|
||||
<div class="w-64">
|
||||
<x-forms.checkbox instantSave="saveModel" id="team.telegram_notifications_test"
|
||||
label="Test" />
|
||||
<x-forms.input
|
||||
helper="If you are using Group chat with Topics, you can specify the topics ID. If empty, General topic will be used."
|
||||
id="team.telegram_notifications_test_message_thread_id" label="Custom Topic ID" />
|
||||
</div>
|
||||
@endif
|
||||
<div class="w-64">
|
||||
<x-forms.checkbox instantSave="saveModel" id="team.telegram_notifications_test" label="Test" />
|
||||
<x-forms.checkbox instantSave="saveModel" id="team.telegram_notifications_status_changes"
|
||||
label="Container Status Changes" />
|
||||
<x-forms.input
|
||||
helper="If you are using Group chat with Topics, you can specify the topics ID. If empty, General topic will be used."
|
||||
id="team.telegram_notifications_test_message_thread_id" label="Custom Topic ID" />
|
||||
id="team.telegram_notifications_status_changes_message_thread_id" label="Custom Topic ID" />
|
||||
</div>
|
||||
<div class="w-64">
|
||||
<x-forms.checkbox instantSave="saveModel" id="team.telegram_notifications_deployments"
|
||||
label="Application Deployments" />
|
||||
<x-forms.input
|
||||
helper="If you are using Group chat with Topics, you can specify the topics ID. If empty, General topic will be used."
|
||||
id="team.telegram_notifications_deployments_message_thread_id" label="Custom Topic ID" />
|
||||
</div>
|
||||
<div class="w-64">
|
||||
<x-forms.checkbox instantSave="saveModel" id="team.telegram_notifications_database_backups"
|
||||
label="Backup Status" />
|
||||
<x-forms.input
|
||||
helper="If you are using Group chat with Topics, you can specify the topics ID. If empty, General topic will be used."
|
||||
id="team.telegram_notifications_database_backups_message_thread_id" label="Custom Topic ID" />
|
||||
</div>
|
||||
@endif
|
||||
<div class="w-64">
|
||||
<x-forms.checkbox instantSave="saveModel" id="team.telegram_notifications_status_changes"
|
||||
label="Container Status Changes" />
|
||||
<x-forms.input
|
||||
helper="If you are using Group chat with Topics, you can specify the topics ID. If empty, General topic will be used."
|
||||
id="team.telegram_notifications_status_changes_message_thread_id" label="Custom Topic ID" />
|
||||
</div>
|
||||
<div class="w-64">
|
||||
<x-forms.checkbox instantSave="saveModel" id="team.telegram_notifications_deployments"
|
||||
label="Application Deployments" />
|
||||
<x-forms.input
|
||||
helper="If you are using Group chat with Topics, you can specify the topics ID. If empty, General topic will be used."
|
||||
id="team.telegram_notifications_deployments_message_thread_id" label="Custom Topic ID" />
|
||||
</div>
|
||||
<div class="w-64">
|
||||
<x-forms.checkbox instantSave="saveModel" id="team.telegram_notifications_database_backups"
|
||||
label="Backup Status" />
|
||||
<x-forms.input
|
||||
helper="If you are using Group chat with Topics, you can specify the topics ID. If empty, General topic will be used."
|
||||
id="team.telegram_notifications_database_backups_message_thread_id" label="Custom Topic ID" />
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<p>This private key will be deleted. It is not reversible. <br>Please think again.</p>
|
||||
</x-slot:modalBody>
|
||||
</x-modal>
|
||||
<form class="flex flex-col gap-2" wire:submit.prevent='changePrivateKey'>
|
||||
<form class="flex flex-col gap-2" wire:submit='changePrivateKey'>
|
||||
<div class="flex items-end gap-2">
|
||||
<h2>Private Key</h2>
|
||||
<x-forms.button type="submit">
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<div>
|
||||
<x-forms.button class="mb-4" wire:click="generateNewKey">Generate new SSH key for me</x-forms.button>
|
||||
<form class="flex flex-col gap-2" wire:submit.prevent='createPrivateKey'>
|
||||
<form class="flex flex-col gap-2" wire:submit='createPrivateKey'>
|
||||
<div class="flex gap-2">
|
||||
<x-forms.input id="name" label="Name" required />
|
||||
<x-forms.input id="description" label="Description" />
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<div>
|
||||
<form wire:submit.prevent='submit' class="flex flex-col">
|
||||
<form wire:submit='submit' class="flex flex-col">
|
||||
<div class="flex items-center gap-2">
|
||||
<h2>General</h2>
|
||||
<x-forms.button type="submit" label="Save">Save</x-forms.button>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<dialog id="newEmptyProject" class="modal">
|
||||
<form method="dialog" class="flex flex-col gap-2 rounded modal-box" wire:submit.prevent='submit'>
|
||||
<form method="dialog" class="flex flex-col gap-2 rounded modal-box" wire:submit='submit'>
|
||||
<x-forms.input placeholder="Your Cool Project" id="name" label="Name" required />
|
||||
<x-forms.input placeholder="This is my cool project everyone knows about" id="description" label="Description" />
|
||||
<x-forms.button onclick="newEmptyProject.close()" type="submit">
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<dialog id="newEnvironment" class="modal">
|
||||
<form method="dialog" class="flex flex-col gap-2 rounded modal-box" wire:submit.prevent='submit'>
|
||||
<form method="dialog" class="flex flex-col gap-2 rounded modal-box" wire:submit='submit'>
|
||||
<x-forms.input placeholder="production" id="name" label="Name" required />
|
||||
<x-forms.button onclick="newEnvironment.close()" type="submit">
|
||||
Save
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
<x-forms.checkbox instantSave id="application.settings.is_git_lfs_enabled" label="Git LFS"
|
||||
helper="Allow Git LFS during build process." />
|
||||
@endif
|
||||
<form wire:submit.prevent="submit">
|
||||
<form wire:submit="submit">
|
||||
@if ($application->build_pack !== 'dockercompose')
|
||||
<div class="flex gap-2">
|
||||
<x-forms.checkbox
|
||||
|
||||
@@ -57,39 +57,39 @@
|
||||
<livewire:project.application.general :application="$application" />
|
||||
</div>
|
||||
<div x-cloak x-show="activeTab === 'advanced'" class="h-full">
|
||||
<livewire:project.application.advanced :application="$application" />
|
||||
<livewire:project.application.advanced :application="$application" lazy />
|
||||
</div>
|
||||
<div x-cloak x-show="activeTab === 'environment-variables'">
|
||||
<livewire:project.shared.environment-variable.all :resource="$application" />
|
||||
<livewire:project.shared.environment-variable.all :resource="$application" lazy />
|
||||
</div>
|
||||
@if ($application->git_based())
|
||||
<div x-cloak x-show="activeTab === 'source'">
|
||||
<livewire:project.application.source :application="$application" />
|
||||
<livewire:project.application.source :application="$application" lazy />
|
||||
</div>
|
||||
@endif
|
||||
<div x-cloak x-show="activeTab === 'server'">
|
||||
<livewire:project.shared.destination :resource="$application" :servers="$servers" />
|
||||
<livewire:project.shared.destination :resource="$application" :servers="$servers" lazy />
|
||||
</div>
|
||||
<div x-cloak x-show="activeTab === 'storages'">
|
||||
<livewire:project.service.storage :resource="$application" />
|
||||
<livewire:project.service.storage :resource="$application" lazy />
|
||||
</div>
|
||||
<div x-cloak x-show="activeTab === 'webhooks'">
|
||||
<livewire:project.shared.webhooks :resource="$application" />
|
||||
<livewire:project.shared.webhooks :resource="$application" lazy />
|
||||
</div>
|
||||
<div x-cloak x-show="activeTab === 'previews'">
|
||||
<livewire:project.application.previews :application="$application" />
|
||||
<livewire:project.application.previews :application="$application" lazy />
|
||||
</div>
|
||||
<div x-cloak x-show="activeTab === 'health'">
|
||||
<livewire:project.shared.health-checks :resource="$application" />
|
||||
<livewire:project.shared.health-checks :resource="$application" lazy />
|
||||
</div>
|
||||
<div x-cloak x-show="activeTab === 'rollback'">
|
||||
<livewire:project.application.rollback :application="$application" />
|
||||
<livewire:project.application.rollback :application="$application" lazy />
|
||||
</div>
|
||||
<div x-cloak x-show="activeTab === 'resource-limits'">
|
||||
<livewire:project.shared.resource-limits :resource="$application" />
|
||||
<livewire:project.shared.resource-limits :resource="$application" lazy />
|
||||
</div>
|
||||
<div x-cloak x-show="activeTab === 'danger'">
|
||||
<livewire:project.shared.danger :resource="$application" />
|
||||
<livewire:project.shared.danger :resource="$application" lazy />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -11,12 +11,11 @@
|
||||
<x-forms.button type="submit">Filter</x-forms.button>
|
||||
</form>
|
||||
@forelse ($deployments as $deployment)
|
||||
<a @class([
|
||||
<a wire:navigate @class([
|
||||
'bg-coolgray-100 p-2 border-l border-dashed transition-colors hover:no-underline',
|
||||
'hover:bg-coolgray-200' =>
|
||||
data_get($deployment, 'status') === 'queued',
|
||||
'hover:bg-coolgray-200' => data_get($deployment, 'status') === 'queued',
|
||||
'border-warning hover:bg-warning hover:text-black' =>
|
||||
data_get($deployment, 'status') === 'in_progress' ||
|
||||
data_get($deployment, 'status') === 'in_progress' ||
|
||||
data_get($deployment, 'status') === 'cancelled-by-user',
|
||||
'border-error hover:bg-error' =>
|
||||
data_get($deployment, 'status') === 'failed',
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<div>
|
||||
<form wire:submit.prevent='submit' class="flex flex-col">
|
||||
<form wire:submit='submit' class="flex flex-col">
|
||||
<div class="flex items-center gap-2">
|
||||
<h2>General</h2>
|
||||
<x-forms.button type="submit">
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<form wire:submit.prevent='submit'>
|
||||
<form wire:submit='submit'>
|
||||
<div class="flex items-center gap-2">
|
||||
<h2>Preview Deployments</h2>
|
||||
<x-forms.button type="submit">Save</x-forms.button>
|
||||
|
||||
@@ -66,7 +66,8 @@
|
||||
</a>
|
||||
@endif
|
||||
|
|
||||
<a target="_blank" href="{{ data_get($preview, 'pull_request_html_url') }}">Open PR on Git
|
||||
<a target="_blank" href="{{ data_get($preview, 'pull_request_html_url') }}">Open
|
||||
PR on Git
|
||||
<x-external-link />
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -3,7 +3,8 @@
|
||||
<h2>Rollback</h2>
|
||||
<x-forms.button wire:click='loadImages(true)'>Reload Available Images</x-forms.button>
|
||||
</div>
|
||||
<div class="pb-4 ">You can easily rollback to a previously built <span class="text-warning">(local)</span> images quickly.</div>
|
||||
<div class="pb-4 ">You can easily rollback to a previously built <span class="text-warning">(local)</span> images
|
||||
quickly.</div>
|
||||
<div wire:target='loadImages'>
|
||||
<div class="flex flex-wrap">
|
||||
@forelse ($images as $image)
|
||||
@@ -25,7 +26,8 @@
|
||||
Rollback
|
||||
</x-forms.button>
|
||||
@else
|
||||
<x-forms.button class="bg-coolgray-100" wire:click="rollbackImage('{{ data_get($image, 'tag') }}')">
|
||||
<x-forms.button class="bg-coolgray-100"
|
||||
wire:click="rollbackImage('{{ data_get($image, 'tag') }}')">
|
||||
Rollback
|
||||
</x-forms.button>
|
||||
@endif
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<div>
|
||||
<form wire:submit.prevent='submit' class="flex flex-col">
|
||||
<form wire:submit='submit' class="flex flex-col">
|
||||
<div class="flex items-center gap-2">
|
||||
<h2>Source</h2>
|
||||
<x-forms.button type="submit">Save</x-forms.button>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<form wire:submit.prevent='clone'>
|
||||
<form wire:submit='clone'>
|
||||
<div class="flex flex-col">
|
||||
<div class="flex gap-2">
|
||||
<h1>Clone</h1>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<form wire:submit.prevent="submit">
|
||||
<form wire:submit="submit">
|
||||
<div class="flex gap-2 pb-2">
|
||||
<h2>Scheduled Backup</h2>
|
||||
<x-forms.button type="submit">
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<dialog id="createScheduledBackup" class="modal">
|
||||
<form method="dialog" class="flex flex-col gap-2 rounded modal-box" wire:submit.prevent='submit'>
|
||||
<form method="dialog" class="flex flex-col gap-2 rounded modal-box" wire:submit='submit'>
|
||||
<h2>New Backup</h2>
|
||||
<x-forms.input placeholder="0 0 * * * or daily" id="frequency" label="Frequency" required />
|
||||
<h3>S3 Storage</h3>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<div>
|
||||
<form wire:submit.prevent="submit">
|
||||
<form wire:submit="submit">
|
||||
<div class="flex items-end gap-2">
|
||||
<x-forms.input id="filename" label="Filename" />
|
||||
<x-forms.button type="submit">Save</x-forms.button>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<div>
|
||||
<form wire:submit.prevent="submit" class="flex flex-col gap-2">
|
||||
<form wire:submit="submit" class="flex flex-col gap-2">
|
||||
<div class="flex items-center gap-2">
|
||||
<h2>General</h2>
|
||||
<x-forms.button type="submit">
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<div>
|
||||
<form wire:submit.prevent="submit" class="flex flex-col gap-2">
|
||||
<form wire:submit="submit" class="flex flex-col gap-2">
|
||||
<div class="flex items-center gap-2">
|
||||
<h2>General</h2>
|
||||
<x-forms.button type="submit">
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<div>
|
||||
<form wire:submit.prevent="submit" class="flex flex-col gap-2">
|
||||
<form wire:submit="submit" class="flex flex-col gap-2">
|
||||
<div class="flex items-center gap-2">
|
||||
<h2>General</h2>
|
||||
<x-forms.button type="submit">
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<div>
|
||||
<dialog id="newInitScript" class="modal">
|
||||
<form method="dialog" class="flex flex-col gap-2 rounded modal-box" wire:submit.prevent='save_new_init_script'>
|
||||
<form method="dialog" class="flex flex-col gap-2 rounded modal-box" wire:submit='save_new_init_script'>
|
||||
<h3 class="text-lg font-bold">Add Init Script</h3>
|
||||
<x-forms.input placeholder="create_test_db.sql" id="new_filename" label="Filename" required />
|
||||
<x-forms.textarea placeholder="CREATE DATABASE test;" id="new_content" label="Content" required />
|
||||
@@ -13,7 +13,7 @@
|
||||
</form>
|
||||
</dialog>
|
||||
|
||||
<form wire:submit.prevent="submit" class="flex flex-col gap-2">
|
||||
<form wire:submit="submit" class="flex flex-col gap-2">
|
||||
<div class="flex items-center gap-2">
|
||||
<h2>General</h2>
|
||||
<x-forms.button type="submit">
|
||||
@@ -76,8 +76,8 @@
|
||||
</form>
|
||||
<h3 class="pt-4">Advanced</h3>
|
||||
<div class="flex flex-col">
|
||||
<x-forms.checkbox helper="Drain logs to your configured log drain endpoint in your Server settings." instantSave="instantSaveAdvanced"
|
||||
id="database.is_log_drain_enabled" label="Drain Logs" />
|
||||
<x-forms.checkbox helper="Drain logs to your configured log drain endpoint in your Server settings."
|
||||
instantSave="instantSaveAdvanced" id="database.is_log_drain_enabled" label="Drain Logs" />
|
||||
</div>
|
||||
<div class="pb-16">
|
||||
<div class="flex gap-2 pt-4 pb-2">
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<div>
|
||||
<form wire:submit.prevent="submit" class="flex flex-col gap-2">
|
||||
<form wire:submit="submit" class="flex flex-col gap-2">
|
||||
<div class="flex items-center gap-2">
|
||||
<h2>General</h2>
|
||||
<x-forms.button type="submit">
|
||||
|
||||
@@ -13,8 +13,7 @@
|
||||
'border-coollabs' =>
|
||||
data_get($backup, 'id') === data_get($selectedBackup, 'id'),
|
||||
'flex flex-col box border-l-2 border-transparent',
|
||||
])
|
||||
wire:click="setSelectedBackup('{{ data_get($backup, 'id') }}')">
|
||||
]) wire:click="setSelectedBackup('{{ data_get($backup, 'id') }}')">
|
||||
<div>Frequency: {{ $backup->frequency }}</div>
|
||||
<div>Last backup: {{ data_get($backup->latest_log, 'status', 'No backup yet') }}</div>
|
||||
<div>Number of backups to keep (locally): {{ $backup->number_of_backups_locally }}</div>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<div>
|
||||
<form wire:submit.prevent='submit' class="flex flex-col gap-2 ">
|
||||
<form wire:submit='submit' class="flex flex-col gap-2 ">
|
||||
<div class="flex items-end gap-2">
|
||||
<h1>Project: {{ data_get($project, 'name') }}</h1>
|
||||
<x-forms.button type="submit">Save</x-forms.button>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<div>
|
||||
<h1>Create a new Service</h1>
|
||||
<div class="pb-4">You can deploy complex services easily with Docker Compose.</div>
|
||||
<form wire:submit.prevent="submit">
|
||||
<form wire:submit="submit">
|
||||
<div class="flex gap-2 pb-1">
|
||||
<h2>Docker Compose</h2>
|
||||
<x-forms.button type="submit">Save</x-forms.button>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<div>
|
||||
<h1>Create a new Application</h1>
|
||||
<div class="pb-4">You can deploy an existing Docker Image from any Registry.</div>
|
||||
<form wire:submit.prevent="submit">
|
||||
<form wire:submit="submit">
|
||||
<div class="flex gap-2 pb-1">
|
||||
<h2>Docker Image</h2>
|
||||
<x-forms.button type="submit">Save</x-forms.button>
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
<li class="step step-secondary">Select a Private Key</li>
|
||||
<li class="step step-secondary">Select a Repository, Branch & Save</li>
|
||||
</ul>
|
||||
<form class="flex flex-col gap-2 pb-6" wire:submit.prevent='submit'>
|
||||
<form class="flex flex-col gap-2 pb-6" wire:submit='submit'>
|
||||
<div class="flex gap-2">
|
||||
<x-forms.input id="repository_url" required label="Repository URL"
|
||||
helper="{!! __('repository.url') !!}" />
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
@if ($repositories->count() > 0)
|
||||
<div class="flex items-end gap-2">
|
||||
<x-forms.select class="w-full" label="Repository URL" helper="{!! __('repository.url') !!}"
|
||||
wire:model.defer="selected_repository_id">
|
||||
wire:model="selected_repository_id">
|
||||
@foreach ($repositories as $repo)
|
||||
@if ($loop->first)
|
||||
<option selected value="{{ data_get($repo, 'id') }}">
|
||||
@@ -67,7 +67,7 @@
|
||||
@endif
|
||||
@if ($branches->count() > 0)
|
||||
<div class="flex flex-col gap-2 pb-6">
|
||||
<form class="flex flex-col" wire:submit.prevent='submit'>
|
||||
<form class="flex flex-col" wire:submit='submit'>
|
||||
<div class="flex flex-col gap-2 pb-6">
|
||||
<div class="flex gap-2">
|
||||
<x-forms.select id="selected_branch_name" label="Branch">
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
<div>
|
||||
<h1>Create a new Application</h1>
|
||||
<div class="pb-4">Deploy any public Git repositories.</div>
|
||||
<form class="flex flex-col gap-2" wire:submit.prevent='load_branch'>
|
||||
<form class="flex flex-col gap-2" wire:submit='load_branch'>
|
||||
<div class="flex flex-col gap-2">
|
||||
<div class="flex flex-col">
|
||||
<div class="flex items-end gap-2">
|
||||
<x-forms.input required id="repository_url" label="Repository URL"
|
||||
helper="{!! __('repository.url') !!}" />
|
||||
<x-forms.input required id="repository_url" label="Repository URL" helper="{!! __('repository.url') !!}" />
|
||||
<x-forms.button type="submit">
|
||||
Check repository
|
||||
</x-forms.button>
|
||||
@@ -16,7 +15,7 @@
|
||||
<div class="flex gap-2 py-2">
|
||||
<div>Rate Limit</div>
|
||||
<x-helper
|
||||
helper="Rate limit remaining: {{ $rate_limit_remaining }}<br>Rate limit reset at: {{ $rate_limit_reset }} UTC" />
|
||||
helper="Rate limit remaining: {{ $rate_limit_remaining }}<br>Rate limit reset at: {{ $rate_limit_reset }} UTC" />
|
||||
</div>
|
||||
@endif
|
||||
<div class="flex flex-col gap-2 pb-6">
|
||||
|
||||
@@ -90,7 +90,8 @@
|
||||
New PostgreSQL
|
||||
</div>
|
||||
<div class="description">
|
||||
PostgreSQL is an open-source, object-relational database management system known for its robustness, advanced features, and strong standards compliance.
|
||||
PostgreSQL is an open-source, object-relational database management system known for its
|
||||
robustness, advanced features, and strong standards compliance.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -100,7 +101,8 @@
|
||||
New Redis
|
||||
</div>
|
||||
<div class="description">
|
||||
Redis is an open-source, in-memory data structure store used as a database, cache, and message broker, known for its high performance, flexibility, and rich data structures.
|
||||
Redis is an open-source, in-memory data structure store used as a database, cache, and
|
||||
message broker, known for its high performance, flexibility, and rich data structures.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -110,7 +112,9 @@
|
||||
New MongoDB
|
||||
</div>
|
||||
<div class="description">
|
||||
MongoDB is a source-available, NoSQL database program that uses JSON-like documents with optional schemas, known for its flexibility, scalability, and wide range of application use cases.
|
||||
MongoDB is a source-available, NoSQL database program that uses JSON-like documents with
|
||||
optional schemas, known for its flexibility, scalability, and wide range of application use
|
||||
cases.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -120,7 +124,8 @@
|
||||
New MySQL
|
||||
</div>
|
||||
<div class="description">
|
||||
MySQL is an open-source relational database management system known for its speed, reliability, and flexibility in managing and accessing data.
|
||||
MySQL is an open-source relational database management system known for its speed,
|
||||
reliability, and flexibility in managing and accessing data.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -130,7 +135,8 @@
|
||||
New Mariadb
|
||||
</div>
|
||||
<div class="description">
|
||||
MariaDB is an open-source relational database management system that serves as a drop-in replacement for MySQL, offering more robust, scalable, and reliable SQL server capabilities.
|
||||
MariaDB is an open-source relational database management system that serves as a drop-in
|
||||
replacement for MySQL, offering more robust, scalable, and reliable SQL server capabilities.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -181,7 +187,7 @@
|
||||
</div>
|
||||
</button>
|
||||
@endif
|
||||
@empty
|
||||
@empty
|
||||
<div>No service found. Please try to reload the list!</div>
|
||||
@endforelse
|
||||
@endif
|
||||
@@ -248,7 +254,7 @@
|
||||
</div>
|
||||
@endif
|
||||
@if ($current_step === 'existing-postgresql')
|
||||
<form wire:submit.prevent='addExistingPostgresql' class="flex items-end gap-2">
|
||||
<form wire:submit='addExistingPostgresql' class="flex items-end gap-2">
|
||||
<x-forms.input placeholder="postgres://username:password@database:5432" label="Database URL"
|
||||
id="existingPostgresqlUrl" />
|
||||
<x-forms.button type="submit">Add Database</x-forms.button>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<div>
|
||||
<h1>Create a new Application</h1>
|
||||
<div class="pb-4">You can deploy a simple Dockerfile, without Git.</div>
|
||||
<form wire:submit.prevent="submit">
|
||||
<form wire:submit="submit">
|
||||
<div class="flex gap-2 pb-1">
|
||||
<h2>Dockerfile</h2>
|
||||
<x-forms.button type="submit">Save</x-forms.button>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<div>
|
||||
<form wire:submit.prevent='submit'>
|
||||
<form wire:submit='submit'>
|
||||
<div class="flex items-center gap-2 pb-4">
|
||||
@if ($application->human_name)
|
||||
<h2>{{ Str::headline($application->human_name) }}</h2>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<div>
|
||||
<form wire:submit.prevent='submit'>
|
||||
<form wire:submit='submit'>
|
||||
<div class="flex items-center gap-2 pb-4">
|
||||
@if ($database->human_name)
|
||||
<h2>{{ Str::headline($database->human_name) }}</h2>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<x-collapsible>
|
||||
<x-slot:title>
|
||||
<div>{{$workdir}}{{ $fs_path }} -> {{ $fileStorage->mount_path }}</div>
|
||||
<div>{{ $workdir }}{{ $fs_path }} -> {{ $fileStorage->mount_path }}</div>
|
||||
</x-slot:title>
|
||||
<x-slot:action>
|
||||
<form wire:submit.prevent='submit' class="flex flex-col gap-2">
|
||||
<form wire:submit='submit' class="flex flex-col gap-2">
|
||||
<div class="w-64">
|
||||
<x-forms.checkbox instantSave label="Is directory?" id="fileStorage.is_directory"></x-forms.checkbox>
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<form wire:submit.prevent='submit' class="flex flex-col gap-4 pb-2">
|
||||
<form wire:submit='submit' class="flex flex-col gap-4 pb-2">
|
||||
<div class="flex gap-2">
|
||||
<div>
|
||||
<h2>Service Stack</h2>
|
||||
@@ -6,7 +6,7 @@
|
||||
</div>
|
||||
<x-forms.button type="submit">Save</x-forms.button>
|
||||
<x-forms.button class="w-64"
|
||||
onclick="Livewire.emit('openModal', 'modals.edit-compose',{{ json_encode(['serviceId' => $service->id]) }})">Edit
|
||||
onclick="Livewire.dispatch('openModal', {component: {component: 'modals.edit-compose', arguments: arguments: {{ json_encode(['serviceId' => $service->id]) }} } })">Edit
|
||||
Compose
|
||||
File</x-forms.button>
|
||||
</div>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<div>
|
||||
<h3>Additional Servers</h3>
|
||||
@foreach ($servers as $server)
|
||||
<form wire:submit.prevent='submit' class="p-2 border border-coolgray-400">
|
||||
<form wire:submit='submit' class="p-2 border border-coolgray-400">
|
||||
<h4>{{ $server->name }}</h4>
|
||||
<div class="text-sm text-coolgray-600">{{ $server->description }}</div>
|
||||
<x-forms.checkbox id="additionalServers.{{ $loop->index }}.enabled" label="Enabled">
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<dialog id="newVariable" class="modal">
|
||||
<form method="dialog" class="flex flex-col gap-2 rounded modal-box" wire:submit.prevent='submit'>
|
||||
<form method="dialog" class="flex flex-col gap-2 rounded modal-box" wire:submit='submit'>
|
||||
<h3 class="text-lg font-bold">Add Environment Variable</h3>
|
||||
<x-forms.input placeholder="NODE_ENV" id="key" label="Name" required />
|
||||
<x-forms.input placeholder="production" id="value" label="Value" required />
|
||||
|
||||
@@ -27,12 +27,12 @@
|
||||
@endforeach
|
||||
@endif
|
||||
@else
|
||||
<form wire:submit.prevent='saveVariables(false)' class="flex flex-col gap-2">
|
||||
<form wire:submit='saveVariables(false)' class="flex flex-col gap-2">
|
||||
<x-forms.textarea rows=25 class="whitespace-pre-wrap" id="variables"></x-forms.textarea>
|
||||
<x-forms.button type="submit" class="btn btn-primary">Save</x-forms.button>
|
||||
</form>
|
||||
@if ($showPreview)
|
||||
<form wire:submit.prevent='saveVariables(true)' class="flex flex-col gap-2">
|
||||
<form wire:submit='saveVariables(true)' class="flex flex-col gap-2">
|
||||
<x-forms.textarea rows=25 class="whitespace-pre-wrap" label="Preview Environment Variables"
|
||||
id="variablesPreview"></x-forms.textarea>
|
||||
<x-forms.button type="submit" class="btn btn-primary">Save</x-forms.button>
|
||||
|
||||
@@ -5,7 +5,8 @@
|
||||
class="font-bold text-warning">({{ $env->key }})</span>?</p>
|
||||
</x-slot:modalBody>
|
||||
</x-modal>
|
||||
<form wire:submit.prevent='submit' class="flex flex-col gap-2 p-4 m-2 border lg:items-center border-coolgray-300 lg:m-0 lg:p-0 lg:border-0 lg:flex-row">
|
||||
<form wire:submit='submit'
|
||||
class="flex flex-col gap-2 p-4 m-2 border lg:items-center border-coolgray-300 lg:m-0 lg:p-0 lg:border-0 lg:flex-row">
|
||||
@if ($isLocked)
|
||||
<svg class="icon" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2">
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
@if ($type === 'application')
|
||||
<h1>Execute Command</h1>
|
||||
<livewire:project.application.heading :application="$resource" />
|
||||
<h2 class="pt-4">Command Details</h2>
|
||||
<div class="pb-2">Run any one-shot command inside a container.</div>
|
||||
@elseif ($type === 'database')
|
||||
<h1>Execute Command</h1>
|
||||
<livewire:project.database.heading :database="$resource" />
|
||||
@@ -9,7 +11,7 @@
|
||||
<h2>Execute Command</h2>
|
||||
@endif
|
||||
@if (count($containers) > 0)
|
||||
<form class="flex flex-col gap-2 pt-4" wire:submit.prevent='runCommand'>
|
||||
<form class="flex flex-col gap-2 pt-4" wire:submit='runCommand'>
|
||||
<div class="flex gap-2">
|
||||
<x-forms.input placeholder="ls -l" autofocus id="command" label="Command" required />
|
||||
<x-forms.input id="workDir" label="Working directory" />
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<div x-init="$wire.getLogs">
|
||||
<div class="flex gap-2">
|
||||
<h4>Container: {{$container}}</h4>
|
||||
<h4>Container: {{ $container }}</h4>
|
||||
@if ($streamLogs)
|
||||
<span wire:poll.2000ms='getLogs(true)' class="loading loading-xs text-warning loading-spinner"></span>
|
||||
@endif
|
||||
@@ -9,7 +9,7 @@
|
||||
<x-forms.checkbox instantSave label="Stream Logs" id="streamLogs"></x-forms.checkbox>
|
||||
<x-forms.checkbox instantSave label="Include Timestamps" id="showTimeStamps"></x-forms.checkbox>
|
||||
</div>
|
||||
<form wire:submit.prevent='getLogs(true)' class="flex items-end gap-2">
|
||||
<form wire:submit='getLogs(true)' class="flex items-end gap-2">
|
||||
<x-forms.input label="Only Show Number of Lines" placeholder="1000" required id="numberOfLines"></x-forms.input>
|
||||
<x-forms.button type="submit">Refresh</x-forms.button>
|
||||
</form>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<form wire:submit.prevent='submit' class="flex flex-col">
|
||||
<form wire:submit='submit' class="flex flex-col">
|
||||
<div class="flex items-center gap-2">
|
||||
<h2>Healthchecks</h2>
|
||||
<x-forms.button type="submit">Save</x-forms.button>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<x-layout>
|
||||
<div>
|
||||
@if ($type === 'application')
|
||||
<h1>Logs</h1>
|
||||
<livewire:project.application.heading :application="$resource" />
|
||||
@@ -28,8 +28,9 @@
|
||||
</a>
|
||||
</div>
|
||||
<div class="flex-1 pl-8">
|
||||
<livewire:project.shared.get-logs :server="$server" :resource="$resource" :servicesubtype="$serviceSubType" :container="$container" />
|
||||
<livewire:project.shared.get-logs :server="$server" :resource="$resource" :servicesubtype="$serviceSubType"
|
||||
:container="$container" />
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</x-layout>
|
||||
</div>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<div>
|
||||
<form wire:submit.prevent='submit' class="flex flex-col">
|
||||
<form wire:submit='submit' class="flex flex-col">
|
||||
<div class="flex items-center gap-2 ">
|
||||
<h2>Resource Limits</h2>
|
||||
<x-forms.button type='submit'>Save</x-forms.button>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<dialog id="newStorage" class="modal">
|
||||
<form method="dialog" class="flex flex-col gap-2 rounded modal-box" wire:submit.prevent='submit'>
|
||||
<form method="dialog" class="flex flex-col gap-2 rounded modal-box" wire:submit='submit'>
|
||||
<h3 class="text-lg font-bold">Add Storage Volume</h3>
|
||||
<x-forms.input placeholder="pv-name" id="name" label="Name" required />
|
||||
<x-forms.input placeholder="/root" id="host_path" label="Source Path" />
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
<div class="flex flex-col gap-4">
|
||||
@foreach ($resource->persistentStorages as $storage)
|
||||
@if ($resource->type() === 'service')
|
||||
<livewire:project.shared.storages.show wire:key="storage-{{ $storage->id }}" :storage="$storage" :isFirst="$loop->first"
|
||||
isReadOnly='true' />
|
||||
<livewire:project.shared.storages.show wire:key="storage-{{ $storage->id }}" :storage="$storage"
|
||||
:isFirst="$loop->first" isReadOnly='true' />
|
||||
@else
|
||||
<livewire:project.shared.storages.show wire:key="storage-{{ $storage->id }}" :storage="$storage" />
|
||||
@endif
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
</x-slot:modalBody>
|
||||
</x-modal>
|
||||
|
||||
<form wire:submit.prevent='submit' class="flex flex-col gap-2 xl:items-end xl:flex-row">
|
||||
<form wire:submit='submit' class="flex flex-col gap-2 xl:items-end xl:flex-row">
|
||||
@if ($isReadOnly)
|
||||
@if ($isFirst)
|
||||
<x-forms.input id="storage.name" label="Volume Name" required readonly />
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<div>
|
||||
<h3>Manual Git Webhooks</h3>
|
||||
@if ($githubManualWebhook && $gitlabManualWebhook)
|
||||
<form wire:submit.prevent='saveSecret' class="flex flex-col gap-2">
|
||||
<form wire:submit='saveSecret' class="flex flex-col gap-2">
|
||||
<div class="flex items-end gap-2">
|
||||
<x-forms.input helper="Content Type in GitHub configuration could be json or form-urlencoded."
|
||||
readonly label="GitHub" id="githubManualWebhook"></x-forms.input>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user