diff --git a/frontend/src/components/CourseOutline.vue b/frontend/src/components/CourseOutline.vue index ec1d0c2d..9fcd76fc 100644 --- a/frontend/src/components/CourseOutline.vue +++ b/frontend/src/components/CourseOutline.vue @@ -2,7 +2,7 @@
{{ __(title) }} diff --git a/frontend/src/pages/CourseDetail.vue b/frontend/src/pages/CourseDetail.vue index 89f97f4a..db9c77d4 100644 --- a/frontend/src/pages/CourseDetail.vue +++ b/frontend/src/pages/CourseDetail.vue @@ -149,6 +149,12 @@ updateDocumentTitle(pageMeta) padding: revert; } +.course-description ul { + list-style: disc; + margin: revert; + padding: revert; +} + .avatar-group { display: inline-flex; align-items: center; diff --git a/frontend/src/pages/CreateCourse.vue b/frontend/src/pages/CreateCourse.vue index db30b395..4ff7c766 100644 --- a/frontend/src/pages/CreateCourse.vue +++ b/frontend/src/pages/CreateCourse.vue @@ -122,7 +122,7 @@
{{ __('Settings') }}
-
+
+
@@ -212,6 +218,7 @@ const course = reactive({ course_image: null, tags: '', published: false, + published_on: '', upcoming: false, disable_self_learning: false, paid_course: false, @@ -358,7 +365,7 @@ watch( const validateFile = (file) => { let extension = file.name.split('.').pop().toLowerCase() - if (!['jpg', 'jpeg', 'png'].includes(extension)) { + if (!['jpg', 'jpeg', 'png', 'webp'].includes(extension)) { return 'Only image file is allowed.' } } diff --git a/lms/lms/doctype/lms_certificate/lms_certificate.py b/lms/lms/doctype/lms_certificate/lms_certificate.py index d43699ba..995ab68b 100644 --- a/lms/lms/doctype/lms_certificate/lms_certificate.py +++ b/lms/lms/doctype/lms_certificate/lms_certificate.py @@ -97,7 +97,13 @@ def create_certificate(course): }, "value", ) - + if not default_certificate_template: + default_certificate_template = frappe.db.get_value( + "Print Format", + { + "doc_type": "LMS Certificate", + }, + ) certificate = frappe.get_doc( { "doctype": "LMS Certificate", diff --git a/lms/lms/doctype/lms_course/lms_course.py b/lms/lms/doctype/lms_course/lms_course.py index b3520d9c..d07b02ac 100644 --- a/lms/lms/doctype/lms_course/lms_course.py +++ b/lms/lms/doctype/lms_course/lms_course.py @@ -5,7 +5,7 @@ import json import random import frappe from frappe.model.document import Document -from frappe.utils import cint +from frappe.utils import cint, today from frappe.utils.telemetry import capture from lms.lms.utils import get_chapters, can_create_courses from ...utils import generate_slug, validate_image @@ -14,11 +14,16 @@ from frappe import _ class LMSCourse(Document): def validate(self): + self.validate_published() self.validate_instructors() self.validate_video_link() self.validate_status() self.image = validate_image(self.image) + def validate_published(self): + if self.published and not self.published_on: + self.published_on = today() + def validate_instructors(self): if self.is_new() and not self.instructors: frappe.get_doc( diff --git a/lms/lms/doctype/lms_course/test_lms_course.py b/lms/lms/doctype/lms_course/test_lms_course.py index 8907f1fc..e688d6f3 100644 --- a/lms/lms/doctype/lms_course/test_lms_course.py +++ b/lms/lms/doctype/lms_course/test_lms_course.py @@ -72,6 +72,8 @@ def new_course(title, additional_filters=None): "title": title, "short_introduction": title, "description": title, + "video_link": "https://youtu.be/pEbIhUySqbk", + "image": "/assets/lms/images/course-home.png", } if additional_filters: diff --git a/lms/www/lms.py b/lms/www/lms.py index 0b8d31bd..d2e4b205 100644 --- a/lms/www/lms.py +++ b/lms/www/lms.py @@ -32,6 +32,14 @@ def get_meta(app_path): } if re.match(r"^courses/.*$", app_path): + if "new/edit" in app_path: + return { + "title": _("New Course"), + "image": frappe.db.get_single_value("Website Settings", "banner_image"), + "description": "Create a new course", + "keywords": "New Course, Create Course", + "link": "/lms/courses/new/edit", + } course_name = app_path.split("/")[1] course = frappe.db.get_value( "LMS Course", @@ -56,7 +64,6 @@ def get_meta(app_path): "link": "/batches", } if re.match(r"^batches/details/.*$", app_path): - print(app_path, "app_path") batch_name = app_path.split("/")[2] batch = frappe.db.get_value( "LMS Batch",