diff --git a/community/lms/doctype/lms_course/lms_course.json b/community/lms/doctype/lms_course/lms_course.json index 0c104240..e9c4d4d7 100644 --- a/community/lms/doctype/lms_course/lms_course.json +++ b/community/lms/doctype/lms_course/lms_course.json @@ -2,7 +2,7 @@ "actions": [], "allow_guest_to_view": 1, "allow_rename": 1, - "autoname": "field:title", + "autoname": "field:slug", "creation": "2021-03-01 16:49:33.622422", "doctype": "DocType", "editable_grid": 1, @@ -89,7 +89,7 @@ "link_fieldname": "course" } ], - "modified": "2021-05-03 05:52:30.396824", + "modified": "2021-05-06 06:06:08.760597", "modified_by": "Administrator", "module": "LMS", "name": "LMS Course", diff --git a/community/lms/doctype/lms_course/lms_course.py b/community/lms/doctype/lms_course/lms_course.py index 51e8b381..2a731337 100644 --- a/community/lms/doctype/lms_course/lms_course.py +++ b/community/lms/doctype/lms_course/lms_course.py @@ -6,6 +6,7 @@ from __future__ import unicode_literals import frappe from frappe.model.document import Document from ...utils import slugify +from community.query import find, find_all class LMSCourse(Document): @staticmethod @@ -139,24 +140,8 @@ class LMSCourse(Document): now = frappe.utils.nowdate() batches = find_all("LMS Batch", course=self.name, - start_date=[">", now]) + start_date=[">", now], + status="Active", + visibility="Public") return batches -def find_all(doctype, order_by=None, **filters): - """Queries the database for documents of a doctype matching given filters. - """ - rows = frappe.db.get_all(doctype, - filters=filters, - fields='*', - order_by=order_by) - return [frappe.get_doc(dict(row, doctype=doctype)) for row in rows] - -def find(doctype, **filters): - """Queries the database for a document of given doctype matching given filters. - """ - rows = frappe.db.get_all(doctype, - filters=filters, - fields='*') - if rows: - row = rows[0] - return frappe.get_doc(dict(row, doctype=doctype)) diff --git a/community/lms/widgets/ChapterTeaser.html b/community/lms/widgets/ChapterTeaser.html index 51939ac8..c80d1a55 100644 --- a/community/lms/widgets/ChapterTeaser.html +++ b/community/lms/widgets/ChapterTeaser.html @@ -1,6 +1,6 @@
-

{{ chapter.title }}

+

{{index}} {{ chapter.title }}

