refactor: merged profile and dashboard page

This commit is contained in:
Jannat Patel
2022-10-11 17:23:36 +05:30
parent 662813b378
commit fdf1bbd1e2
16 changed files with 157 additions and 138 deletions

View File

@@ -26,19 +26,91 @@
</div>
{% else %}
{% include "lms/templates/search_course/search_course.html" %}
<div class="course-list">
{% set courses = live_courses %}
{% set title = _("Live Courses ({0})").format(courses | length) %}
{% set classes = "live-courses" %}
{% include "lms/templates/course_list.html" %}
<!-- {% include "lms/templates/search_course/search_course.html" %} -->
{% if show_creators_section %}
<div class="pull-right">
<a class="btn btn-secondary btn-sm" href="/users"> {{ _("Visit Dashboard") }} </a>
<a class="btn btn-secondary btn-sm ml-2" href="/courses/new-course"> {{ _("Create a Course") }} </a>
</div>
{% endif %}
<ul class="nav lms-nav" id="courses-tab">
<li class="nav-item">
<a class="nav-link active" data-toggle="tab" href="#live">
{{ _("Live") }}
</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#upcoming">
{{ _("Upcoming") }}
</a>
</li>
{% if frappe.session.user != "Guest" %}
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#courses-enrolled">
{{ _("Enrolled") }}
</a>
</li>
{% endif %}
{% if show_creators_section %}
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#courses-created">
{{ _("Created") }}
</a>
</li>
{% endif %}
{% if show_review_section %}
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#courses-under-review">
{{ _("Under Review") }}
</a>
</li>
{% endif %}
</ul>
<div class="border-bottom mb-4"></div>
<div class="tab-content">
<div class="tab-pane active" id="live" role="tabpanel" aria-labelledby="live">
{% set courses = live_courses %}
{% set title = _("Live Courses") %}
{% set classes = "live-courses" %}
{% include "lms/templates/course_list.html" %}
</div>
<div class="tab-pane" id="upcoming" role="tabpanel" aria-labelledby="upcoming">
{% set courses = upcoming_courses %}
{% set title = _("Upcoming Courses") %}
{% set classes = "upcoming-courses" %}
{% include "lms/templates/course_list.html" %}
</div>
{% if frappe.session.user != "Guest" %}
<div class="tab-pane fade" id="courses-enrolled" role="tabpanel" aria-labelledby="courses-enrolled">
{% include "lms/lms/web_template/courses_enrolled/courses_enrolled.html" %}
</div>
{% endif %}
{% if show_creators_section %}
<div class="tab-pane fade" id="courses-created" role="tabpanel" aria-labelledby="courses-created">
{% include "lms/templates/courses_created.html" %}
</div>
{% endif %}
{% if show_review_section %}
<div class="tab-pane fade" id="courses-under-review" role="tabpanel" aria-labelledby="courses-under-review">
{% include "lms/templates/courses_under_review.html" %}
</div>
{% endif %}
</div>
{% set courses = upcoming_courses %}
{% set title = _("Upcoming Courses ({0})").format(courses | length) %}
{% set classes = "upcoming-courses mt-10" %}
{% include "lms/templates/course_list.html" %}
</div>
{% endif %}
</div>
</div>

View File

