| Current Path : /var/www/html/dynaweb-starter/plugin/dynaweb-site/src/ |
| Current File : /var/www/html/dynaweb-starter/plugin/dynaweb-site/src/DynawebSiteServiceProvider.php |
<?php
namespace Dynaweb\DynawebSite;
use Filament\Support\Assets\AlpineComponent;
use Filament\Support\Assets\Asset;
use Filament\Support\Assets\Css;
use Filament\Support\Assets\Js;
use Filament\Support\Facades\FilamentAsset;
use Filament\Support\Facades\FilamentIcon;
use Illuminate\Filesystem\Filesystem;
use Livewire\Features\SupportTesting\Testable;
use Spatie\LaravelPackageTools\Commands\InstallCommand;
use Spatie\LaravelPackageTools\Package;
use Spatie\LaravelPackageTools\PackageServiceProvider;
use Dynaweb\DynawebSite\Commands\DynawebSiteCommand;
use Dynaweb\DynawebSite\Testing\TestsDynawebSite;
use Dynaweb\DynawebSite\Http\Livewire\Frontend;
use Livewire\Livewire;
class DynawebSiteServiceProvider extends PackageServiceProvider
{
public static string $name = 'dynaweb-site';
public static string $viewNamespace = 'dynaweb-site';
public function configurePackage(Package $package): void
{
/*
* This class is a Package Service Provider
*
* More info: https://github.com/spatie/laravel-package-tools
*/
$package->name(static::$name)
->hasCommands($this->getCommands())
->hasInstallCommand(function (InstallCommand $command) {
$command
->publishConfigFile()
->publishMigrations()
->askToRunMigrations();
})
->hasRoute('web')
;
$configFileName = $package->shortName();
if (file_exists($package->basePath("/../config/{$configFileName}.php"))) {
$package->hasConfigFile();
}
if (file_exists($package->basePath('/../database/migrations'))) {
$package->hasMigrations($this->getMigrations());
}
if (file_exists($package->basePath('/../resources/lang'))) {
$package->hasTranslations();
}
if (file_exists($package->basePath('/../resources/views'))) {
$package->hasViews(static::$viewNamespace);
}
}
public function packageRegistered(): void
{
}
public function packageBooted(): void
{
// register livewire
Livewire::component('frontend', Frontend::class);
// Asset Registration
FilamentAsset::register(
$this->getAssets(),
$this->getAssetPackageName()
);
FilamentAsset::registerScriptData(
$this->getScriptData(),
$this->getAssetPackageName()
);
// Icon Registration
FilamentIcon::register($this->getIcons());
// Handle Stubs
if (app()->runningInConsole()) {
foreach (app(Filesystem::class)->files(__DIR__ . '/../stubs/') as $file) {
$this->publishes([
$file->getRealPath() => base_path("stubs/dynaweb-site/{$file->getFilename()}"),
], 'dynaweb-site-stubs');
}
}
// Testing
Testable::mixin(new TestsDynawebSite());
}
protected function getAssetPackageName(): ?string
{
return 'dynaweb/dynaweb-site';
}
/**
* @return array<Asset>
*/
protected function getAssets(): array
{
return [
// AlpineComponent::make('dynaweb-site', __DIR__ . '/../resources/dist/components/dynaweb-site.js'),
// Css::make('dynaweb-site-styles', __DIR__ . '/../resources/dist/dynaweb-site.css'),
// Js::make('dynaweb-site-scripts', __DIR__ . '/../resources/dist/dynaweb-site.js'),
];
}
/**
* @return array<class-string>
*/
protected function getCommands(): array
{
return [
DynawebSiteCommand::class,
];
}
/**
* @return array<string>
*/
protected function getIcons(): array
{
return [];
}
/**
* @return array<string>
*/
protected function getRoutes(): array
{
return [];
}
/**
* @return array<string, mixed>
*/
protected function getScriptData(): array
{
return [];
}
/**
* @return array<string>
*/
protected function getMigrations(): array
{
return [
'create_frontend_sites_table',
'create_frontend_pages_table',
'create_frontend_components_table',
'create_frontend_page_components_table'
];
}
}