169 lines
3.9 KiB
HTML
169 lines
3.9 KiB
HTML
{% extends "lms/templates/lms_base.html" %}
|
|
{% block title %}
|
|
{{ _("All Classes") }}
|
|
{% endblock %}
|
|
|
|
{% block page_content %}
|
|
<div class="common-page-style lms-page-style">
|
|
<div class="container">
|
|
{{ Header() }}
|
|
{% if past_classes | length or upcoming_classes | length %}
|
|
{{ ClassTabs(past_classes, upcoming_classes, my_classes) }}
|
|
{% else %}
|
|
{{ EmptyState() }}
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
{% endblock %}
|
|
|
|
{% macro Header() %}
|
|
<header class="edit-header">
|
|
<div class="page-title mb-6"> {{ _("All Classes") }} </div>
|
|
{% if is_moderator %}
|
|
<button class="btn btn-default btn-sm pull-right" id="create-class">
|
|
{{ _("Create Class") }}
|
|
</button>
|
|
{% endif %}
|
|
</header>
|
|
{% endmacro %}
|
|
|
|
{% macro ClassTabs(past_classes, upcoming_classes, my_classes) %}
|
|
<article>
|
|
<ul class="nav lms-nav" id="courses-tab">
|
|
|
|
<li class="nav-item">
|
|
<a class="nav-link active" data-toggle="tab" href="#upcoming">
|
|
{{ _("Upcoming") }}
|
|
<span class="course-list-count">
|
|
{{ upcoming_classes | length }}
|
|
</span>
|
|
</a>
|
|
</li>
|
|
|
|
{% if is_moderator %}
|
|
<li class="nav-item">
|
|
<a class="nav-link" data-toggle="tab" href="#past">
|
|
{{ _("Past Classes") }}
|
|
<span class="course-list-count">
|
|
{{ past_classes | length }}
|
|
</span>
|
|
</a>
|
|
</li>
|
|
{% endif %}
|
|
|
|
{% if frappe.session.user != "Guest" %}
|
|
<li class="nav-item">
|
|
<a class="nav-link" data-toggle="tab" href="#my-class">
|
|
{{ _("My Classes") }}
|
|
<span class="course-list-count">
|
|
{{ my_classes | length }}
|
|
</span>
|
|
</a>
|
|
</li>
|
|
{% endif %}
|
|
|
|
</ul>
|
|
|
|
<div class="border-bottom mb-4"></div>
|
|
|
|
<div class="tab-content">
|
|
<div class="tab-pane active" id="upcoming" role="tabpanel" aria-labelledby="upcoming">
|
|
{{ ClassCards(upcoming_classes) }}
|
|
</div>
|
|
|
|
{% if is_moderator %}
|
|
<div class="tab-pane" id="past" role="tabpanel" aria-labelledby="past">
|
|
{{ ClassCards(past_classes) }}
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% if frappe.session.user != "Guest" %}
|
|
<div class="tab-pane" id="my-class" role="tabpanel" aria-labelledby="my-classes">
|
|
{{ ClassCards(my_classes) }}
|
|
</div>
|
|
{% endif %}
|
|
|
|
</div>
|
|
</article>
|
|
{% endmacro %}
|
|
|
|
{% macro ClassCards(classes) %}
|
|
<div class="lms-card-parent">
|
|
{% for class in classes %}
|
|
{% set course_count = frappe.db.count("Class Course", {"parent": class.name}) %}
|
|
{% set student_count = frappe.db.count("Class Student", {"parent": class.name}) %}
|
|
|
|
<div class="common-card-style column-card" style="min-height: 150px;">
|
|
|
|
<div class="bold-heading">
|
|
{{ class.title }}
|
|
</div>
|
|
|
|
{% if class.description %}
|
|
<div class="short-introduction">
|
|
{{ class.description }}
|
|
</div>
|
|
{% endif %}
|
|
|
|
<div class="mt-auto mb-1">
|
|
<svg class="icon icon-sm">
|
|
<use href="#icon-calendar"></use>
|
|
</svg>
|
|
<span>
|
|
{{ frappe.utils.format_date(class.start_date, "medium") }} -
|
|
</span>
|
|
<span>
|
|
{{ frappe.utils.format_date(class.end_date, "medium") }}
|
|
</span>
|
|
</div>
|
|
|
|
<div class="mb-1">
|
|
<svg class="icon icon-md">
|
|
<use href="#icon-education"></use>
|
|
</svg>
|
|
{{ course_count }} {{ _("Courses") }}
|
|
</div>
|
|
|
|
<div class="mb-1">
|
|
<svg class="icon icon-md">
|
|
<use href="#icon-users"></use>
|
|
</svg>
|
|
{{ student_count }} {{ _("Students") }}
|
|
</div>
|
|
|
|
<a class="stretched-link" href="/classes/{{ class.name }}"></a>
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
{% endmacro %}
|
|
|
|
{% macro EmptyState() %}
|
|
<div class="empty-state">
|
|
<img class="icon icon-xl" src="/assets/lms/icons/comment.svg">
|
|
<div class="empty-state-text">
|
|
<div class="empty-state-heading">{{ _("No Classes") }}</div>
|
|
<div class="course-meta">{{ _("Nothing to see here.") }}</div>
|
|
</div>
|
|
</div>
|
|
{% endmacro %}
|
|
|
|
{%- block script %}
|
|
{{ super() }}
|
|
{{ include_script('controls.bundle.js') }}
|
|
{% if is_moderator %}
|
|
<script>
|
|
frappe.boot.user = {
|
|
"can_create": [],
|
|
"can_select": ["LMS Category"],
|
|
"can_read": ["LMS Category"]
|
|
};
|
|
|
|
frappe.router = {
|
|
slug (name) {
|
|
return name.toLowerCase().replace(/ /g, "-");
|
|
}
|
|
}
|
|
let class_info = null;
|
|
</script>
|
|
{% endif %}
|
|
{% endblock %} |