diff --git a/community/hooks.py b/community/hooks.py index fba4d694..9e62950b 100644 --- a/community/hooks.py +++ b/community/hooks.py @@ -94,7 +94,10 @@ web_include_css = "/assets/css/community.css" doc_events = { "User": { "after_insert": "community.community.doctype.community_member.community_member.create_member_from_user" - } + }, + "LMS Message": { + "after_insert": "community.lms.doctype.lms_message.lms_message.publish_message" + } } # Scheduled Tasks diff --git a/community/lms/doctype/lms_batch/lms_batch.py b/community/lms/doctype/lms_batch/lms_batch.py index 1943ed9f..ad5c32b1 100644 --- a/community/lms/doctype/lms_batch/lms_batch.py +++ b/community/lms/doctype/lms_batch/lms_batch.py @@ -36,5 +36,4 @@ def save_message(message, batch): "author": get_member_with_email(), "message": message }) - doc.save(ignore_permissions=True) - return doc \ No newline at end of file + doc.save(ignore_permissions=True) \ No newline at end of file diff --git a/community/lms/doctype/lms_message/lms_message.py b/community/lms/doctype/lms_message/lms_message.py index 68b15143..4f87b042 100644 --- a/community/lms/doctype/lms_message/lms_message.py +++ b/community/lms/doctype/lms_message/lms_message.py @@ -7,11 +7,11 @@ import frappe from frappe.model.document import Document from frappe import _ from frappe.utils import add_days, nowdate + class LMSMessage(Document): def after_insert(self): - frappe.publish_realtime("new_lms_message", {"message":"JJannat"}, user="Administrator") self.send_email() - + def send_email(self): membership = frappe.get_all("LMS Batch Membership", {"batch": self.batch}, ["member"]) for entry in membership: @@ -60,4 +60,41 @@ def send_daily_digest(): "batches": group_by_batch }, delayed = False - ) \ No newline at end of file + ) + +def publish_message(doc, method): + print(frappe.session.user) + email = frappe.db.get_value("Community Member", doc.author, "email") + session_user = True if email == frappe.session.user else False + message = get_message_template(doc, session_user) + + js = """ + $(".msger-input").val(""); + $(".message-section").append(`{0}`); + """.format(message) + + frappe.publish_realtime(event="eval_js", message=js, after_commit=True) + +def get_message_template(message, session_user): + if session_user: + message.author_name = "You" + message.is_author = True + + message.message_time = frappe.utils.pretty_date(message.creation) + template = """
+
+
+ {{ message.author_name }} +
+
+ {{ message.message_time }} +
+
+
+ {{ message.message }} +
+
""" + template = frappe.render_template(template, { + "message": message + }) + return template \ No newline at end of file diff --git a/community/public/css/style.css b/community/public/css/style.css index 89ebfa13..bf157299 100644 --- a/community/public/css/style.css +++ b/community/public/css/style.css @@ -290,4 +290,5 @@ nav.navbar { .message-section { margin-left: 5%; + display: inline-block; } \ No newline at end of file diff --git a/community/www/courses/course.js b/community/www/courses/course.js index a0996a2e..79683fde 100644 --- a/community/www/courses/course.js +++ b/community/www/courses/course.js @@ -1,15 +1,4 @@ frappe.ready(() => { - frappe.require("/assets/frappe/js/lib/socket.io.min.js"); - frappe.require("/assets/frappe/js/frappe/socketio_client.js"); - if (window.dev_server) { - frappe.boot.socketio_port = "9000" //use socketio port shown when bench starts - } - frappe.socketio.init(); - console.log(frappe.socketio) - //frappe.socketio.emittedDemo("mydata"); - frappe.realtime.on("new_lms_message", (data) => { - console.log(data) - }) if (frappe.session.user != "Guest") { frappe.call({ 'method': 'community.lms.doctype.lms_mentor_request.lms_mentor_request.has_requested', @@ -25,21 +14,6 @@ frappe.ready(() => { }) } - $(".list-batch").click((e) => { - var batch = decodeURIComponent($(e.currentTarget).attr("data-label")) - $(".current-batch").text(batch) - $(".send-message").attr("data-batch", batch) - frappe.call("community.www.courses.course.get_messages", { batch: batch }, (data) => { - if (data.message) { - $(".discussions").children().remove(); - for (var i = 0; i < data.message.length; i++) { - var element = add_message(data.message[i]) - $(".discussions").append(element); - } - } - }) - }) - $(".apply-now").click((e) => { if (frappe.session.user == "Guest") { window.location.href = "/login"; @@ -94,19 +68,4 @@ frappe.ready(() => { }) }) }) -/* -var show_enrollment_badge = () => { - $(".btn-enroll").addClass("hide"); - $(".enrollment-badge").removeClass("hide"); -} - -var get_search_params = () => { - return new URLSearchParams(window.location.search) -} - -$('.btn-enroll').on('click', (e) => { - frappe.call('community.www.courses.course.enroll', { course: get_search_params().get("course") }, (data) => { - show_enrollment_badge() - }); -}); */ diff --git a/community/www/courses/discuss/index.html b/community/www/courses/discuss/index.html index 31301ce7..6c8c124b 100644 --- a/community/www/courses/discuss/index.html +++ b/community/www/courses/discuss/index.html @@ -35,7 +35,6 @@
{{ message.message }}
- {% endfor %} {% endmacro %} diff --git a/community/www/courses/discuss/index.js b/community/www/courses/discuss/index.js index 64ab83b5..d6380ac2 100644 --- a/community/www/courses/discuss/index.js +++ b/community/www/courses/discuss/index.js @@ -1,22 +1,18 @@ frappe.ready(() => { const assets = [ "/assets/frappe/js/lib/socket.io.min.js", - "/assets/frappe/js/frappe/socketio_client.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); + }, 300); $(".msger-send-btn").click((e) => { e.preventDefault(); @@ -27,10 +23,6 @@ frappe.ready(() => { "args": { "batch": decodeURIComponent($(e.target).attr("data-batch")), "message": message - }, - "callback": (data) => { - $(".msger-input").val(""); - frappe.realtime.publish("new_lms_message", {"message":"JJK"}) } }) }