Add all files
This commit is contained in:
89
Disabled/ProductPageBuilder/ProductPageBuilder.php
Normal file
89
Disabled/ProductPageBuilder/ProductPageBuilder.php
Normal file
@@ -0,0 +1,89 @@
|
||||
<?php
|
||||
|
||||
namespace Paymenter\Extensions\Others\ProductPageBuilder;
|
||||
|
||||
use App\Classes\Extension\Extension;
|
||||
use Filament\Facades\Filament;
|
||||
use Illuminate\Support\Facades\Artisan;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use Illuminate\Support\Facades\View;
|
||||
use Paymenter\Extensions\Others\ProductPageBuilder\Models\ProductPageSettings;
|
||||
|
||||
class ProductPageBuilder extends Extension
|
||||
{
|
||||
public function getConfig($values = [])
|
||||
{
|
||||
return [
|
||||
[
|
||||
'name' => 'notice',
|
||||
'type' => 'placeholder',
|
||||
'label' => 'Use this extension to customize your product pages with custom sections.',
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
public function enabled()
|
||||
{
|
||||
Artisan::call('migrate', [
|
||||
'--path' => 'extensions/Others/ProductPageBuilder/database/migrations',
|
||||
'--force' => true,
|
||||
]);
|
||||
}
|
||||
|
||||
public function boot()
|
||||
{
|
||||
// Add category_id column if it doesn't exist
|
||||
if (!$this->columnExists('ext_product_page_builder', 'category_id')) {
|
||||
DB::statement('ALTER TABLE ext_product_page_builder ADD COLUMN category_id bigint unsigned NULL');
|
||||
DB::statement('ALTER TABLE ext_product_page_builder ADD CONSTRAINT product_page_builder_category_id_foreign FOREIGN KEY (category_id) REFERENCES categories(id) ON DELETE SET NULL');
|
||||
}
|
||||
|
||||
// Register views
|
||||
View::addNamespace('product_page_builder', __DIR__ . '/resources/views');
|
||||
|
||||
// Register routes
|
||||
Route::middleware('web')->group(__DIR__ . '/routes/web.php');
|
||||
|
||||
// Register Filament resources
|
||||
if (class_exists('\Filament\Facades\Filament')) {
|
||||
Filament::registerResources([
|
||||
Admin\Resources\ProductPageResource::class,
|
||||
]);
|
||||
}
|
||||
|
||||
Event::listen('product.page', function ($product) {
|
||||
$settings = ProductPageSettings::first();
|
||||
if (!$settings) {
|
||||
return [];
|
||||
}
|
||||
|
||||
return [
|
||||
'view' => view('product_page_builder::product', [
|
||||
'settings' => $settings,
|
||||
'product' => $product,
|
||||
]),
|
||||
];
|
||||
});
|
||||
|
||||
Event::listen('navigation', function () {
|
||||
if (ProductPageSettings::count() == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
return [
|
||||
'name' => 'Games',
|
||||
'route' => 'product-page.index',
|
||||
// 'icon' => '',
|
||||
'separator' => true,
|
||||
'children' => [],
|
||||
];
|
||||
});
|
||||
}
|
||||
|
||||
private function columnExists($table, $column)
|
||||
{
|
||||
return DB::getSchemaBuilder()->hasColumn($table, $column);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user