Merge pull request #244 from pateljannat/dashboard
This commit is contained in:
4
.github/workflows/ci.yml
vendored
4
.github/workflows/ci.yml
vendored
@@ -6,7 +6,7 @@ on:
|
||||
pull_request: {}
|
||||
jobs:
|
||||
tests:
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-latest
|
||||
services:
|
||||
redis-cache:
|
||||
image: redis:alpine
|
||||
@@ -32,7 +32,7 @@ jobs:
|
||||
- name: setup python
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: 3.9
|
||||
python-version: '3.9'
|
||||
- name: setup node
|
||||
uses: actions/setup-node@v2
|
||||
with:
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
{% set member = frappe.get_doc("User", frappe.session.user) %}
|
||||
<div class="mt-10">
|
||||
{% set enrolled = member.get_enrolled_courses().in_progress + member.get_enrolled_courses().completed %}
|
||||
{% if enrolled | length %}
|
||||
<div class="mt-8">
|
||||
<div class="course-home-headings">
|
||||
{{ _("Courses Enrolled") }}
|
||||
</div>
|
||||
<div class="cards-parent">
|
||||
{% for course in enrolled %}
|
||||
{{ widgets.CourseCard(course=course) }}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="common-card-style thread-card">
|
||||
<div class="w-25 text-center" style="margin: 0 auto;">
|
||||
<span class="font-weight-bold"> No Enrolled Courses </span>
|
||||
<div class="small">
|
||||
You have not enrolled in any course yet.
|
||||
</div>
|
||||
<a class="button is-primary ml-auto mr-auto mt-3" href="/courses">
|
||||
Explore Courses
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"__unsaved": 1,
|
||||
"creation": "2021-10-21 11:29:50.424865",
|
||||
"docstatus": 0,
|
||||
"doctype": "Web Template",
|
||||
"fields": [],
|
||||
"idx": 0,
|
||||
"modified": "2021-10-21 12:02:23.837501",
|
||||
"modified_by": "Administrator",
|
||||
"module": "LMS",
|
||||
"name": "Courses Enrolled",
|
||||
"owner": "Administrator",
|
||||
"standard": 1,
|
||||
"template": "",
|
||||
"type": "Section"
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{% set member = frappe.get_doc("User", frappe.session.user) %}
|
||||
<div class="mt-10">
|
||||
{% if member.get_mentored_courses() | length %}
|
||||
<div class="course-home-headings"> {{ _("Courses Mentored") }} </div>
|
||||
<div class="cards-parent">
|
||||
{% for course in member.get_mentored_courses() %}
|
||||
{{ widgets.CourseCard(course=course) }}
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"__unsaved": 1,
|
||||
"creation": "2021-10-21 11:32:57.411626",
|
||||
"docstatus": 0,
|
||||
"doctype": "Web Template",
|
||||
"fields": [],
|
||||
"idx": 0,
|
||||
"modified": "2021-10-21 12:01:56.270656",
|
||||
"modified_by": "Administrator",
|
||||
"module": "LMS",
|
||||
"name": "Courses Mentored",
|
||||
"owner": "Administrator",
|
||||
"standard": 1,
|
||||
"template": "",
|
||||
"type": "Section"
|
||||
}
|
||||
@@ -2,115 +2,117 @@
|
||||
{% set progress = frappe.utils.cint(membership.progress) %}
|
||||
<div class="common-card-style course-card">
|
||||
|
||||
<div class="course-image {% if not course.image %}default-image{% endif %}"
|
||||
{% if course.image %} style="background-image: url( {{ course.image }} );" {% endif %}>
|
||||
<div class="course-image {% if not course.image %}default-image{% endif %}" {% if course.image %}
|
||||
style="background-image: url( {{ course.image }} );" {% endif %}>
|
||||
<div class="course-tags">
|
||||
{% for tag in course.get_tags() %}
|
||||
<div class="course-card-pills">{{ tag }}</div>
|
||||
{% endfor %}
|
||||
{% if membership and not read_only %}
|
||||
{% if progress < 100 %}
|
||||
<div class="course-card-pills dark-pills ml-auto">{{ frappe.utils.rounded(progress) }}% {{ _("Completed") }}</div>
|
||||
{% else %}
|
||||
<div class="course-card-pills dark-pills ml-auto"> <img src="/assets/community/icons/check.svg"> {{ _("Completed") }}</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if progress < 100 %} <div class="course-card-pills dark-pills ml-auto">{{ frappe.utils.rounded(progress) }}%
|
||||
{{ _("Completed") }}
|
||||
</div>
|
||||
{% if not course.image %}
|
||||
<div class="default-image-text">{{ course.title[0] }}</div>
|
||||
{% else %}
|
||||
<div class="course-card-pills dark-pills ml-auto"> <img src="/assets/community/icons/check.svg"> {{ _("Completed")
|
||||
}}</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
||||
{% if not course.image %}
|
||||
<div class="default-image-text">{{ course.title[0] }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div class="course-card-content">
|
||||
<div class="course-card-meta muted-text">
|
||||
{% if course.get_chapters() | length %}
|
||||
<span>
|
||||
{{ course.get_chapters() | length }} {{ _("Chapters") }}
|
||||
</span>
|
||||
{% endif %}
|
||||
{% if course.get_chapters() | length and course.get_upcoming_batches() | length %}
|
||||
<span class="font-weight-bold ml-3 mr-3"> . </span>
|
||||
{% endif %}
|
||||
{% if course.get_upcoming_batches() | length %}
|
||||
<span class="">
|
||||
{{ course.get_upcoming_batches() | length }} {{ _("Open Batches") }}
|
||||
</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="course-card-title">{{ course.title }}</div>
|
||||
<div {% if not read_only %} class="mb-4" {% endif %}>
|
||||
<span class="zindex">
|
||||
{{ widgets.Avatar(member=course.get_instructor(), avatar_class="avatar-small") }}
|
||||
<a class="button-links" href="{{ get_profile_url(course.get_instructor().username) }}">
|
||||
<span class="course-instructor">
|
||||
{{ course.get_instructor().full_name }}
|
||||
</span>
|
||||
</a>
|
||||
</span>
|
||||
<span class="course-student-count">
|
||||
{% if course.get_students() | length %}
|
||||
<span class="mr-4">
|
||||
<img class="icon-background" src="/assets/community/icons/user.svg" />
|
||||
{{ course.get_students() | length }}
|
||||
</span> {% endif %}
|
||||
{% set avg_rating = course.get_average_rating() %}
|
||||
{% if avg_rating %}
|
||||
<span class="">
|
||||
<img class="icon-background" src="/assets/community/icons/rating.svg" />
|
||||
{{ frappe.utils.flt(avg_rating, frappe.get_system_settings("float_precision") or 3) }}
|
||||
<div class="course-card-content">
|
||||
<div class="course-card-meta muted-text">
|
||||
{% if course.get_chapters() | length %}
|
||||
<span>
|
||||
{{ course.get_chapters() | length }} {{ _("Chapters") }}
|
||||
</span>
|
||||
{% endif %}
|
||||
{% if course.get_chapters() | length and course.get_upcoming_batches() | length %}
|
||||
<span class="font-weight-bold ml-3 mr-3"> . </span>
|
||||
{% endif %}
|
||||
{% if course.get_upcoming_batches() | length %}
|
||||
<span class="">
|
||||
{{ course.get_upcoming_batches() | length }} {{ _("Open Batches") }}
|
||||
</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="course-card-title">{{ course.title }}</div>
|
||||
<div {% if not read_only %} class="mb-4" {% endif %}>
|
||||
<span class="zindex">
|
||||
{{ widgets.Avatar(member=course.get_instructor(), avatar_class="avatar-small") }}
|
||||
<a class="button-links" href="{{ get_profile_url(course.get_instructor().username) }}">
|
||||
<span class="course-instructor">
|
||||
{{ course.get_instructor().full_name }}
|
||||
</span>
|
||||
{% endif %}
|
||||
</a>
|
||||
</span>
|
||||
<span class="course-student-count">
|
||||
{% if course.get_students() | length %}
|
||||
<span class="mr-4">
|
||||
<img class="icon-background" src="/assets/community/icons/user.svg" />
|
||||
{{ course.get_students() | length }}
|
||||
</span> {% endif %}
|
||||
{% set avg_rating = course.get_average_rating() %}
|
||||
{% if avg_rating %}
|
||||
<span class="">
|
||||
<img class="icon-background" src="/assets/community/icons/rating.svg" />
|
||||
{{ frappe.utils.flt(avg_rating, frappe.get_system_settings("float_precision") or 3) }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
{% if read_only %}
|
||||
<a class="stretched-link" href="/courses/{{ course.name }}"></a>
|
||||
{% else %}
|
||||
|
||||
{% set lesson_index = course.get_lesson_index(membership.current_lesson) if membership and
|
||||
membership.current_lesson else '1.1' %}
|
||||
{% set query_parameter = "?batch=" + membership.batch if membership and
|
||||
membership.batch else "" %}
|
||||
{% set certificate = course.is_certified() %}
|
||||
|
||||
{% if certificate %}
|
||||
<div class="view-course-link is-default">
|
||||
_("Get Certificate") <img class="ml-3" src="/assets/community/icons/black-arrow.svg" />
|
||||
</div>
|
||||
<a class="stretched-link" href="/courses/{{ course.name }}/{{ certificate }}"></a>
|
||||
|
||||
{% elif course.enable_certification and progress == 100 %}
|
||||
<div class="view-course-link is-default" id="certification" data-course="{{ course.name }}">
|
||||
{{ _("Get Certificate") }} <img class="ml-3" src="/assets/community/icons/black-arrow.svg" />
|
||||
</div>
|
||||
|
||||
{% elif progress == 100 %}
|
||||
<div class="view-course-link is-default">
|
||||
{{ _("Course Completed") }} <img class="ml-3" src="/assets/community/icons/black-arrow.svg" />
|
||||
</div>
|
||||
<a class="stretched-link" href="/courses/{{ course.name }}"></a>
|
||||
|
||||
{% elif course.upcoming %}
|
||||
<div class="view-course-link is-secondary border">
|
||||
{{ _("Upcoming Course") }} <img class="ml-3" src="/assets/community/icons/black-arrow.svg" />
|
||||
</div>
|
||||
<a class="stretched-link" href="/courses/{{ course.name }}"></a>
|
||||
|
||||
{% elif membership %}
|
||||
<div class="view-course-link is-primary">
|
||||
{{ _("Continue Course") }} <img class="ml-3" src="/assets/community/icons/white-arrow.svg" />
|
||||
</div>
|
||||
<a class="stretched-link" href="{{ course.get_learn_url(lesson_index) }}{{ query_parameter }}"></a>
|
||||
|
||||
{% else %}
|
||||
<div class="view-course-link is-default">
|
||||
{{ _("View Course") }} <img class="ml-3" src="/assets/community/icons/black-arrow.svg" />
|
||||
</div>
|
||||
<a class="stretched-link" href="/courses/{{ course.name }}"></a>
|
||||
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
{% if read_only %}
|
||||
<a class="stretched-link" href="/courses/{{ course.name }}"></a>
|
||||
{% else %}
|
||||
|
||||
{% set lesson_index = course.get_lesson_index(membership.current_lesson) if membership and
|
||||
membership.current_lesson else '1.1' %}
|
||||
{% set query_parameter = "?batch=" + membership.batch if membership and
|
||||
membership.batch else "" %}
|
||||
{% set certificate = course.is_certified() %}
|
||||
|
||||
{% if certificate %}
|
||||
<div class="view-course-link is-default">
|
||||
_("Get Certificate") <img class="ml-3" src="/assets/community/icons/black-arrow.svg" />
|
||||
</div>
|
||||
<a class="stretched-link" href="/courses/{{ course.name }}/{{ certificate }}"></a>
|
||||
|
||||
{% elif course.enable_certification and progress == 100 %}
|
||||
<div class="view-course-link is-default" id="certification" data-course="{{ course.name }}">
|
||||
{{ _("Get Certificate") }} <img class="ml-3" src="/assets/community/icons/black-arrow.svg" />
|
||||
</div>
|
||||
|
||||
{% elif progress == 100 %}
|
||||
<div class="view-course-link is-default">
|
||||
{{ _("Course Completed") }} <img class="ml-3" src="/assets/community/icons/black-arrow.svg" />
|
||||
</div>
|
||||
<a class="stretched-link" href="/courses/{{ course.name }}"></a>
|
||||
|
||||
{% elif course.upcoming %}
|
||||
<div class="view-course-link is-secondary border">
|
||||
{{ _("Upcoming Course") }} <img class="ml-3" src="/assets/community/icons/black-arrow.svg" />
|
||||
</div>
|
||||
<a class="stretched-link" href="/courses/{{ course.name }}"></a>
|
||||
|
||||
{% elif membership %}
|
||||
<div class="view-course-link is-primary">
|
||||
{{ _("Continue Course") }} <img class="ml-3" src="/assets/community/icons/white-arrow.svg" />
|
||||
</div>
|
||||
<a class="stretched-link" href="{{ course.get_learn_url(lesson_index) }}{{ query_parameter }}"></a>
|
||||
|
||||
{% else %}
|
||||
<div class="view-course-link is-default">
|
||||
{{ _("View Course") }} <img class="ml-3" src="/assets/community/icons/black-arrow.svg" />
|
||||
</div>
|
||||
<a class="stretched-link" href="/courses/{{ course.name }}"></a>
|
||||
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
|
||||
@@ -123,7 +123,8 @@ class CustomUser(User):
|
||||
|
||||
for map in mapping:
|
||||
if frappe.db.get_value("LMS Course", map.course, "is_published"):
|
||||
mentored_courses.append(map)
|
||||
course = frappe.get_doc("LMS Course", map.course)
|
||||
mentored_courses.append(course)
|
||||
|
||||
return mentored_courses
|
||||
|
||||
|
||||
@@ -212,7 +212,6 @@ input[type=checkbox] {
|
||||
|
||||
.courses-header {
|
||||
margin-bottom: 1.5rem;
|
||||
padding: 0 1rem;
|
||||
color: var(--text-color);
|
||||
font-weight: 600;
|
||||
font-size: 22px;
|
||||
@@ -739,7 +738,6 @@ input[type=checkbox] {
|
||||
letter-spacing: -0.0175em;
|
||||
color: #192734;
|
||||
margin-bottom: 1rem;
|
||||
padding: 0 1rem;
|
||||
}
|
||||
|
||||
.course-detail-headings {
|
||||
|
||||
@@ -130,9 +130,8 @@
|
||||
Courses Mentored
|
||||
</div>
|
||||
<div class="cards-parent">
|
||||
{% for mentorship in member.get_mentored_courses() %}
|
||||
{% set course_details = frappe.get_doc("LMS Course", mentorship.course) %}
|
||||
{{ widgets.CourseCard(course=course_details, read_only=read_only) }}
|
||||
{% for course in member.get_mentored_courses() %}
|
||||
{{ widgets.CourseCard(course=course, read_only=read_only) }}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user