From e7ad5f2c29e7e3207696fbdb7042b9b277eb46a0 Mon Sep 17 00:00:00 2001 From: pateljannat Date: Thu, 7 Oct 2021 09:38:40 +0530 Subject: [PATCH] fix: single thread without refresh --- frappe/templates/discussions/discussions.js | 21 ++++++++++--------- .../discussions/discussions_section.html | 17 +++++++-------- frappe/templates/discussions/reply_card.html | 4 ++-- .../templates/discussions/reply_section.html | 13 ++++++++++-- .../discussion_reply/discussion_reply.py | 11 +++++----- 5 files changed, 38 insertions(+), 28 deletions(-) diff --git a/frappe/templates/discussions/discussions.js b/frappe/templates/discussions/discussions.js index af49dc29d6..e04c8ae8c0 100644 --- a/frappe/templates/discussions/discussions.js +++ b/frappe/templates/discussions/discussions.js @@ -90,20 +90,16 @@ const publish_message = (data) => { const doctype = decodeURIComponent($(".discussions-parent").attr("data-doctype")); const docname = decodeURIComponent($(".discussions-parent").attr("data-docname")); const topic = data.topic_info; + const single_thread = $(".is-single-thread").length; + const first_topic = !$(".reply-card").length; + const document_match_found = doctype == topic.reference_doctype && docname == topic.reference_docname; - console.log(topic, doctype, topic.reference_doctype, docname, topic.reference_docname, doctype == topic.reference_doctype, docname == topic.reference_docname) - console.log(topic.owner, frappe.session.user, topic.owner == frappe.session.user) - - console.log(topic.owner == frappe.session.user && doctype == topic.reference_doctype && docname == topic.reference_docname) - console.log(topic.title) if ($(`.discussion-on-page[data-topic=${topic.name}]`).length) { - console.log("if") post_message_cleanup(); $('
' + data.template) .insertBefore(`.discussion-on-page[data-topic=${topic.name}] .discussion-form`); - } else if (doctype == topic.reference_doctype && docname == topic.reference_docname && $(".reply-card").length) { - console.log("elif") + } else if (!first_topic && !single_thread && document_match_found) { post_message_cleanup(); data.new_topic_template = style_avatar_frame(data.new_topic_template); @@ -115,9 +111,14 @@ const publish_message = (data) => { $(".sidebar-topic").first().click(); } - } else if (topic.owner == frappe.session.user && doctype == topic.reference_doctype && docname == topic.reference_docname) { + } else if (single_thread && document_match_found) { + post_message_cleanup(); + data.template = style_avatar_frame(data.template); + $(data.template).insertBefore(`.discussion-form`); + $(".discussion-on-page").attr("data-topic", topic.name); + + } else if (topic.owner == frappe.session.user && document_match_found) { post_message_cleanup(); - console.log("in") window.location.reload(); } diff --git a/frappe/templates/discussions/discussions_section.html b/frappe/templates/discussions/discussions_section.html index f62dde112e..57dc59c926 100644 --- a/frappe/templates/discussions/discussions_section.html +++ b/frappe/templates/discussions/discussions_section.html @@ -2,21 +2,22 @@ {"reference_doctype": doctype, "reference_docname": docname}, ["name", "title", "owner", "creation"]) %} -
+
{% include "frappe/templates/discussions/topic_modal.html" %}
{{ _(title) }} - {% if topics %} + {% if topics and not single_thread %} {% include "frappe/templates/discussions/button.html" %} {% endif %}
- {% if topics %} + {% if topics and not single_thread %} + - {% if not single_thread %}
{% include "frappe/templates/discussions/search.html" %} @@ -25,7 +26,6 @@ {% include "frappe/templates/discussions/sidebar.html" %} {% endfor %}
- {% endif %}
{% for topic in topics %} @@ -33,10 +33,9 @@ {% endfor %}
- {% elif not topics and single_thread %} -
- {% include "frappe/templates/discussions/comment_box.html" %} -
+ {% elif single_thread %} + {% set topic = topics[0] if topics | length else None %} + {% include "frappe/templates/discussions/reply_section.html" %} {% else %}
diff --git a/frappe/templates/discussions/reply_card.html b/frappe/templates/discussions/reply_card.html index ed9baf554a..5ff5261472 100644 --- a/frappe/templates/discussions/reply_card.html +++ b/frappe/templates/discussions/reply_card.html @@ -2,10 +2,10 @@
{% set member = frappe.db.get_value("User", reply.owner, ["name", "full_name", "username"], as_dict=True) %}
- {% if loop.index == 1 %} + {% if loop.index == 1 or single_thread %} {{ avatar(reply.owner) }} {% endif %} - + {{ member.full_name }}
{{ frappe.utils.pretty_date(reply.creation) }}
diff --git a/frappe/templates/discussions/reply_section.html b/frappe/templates/discussions/reply_section.html index 0a9d3fdfbe..516acf5e3b 100644 --- a/frappe/templates/discussions/reply_section.html +++ b/frappe/templates/discussions/reply_section.html @@ -1,14 +1,23 @@ +{% if topic %} + {% set replies = frappe.get_all("Discussion Reply", {"topic": topic.name}, ["reply", "owner", "creation"], order_by="creation")%} -
+{% endif %} +
+ + {% if not single_thread %}
{{ _("Back") }}
+ {% endif %} + {% if topic %}
{{ topic.title }}
+ {% endif %} + {% for reply in replies %} {% include "frappe/templates/discussions/reply_card.html" %} diff --git a/frappe/website/doctype/discussion_reply/discussion_reply.py b/frappe/website/doctype/discussion_reply/discussion_reply.py index 9665817fca..d5913e6f29 100644 --- a/frappe/website/doctype/discussion_reply/discussion_reply.py +++ b/frappe/website/doctype/discussion_reply/discussion_reply.py @@ -8,6 +8,10 @@ class DiscussionReply(Document): def after_insert(self): replies = frappe.db.count("Discussion Reply", {"topic": self.topic}) + topic_info = frappe.get_all("Discussion Topic", + {"name": self.topic}, + ["reference_doctype", "reference_docname", "name", "title", "owner", "creation"]) + template = frappe.render_template("frappe/templates/discussions/reply_card.html", { "reply": self, "topic": { @@ -15,13 +19,10 @@ class DiscussionReply(Document): }, "loop": { "index": replies - } + }, + "single_thread": True if not topic_info[0].title else False }) - topic_info = frappe.get_all("Discussion Topic", - {"name": self.topic}, - ["reference_doctype", "reference_docname", "name", "title", "owner", "creation"]) - sidebar = frappe.render_template("frappe/templates/discussions/sidebar.html", { "topic": topic_info[0] })