From 5f83045baf70936fd3291784d70819fd442b6249 Mon Sep 17 00:00:00 2001 From: pateljannat Date: Mon, 4 Oct 2021 12:26:12 +0530 Subject: [PATCH 1/7] feat: single thread discussions --- frappe/templates/discussions/comment_box.html | 3 +-- frappe/templates/discussions/discussions.js | 25 ++++++++++++------- .../discussions/discussions_section.html | 17 +++++++------ .../web_template/discussions/discussions.json | 11 ++++++-- 4 files changed, 36 insertions(+), 20 deletions(-) diff --git a/frappe/templates/discussions/comment_box.html b/frappe/templates/discussions/comment_box.html index cbdc3ad3e5..ebaa37f772 100644 --- a/frappe/templates/discussions/comment_box.html +++ b/frappe/templates/discussions/comment_box.html @@ -25,8 +25,7 @@ {{ _("Cancel") }} -
+
{{ _("Post") }}
diff --git a/frappe/templates/discussions/discussions.js b/frappe/templates/discussions/discussions.js index becc50410d..8b36d0846c 100644 --- a/frappe/templates/discussions/discussions.js +++ b/frappe/templates/discussions/discussions.js @@ -87,12 +87,17 @@ const setup_socket_io = () => { }; const publish_message = (data) => { + const doctype = decodeURIComponent($(".discussions-parent .thread-card").attr("data-doctype")); + const docname = decodeURIComponent($(".discussions-parent .thread-card").attr("data-docname")); + const topic = data.topic_info; + + if ($(`.discussion-on-page[data-topic=${topic.name}]`).length) { - if ($(`.discussion-on-page[data-topic=${data.topic_info.name}]`).length) { post_message_cleanup(); - $('
' + data.template).insertBefore(`.discussion-on-page[data-topic=${data.topic_info.name}] .discussion-form`); - } else if ((decodeURIComponent($(".discussions-parent .discussions-card").attr("data-doctype")) == data.topic_info.reference_doctype - && decodeURIComponent($(".discussions-parent .discussions-card").attr("data-docname")) == data.topic_info.reference_docname)) { + $('
' + data.template) + .insertBefore(`.discussion-on-page[data-topic=${topic.name}] .discussion-form`); + + } else if (doctype == topic.reference_doctype && docname == topic.reference_docname) { post_message_cleanup(); data.new_topic_template = style_avatar_frame(data.new_topic_template); @@ -100,16 +105,18 @@ const publish_message = (data) => { $(data.sidebar).insertAfter(`.discussions-sidebar .form-group`); $(`#discussion-group`).prepend(data.new_topic_template); - if (data.topic_info.owner == frappe.session.user) { + if (topic.owner == frappe.session.user) { $(".discussion-on-page").collapse(); $(".sidebar-topic").first().click(); } - } else if (data.topic_info.owner == frappe.session.user) { + + } else if (topic.owner == frappe.session.user + && doctype == topic.reference_docname && docname == topic.reference_docname) { post_message_cleanup(); window.location.reload(); } - update_reply_count(data.topic_info.name); + update_reply_count(topic.name); }; const post_message_cleanup = () => { @@ -191,10 +198,10 @@ const submit_discussion = (e) => { const reply = $(".comment-field:visible").val().trim(); if (reply) { - let doctype = $(e.currentTarget).attr("data-doctype"); + let doctype = $(e.currentTarget).closest(".thread-card").attr("data-doctype"); doctype = doctype ? decodeURIComponent(doctype) : doctype; - let docname = $(e.currentTarget).attr("data-docname"); + let docname = $(e.currentTarget).closest(".thread-card").attr("data-docname"); docname = docname ? decodeURIComponent(docname) : docname; frappe.call({ diff --git a/frappe/templates/discussions/discussions_section.html b/frappe/templates/discussions/discussions_section.html index 65e1730bc7..b9fa80fe4f 100644 --- a/frappe/templates/discussions/discussions_section.html +++ b/frappe/templates/discussions/discussions_section.html @@ -11,10 +11,10 @@ {% endif %} - {% if topics %} -
+
+ {% if topics %}
{% include "frappe/templates/discussions/search.html" %} {% for topic in topics %} @@ -26,11 +26,14 @@
{% include "frappe/templates/discussions/reply_section.html" %}
-
- {% else %} -
-
+ {% elif not topics and single_thread %} +
+ {% include "frappe/templates/discussions/comment_box.html" %} +
+ + {% else %} +
No {{ title }}
There are no {{ title | lower }} for this {{ doctype | lower }}, why don't you start one!
diff --git a/frappe/website/web_template/discussions/discussions.json b/frappe/website/web_template/discussions/discussions.json index 8856787828..c8c90e08aa 100644 --- a/frappe/website/web_template/discussions/discussions.json +++ b/frappe/website/web_template/discussions/discussions.json @@ -22,10 +22,17 @@ "label": "Web Page", "options": "Web Page", "reqd": 1 + }, + { + "__unsaved": 1, + "fieldname": "single_thread", + "fieldtype": "Check", + "label": "Single Thread", + "reqd": 0 } ], "idx": 0, - "modified": "2021-10-01 12:15:28.876920", + "modified": "2021-10-01 15:15:57.366552", "modified_by": "Administrator", "module": "Website", "name": "Discussions", @@ -33,4 +40,4 @@ "standard": 1, "template": "", "type": "Section" -} +} \ No newline at end of file From 4e8f42288fd83f1fefb5e859f08307d832884ab3 Mon Sep 17 00:00:00 2001 From: pateljannat Date: Tue, 5 Oct 2021 12:49:56 +0530 Subject: [PATCH 2/7] feat: single thread discussions --- frappe/templates/discussions/comment_box.html | 48 ++++++++++--------- frappe/templates/discussions/discussions.js | 25 ++++++---- .../discussions/discussions_section.html | 16 +++++-- .../templates/discussions/reply_section.html | 4 -- frappe/templates/styles/discussion_style.css | 2 +- .../discussion_reply/discussion_reply.py | 2 +- 6 files changed, 54 insertions(+), 43 deletions(-) diff --git a/frappe/templates/discussions/comment_box.html b/frappe/templates/discussions/comment_box.html index ebaa37f772..ab4714185a 100644 --- a/frappe/templates/discussions/comment_box.html +++ b/frappe/templates/discussions/comment_box.html @@ -1,31 +1,35 @@
-
-
-
- -
+ {% if not single_thread %} +
+
+
+
+
+ {% endif %} -
-
-
- -
+
+
+
+
+
-