{{ chapter.description or "" }}
diff --git a/community/public/build.json b/community/public/build.json index cdb08652..6be9391d 100644 --- a/community/public/build.json +++ b/community/public/build.json @@ -3,8 +3,8 @@ "public/css/lms.css" ], "css/community.css": [ - "public/css/vars.css", "public/css/style.css", + "public/css/vars.css", "public/css/style.less" ] } diff --git a/community/public/css/style.css b/community/public/css/style.css index ba05f0a9..d195eab5 100644 --- a/community/public/css/style.css +++ b/community/public/css/style.css @@ -34,82 +34,8 @@ body { margin: 0px; } -.course-header { - margin-top: 20px; - padding: 20px; - background: var(--header-bg); - color: var(--header-color); - border-radius: 9px; -} -.course-author-avatar { - width: 20px; - height: 20px; - border-radius: 50%; - margin-right: 20px; -} - -.course-header h1 { - color: inherit; -} - -.course-type { - text-transform: uppercase; - font-size: 1.0em; - color: var(--tag-color); -} - -.sidebar { - background: var(--sidebar-bg); - margin: 20px 0px; - border-radius: 10px; - padding: 1px 20px 20px 20px; - color: var(--text-color); -} - -.sidebar h3 { - margin-top: 20px; - color: var(--c2); -} - -.sidebar-batch { - background: var(--sidebar-bg); - color: var(--text-color); - position: fixed; - left: 0; - height: 100%; -} - -.sidebar-batch a { - padding: 16px 8px 8px 16px; - display: block; -} - -.instructor { - padding: 10px; -} - -.instructor-title { - font-weight: bold; -} - -.instructor-subtitle { - font-size: 0.8em; - color: var(--text-color); -} - -.sidebar .notice { - padding: 10px; - border-radius: 10px; - border: 1px dashed var(--text-color); -} - -.sidebar .notice a { - color: inherit; - text-decoration: underline; -} - -.course-details { +/* .course-details { margin: 20px 0px; } @@ -118,7 +44,7 @@ body { font-size: 1.4em; font-weight: bold; margin: 20px 0px 10px 0px; -} +} */ .chapter-plan { border-radius: 10px; @@ -133,7 +59,7 @@ body { font-weight: bold; } -.chapter-number { +/* .chapter-number { background: var(--text-color); color: white; border-radius: 50%; @@ -146,7 +72,7 @@ body { .chapter-description { margin: 20px 0px; -} +} */ .lessons { padding-left: 20px; @@ -302,4 +228,4 @@ img.profile-photo { color: #2D005A; font-weight: 600; line-height: 51px; -} \ No newline at end of file +} diff --git a/community/public/css/style.less b/community/public/css/style.less index ffafb8c3..ed0753f5 100644 --- a/community/public/css/style.less +++ b/community/public/css/style.less @@ -5,6 +5,11 @@ body { font-family: "Inter", sans-serif; } +h2 { + margin: 20px 0px; + color: black; +} + .teaser { background: white; border-radius: 9px; @@ -122,3 +127,108 @@ section.lightgray { padding: 2rem 0px; margin-top: 2rem; } + +.course-type { + text-transform: uppercase; + font-size: 1.0em; + font-weight: bold; + color: var(--tag-color); +} + +.course-header { + margin-top: 20px; +} + +/* +.course-header { + margin-top: 20px; + padding: 20px; + background: var(--header-bg); + color: var(--header-color); + border-radius: 9px; +} + +.course-author-avatar { + width: 20px; + height: 20px; + border-radius: 50%; + margin-right: 20px; +} + +.course-header h1 { + color: inherit; +} + +*/ + +// .gray-section { +// background:#F6F6F6; +// border: 1px solid #C4C4C4; +// padding: 20px; +// margin: 20px 0px; +// } + +.instructor-title { + font-weight: bold; + color: black; +} + +.instructor-subtitle { + font-size: 0.8em; + color: var(--text-color); +} + +// .mentors-wrapper { +// .gray-section(); +// } + + +.chapter-number { + background: var(--text-color); + color: white; + border-radius: 50%; + height: 24px; + min-width: 24px; + align-items: center; + padding: 5px 8px 2px 8px; + margin-right: 5px; +} + +.sidebar { + background: var(--sidebar-bg); + border: 1px solid var(--sidebar-border); + margin: 20px 0px; + border-radius: 10px; + padding: 1px 20px 20px 20px; +} + +.sidebar h3 { + margin-top: 20px; + color: black; +} + +.sidebar-batch { + background: var(--sidebar-bg); + color: var(--text-color); + position: fixed; + left: 0; + height: 100%; +} + +.sidebar-batch a { + padding: 16px 8px 8px 16px; + display: block; +} + + +.sidebar .notice { + margin-top: 10px; + padding: 10px; + border-radius: 10px; + border: 1px dashed var(--text-color); +} + +.sidebar .notice a { + color: inherit; + text-decoration: underline; +} diff --git a/community/public/css/vars.css b/community/public/css/vars.css index ff7bba58..b04975fd 100644 --- a/community/public/css/vars.css +++ b/community/public/css/vars.css @@ -1,4 +1,7 @@ /* Define all your css variables here. */ :root { --primary-color: #08B74F; + --tag-color: #737373; + --sidebar-bg: #F6F6F6; + --sidebar-border: #C4C4C4; } diff --git a/community/query.py b/community/query.py new file mode 100644 index 00000000..b2eb58d3 --- /dev/null +++ b/community/query.py @@ -0,0 +1,22 @@ +"""Utilities to find docs. +""" +import frappe + +def find_all(doctype, order_by=None, **filters): + """Queries the database for documents of a doctype matching given filters. + """ + rows = frappe.db.get_all(doctype, + filters=filters, + fields='*', + order_by=order_by) + return [frappe.get_doc(dict(row, doctype=doctype)) for row in rows] + +def find(doctype, **filters): + """Queries the database for a document of given doctype matching given filters. + """ + rows = frappe.db.get_all(doctype, + filters=filters, + fields='*') + if rows: + row = rows[0] + return frappe.get_doc(dict(row, doctype=doctype)) diff --git a/community/www/courses/course.html b/community/www/courses/course.html index 3c08fc97..43614eac 100644 --- a/community/www/courses/course.html +++ b/community/www/courses/course.html @@ -11,22 +11,23 @@
course

{{course.title}}

+
{{ course.short_introduction }}
-
+
+ {{ CourseVideo(course) }} + {{ CourseDescription(course) }} {{ BatchSection(course) }} {{ CourseOutline(course) }}
- -
+
- @@ -35,14 +36,7 @@
{% endblock %} - -{% macro CourseDescription(course) %} -

Course Description

- -
- {{ course.short_introduction }} -
- +{% macro CourseVideo(course) %} {% if course.video_link %}