From 0afbd3f08bfe70a3f2ec6918acfc21d18d1f9612 Mon Sep 17 00:00:00 2001 From: supalerk-ar66 Date: Wed, 11 Feb 2026 13:49:08 +0700 Subject: [PATCH] feat: add CourseDetailView component with video preview, curriculum, enrollment logic, and i18n support --- .../components/discovery/CourseDetailView.vue | 63 ++++++++----------- Frontend-Learner/i18n/locales/en.json | 3 +- Frontend-Learner/i18n/locales/th.json | 3 +- 3 files changed, 31 insertions(+), 38 deletions(-) diff --git a/Frontend-Learner/components/discovery/CourseDetailView.vue b/Frontend-Learner/components/discovery/CourseDetailView.vue index 3ccad2a2..8e741b69 100644 --- a/Frontend-Learner/components/discovery/CourseDetailView.vue +++ b/Frontend-Learner/components/discovery/CourseDetailView.vue @@ -48,10 +48,11 @@ const handleEnroll = () => { @@ -92,17 +97,8 @@ const handleEnroll = () => {
- {{ getLocalizedText(course.category?.name) }} - - - {{ course.duration_minutes || 60 }} {{ $t('course.minutes') }} - - - - {{ course.instructor?.first_name }} {{ course.instructor?.last_name }} -
@@ -111,7 +107,7 @@ const handleEnroll = () => {
-
+

{{ $t('course.courseContent') }} @@ -136,8 +132,9 @@ const handleEnroll = () => {

-
- {{ $t('course.noContent') }} +
+ +

{{ $t('course.noContent') }}

@@ -147,12 +144,17 @@ const handleEnroll = () => {
-
-
+
+
-
- {{ course.price > 0 ? formatPrice(course.price) : $t('course.free') }} +
+ + {{ formatPrice(course.price) }} + + + {{ $t('course.free') }} +
{{ formatPrice(Number(course.price) * 2) }} @@ -169,21 +171,10 @@ const handleEnroll = () => { @click="handleEnroll" /> -
- {{ $t('course.satisfactionGuarantee') }} -

-
- - {{ $t('course.lifetimeAccess') }} -
-
- - {{ $t('course.unlimitedQuizzes') }} -
{{ $t('course.certificate') }} ({{ $t('course.available') }}) diff --git a/Frontend-Learner/i18n/locales/en.json b/Frontend-Learner/i18n/locales/en.json index fc22ff1a..d27dd01e 100644 --- a/Frontend-Learner/i18n/locales/en.json +++ b/Frontend-Learner/i18n/locales/en.json @@ -47,7 +47,8 @@ "buyNow": "Buy this course", "enrollFree": "Enroll for free", "loginToEnroll": "Log in to enroll", - "minutes": "Minutes" + "minutes": "Minutes", + "noVideoPreview": "Video preview not available" }, "sidebar": { "overview": "Home", diff --git a/Frontend-Learner/i18n/locales/th.json b/Frontend-Learner/i18n/locales/th.json index 66d4fa04..44fa940b 100644 --- a/Frontend-Learner/i18n/locales/th.json +++ b/Frontend-Learner/i18n/locales/th.json @@ -47,7 +47,8 @@ "buyNow": "ซื้อคอร์สเรียนนี้", "enrollFree": "ลงทะเบียนเรียนฟรี", "loginToEnroll": "เข้าสู่ระบบเพื่อลงทะเบียน", - "minutes": "นาที" + "minutes": "นาที", + "noVideoPreview": "วิดีโอตัวอย่างยังไม่พร้อมใช้งาน" }, "sidebar": { "overview": "หน้าหลัก",