Pārlūkot izejas kodu

260115 最新消息草稿預覽、預計發布時間

OMEGA\lulufj.ho 2 nedēļas atpakaļ
vecāks
revīzija
1d118ea665

+ 10
- 1
app/Filament/Resources/NewsResource.php Parādīt failu

19
 use Filament\Forms\Components\Section;
19
 use Filament\Forms\Components\Section;
20
 use Filament\Forms\Components\Toggle;
20
 use Filament\Forms\Components\Toggle;
21
 use Filament\Forms\Components\DatePicker;
21
 use Filament\Forms\Components\DatePicker;
22
+use Filament\Forms\Components\DateTimePicker;
22
 use Filament\Forms\Components\FileUpload;
23
 use Filament\Forms\Components\FileUpload;
23
 use Filament\Forms\Get;
24
 use Filament\Forms\Get;
24
 use Filament\Forms\Form;
25
 use Filament\Forms\Form;
73
                         DatePicker::make('post_date')
74
                         DatePicker::make('post_date')
74
                         ->label("發布日期")
75
                         ->label("發布日期")
75
                         ->closeOnDateSelection()->required(),
76
                         ->closeOnDateSelection()->required(),
76
-                    ])->columnSpanFull()->columns(2),
77
+                        DateTimePicker::make('start_date')
78
+                        ->label("預約發布時間")
79
+                        ->closeOnDateSelection(),
80
+                        DateTimePicker::make('end_date')
81
+                        ->label("預約下架時間")
82
+                        ->closeOnDateSelection(),
83
+                    ])->columnSpanFull()->columns(3),
77
                     FileUpload::make('news_img_pc')->label("列表圖(desktop)")
84
                     FileUpload::make('news_img_pc')->label("列表圖(desktop)")
78
                     ->disk("public")
85
                     ->disk("public")
79
                     // ->helperText('建議寬高限制為:1280*720px,檔案大小限制為1M以下')->maxSize('1024')
86
                     // ->helperText('建議寬高限制為:1280*720px,檔案大小限制為1M以下')->maxSize('1024')
264
                     $record->on_top = !$record->on_top;
271
                     $record->on_top = !$record->on_top;
265
                     $record->save();
272
                     $record->save();
266
                 }),
273
                 }),
274
+                TextColumn::make("start_date")->label("預計上架時間")->dateTime('Y/m/d H:i:s')->alignCenter(),
275
+                TextColumn::make("end_date")->label("預計下架時間")->dateTime('Y/m/d H:i:s')->alignCenter(),
267
                 TextColumn::make("created_at")->label("建立時間")->dateTime('Y/m/d H:i:s')->alignCenter(),
276
                 TextColumn::make("created_at")->label("建立時間")->dateTime('Y/m/d H:i:s')->alignCenter(),
268
                 TextColumn::make("updated_at")->label("更新時間")->dateTime()->alignCenter(),
277
                 TextColumn::make("updated_at")->label("更新時間")->dateTime()->alignCenter(),
269
             ])
278
             ])

+ 24
- 2
app/Http/Controllers/Api/NewsController.php Parādīt failu

112
         return response()->json($result, 200);
112
         return response()->json($result, 200);
113
     }
113
     }
114
 
114
 
115
-    public function detail($locale = 'tw', $id){
115
+    public function detail(Request $request, $locale = 'tw', $id){
116
+
117
+        $isPreview = $request->input("preview","");
118
+        $now = now();
119
+
120
+        if($isPreview){
121
+            $news = News::where('id', $id)
122
+                ->first();
123
+        }else{
124
+            $news = News::where('id', $id)
125
+                ->where("visible", 1)
126
+                ->where(fn($q) =>
127
+                    $q->whereNull('start_date')
128
+                    ->orWhere('start_date', '<=', $now)
129
+                )->where(fn($q) =>
130
+                    $q->whereNull('end_date')
131
+                    ->orWhere('end_date', '>=', $now)
132
+                )
133
+                ->first();
134
+        }
135
+
136
+
116
         $locate = $locale == "tw" ? "zh_TW" : $locale;
137
         $locate = $locale == "tw" ? "zh_TW" : $locale;
117
-        $news = News::find($id);
138
+        
118
         $otherNewsList = [];
139
         $otherNewsList = [];
119
         if(!$news){
140
         if(!$news){
120
             return response()->json([
141
             return response()->json([
121
                 'message' => "news not found"], 404);
142
                 'message' => "news not found"], 404);
122
         }
143
         }
144
+// dd($news);
123
         //取得前一篇
145
         //取得前一篇
124
         $previous = News::where(function ($query) use ($news) {
146
         $previous = News::where(function ($query) use ($news) {
125
             $query->where('order', $news->order)
147
             $query->where('order', $news->order)

+ 1
- 1
config/app.php Parādīt failu

65
     |
65
     |
66
     */
66
     */
67
 
67
 
68
-    'timezone' => 'UTC',
68
+    'timezone' => 'Asia/Taipei',
69
 
69
 
70
     /*
70
     /*
71
     |--------------------------------------------------------------------------
71
     |--------------------------------------------------------------------------

+ 30
- 0
database/migrations/2026_01_13_082523_add_scheduled_date_to_news.php Parādīt failu

1
+<?php
2
+
3
+use Illuminate\Database\Migrations\Migration;
4
+use Illuminate\Database\Schema\Blueprint;
5
+use Illuminate\Support\Facades\Schema;
6
+
7
+return new class extends Migration
8
+{
9
+    /**
10
+     * Run the migrations.
11
+     */
12
+    public function up(): void
13
+    {
14
+        Schema::table('news', function (Blueprint $table) {
15
+            $table->dateTime('start_date')->nullable()->comment("預約發布日期");
16
+            $table->dateTime('end_date')->nullable()->comment("預約下架日期");
17
+        });
18
+    }
19
+
20
+    /**
21
+     * Reverse the migrations.
22
+     */
23
+    public function down(): void
24
+    {
25
+        Schema::table('news', function (Blueprint $table) {
26
+            $table->dropColumn('start_date');
27
+            $table->dropColumn('end_date');
28
+        });
29
+    }
30
+};