bovenliggende
commit
03fea3e637
1 gewijzigde bestanden met toevoegingen van 81 en 2 verwijderingen
  1. 81
    2
      app/Filament/Resources/EsgResource.php

+ 81
- 2
app/Filament/Resources/EsgResource.php Bestand weergeven

@@ -500,8 +500,87 @@ class EsgResource extends Resource
500 500
 
501 501
                                     // 清理 HTML 標籤(如果需要)
502 502
                                     foreach ($data['content']['text_content'] as $locale => $content) {
503
-                                        \Log::info($content);
504
-                                        \Log::info(stripslashes($content));
503
+                                        $data['content']['text_content'][$locale] = stripslashes($content);
504
+                                    }
505
+                                    break;
506
+                                case "2":
507
+                                    // 確保有 text_blocks
508
+                                    if (!isset($data['content']['text_blocks'])) {
509
+                                        $data['content']['text_blocks'] = [];
510
+                                    }
511
+
512
+                                    // 處理每個文字區塊
513
+                                    foreach ($data['content']['text_blocks'] as $index => &$block) {
514
+                                        // 確保區塊有必要的欄位
515
+                                        $block['block_item_key'] = $block['block_item_key'] ?? Str::random();
516
+                                        $block['order'] = $block['order'] ?? ($index + 1);
517
+
518
+                                        $block["block_content"] = ["zh_TW" => $block["block_content_tw"] ?? "" , "en" => $block["block_content_en"] ?? ""];
519
+                                        // 移除臨時的分離欄位,只保留合併的 JSON 欄位
520
+                                        unset($block["block_content_tw"]);
521
+                                        unset($block["block_content_en"]);
522
+                                        // 清理區塊內容
523
+                                        if (isset($block['block_content'])) {
524
+                                            foreach ($block['block_content'] as $locale => $content) {
525
+                                                $block['block_content'][$locale] = stripslashes($content);
526
+                                            }
527
+                                        }
528
+                                    }
529
+                                    break;
530
+                                case "3":
531
+                                    // 確保欄數設定
532
+                                    $columnCount = $data['content']['column_count'] ?? 2;
533
+
534
+                                    // 確保表頭存在
535
+                                    if (!isset($data['content']['headers'])) {
536
+                                        $data['content']['headers'] = ['zh_TW' => [], 'en' => []];
537
+                                    }
538
+
539
+                                    // 確保表格資料存在
540
+                                    if (!isset($data['content']['simple_table_rows'])) {
541
+                                        $data['content']['simple_table_rows'] = [];
542
+                                    }
543
+
544
+                                    // 處理表格資料,確保欄數一致
545
+                                    foreach ($data['content']['simple_table_rows'] as $rowIndex => &$row) {
546
+                                        // 確保每行都有正確的欄數
547
+                                        for ($i = 1; $i <= $columnCount; $i++) {
548
+                                            $row["col{$i}"] = ["zh_TW" => $row["col{$i}_tw"] ?? "" , "en" => $row["col{$i}_en"] ?? ""];
549
+                                            foreach ($row["col{$i}"] as $locale => $content) {
550
+                                                $row["col{$i}"][$locale] = $content;
551
+                                            }
552
+                                            unset($row["col{$i}_tw"]);
553
+                                            unset($row["col{$i}_en"]);
554
+                                            $row["align{$i}"] = ["zh_TW" => $row["align{$i}_tw"] ?? "" , "en" => $row["align{$i}_en"] ?? ""];
555
+                                            foreach ($row["align{$i}"] as $locale => $content) {
556
+                                                $row["align{$i}"][$locale] = $content;
557
+                                            }
558
+                                            unset($row["align{$i}_tw"]);
559
+                                            unset($row["align{$i}_en"]);
560
+                                        }
561
+
562
+                                        // 移除多餘的欄位
563
+                                        for ($i = $columnCount + 1; $i <= 4; $i++) {
564
+                                            unset($row["col{$i}_tw"]);
565
+                                            unset($row["col{$i}_en"]);
566
+                                            unset($row["align{$i}_tw"]);
567
+                                            unset($row["align{$i}_en"]);
568
+                                        }
569
+                                    }
570
+                                    break;
571
+                            }
572
+                            return $data;
573
+                        })
574
+                        ->mutateRelationshipDataBeforeCreateUsing(function (array $data): array {
575
+                            switch($data["type"]){
576
+                                case "1":
577
+                                    $data["content"]["text_content"] = ["zh_TW" => $data["content"]["text_content_tw"] ?? "" , "en" => $data["content"]["text_content_en"] ?? ""];
578
+                                    // 移除臨時的分離欄位,只保留合併的 JSON 欄位
579
+                                    unset($data["content"]["text_content_tw"]);
580
+                                    unset($data["content"]["text_content_en"]);
581
+
582
+                                    // 清理 HTML 標籤(如果需要)
583
+                                    foreach ($data['content']['text_content'] as $locale => $content) {
505 584
                                         $data['content']['text_content'][$locale] = stripslashes($content);
506 585
                                     }
507 586
                                     break;