Files
vito/app/Providers/SiteTypeServiceProvider.php
Saeed Vaziry 342a3aa4c6 Plugins (#616)
* wip

* fix plugin uninstall

* marketplace
2025-06-19 14:07:15 +02:00

184 lines
6.2 KiB
PHP

<?php
namespace App\Providers;
use App\DTOs\DynamicField;
use App\DTOs\DynamicForm;
use App\Enums\LoadBalancerMethod;
use App\Plugins\RegisterSiteType;
use App\SiteTypes\Laravel;
use App\SiteTypes\LoadBalancer;
use App\SiteTypes\PHPBlank;
use App\SiteTypes\PHPMyAdmin;
use App\SiteTypes\PHPSite;
use App\SiteTypes\Wordpress;
use Illuminate\Support\ServiceProvider;
class SiteTypeServiceProvider extends ServiceProvider
{
public function register(): void {}
public function boot(): void
{
$this->php();
$this->phpBlank();
$this->laravel();
$this->loadBalancer();
$this->phpMyAdmin();
$this->wordpress();
}
private function php(): void
{
RegisterSiteType::make(PHPSite::id())
->label('PHP')
->handler(PHPSite::class)
->form(DynamicForm::make([
DynamicField::make('php_version')
->component()
->label('PHP Version'),
DynamicField::make('source_control')
->component()
->label('Source Control'),
DynamicField::make('web_directory')
->text()
->label('Web Directory')
->placeholder('For / leave empty')
->description('The relative path of your website from /home/vito/your-domain/'),
DynamicField::make('repository')
->text()
->label('Repository')
->placeholder('organization/repository'),
DynamicField::make('branch')
->text()
->label('Branch')
->default('main'),
DynamicField::make('composer')
->checkbox()
->label('Run `composer install --no-dev`')
->default(false),
]))
->register();
}
private function phpBlank(): void
{
RegisterSiteType::make(PHPBlank::id())
->label('PHP Blank')
->handler(PHPBlank::class)
->form(DynamicForm::make([
DynamicField::make('php_version')
->component()
->label('PHP Version'),
DynamicField::make('web_directory')
->text()
->label('Web Directory')
->placeholder('For / leave empty')
->description('The relative path of your website from /home/vito/your-domain/'),
]))
->register();
}
private function laravel(): void
{
RegisterSiteType::make(Laravel::id())
->label('Laravel')
->handler(Laravel::class)
->form(DynamicForm::make([
DynamicField::make('php_version')
->component()
->label('PHP Version'),
DynamicField::make('source_control')
->component()
->label('Source Control'),
DynamicField::make('web_directory')
->text()
->label('Web Directory')
->placeholder('For / leave empty')
->description('The relative path of your website from /home/vito/your-domain/'),
DynamicField::make('repository')
->text()
->label('Repository')
->placeholder('organization/repository'),
DynamicField::make('branch')
->text()
->label('Branch')
->default('main'),
DynamicField::make('composer')
->checkbox()
->label('Run `composer install --no-dev`')
->default(false),
]))
->register();
}
public function loadBalancer(): void
{
RegisterSiteType::make(LoadBalancer::id())
->label('Load Balancer')
->handler(LoadBalancer::class)
->form(DynamicForm::make([
DynamicField::make('method')
->select()
->label('Load Balancing Method')
->options([
LoadBalancerMethod::IP_HASH,
LoadBalancerMethod::ROUND_ROBIN,
LoadBalancerMethod::LEAST_CONNECTIONS,
]),
]))
->register();
}
public function phpMyAdmin(): void
{
RegisterSiteType::make(PHPMyAdmin::id())
->label('PHPMyAdmin')
->handler(PHPMyAdmin::class)
->form(DynamicForm::make([
DynamicField::make('php_version')
->component()
->label('PHP Version'),
]))
->register();
}
public function wordpress(): void
{
RegisterSiteType::make(Wordpress::id())
->label('WordPress')
->handler(Wordpress::class)
->form(DynamicForm::make([
DynamicField::make('php_version')
->component()
->label('PHP Version'),
DynamicField::make('title')
->text()
->label('Site Title')
->placeholder('My WordPress Site'),
DynamicField::make('username')
->text()
->label('Admin Username')
->placeholder('admin'),
DynamicField::make('password')
->text()
->label('Admin Password'),
DynamicField::make('email')
->text()
->label('Admin Email'),
DynamicField::make('database')
->text()
->label('Database Name')
->placeholder('wordpress'),
DynamicField::make('database_user')
->text()
->label('Database User')
->placeholder('wp_user'),
DynamicField::make('database_password')
->text()
->label('Database Password'),
]))
->register();
}
}