feat: #28 info page, #27 discussion page initial structure, add batch webform change

This commit is contained in:
pateljannat
2021-04-27 10:33:49 +05:30
parent 44dc42d7dd
commit 424967b03e
18 changed files with 372 additions and 185 deletions

View File

@@ -1,5 +1,7 @@
{% extends "templates/base.html" %}
{% from "www/macros/sidebar.html" import Sidebar %}
{% from "www/macros/common_macro.html" import BatchHearder %}
{% block title %}Discuss{% endblock %}
{% block head_include %}
<meta name="description" content="Courses" />
@@ -7,7 +9,40 @@
{% endblock %}
{% block content %}
{{ Sidebar(course, batch_code) }}
<div class="container">
{{ Sidebar(course_slug, batch_code) }}
<div class="">
<div class="batch-header">
{{ BatchHearder(course.name, member_count) }}
</div>
<div class="message-section">
{{ Messages(messages) }}
</div>
{{ TextArea() }}
</div>
{% endblock %}
{% macro Messages(messages) %}
{% for message in messages %}
<div class="discussion {% if message.is_author %} is-author {% endif %}">
<div class="d-flex justify-content-between">
<div class="font-weight-bold">
{{ message.author_name }}
</div>
<div class="text-muted">
{{ frappe.utils.pretty_date(message.creation) }}
</div>
</div>
<div class="mt-5">
{{ message.message }}
</div>
</div>
{% endfor %}
{% endmacro %}
{% macro TextArea() %}
<form class="msger-inputarea">
<input type="text" class="msger-input" placeholder="Write your message...">
<button type="submit" class="msger-send-btn" data-batch="{{batch.name | urlencode }}">Send</button>
</form>
{% endmacro %}

View File

@@ -0,0 +1,41 @@
frappe.ready(() => {
const assets = [
"/assets/frappe/js/lib/socket.io.min.js",
"/assets/frappe/js/frappe/socketio_client.js"
]
frappe.require(assets, () => {
if (window.dev_server) {
frappe.boot.socketio_port = "9000" //use socketio port shown when bench starts
}
frappe.socketio.init(9000);
console.log(frappe.socketio)
})
frappe.realtime.on("new_lms_message", (data) => {
console.log(data)
})
setTimeout(() => {
window.scrollTo(0, document.body.scrollHeight);
}, 0);
$(".msger-send-btn").click((e) => {
e.preventDefault();
var message = $(".msger-input").val().trim();
if (message) {
frappe.call({
"method": "community.lms.doctype.lms_batch.lms_batch.save_message",
"args": {
"batch": decodeURIComponent($(e.target).attr("data-batch")),
"message": message
},
"callback": (data) => {
$(".msger-input").val("");
frappe.realtime.publish("new_lms_message", {"message":"JJK"})
}
})
}
else {
$(".msger-input").val("");
}
})
})

View File

@@ -1,8 +1,15 @@
import frappe
from community.www.courses.utils import redirect_if_not_a_member
from community.www.courses.utils import redirect_if_not_a_member, get_course, get_batch_members, get_batch
from community.lms.doctype.lms_batch.lms_batch import get_messages
def get_context(context):
context.no_cache = 1
context.course = frappe.form_dict["course"]
context.course_slug = frappe.form_dict["course"]
context.course = get_course(context.course_slug)
context.batch_code = frappe.form_dict["batch"]
redirect_if_not_a_member(context.course, context.batch_code)
redirect_if_not_a_member(context.course_slug, context.batch_code)
context.batch = get_batch(context.batch_code)
context.members = get_batch_members(context.batch.name)
context.member_count = len(context.members)
context.messages = get_messages(context.batch.name)