diff --git a/school/lms/doctype/lms_course/lms_course.py b/school/lms/doctype/lms_course/lms_course.py index e14bc38e..a41921eb 100644 --- a/school/lms/doctype/lms_course/lms_course.py +++ b/school/lms/doctype/lms_course/lms_course.py @@ -362,3 +362,28 @@ def reindex_exercises(doc): course = frappe.get_doc("LMS Course", course_data['name']) course.reindex_exercises() frappe.msgprint("All exercises in this course have been re-indexed.") + +@frappe.whitelist() +def search_course(text): + search_courses = [] + courses = frappe.get_all("LMS Course", + filters= { + "is_published": True + }, + or_filters = { + "title": ["like", "%{0}%".format(text)], + "tags": ["like", "%{0}%".format(text)], + "short_introduction": ["like", "%{0}%".format(text)], + "description": ["like", "%{0}%".format(text)], + }) + + """ for course in courses: + search_courses.append(frappe.get_doc("LMS Course", course)) """ + + """ template = frappe.render_template("school/templates/course_list.html", { + "title": _("Search Results"), + "courses": search_courses, + "widgets": Widgets() + }) """ + + return courses diff --git a/school/lms/widgets/CourseCard.html b/school/lms/widgets/CourseCard.html index f6bcd26d..f826b9e0 100644 --- a/school/lms/widgets/CourseCard.html +++ b/school/lms/widgets/CourseCard.html @@ -1,6 +1,6 @@ {% set membership = course.get_membership(frappe.session.user) %} {% set progress = frappe.utils.cint(membership.progress) %} -
+
diff --git a/school/public/css/style.css b/school/public/css/style.css index a63db3b7..c0f3c1df 100644 --- a/school/public/css/style.css +++ b/school/public/css/style.css @@ -210,14 +210,6 @@ input[type=checkbox] { } } -.courses-header { - margin-bottom: 1.5rem; - color: var(--text-color); - font-weight: 600; - font-size: var(--text-3xl); - letter-spacing: -0.0175em -} - @media (min-width: 576px) and (max-width: 992px) { .container { padding-left: 1rem; diff --git a/school/templates/course_list.html b/school/templates/course_list.html new file mode 100644 index 00000000..9e90639a --- /dev/null +++ b/school/templates/course_list.html @@ -0,0 +1,14 @@ +
+ {% if courses | length %} +
+ {{ title }} +
+
+ {% for course in courses %} + {{ widgets.CourseCard(course=course, read_only=False) }} + {% endfor %} +
+{% endif %} +
+ +  \ No newline at end of file diff --git a/school/templates/search_course/search_course.html b/school/templates/search_course/search_course.html new file mode 100644 index 00000000..f158e8ec --- /dev/null +++ b/school/templates/search_course/search_course.html @@ -0,0 +1,3 @@ + + + diff --git a/school/templates/search_course/search_course.js b/school/templates/search_course/search_course.js new file mode 100644 index 00000000..a506428a --- /dev/null +++ b/school/templates/search_course/search_course.js @@ -0,0 +1,33 @@ +frappe.ready(() => { + $(".search-course").keyup((e) => { + search_course(e); + }); +}); + +const search_course = (e) => { + let input = $(e.currentTarget).val(); + console.log(input) + if (input.length < 3 || input.trim() == "") { + $(".course-card").removeClass("hide"); + return + } + + frappe.call({ + method: "school.lms.doctype.lms_course.lms_course.search_course", + args: { + "text": input + }, + callback: (data) => { + render_course_list(data.message); + } + }); +}; + +const render_course_list = (courses) => { + $(".course-card").addClass("hide"); + for (course in courses) { + console.log(courses[course]) + + } +} + diff --git a/school/www/courses/index.html b/school/www/courses/index.html index 07d5b5e7..71818348 100644 --- a/school/www/courses/index.html +++ b/school/www/courses/index.html @@ -10,27 +10,19 @@
- {% if live_courses | length %} -
- {{ _('Live Courses') }} -
-
- {% for course in live_courses %} - {{ widgets.CourseCard(course=course, read_only=False) }} - {% endfor %} -
- {% endif %} + {% include "school/templates/search_course/search_course.html" %} - {% if upcoming_courses | length %} -
- {{ _('Upcoming Courses') }} +
+ {% set title = _("Live Courses") %} + {% set courses = live_courses %} + {% set classes = "original-list" %} + {% include "school/templates/course_list.html" %} + + {% set title = _("Upcoming Courses") %} + {% set courses = upcoming_courses %} + {% set classes = "original-list mt-10" %} + {% include "school/templates/course_list.html" %}
-
- {% for course in upcoming_courses %} - {{ widgets.CourseCard(course=course, read_only=False) }} - {% endfor %} -
- {% endif %}