diff --git a/frappe/core/doctype/comment/comment.json b/frappe/core/doctype/comment/comment.json index 07b4fdfa40..ed68eca7e0 100644 --- a/frappe/core/doctype/comment/comment.json +++ b/frappe/core/doctype/comment/comment.json @@ -103,12 +103,31 @@ "fieldtype": "Check", "label": "Unsubscribed", "permlevel": 0 + }, + { + "fieldname": "reference_doctype", + "fieldtype": "Link", + "label": "Reference DocType", + "options": "DocType", + "permlevel": 0, + "precision": "", + "read_only": 1 + }, + { + "description": "Reference DocType and Reference Name are used to render a comment as a link (href) to a Doc.", + "fieldname": "reference_name", + "fieldtype": "Dynamic Link", + "label": "Reference Name", + "options": "reference_doctype", + "permlevel": 0, + "precision": "", + "read_only": 1 } ], "icon": "icon-comments", "idx": 1, "issingle": 0, - "modified": "2015-02-11 15:32:45.807458", + "modified": "2015-06-08 12:31:15.122312", "modified_by": "Administrator", "module": "Core", "name": "Comment", diff --git a/frappe/desk/doctype/todo/todo.py b/frappe/desk/doctype/todo/todo.py index 5bc1e797cd..556fd07f22 100644 --- a/frappe/desk/doctype/todo/todo.py +++ b/frappe/desk/doctype/todo/todo.py @@ -16,8 +16,8 @@ class ToDo(Document): if self.is_new(): self.add_assign_comment(frappe._("Assigned to {0}: {1}").format(get_fullname(self.owner), self.description), "Assigned") else: - cur_status = frappe.db.get_value("ToDo", self.name, "status") - if cur_status != self.status: + # NOTE the previous value is only available in validate method + if self.get_db_value("status") != self.status: self.add_assign_comment(frappe._("Assignment closed by {0}".format(get_fullname(frappe.session.user))), "Assignment Completed") @@ -31,14 +31,19 @@ class ToDo(Document): if not self.reference_type and self.reference_name: return - frappe.get_doc({ + comment = frappe.get_doc({ "doctype":"Comment", "comment_by": frappe.session.user, "comment_type": comment_type, "comment_doctype": self.reference_type, "comment_docname": self.reference_name, - "comment": """{text}""".format(text=text) - }).insert(ignore_permissions=True) + "comment": """{text}""".format(text=text), + "reference_doctype": self.doctype, + "reference_name": self.name + }) + comment.flags.ignore_permissions = True + comment.flags.ignore_links = True + comment.insert() def update_in_reference(self): if not (self.reference_type and self.reference_name): diff --git a/frappe/desk/form/load.py b/frappe/desk/form/load.py index 88947f3fe5..2d99fb130e 100644 --- a/frappe/desk/form/load.py +++ b/frappe/desk/form/load.py @@ -105,7 +105,8 @@ def get_attachments(dt, dn): def get_comments(dt, dn, limit=100): comments = frappe.db.sql("""select name, comment, comment_by, creation, - comment_type, "Comment" as doctype from `tabComment` + reference_doctype, reference_name, comment_type, "Comment" as doctype + from `tabComment` where comment_doctype=%s and comment_docname=%s order by creation desc limit %s""" % ('%s','%s', limit), (dt, dn), as_dict=1) diff --git a/frappe/public/js/frappe/form/footer/timeline_item.html b/frappe/public/js/frappe/form/footer/timeline_item.html index 0ec03a97d7..b14d3b8856 100644 --- a/frappe/public/js/frappe/form/footer/timeline_item.html +++ b/frappe/public/js/frappe/form/footer/timeline_item.html @@ -31,7 +31,13 @@ {% } else if(in_list(["Assignment Completed", "Assigned", "Shared", "Unshared"], data.comment_type)) { %}
- {%= data.comment %} + {% if(data.reference_doctype && data.reference_name) { %} + + {% } %} + {%= data.comment %} + {% if(data.reference_doctype && data.reference_name) { %} + + {% } %} – {%= data.comment_on %}