{{-- Partial: investors/_dynamic_content.blade.php --}} @php $locale = app()->getLocale(); // sudah di-set oleh middleware setlocale dari prefix /id/ atau /ja/ $item = DB::table('mst_investor') ->whereRaw('LOWER(TRIM(menu_key)) = ?', [strtolower(trim($menu_key))]) ->where('isactive', 1) ->first(); @endphp @if (!$item)

Belum ada konten untuk halaman ini.

@else @php $raw = json_decode($item->data); // Support dua format: // Format LAMA (flat) : { "content": "..." } atau { "items": [...] } atau { "groups": [...] } // Format BARU (nested): { "en": {...}, "id": {...}, "ja": {...} } // // Cek nested: kalau ada key 'en' atau 'id' atau 'ja' di root → format baru $isNested = isset($raw->en) || isset($raw->id) || isset($raw->ja); if ($isNested) { // Format baru: ambil slice locale aktif, fallback ke EN kalau locale belum diisi $data = $raw->$locale ?? ($raw->en ?? $raw); // Khusus collapse & upload_file: // file_url, file_url_id, file_url_en, file_url_jp selalu ada di EN (master file) // locale lain hanya beda judul/deskripsi, file-nya sama $dataEn = $raw->en ?? $raw; } else { // Format lama: langsung pakai as-is (backward compatible) $data = $raw; $dataEn = $raw; } $sortByUrut = function ($items) { if (!is_array($items)) { return []; } usort($items, function ($a, $b) { $aUrut = isset($a->urut) ? (int) $a->urut : 9999; $bUrut = isset($b->urut) ? (int) $b->urut : 9999; return $aUrut <=> $bUrut; }); return $items; }; $findByUrut = function ($items, $targetUrut) use ($sortByUrut) { $items = $sortByUrut($items ?? []); foreach ($items as $item) { $itemUrut = isset($item->urut) ? (int) $item->urut : 9999; if ($itemUrut === (int) $targetUrut) { return $item; } } return null; }; $resolveExistingFileUrl = function ($candidate, $fallback = null) { $paths = []; foreach ([$candidate, $fallback] as $value) { if (!is_string($value) && !is_null($value)) { $value = (string) $value; } if (is_string($value)) { $trimmed = trim($value); if ($trimmed !== '' && $trimmed !== 'null' && $trimmed !== '[]') { $paths[] = $trimmed; } } } foreach ($paths as $path) { if (preg_match('/^https?:\/\//i', $path)) { return $path; } $diskPath = public_path($path); if (file_exists($diskPath)) { return $path; } } return null; }; @endphp {{-- ================================================================ --}} {{-- TEMPLATE: TEXT EDITOR --}} {{-- ================================================================ --}} @if ($item->template_type === 'text_editor')
{!! $data->content ?? '' !!}
{{-- ================================================================ --}} {{-- TEMPLATE: UPLOAD FILE --}} {{-- ================================================================ --}} @elseif ($item->template_type === 'upload_file') @php $uploadItems = $sortByUrut($data->items ?? []); @endphp @if (count($uploadItems) > 0)
@foreach ($uploadItems as $cardIdx => $card) @php $targetUrut = (int) ($card->urut ?? $cardIdx + 1 ?: $cardIdx + 1); $masterCard = $findByUrut($dataEn->items ?? [], $targetUrut); $masterFileUrl = !empty($masterCard->file_url ?? null) ? $masterCard->file_url : (!empty($card->file_url) ? $card->file_url : null); $fileUrl = $resolveExistingFileUrl($masterFileUrl, $card->file_url ?? null); $fileUrl = $fileUrl ? asset($fileUrl) : null; $canvasId = 'pdf-thumb-' . $cardIdx; @endphp @if ($fileUrl)
{{ $card->judul ?? '' }} @if (!empty($card->sub_judul))
{!! $card->sub_judul !!} @endif
@else
{{ $card->judul ?? '' }}
{{ $card->judul ?? '' }} @if (!empty($card->sub_judul))
{!! $card->sub_judul !!} @endif
@endif @endforeach
{{-- PDF.js Render Thumbnail --}} @else

Belum ada file tersedia.

@endif {{-- ================================================================ --}} {{-- TEMPLATE: COLLAPSE --}} {{-- file_url_id / file_url_en / file_url_jp selalu dari EN master --}} {{-- judul & deskripsi dari locale aktif --}} {{-- ================================================================ --}} @elseif ($item->template_type === 'collapse') @php $groups = $sortByUrut($data->groups ?? []); @endphp @if (count($groups) > 0)
@foreach ($groups as $gIndex => $group) @php $groupNama = $group->group_nama ?? ''; $groupItems = $sortByUrut($group->items ?? []); $targetGroupUrut = (int) ($group->urut ?? $gIndex + 1 ?: $gIndex + 1); $groupEn = $findByUrut($dataEn->groups ?? [], $targetGroupUrut); $groupItemsEn = $sortByUrut($groupEn->items ?? []); @endphp

{{ $groupNama }}

@foreach ($groupItems as $iIndex => $ci) @php $ci = (object) $ci; $targetItemUrut = isset($ci->urut) ? (int) $ci->urut : $iIndex + 1; $ciEn = $findByUrut($groupItemsEn, $targetItemUrut) ?? $ci; $fileIdFromLocale = !empty($ci->file_url_id) ? $ci->file_url_id : null; $fileIdFromMaster = !empty($ciEn->file_url_id) ? $ciEn->file_url_id : null; $fallbackId = $fileIdFromLocale ?: $fileIdFromMaster; $fileEnFromLocale = !empty($ci->file_url_en) ? $ci->file_url_en : null; $fileEnFromMaster = !empty($ciEn->file_url_en) ? $ciEn->file_url_en : null; $fallbackEn = $fileEnFromLocale ?: $fileEnFromMaster; $fileJpFromLocale = !empty($ci->file_url_jp) ? $ci->file_url_jp : null; $fileJpFromMaster = !empty($ciEn->file_url_jp) ? $ciEn->file_url_jp : null; $fallbackJp = $fileJpFromLocale ?: $fileJpFromMaster; $urlId = !empty($fallbackId) ? asset($fallbackId) : null; $urlEn = !empty($fallbackEn) ? asset($fallbackEn) : null; $urlJp = !empty($fallbackJp) ? asset($fallbackJp) : null; @endphp

{{ $ci->judul ?? '-' }}

@if (!empty($ci->deskripsi))

{{ $ci->deskripsi }}

@endif
@if ($urlId) Bahasa @endif @if ($urlEn) English @endif @if ($urlJp) Japan @endif @if (!$urlId && !$urlEn && !$urlJp) (file belum tersedia) @endif
{{-- end sm-doc-buttons --}}
{{-- end sm-doc-indent --}}
@endforeach
@endforeach
@else

Belum ada data tersedia.

@endif @endif @endif {{-- Accordion CSS & JS --}} @once @endonce