mirror of
https://github.com/vitodeploy/vito.git
synced 2025-07-05 07:52:34 +00:00
init
This commit is contained in:
33
resources/views/livewire/sites/change-php-version.blade.php
Normal file
33
resources/views/livewire/sites/change-php-version.blade.php
Normal file
@ -0,0 +1,33 @@
|
||||
<x-card>
|
||||
<x-slot name="title">{{ __("Change PHP Version") }}</x-slot>
|
||||
|
||||
<x-slot name="description">{{ __("You can change your site's PHP version here") }}</x-slot>
|
||||
|
||||
<form id="change-php-version" wire:submit.prevent="change" class="space-y-6">
|
||||
<div>
|
||||
<x-input-label for="version" :value="__('PHP Version')" />
|
||||
<x-select-input wire:model.defer="version" id="version" name="version" class="mt-1 w-full">
|
||||
<option value="" disabled selected>{{ __("Select") }}</option>
|
||||
@foreach($site->server->installedPHPVersions() as $php)
|
||||
<option value="{{ $php }}" @if($php === $version) selected @endif>{{ $php }}</option>
|
||||
@endforeach
|
||||
</x-select-input>
|
||||
@error('version')
|
||||
<x-input-error class="mt-2" :messages="$message" />
|
||||
@enderror
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<x-slot name="actions">
|
||||
@if (session('status') === 'changing-php-version')
|
||||
<p class="mr-2">{{ __('Updating...') }}</p>
|
||||
@endif
|
||||
@if (session('status') === 'change-site-php-finished')
|
||||
<p class="mr-2">{{ __('Updated!') }}</p>
|
||||
@endif
|
||||
@if (session('status') === 'change-site-php-failed')
|
||||
<p class="mr-2">{{ __('Failed!') }}</p>
|
||||
@endif
|
||||
<x-primary-button form="change-php-version" wire:loading.attr="disabled">{{ __('Save') }}</x-primary-button>
|
||||
</x-slot>
|
||||
</x-card>
|
104
resources/views/livewire/sites/create-site.blade.php
Normal file
104
resources/views/livewire/sites/create-site.blade.php
Normal file
@ -0,0 +1,104 @@
|
||||
<div x-data="">
|
||||
<x-card>
|
||||
<x-slot name="title">{{ __("Create new site") }}</x-slot>
|
||||
<x-slot name="description">{{ __("Use this form to create a new site") }}</x-slot>
|
||||
<form id="create-site" wire:submit.prevent="create" class="space-y-6">
|
||||
<div>
|
||||
<x-input-label>{{ __("Select site type") }}</x-input-label>
|
||||
<div class="grid grid-cols-6 gap-2 mt-1">
|
||||
@foreach(config('core.site_types') as $t)
|
||||
<x-site-type-item x-on:click="$wire.type = '{{ $t }}'" :active="$type === $t">
|
||||
<div class="flex w-full flex-col items-center justify-center text-center">
|
||||
<img src="{{ asset('static/images/' . $t . '.svg') }}" class="h-7" alt="Server">
|
||||
<span class="md:text-normal mt-2 hidden text-sm md:block">{{ $t }}</span>
|
||||
</div>
|
||||
</x-site-type-item>
|
||||
@endforeach
|
||||
</div>
|
||||
@error('type')
|
||||
<x-input-error class="mt-2" :messages="$message" />
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<x-input-label for="domain" :value="__('Domain')" />
|
||||
<x-text-input wire:model.defer="domain" id="domain" name="domain" type="text" class="mt-1 block w-full" autocomplete="domain" placeholder="example.com" />
|
||||
@error('domain')
|
||||
<x-input-error class="mt-2" :messages="$message" />
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<x-input-label for="alias" :value="__('Alias')" />
|
||||
<x-text-input wire:model.defer="alias" id="alias" name="alias" type="text" class="mt-1 block w-full" autocomplete="alias" placeholder="www.example.com" />
|
||||
@error('alias')
|
||||
<x-input-error class="mt-2" :messages="$message" />
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<x-input-label for="php_version" :value="__('PHP Version')" />
|
||||
<x-select-input wire:model.defer="php_version" id="php_version" name="php_version" class="mt-1 w-full">
|
||||
<option value="" selected disabled>{{ __("Select") }}</option>
|
||||
@foreach($server->installedPHPVersions() as $version)
|
||||
<option value="{{ $version }}" @if($version === $php_version) selected @endif>
|
||||
PHP {{ $version }}
|
||||
</option>
|
||||
@endforeach
|
||||
</x-select-input>
|
||||
@error('php_version')
|
||||
<x-input-error class="mt-2" :messages="$message" />
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<x-input-label for="web_directory" :value="__('Web Directory')" />
|
||||
<x-text-input wire:model.defer="web_directory" id="web_directory" name="web_directory" type="text" class="mt-1 block w-full" autocomplete="web_directory" />
|
||||
@error('web_directory')
|
||||
<x-input-error class="mt-2" :messages="$message" />
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<x-input-label for="source_control" :value="__('Source Control')" />
|
||||
<x-select-input wire:model="source_control" id="source_control" name="source_control" class="mt-1 w-full">
|
||||
<option value="" selected disabled>{{ __("Select") }}</option>
|
||||
@foreach($sourceControls as $sourceControl)
|
||||
<option value="{{ $sourceControl->provider }}" @if($sourceControl->provider === $source_control) selected @endif>
|
||||
{{ ucfirst($sourceControl->provider) }}
|
||||
</option>
|
||||
@endforeach
|
||||
</x-select-input>
|
||||
@error('source_control')
|
||||
<x-input-error class="mt-2" :messages="$message" />
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<x-input-label for="repository" :value="__('Repository')" />
|
||||
<x-text-input wire:model.defer="repository" id="repository" name="repository" type="text" class="mt-1 block w-full" autocomplete="repository" placeholder="organization/repository" />
|
||||
@error('repository')
|
||||
<x-input-error class="mt-2" :messages="$message" />
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<x-input-label for="branch" :value="__('Branch')" />
|
||||
<x-text-input wire:model.defer="branch" id="branch" name="branch" type="text" class="mt-1 block w-full" autocomplete="branch" placeholder="main" />
|
||||
@error('branch')
|
||||
<x-input-error class="mt-2" :messages="$message" />
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div class="mt-6">
|
||||
<label for="composer" class="inline-flex items-center">
|
||||
<input id="composer" wire:model.defer="composer" type="checkbox" class="rounded dark:bg-gray-900 border-gray-300 dark:border-gray-700 text-indigo-600 shadow-sm focus:ring-indigo-500 dark:focus:ring-indigo-600 dark:focus:ring-offset-gray-800" name="composer">
|
||||
<span class="ml-2 text-sm text-gray-600 dark:text-gray-400">{{ __('Run `composer install --no-dev`') }}</span>
|
||||
</label>
|
||||
</div>
|
||||
</form>
|
||||
<x-slot name="actions">
|
||||
<x-primary-button form="create-site" wire:loading.attr="disabled">{{ __('Create') }}</x-primary-button>
|
||||
</x-slot>
|
||||
</x-card>
|
||||
</div>
|
9
resources/views/livewire/sites/delete-site.blade.php
Normal file
9
resources/views/livewire/sites/delete-site.blade.php
Normal file
@ -0,0 +1,9 @@
|
||||
<div x-data="">
|
||||
<x-danger-button x-on:click="$dispatch('open-modal', 'delete-site')">{{ __("Delete Site") }}</x-danger-button>
|
||||
<x-confirm-modal
|
||||
name="delete-site"
|
||||
:title="__('Confirm')"
|
||||
:description="__('Are you sure that you want to delete this site?')"
|
||||
method="delete"
|
||||
/>
|
||||
</div>
|
@ -0,0 +1,10 @@
|
||||
<x-card>
|
||||
<x-slot name="title">
|
||||
<span class="text-red-600">{{ __("Installation Failed!") }}</span>
|
||||
</x-slot>
|
||||
<x-slot name="description">{{ __("Your site's installation failed") }}</x-slot>
|
||||
<div class="mt-5 flex items-center justify-center">
|
||||
<x-secondary-button :href="route('servers.logs', ['server' => $site->server])" class="mr-2">{{ __("View Logs") }}</x-secondary-button>
|
||||
<livewire:sites.delete-site :site="$site" />
|
||||
</div>
|
||||
</x-card>
|
13
resources/views/livewire/sites/partials/installing.blade.php
Normal file
13
resources/views/livewire/sites/partials/installing.blade.php
Normal file
@ -0,0 +1,13 @@
|
||||
<x-card>
|
||||
<x-slot name="title">{{ __("Installing") }}</x-slot>
|
||||
<x-slot name="description">{{ __("The site is being installed") }}</x-slot>
|
||||
<div class="relative flex h-6 overflow-hidden rounded bg-primary-200 text-xs dark:bg-primary-500 dark:bg-opacity-10">
|
||||
<div
|
||||
style="width:{{ $site->progress }}%;"
|
||||
class="flex flex-col justify-center whitespace-nowrap bg-primary-500 text-center text-white shadow-none"
|
||||
></div>
|
||||
<span class="absolute left-0 right-0 top-1 font-semibold text-center {{ $site->progress >= 40 ? 'text-white' : 'text-black dark:text-white' }}">
|
||||
{{ $site->progress }}%
|
||||
</span>
|
||||
</div>
|
||||
</x-card>
|
@ -0,0 +1,38 @@
|
||||
<div>
|
||||
<x-card-header>
|
||||
<x-slot name="title">
|
||||
{{ __("Site Overview") }}
|
||||
</x-slot>
|
||||
<x-slot name="description">
|
||||
<a href="{{ $site->activeSsl ? 'https://' : 'http://' . $site->domain }}" target="_blank">{{ $site->domain }}</a>
|
||||
</x-slot>
|
||||
<x-slot name="aside">
|
||||
@include('livewire.sites.partials.status', ['status' => $site->status])
|
||||
</x-slot>
|
||||
</x-card-header>
|
||||
<div class="mx-auto grid grid-cols-3 rounded-md bg-white border border-gray-200 dark:border-gray-700 dark:bg-gray-800">
|
||||
<div class="p-5">
|
||||
<div class="flex items-center justify-center md:justify-start">
|
||||
<x-heroicon-o-lock-closed class="w-8 h-8 text-primary-500" />
|
||||
<div class="ml-2 hidden md:block">{{ __("SSL") }}</div>
|
||||
</div>
|
||||
<div class="mt-3 text-center text-3xl font-bold text-gray-600 dark:text-gray-400 md:text-left">
|
||||
{{ $site->activeSsl ? __("Yes") : __("No") }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="border-l border-r border-gray-200 p-5 dark:border-gray-900">
|
||||
<div class="flex items-center justify-center md:justify-start">
|
||||
<x-heroicon-o-rectangle-stack class="w-8 h-8 text-primary-500" />
|
||||
<div class="ml-2 hidden md:block">{{ __("Queues") }}</div>
|
||||
</div>
|
||||
<div class="mt-3 text-center text-3xl font-bold text-gray-600 dark:text-gray-400 md:text-left">{{ $site->queues()->count() }}</div>
|
||||
</div>
|
||||
<div class="p-5">
|
||||
<div class="flex items-center justify-center md:justify-start">
|
||||
<x-heroicon-o-code-bracket class="w-8 h-8 text-primary-500" />
|
||||
<div class="ml-2 hidden md:block">{{ __("PHP") }}</div>
|
||||
</div>
|
||||
<div class="mt-3 text-center text-3xl font-bold text-gray-600 dark:text-gray-400 md:text-left">{{ $site->php_version }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
12
resources/views/livewire/sites/partials/status.blade.php
Normal file
12
resources/views/livewire/sites/partials/status.blade.php
Normal file
@ -0,0 +1,12 @@
|
||||
@if($status == \App\Enums\SiteStatus::READY)
|
||||
<x-status status="success">{{ $status }}</x-status>
|
||||
@endif
|
||||
@if($status == \App\Enums\SiteStatus::INSTALLING)
|
||||
<x-status status="warning">{{ $status }}</x-status>
|
||||
@endif
|
||||
@if($status == \App\Enums\SiteStatus::INSTALLATION_FAILED)
|
||||
<x-status status="danger">{{ $status }}</x-status>
|
||||
@endif
|
||||
@if($status == \App\Enums\SiteStatus::DELETING)
|
||||
<x-status status="danger">{{ $status }}</x-status>
|
||||
@endif
|
13
resources/views/livewire/sites/show-site.blade.php
Normal file
13
resources/views/livewire/sites/show-site.blade.php
Normal file
@ -0,0 +1,13 @@
|
||||
<div>
|
||||
@if($site->status === \App\Enums\SiteStatus::INSTALLING)
|
||||
@include('livewire.sites.partials.installing', ['site' => $site])
|
||||
@endif
|
||||
@if($site->status === \App\Enums\SiteStatus::INSTALLATION_FAILED)
|
||||
@include('livewire.sites.partials.installation-failed', ['site' => $site])
|
||||
@endif
|
||||
@if($site->status === \App\Enums\SiteStatus::READY)
|
||||
<div class="space-y-10">
|
||||
@include('livewire.sites.partials.site-overview', ['site' => $site])
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
42
resources/views/livewire/sites/sites-list.blade.php
Normal file
42
resources/views/livewire/sites/sites-list.blade.php
Normal file
@ -0,0 +1,42 @@
|
||||
<div>
|
||||
<x-card-header>
|
||||
<x-slot name="title">Sites</x-slot>
|
||||
<x-slot name="description">Your sites will appear here. You can see the details and manage them</x-slot>
|
||||
<x-slot name="aside">
|
||||
<x-primary-button :href="route('servers.sites.create', ['server' => $server])">
|
||||
{{ __('Create Site') }}
|
||||
</x-primary-button>
|
||||
</x-slot>
|
||||
</x-card-header>
|
||||
|
||||
@if(count($sites) > 0)
|
||||
<div class="space-y-3">
|
||||
@foreach($sites as $site)
|
||||
<a href="{{ route('servers.sites.show', ['server' => $server, 'site' => $site]) }}" class="block">
|
||||
<x-item-card>
|
||||
<div class="flex-none">
|
||||
<img src="{{ asset('static/images/' . $site->type . '.svg') }}" class="h-10 w-10" alt="">
|
||||
</div>
|
||||
<div class="ml-3 flex flex-grow flex-col items-start justify-center">
|
||||
<span class="mb-1">{{ $site->domain }}</span>
|
||||
<span class="text-sm text-gray-400">
|
||||
<x-datetime :value="$site->created_at"/>
|
||||
</span>
|
||||
</div>
|
||||
<div class="flex items-center">
|
||||
<div class="inline">
|
||||
@include('livewire.sites.partials.status', ['status' => $site->status])
|
||||
</div>
|
||||
</div>
|
||||
</x-item-card>
|
||||
</a>
|
||||
@endforeach
|
||||
</div>
|
||||
@else
|
||||
<x-simple-card>
|
||||
<div class="text-center">
|
||||
{{ __("You don't have any sites yet!") }}
|
||||
</div>
|
||||
</x-simple-card>
|
||||
@endif
|
||||
</div>
|
Reference in New Issue
Block a user