Merge pull request #164 from fossunited/issues

fix: default image, meta, reviews, lesson headers
This commit is contained in:
Jannat Patel
2021-07-30 17:07:19 +05:30
committed by GitHub
10 changed files with 79 additions and 26 deletions

View File

@@ -136,7 +136,6 @@ primary_rules = [
{"from_route": "/courses/<course>/<topic>", "to_route": "courses/topic"},
{"from_route": "/hackathons/<hackathon>", "to_route": "hackathons/hackathon"},
{"from_route": "/hackathons/<hackathon>/<project>", "to_route": "hackathons/project"},
{"from_route": "/dashboard", "to_route": ""},
{"from_route": "/add-a-new-batch", "to_route": "add-a-new-batch"},
{"from_route": "/courses/<course>/home", "to_route": "batch/home"},
{"from_route": "/courses/<course>/learn", "to_route": "batch/learn"},

View File

@@ -1,10 +1,14 @@
<div class="common-card-style course-card">
<div class="course-image" style="background-image: url({{ course.image }});">
<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 %}
</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">

View File

@@ -1,15 +1,18 @@
{% if course.get_reviews() | length %}
<div class="reviews-parent">
<div class="reviews-heading">
<div class="course-home-headings">Student Review</div>
{% set reviews = course.get_reviews() %}
{% if reviews | length or course.is_eligible_to_review(membership) %}
<div class="mb-5">
<span class="course-home-headings">Reviews</span>
{% if course.is_eligible_to_review(membership) %}
<a class="review-link" href="">
Provide your Feedback
</a>
<span class="review-link button is-secondary pull-right">
Write a review
</span>
{% endif %}
</div>
{% endif %}
{% if reviews | length %}
<div class="reviews-section">
{% for review in course.get_reviews() %}
{% for review in reviews %}
<div class="review-card">
<div class="common-card-style review-content small-title"> {{ review.review }} </div>
<div class="review-card-footer">
@@ -30,6 +33,7 @@
</div>
{% endfor %}
</div>
{% endif %}
</div>
<div class="modal fade review-modal" id="review-modal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"
@@ -67,8 +71,8 @@
</div>
<div class="control-input-wrapper">
<div class="control-input">
<textarea type="text" autocomplete="off" class="input-with-feedback form-control review-field" data-fieldtype="Text"
data-fieldname="feedback_comments" placeholder="" style="height: 300px;"
<textarea type="text" autocomplete="off" class="input-with-feedback form-control review-field"
data-fieldtype="Text" data-fieldname="feedback_comments" placeholder="" style="height: 300px;"
spellcheck="false"></textarea>
</div>
</div>
@@ -77,9 +81,9 @@
</form>
</div>
<div class="modal-footer">
<div class="button submit-review is-primary" data-course="{{ course.name | urlencode}}" id="submit-review">Submit</div>
<div class="button submit-review is-primary" data-course="{{ course.name | urlencode}}" id="submit-review">
Submit</div>
</div>
</div>
</div>
</div>
{% endif %}

View File

@@ -234,6 +234,22 @@ input[type=checkbox] {
background-repeat: no-repeat;
}
.default-image {
background-color: var(--avatar-frame-bg);
color: var(--avatar-frame-color);
display: flex;
flex-direction: column;
}
.default-image-text {
display: flex;
flex: 1;
align-self: center;
justify-content: normal;
font-size: 7rem;
font-weight: bold;
}
.course-tags {
display: flex;
position: relative;
@@ -601,7 +617,7 @@ div.custom-checkbox>label>input:checked+img {
}
.button {
box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.13), 0px 0px 0.5px rgba(0, 0, 0, 0.5);
box-shadow: var(--btn-shadow);
border-radius: 6px;
cursor: pointer;
display: flex;
@@ -1271,3 +1287,19 @@ pre {
width: 100%;
overflow-x: auto;
}
.markdown-source h1 {
font-size: 1.3rem;
}
.markdown-source h2 {
font-size: 1.2rem;
}
.markdown-source h3 {
font-size: 1.1rem;
}
.markdown-source h4 {
font-size: 1rem;
}

View File

@@ -1,13 +1,8 @@
{% extends "templates/base.html" %}
{% from "www/macros/livecode.html" import LiveCodeEditorJS, LiveCodeEditor with context %}
{% block title %}{{ lesson.title }}{% endblock %}
{% block title %} {{ lesson.title }} - {{ course.title }} {% endblock %}
{% block head_include %}
<meta name="description" content="{{lesson.title}} - {{course.title}}" />
<meta name="keywords" content="{{lesson.title}} - {{course.title}}" />
<style>
</style>
<link rel="stylesheet" href="/assets/frappe/css/font-awesome.css">
<link rel="stylesheet" href="/assets/css/lms.css">
<link rel="stylesheet" href="/assets/frappe/css/hljs-night-owl.css">
@@ -47,7 +42,7 @@
</div>
{% if membership or lesson.include_in_preview %}
<div class="common-card-style lesson-content-card from-markdown">{{ lesson.render_html() }}</div>
<div class="common-card-style lesson-content-card markdown-source">{{ lesson.render_html() }}</div>
{% else %}
<div class="common-card-style lesson-content-card">
<span>This lesson is not available for Preview. Please join the course to access this lesson. <a href="/courses/{{ course.name }}">Checkout Course Details.</a></span>

View File

@@ -25,6 +25,13 @@ def get_context(context):
context.next_url = get_learn_url(neighbours["next"], context.course)
context.prev_url = get_learn_url(neighbours["prev"], context.course)
meta_info = context.lesson.title + " - " + context.course.title
context.metatags = {
"title": meta_info,
"keywords": meta_info,
"description": meta_info
}
context.page_extensions = get_page_extensions()
context.page_context = {
"course": context.course.name,

View File

@@ -3,8 +3,6 @@
{% block title %}{{ course.title }}
{% endblock %}
{% block head_include %}
<meta name="description" content="Courses" />
<meta name="keywords" content="Courses {{course.title}}" />
<link rel="stylesheet" href="/assets/frappe/css/font-awesome.css">
{% endblock %}
{% block content %}
@@ -24,12 +22,16 @@
{% macro CourseCardWide(course) %}
<div class="common-card-style course-card-wide">
<div class="course-image-wide" style="background-image: url({{ course.image }});">
<div class="course-image-wide {% 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 %}
</div>
{% if not course.image %}
<div class="default-image-text">{{ course.title[0] }}</div>
{% endif %}
</div>
<div class="course-card-wide-content">
<div class="course-info">

View File

@@ -18,3 +18,9 @@ def get_context(context):
membership = course.get_membership(frappe.session.user)
context.course.query_parameter = "?batch=" + membership.batch if membership and membership.batch else ""
context.membership = membership
context.metatags = {
"title": course.title,
"image": course.image,
"description": course.short_introduction,
"keywords": course.title
}

View File

@@ -2,8 +2,6 @@
{% from "www/hackathons/macros/card.html" import null_card %}
{% block title %}{{ 'Courses' }}{% endblock %}
{% block head_include %}
<meta name="description" content="{{ 'Courses' }}" />
<meta name="keywords" content="Courses" />
<style>
</style>
{% endblock %}

View File

@@ -3,6 +3,12 @@ import frappe
def get_context(context):
context.no_cache = 1
context.courses = get_courses()
context.metatags = {
"title": "All Courses",
"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"
}
def get_courses():
course_names = frappe.get_all("LMS Course", filters={"is_published": True}, pluck="name")