Enhance Settings and PageController Logic: Updated the SettingForm to include dynamic selection for header and footer templates based on active settings, improving modularity and user experience. Refactored PageController to retrieve active settings for rendering templates, ensuring fallback logic is streamlined and enhancing overall functionality. Updated navbar component to dynamically display social media links from settings, contributing to better localization and user engagement.
This commit is contained in:
@@ -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'))
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user