From 5946bbed888c2eff0c831db16abec789739f4a6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=9Cmit=20Tun=C3=A7?= Date: Sat, 1 Nov 2025 03:31:16 -0300 Subject: [PATCH] Refactor template form schemas to streamline data handling: Removed redundant afterStateUpdated callbacks for header, section, and footer templates. Enhanced data merging logic to prioritize existing data over defaults, improving template management and usability. Updated localization support for dynamic fields in both English and Turkish. --- .../Resources/Pages/Schemas/PageForm.php | 87 +++++++------------ 1 file changed, 31 insertions(+), 56 deletions(-) diff --git a/app/Filament/Admin/Resources/Pages/Schemas/PageForm.php b/app/Filament/Admin/Resources/Pages/Schemas/PageForm.php index 53a5fa2..f1e227c 100644 --- a/app/Filament/Admin/Resources/Pages/Schemas/PageForm.php +++ b/app/Filament/Admin/Resources/Pages/Schemas/PageForm.php @@ -542,36 +542,26 @@ class PageForm ->options(HeaderTemplate::where('is_active', true)->pluck('title', 'id')) ->searchable() ->live() - ->afterStateUpdated(function (Set $set, Get $get, $state, $record) { - $template = HeaderTemplate::find($state); - if ($template && $template->default_data) { - // If page doesn't have header_data or it's empty, load defaults - $currentData = $record ? ($record->header_data ?? []) : ($get('header_data') ?? []); - if (empty($currentData)) { - $set('header_data', $template->default_data); - } - } else { - // If no template selected or no defaults, clear data - if (!$record || empty($record->header_data)) { - $set('header_data', []); - } - } - }) ->columnSpanFull(), Group::make() ->schema(function (Get $get, $record): array { - $template = HeaderTemplate::find($get('header_template_id')); + $templateId = $get('header_template_id'); + if (!$templateId) { + return []; + } + + $template = HeaderTemplate::find($templateId); if (!$template) { return []; } - // Get page's header_data or template's default_data - $pageData = $record ? ($record->header_data ?? []) : ($get('header_data') ?? []); + // Get existing page data, or use template defaults + $existingData = $record?->header_data ?? []; $templateDefaults = $template->default_data ?? []; - // Merge: page data overrides template defaults - $mergedData = array_merge($templateDefaults, $pageData); + // Merge: existing data takes priority over defaults + $mergedData = array_merge($templateDefaults, $existingData); return TemplateService::generateDynamicFields( $template, @@ -598,31 +588,26 @@ class PageForm ->searchable() ->live() ->required() - ->afterStateUpdated(function (Set $set, Get $get, $state, $record) { - $template = SectionTemplate::find($state); - if ($template && $template->default_data) { - // If section doesn't have section_data or it's empty, load defaults - $currentData = $get('section_data') ?? []; - if (empty($currentData)) { - $set('section_data', $template->default_data); - } - } - }) ->columnSpanFull(), Group::make() - ->schema(function (Get $get): array { - $template = SectionTemplate::find($get('section_template_id')); + ->schema(function (Get $get, $state): array { + $templateId = $get('section_template_id'); + if (!$templateId) { + return []; + } + + $template = SectionTemplate::find($templateId); if (!$template) { return []; } - // Get section's data or template's default_data - $sectionData = $get('section_data') ?? []; + // Get existing section data, or use template defaults + $existingData = $get('section_data') ?? []; $templateDefaults = $template->default_data ?? []; - // Merge: section data overrides template defaults - $mergedData = array_merge($templateDefaults, $sectionData); + // Only use defaults if no existing data + $mergedData = !empty($existingData) ? $existingData : $templateDefaults; return TemplateService::generateDynamicFields( $template, @@ -654,36 +639,26 @@ class PageForm ->options(FooterTemplate::where('is_active', true)->pluck('title', 'id')) ->searchable() ->live() - ->afterStateUpdated(function (Set $set, Get $get, $state, $record) { - $template = FooterTemplate::find($state); - if ($template && $template->default_data) { - // If page doesn't have footer_data or it's empty, load defaults - $currentData = $record ? ($record->footer_data ?? []) : ($get('footer_data') ?? []); - if (empty($currentData)) { - $set('footer_data', $template->default_data); - } - } else { - // If no template selected or no defaults, clear data - if (!$record || empty($record->footer_data)) { - $set('footer_data', []); - } - } - }) ->columnSpanFull(), Group::make() ->schema(function (Get $get, $record): array { - $template = FooterTemplate::find($get('footer_template_id')); + $templateId = $get('footer_template_id'); + if (!$templateId) { + return []; + } + + $template = FooterTemplate::find($templateId); if (!$template) { return []; } - // Get page's footer_data or template's default_data - $pageData = $record ? ($record->footer_data ?? []) : ($get('footer_data') ?? []); + // Get existing page data, or use template defaults + $existingData = $record?->footer_data ?? []; $templateDefaults = $template->default_data ?? []; - // Merge: page data overrides template defaults - $mergedData = array_merge($templateDefaults, $pageData); + // Merge: existing data takes priority over defaults + $mergedData = array_merge($templateDefaults, $existingData); return TemplateService::generateDynamicFields( $template,