fix: message from course page

This commit is contained in:
pateljannat
2021-03-23 19:26:31 +05:30
parent 6433af6613
commit 389254b673
8 changed files with 93 additions and 36 deletions

View File

@@ -35,7 +35,7 @@ def create_member_from_user(doc, method):
member = frappe.get_doc({ member = frappe.get_doc({
"doctype": "Community Member", "doctype": "Community Member",
"full_name": doc.full_name, "full_name": doc.full_name,
"username": doc.username if len(doc.username) > 3 else doc.username + "_community", "username": doc.username if len(doc.username) > 3 else ("").join([ s for s in doc.full_name.split() ]),
"email": doc.email, "email": doc.email,
"route": doc.username, "route": doc.username,
"owner": doc.email "owner": doc.email

View File

@@ -1 +1,18 @@
import frappe import frappe
def create_members_from_users():
users = frappe.get_all("User", ["email"])
for user in users:
if not frappe.db.get_value("Community Member", {"email": user.email}, "name"):
doc = frappe.get_doc("User", {"email": user.email})
username = doc.username if doc.username and len(doc.username) > 3 else ("").join([ s for s in doc.full_name.split() ])
if not frappe.db.exists("Community Member", username):
member = frappe.get_doc({
"doctype": "Community Member",
"full_name": doc.full_name,
"username": username,
"email": doc.email,
"route": doc.username,
"owner": doc.email
})
member.save(ignore_permissions=True)

View File

@@ -14,18 +14,21 @@
{ {
"fieldname": "batch", "fieldname": "batch",
"fieldtype": "Link", "fieldtype": "Link",
"in_list_view": 1,
"label": "Batch", "label": "Batch",
"options": "LMS Batch" "options": "LMS Batch"
}, },
{ {
"fieldname": "author", "fieldname": "author",
"fieldtype": "Link", "fieldtype": "Link",
"in_list_view": 1,
"label": "Author", "label": "Author",
"options": "Community Member" "options": "Community Member"
}, },
{ {
"fieldname": "message", "fieldname": "message",
"fieldtype": "Markdown Editor", "fieldtype": "Markdown Editor",
"in_list_view": 1,
"label": "Message" "label": "Message"
}, },
{ {
@@ -37,7 +40,7 @@
], ],
"index_web_pages_for_search": 1, "index_web_pages_for_search": 1,
"links": [], "links": [],
"modified": "2021-03-22 13:57:50.500746", "modified": "2021-03-23 18:06:25.086377",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "LMS", "module": "LMS",
"name": "LMS Message", "name": "LMS Message",

View File

@@ -19,13 +19,13 @@
"is_standard": 1, "is_standard": 1,
"login_required": 1, "login_required": 1,
"max_attachment_size": 0, "max_attachment_size": 0,
"modified": "2021-03-23 15:10:24.681090", "modified": "2021-03-23 19:25:54.984968",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "LMS", "module": "LMS",
"name": "add-messages", "name": "add-messages",
"owner": "Administrator", "owner": "Administrator",
"payment_button_label": "Buy Now", "payment_button_label": "Buy Now",
"published": 1, "published": 0,
"route": "add-messages", "route": "add-messages",
"route_to_success_link": 0, "route_to_success_link": 0,
"show_attachments": 0, "show_attachments": 0,

View File

@@ -39,11 +39,21 @@
<div class="tab-content"> <div class="tab-content">
<div class="tab-pane fade py-4 show active" role="tabpanel" id="home"> <div class="tab-pane fade py-4 show active" role="tabpanel" id="home">
<div>{{ frappe.utils.md_to_html(course.description) }}</div> <div>{{ frappe.utils.md_to_html(course.description) }}</div>
<div class='container'>
<div class="list-group">
{% for topic in course.topics %}
<div class="list-group-item">
<h5><a href="/courses/topic?course={{course.name}}&topic={{topic.name}}">{{topic.title}}</a></h5>
<div>{{topic.preview | markdown }}</div>
</div>
{% endfor %}
</div>
</div>
</div> </div>
<div class="tab-pane fade py-4" role="tabpanel" id="discussions"> <div class="tab-pane fade py-4" role="tabpanel" id="discussions">
<div> <div>
{% if batches %} {% if batches %}
<div class="d-inline-block"> <div class="">
<select id="batches-dropdown" class="m-5"> <select id="batches-dropdown" class="m-5">
{% for batch in batches %} {% for batch in batches %}
<option value="{{batch}}">{{ batch }}</option> <option value="{{batch}}">{{ batch }}</option>
@@ -51,10 +61,11 @@
</select> </select>
</div> </div>
{% endif %} {% endif %}
<div class="form-group">
<textarea class="form-control message-text" rows="3" placeholder="Enter your message here."></textarea>
<button class="btn btn-primary mt-5 send-message" data-author="{{ author | urlencode}}" data-batch="{{ current_batch | urlencode }}">Send</button>
</div>
{% if discussions %} {% if discussions %}
<p class="d-inline-block float-right add-message">
<a href="/add-messages?new=1&batch={{ current_batch }}&author={{ author }}&course={{ course.title }}" class="btn btn-secondary btn-sm">Add Message</a>
</p>
<div class="discussions"> <div class="discussions">
{% for message in discussions %} {% for message in discussions %}
<div class="list-group-item"> <div class="list-group-item">
@@ -68,15 +79,5 @@
</div> </div>
</div> </div>
</div> </div>
<div class='container'>
<div class="list-group">
{% for topic in course.topics %}
<div class="list-group-item">
<h5><a href="/courses/topic?course={{course.name}}&topic={{topic.name}}">{{topic.title}}</a></h5>
<div>{{topic.preview | markdown }}</div>
</div>
{% endfor %}
</div>
</div>
</section> </section>
{% endblock %} {% endblock %}

View File

@@ -1,25 +1,48 @@
frappe.ready(() => { frappe.ready(() => {
var dropdown = document.getElementById("batches-dropdown") var dropdown = document.getElementById("batches-dropdown");
if (dropdown) { if (dropdown) {
dropdown.onchange = () => { dropdown.onchange = () => {
frappe.call("community.www.courses.course.get_messages", {batch: dropdown.value}, (data) => { $(".send-message").attr("data-batch", dropdown.value)
var href_params = new URLSearchParams($(".add-message").children("a")[0].href) frappe.call("community.www.courses.course.get_messages", { batch: dropdown.value }, (data) => {
$(".add-message").children("a")[0].href = `/add-messages?new=1&batch=${dropdown.value}&author=${href_params.get("author")}&course=${href_params.get("course")}` if (data.message) {
if(data.message){ $(".discussions").children().remove();
$(".discussions").children().remove()
for (var i = 0; i < data.message.length; i++) { for (var i = 0; i < data.message.length; i++) {
var message = data.message[i] var element = add_message(data.message[i])
var element = `<div class="list-group-item"> $(".discussions").append(element);
<h6> ${message.author} </h6>
${ message.message }
<div class="small text-muted text-right"> ${ message.creation } </div>
</div>`
$(".discussions").append(element)
} }
} }
}) })
} }
} }
$(".send-message").click((e) => {
var message = $(".message-text").val().trim();
if (message) {
frappe.call({
"method": "community.www.courses.course.save_message",
"args": {
"batch": decodeURIComponent($(e.target).attr("data-batch")),
"author": decodeURIComponent($(e.target).attr("data-author")),
"message": message
},
"callback": (data) => {
$(".message-text").val("");
var element = add_message(data.message, true)
$(".discussions").prepend(element);
}
})
}
else {
$(".message-text").val("");
}
})
var add_message = (message, session_user=false) => {
var author = session_user ? "You" : message.author
return `<div class="list-group-item">
<h6> ${author} </h6>
${message.message}
<div class="small text-muted text-right"> ${message.creation} </div>
</div>`;
}
/* if(frappe.session.user != "Guest"){ /* if(frappe.session.user != "Guest"){
frappe.call('community.www.courses.course.has_enrolled', { course: get_search_params().get("course") }, (data) => { frappe.call('community.www.courses.course.has_enrolled', { course: get_search_params().get("course") }, (data) => {
if (data.message) { if (data.message) {
@@ -28,7 +51,7 @@ frappe.ready(() => {
}) })
} */ } */
}) })
/* /*
var show_enrollment_badge = () => { var show_enrollment_badge = () => {
$(".btn-enroll").addClass("hide"); $(".btn-enroll").addClass("hide");
$(".enrollment-badge").removeClass("hide"); $(".enrollment-badge").removeClass("hide");

View File

@@ -66,3 +66,14 @@ def enroll(course):
"user": frappe.session.user "user": frappe.session.user
}).save() }).save()
@frappe.whitelist()
def save_message(message, author, batch):
doc = frappe.get_doc({
"doctype": "LMS Message",
"author": author,
"batch": batch,
"message": message
})
doc.save(ignore_permissions=True)
return doc

View File

@@ -13,15 +13,17 @@ var set_likes = function (liked, likes) {
// set initial likes // set initial likes
frappe.ready(() => { frappe.ready(() => {
var url_params = new URLSearchParams(window.location.search); frappe.call('community.www.hackathons.project.like', { project: get_url_arg().get("project"), initial: true }, (data) => {
frappe.call('community.www.hackathons.project.like', { project: url_params.get("project"), initial: true }, (data) => {
set_likes(data.message.action == "Liked", data.message.likes) set_likes(data.message.action == "Liked", data.message.likes)
}) })
}) })
var get_url_arg = () => {
return new URLSearchParams(window.location.search);
}
// like - unlike // like - unlike
$('.btn-like').on('click', (e) => { $('.btn-like').on('click', (e) => {
frappe.call('community.www.hackathons.project.like', { project: $(e.target).attr("data-project") }, (data) => { frappe.call('community.www.hackathons.project.like', { project: get_url_arg().get("project") }, (data) => {
set_likes(data.message.action == "Liked", data.message.likes); set_likes(data.message.action == "Liked", data.message.likes);
}); });
}); });