@php /** * Çok dilli sözleşme editörü. * * Düzen, Satış Belgesi Şablonu ekranıyla aynıdır: solda değişken rayı, * ortada koyu HTML kaynak editörü, altta canlı önizleme. Sözleşmeye özel * eklentiler: dil sekmeleri (her dil kendi başlık + içeriğini taşır) ve * kontrat bağlamı. * * Beklenen değişkenler: * $languages : Language koleksiyonu * $primaryLanguage : Language|null (ana metnin dili) * $contract : AgencyContract|null * $translationsData : array (language_id => ['title'=>, 'content'=>]) */ $contract = $contract ?? null; $translationsData = $translationsData ?? []; $primaryId = $primaryLanguage->id ?? null; $isSystem = (bool) ($contract->is_system ?? false); $baseTitle = old('title', $contract->title ?? ''); $baseContent = old('content', $contract->content ?? ''); $otherLanguages = $languages->filter(fn ($l) => $l->id !== $primaryId)->values(); // Başlangıç durumu: ana metin + yalnızca içeriği olan diller "aktif" sekme olur $langState = ['base' => ['title' => $baseTitle, 'content' => $baseContent]]; $activeLangs = collect(); foreach ($otherLanguages as $l) { $t = old("translations.{$l->id}.title", $translationsData[$l->id]['title'] ?? ''); $c = old("translations.{$l->id}.content", $translationsData[$l->id]['content'] ?? ''); if (trim(strip_tags((string) $c)) !== '' || trim((string) $t) !== '') { $langState[(string) $l->id] = ['title' => $t, 'content' => $c]; $activeLangs->push($l); } } $activeIds = $activeLangs->pluck('id')->all(); $contractContext = old('context', $contract->context ?? 'general'); $mergeCatalog = \App\Services\Operation\ContractRenderService::catalog(); $catIcons = [ 'Kaynak / Kişi' => 'fa-user-tie', 'Araç' => 'fa-bus', 'Tedarikçi' => 'fa-building', 'Tur' => 'fa-route', 'Görev' => 'fa-calendar-check', 'Ücret' => 'fa-coins', 'Hizmetler' => 'fa-bell-concierge', 'Acente' => 'fa-briefcase', 'Yolcu' => 'fa-user', 'Rezervasyon' => 'fa-receipt', 'Kalkış' => 'fa-plane-departure', 'Genel' => 'fa-shapes', ]; $ctxIcons = [ 'general' => 'fa-file-lines', 'customer' => 'fa-user', 'guide' => 'fa-user-tie', 'vehicle' => 'fa-bus', 'captain' => 'fa-id-card', 'passenger' => 'fa-users', ]; // Önizlemede {{token}} yerine etiketi gösterebilmek için düz harita $tokenMap = []; foreach ($mergeCatalog as $group => $fields) { foreach ($fields as $f) { $tokenMap[$f['token']] = ['label' => $f['label'], 'mode' => $f['mode'], 'group' => $group]; } } @endphp {{-- ══ KONTRAT BAĞLAMI ══ --}}