diff --git a/app/Filament/Admin/Resources/Settings/Schemas/SettingForm.php b/app/Filament/Admin/Resources/Settings/Schemas/SettingForm.php index ec811b9..017d37e 100644 --- a/app/Filament/Admin/Resources/Settings/Schemas/SettingForm.php +++ b/app/Filament/Admin/Resources/Settings/Schemas/SettingForm.php @@ -42,6 +42,7 @@ class SettingForm ->regex('/^[a-z0-9_-]+$/') ->maxLength(255) ->disabled(fn ($record) => $record !== null) + ->live(onBlur: true) ->columnSpanFull(), TextInput::make('label') @@ -114,10 +115,28 @@ class SettingForm ->label(__('settings.value')) ->helperText(__('settings.value_helper')) ->required() - ->visible(fn (Get $get) => in_array($get('type'), ['string', 'text', 'json'])) + ->visible(fn (Get $get) => in_array($get('type'), ['string', 'text', 'json']) && !in_array($get('key'), ['default_header', 'default_footer'])) ->rows(fn (Get $get) => $get('type') === 'text' ? 5 : 3) ->columnSpanFull(), + Select::make('value_header_template') + ->label('Default Header Template') + ->options(\App\Models\HeaderTemplate::where('is_active', true)->pluck('title', 'id')) + ->visible(fn (Get $get) => $get('key') === 'default_header') + ->statePath('value') + ->searchable() + ->preload() + ->columnSpanFull(), + + Select::make('value_footer_template') + ->label('Default Footer Template') + ->options(\App\Models\FooterTemplate::where('is_active', true)->pluck('title', 'id')) + ->visible(fn (Get $get) => $get('key') === 'default_footer') + ->statePath('value') + ->searchable() + ->preload() + ->columnSpanFull(), + Toggle::make('value_boolean') ->label(__('settings.value')) ->helperText(__('settings.value_helper')) diff --git a/app/Http/Controllers/PageController.php b/app/Http/Controllers/PageController.php index 5a4acd7..9621edd 100644 --- a/app/Http/Controllers/PageController.php +++ b/app/Http/Controllers/PageController.php @@ -24,7 +24,7 @@ class PageController extends Controller ->latest('updated_at') ->first(); - $settings = class_exists(Setting::class) ? (Setting::query()->first()) : null; + $settings = class_exists(Setting::class) ? (object) Setting::where('is_active', true)->pluck('value', 'key')->toArray() : null; $renderedHeader = null; $renderedFooter = null; @@ -43,11 +43,14 @@ class PageController extends Controller // Header Render $headerTemplate = $page->headerTemplate; - /* + if (!$headerTemplate) { - $headerTemplate = HeaderTemplate::where('is_active', true)->latest('updated_at')->first(); + $defaultHeaderId = $settings->default_header ?? null; + if ($defaultHeaderId) { + $headerTemplate = HeaderTemplate::find($defaultHeaderId); + } } - */ + if ($headerTemplate) { $templateDefaults = $headerTemplate->default_data ?? []; $pageData = $page->header_data ?? []; @@ -57,11 +60,13 @@ class PageController extends Controller // Footer Render $footerTemplate = $page->footerTemplate; - /* + if (!$footerTemplate) { - $footerTemplate = FooterTemplate::where('is_active', true)->latest('updated_at')->first(); + $defaultFooterId = $settings->default_footer ?? null; + if ($defaultFooterId) { + $footerTemplate = FooterTemplate::find($defaultFooterId); + } } - */ if ($footerTemplate) { $templateDefaults = $footerTemplate->default_data ?? []; @@ -96,7 +101,7 @@ class PageController extends Controller - $settings = class_exists(Setting::class) ? (Setting::query()->first()) : null; + $settings = class_exists(Setting::class) ? (object) Setting::where('is_active', true)->pluck('value', 'key')->toArray() : null; // Hiç sayfa yoksa: direkt home template'inin statik fallback'i ile render et if (!$page) { @@ -142,9 +147,10 @@ class PageController extends Controller // Eğer sayfa için header seçilmemişse, en son aktif header template'i kullan if (!$headerTemplate) { - $headerTemplate = HeaderTemplate::where('is_active', true) - ->latest('updated_at') - ->first(); + $defaultHeaderId = $settings->default_header ?? null; + if ($defaultHeaderId) { + $headerTemplate = HeaderTemplate::find($defaultHeaderId); + } } if ($headerTemplate) { @@ -165,13 +171,12 @@ class PageController extends Controller $footerTemplate = $page->footerTemplate; // Eğer sayfa için footer seçilmemişse, en son aktif footer template'i kullan - /* if (!$footerTemplate) { - $footerTemplate = FooterTemplate::where('is_active', true) - ->latest('updated_at') - ->first(); + $defaultFooterId = $settings->default_footer ?? null; + if ($defaultFooterId) { + $footerTemplate = FooterTemplate::find($defaultFooterId); + } } - */ if ($footerTemplate) { // Merge template defaults with page data (page data overrides defaults) @@ -214,7 +219,7 @@ class PageController extends Controller ->where('status', 'published') ->first(); - $settings = class_exists(Setting::class) ? (Setting::query()->first()) : null; + $settings = class_exists(Setting::class) ? (object) Setting::where('is_active', true)->pluck('value', 'key')->toArray() : null; // Meta verilerini hazırla $metaTitle = null; @@ -238,7 +243,10 @@ class PageController extends Controller // Render Header Template $headerTemplate = $page->headerTemplate; if (!$headerTemplate) { - $headerTemplate = HeaderTemplate::where('is_active', true)->latest('updated_at')->first(); + $defaultHeaderId = $settings->default_header ?? null; + if ($defaultHeaderId) { + $headerTemplate = HeaderTemplate::find($defaultHeaderId); + } } if ($headerTemplate) { @@ -250,11 +258,13 @@ class PageController extends Controller // Render Footer Template $footerTemplate = $page->footerTemplate; - /* + if (!$footerTemplate) { - $footerTemplate = FooterTemplate::where('is_active', true)->latest('updated_at')->first(); + $defaultFooterId = $settings->default_footer ?? null; + if ($defaultFooterId) { + $footerTemplate = FooterTemplate::find($defaultFooterId); + } } - */ if ($footerTemplate) { $templateDefaults = $footerTemplate->default_data ?? []; @@ -285,7 +295,7 @@ class PageController extends Controller ->where('status', 'published') ->firstOrFail(); - $settings = class_exists(Setting::class) ? (Setting::query()->first()) : null; + $settings = class_exists(Setting::class) ? (object) Setting::where('is_active', true)->pluck('value', 'key')->toArray() : null; $metaTitle = method_exists($page, 'translate') ? ($page->translate('meta_title') ?: $page->translate('title')) @@ -318,9 +328,10 @@ class PageController extends Controller // Eğer sayfa için header seçilmemişse, en son aktif header template'i kullan if (!$headerTemplate) { - $headerTemplate = HeaderTemplate::where('is_active', true) - ->latest('updated_at') - ->first(); + $defaultHeaderId = $settings->default_header ?? null; + if ($defaultHeaderId) { + $headerTemplate = HeaderTemplate::find($defaultHeaderId); + } } if ($headerTemplate) { @@ -341,13 +352,12 @@ class PageController extends Controller $footerTemplate = $page->footerTemplate; // Eğer sayfa için footer seçilmemişse, en son aktif footer template'i kullan - /* if (!$footerTemplate) { - $footerTemplate = FooterTemplate::where('is_active', true) - ->latest('updated_at') - ->first(); + $defaultFooterId = $settings->default_footer ?? null; + if ($defaultFooterId) { + $footerTemplate = FooterTemplate::find($defaultFooterId); + } } - */ if ($footerTemplate) { // Merge template defaults with page data (page data overrides defaults) diff --git a/resources/views/components/custom/navbar.blade.php b/resources/views/components/custom/navbar.blade.php index 1b352fd..9f6de5b 100644 --- a/resources/views/components/custom/navbar.blade.php +++ b/resources/views/components/custom/navbar.blade.php @@ -2,10 +2,11 @@