@@ -1,18 +1,22 @@
import frappe
from frappe import _
from lms.lms.utils import check_profile_restriction, get_restriction_details
from lms.lms.utils import has_course_instructor_role, has_course_moderator_role, check_profile_restriction, get_restriction_details
def get_context(context):
context.no_cache = 1
context.live_courses, context.upcoming_courses = get_courses()
context.restriction = check_profile_restriction()
portal_course_creation = frappe.db.get_single_value("LMS Settings", "portal_course_creation")
context.show_creators_section = frappe.session.user != "Guest" and \
(portal_course_creation == "Anyone" or has_course_instructor_role())
context.show_review_section = has_course_moderator_role() and frappe.session.user != "Gurst"
if context.restriction:
context.restriction_details = get_restriction_details()
context.metatags = {
"title": _("All Live Courses"),
"title": _("Courses List"),
"image": frappe.db.get_single_value("Website Settings", "banner_image"),
"description": "This page lists all the courses published on our website",
"keywords": "All Courses, Courses, Learn"

View File

@@ -1,75 +0,0 @@
{% extends "templates/base.html" %}
{% block title %}
{{ _("Dashboard")}}
{% endblock %}
{% block content %}
<div class="common-page-style dashboard">
<div class="container">
{% if show_creators_section %}
<a class="btn btn-secondary btn-sm course-creation-link" id="create-course-link" href="/courses/new-course">
{{ _("Create a Course") }}
</a>
{% endif %}
<ul class="nav lms-nav" id="courses-tab">
<li class="nav-item">
<a class="nav-link active" data-toggle="tab" href="#courses-enrolled">
{{ _("Enrolled") }}
</a>
</li>
{% if show_creators_section %}
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#courses-created">
{{ _("Created") }}
</a>
</li>
{% endif %}
{% if show_review_section %}
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#courses-under-review">
{{ _("Under Review") }}
</a>
</li>
{% endif %}
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#notifications">{{ _("Notifications") }}
</a>
</li>
</ul>
<div class="border-bottom mb-4"></div>
<div class="tab-content">
<div class="tab-pane active" id="courses-enrolled" role="tabpanel" aria-labelledby="courses-enrolled">
{% include "lms/lms/web_template/courses_enrolled/courses_enrolled.html" %}
</div>
{% if show_creators_section %}
<div class="tab-pane fade" id="courses-created" role="tabpanel" aria-labelledby="courses-created">
{% include "lms/templates/courses_created.html" %}
</div>
{% endif %}
{% if show_review_section %}
<div class="tab-pane fade" id="courses-under-review" role="tabpanel" aria-labelledby="courses-under-review">
{% include "lms/templates/courses_under_review.html" %}
</div>
{% endif %}
<div class="tab-pane" id="notifications" role="tabpanel" aria-labelledby="notifications">
{% include "lms/templates/notifications.html" %}
</div>
</div>
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
{% endblock %}

View File

@@ -1,24 +0,0 @@
import frappe
from datetime import datetime
from lms.lms.utils import has_course_instructor_role, has_course_moderator_role, get_lesson_index
def get_context(context):
context.no_cache = 1
portal_course_creation = frappe.db.get_single_value("LMS Settings", "portal_course_creation")
context.show_creators_section = portal_course_creation == "Anyone" or has_course_instructor_role()
context.show_review_section = has_course_moderator_role()
context.notifications = get_notifications()
def get_notifications():
notifications = frappe.get_all("Notification Log", {
"document_type": "Course Lesson",
"for_user": frappe.session.user
}, ["subject", "creation", "from_user", "document_name"])
for notification in notifications:
course = frappe.db.get_value("Course Lesson", notification.document_name, "course")
notification.url = "/courses/{0}/learn/{1}".format(course, get_lesson_index(notification.document_name))
return notifications

View File

@@ -23,6 +23,14 @@
</a>
</li>
{% if not read_only %}
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#courses-enrolled">
{{ _("Courses Enrolled") }}
</a>
</li>
{% endif %}
{% if courses_created | length %}
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#courses-created">
@@ -39,6 +47,13 @@
</li>
{% endif %}
{% if not read_only %}
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#notifications">{{ _("Notifications") }}
</a>
</li>
{% endif %}
{% if has_course_moderator_role() %}
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#settings">
@@ -65,6 +80,12 @@
</div>
</div>
{% if not read_only %}
<div class="tab-pane fade" id="courses-enrolled" role="tabpanel" aria-labelledby="courses-enrolled">
{% include "lms/lms/web_template/courses_enrolled/courses_enrolled.html" %}
</div>
{% endif %}
{% if courses_created | length %}
{% set only_published = True %}
<div class="tab-pane fade" id="courses-created" role="tabpanel" aria-labelledby="courses-created">
@@ -78,6 +99,12 @@
</div>
{% endif %}
{% if not read_only %}
<div class="tab-pane" id="notifications" role="tabpanel" aria-labelledby="notifications">
{% include "lms/templates/notifications.html" %}
</div>
{% endif %}
<div class="tab-pane fade" id="settings" role="tabpanel" aria-labelledby="settings">
{{ RoleSettings(member) }}
</div>
@@ -117,7 +144,7 @@
{% if frappe.session.user == member.email %}
<div class="ml-auto mt-1">
<a class="btn btn-secondary btn-sm" href="/dashboard"> {{ _("Visit Dashboard") }} </a>
<a class="btn btn-secondary btn-sm" href="/courses"> {{ _("Course List") }} </a>
<a class="btn btn-secondary btn-sm ml-2" href="/edit-profile/{{ member.email }}/edit"> {{ _("Edit Profile") }} </a>
</div>
{% endif %}
@@ -176,7 +203,7 @@
<div class="">
<div class="common-card-style column-card">
<div class="course-home-headings"> {{ _("Role Settings") }} </div>
<div>
<div class="medium">
<label class="role">
<input type="checkbox" id="instructor" data-role="Course Instructor"
{% if has_course_instructor_role(member.name) %} checked {% endif %}>

View File

@@ -1,5 +1,6 @@
import frappe
from lms.page_renderers import get_profile_url_prefix
from lms.lms.utils import get_lesson_index
def get_context(context):
@@ -20,6 +21,7 @@ def get_context(context):
return
context.profile_tabs = get_profile_tabs(context.member)
context.notifications = get_notifications()
def get_profile_tabs(user):
@@ -30,3 +32,16 @@ def get_profile_tabs(user):
"""
tabs = frappe.get_hooks("profile_tabs") or []
return [frappe.get_attr(tab)(user) for tab in tabs]
def get_notifications():
notifications = frappe.get_all("Notification Log", {
"document_type": "Course Lesson",
"for_user": frappe.session.user
}, ["subject", "creation", "from_user", "document_name"])
for notification in notifications:
course = frappe.db.get_value("Course Lesson", notification.document_name, "course")
notification.url = "/courses/{0}/learn/{1}".format(course, get_lesson_index(notification.document_name))
return notifications