From aaa75496e2d0f4e382360476d7ff95f1192d7fd1 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 6 Aug 2012 15:22:17 +0530 Subject: [PATCH] added email chain on blog comment and number of comments --- erpnext/website/blog.py | 25 ++++++++++++++++++++++--- erpnext/website/templates/js/blog.js | 9 +++++++++ public/js/all-app.js | 4 +--- public/js/all-web.js | 4 +--- 4 files changed, 33 insertions(+), 9 deletions(-) diff --git a/erpnext/website/blog.py b/erpnext/website/blog.py index 1ebea29d7c..f0e9b711b7 100644 --- a/erpnext/website/blog.py +++ b/erpnext/website/blog.py @@ -17,7 +17,8 @@ def get_blog_list(args=None): select cache.name as name, cache.html as content, blog.owner as owner, blog.creation as published, - blog.title as title + blog.title as title, (select count(name) from `tabComment` where + comment_doctype='Blog' and comment_docname=blog.name) as comments from `tabWeb Cache` cache, `tabBlog` blog where cache.doc_type = 'Blog' and blog.page_name = cache.name order by published desc, name asc""" @@ -104,7 +105,24 @@ def add_comment(args=None): # get html of comment row comment_html = website.web_cache.build_html(template_args) - + + # notify commentors + commentors = [d[0] for d in webnotes.conn.sql("""select comment_by from tabComment where + comment_doctype='Blog' and comment_docname=%s and + ifnull(unsubscribed, 0)=0""", args.get('comment_docname'))] + + blog = webnotes.conn.sql("""select * from tabBlog where name=%s""", + args.get('comment_docname'), as_dict=1)[0] + + from webnotes.utils.email_lib.bulk import send + send(recipients=commentors + [blog['owner']], + doctype='Comment', + email_field='comment_by', + first_name_field="comment_by_fullname", + last_name_field="NA", + subject='New Comment on Blog: ' + blog['title'], + message='

%(comment)s

By %(comment_by_fullname)s

' % args) + return comment_html @webnotes.whitelist(allow_guest=True) @@ -119,7 +137,8 @@ def add_subscriber(): lead = Document('Lead', name[0][0]) else: lead = Document('Lead') - + + if not lead.source: lead.source = 'Blog' lead.unsubscribed = 0 lead.blog_subscriber = 1 lead.lead_name = full_name diff --git a/erpnext/website/templates/js/blog.js b/erpnext/website/templates/js/blog.js index 78dd3b774f..76b9fb66ec 100644 --- a/erpnext/website/templates/js/blog.js +++ b/erpnext/website/templates/js/blog.js @@ -22,10 +22,19 @@ wn.pages['{{ name }}'].onload = function(wrapper) { hide_refresh: true, no_toolbar: true, render_row: function(parent, data) { + if(!data.comments) { + data.comment_text = 'No comments yet.' + } else if (data.comments=1) { + data.comment_text = '1 comment.' + } else { + data.comment_text = data.comments + ' comments.' + } + if(data.content && data.content.length==1000) { data.content += repl('... (read on)', data); } parent.innerHTML = repl('

%(title)s

\ +
%(comment_text)s
\ %(content)s

', data); }, page_length: 10 diff --git a/public/js/all-app.js b/public/js/all-app.js index 1921530539..17c6162f14 100644 --- a/public/js/all-app.js +++ b/public/js/all-app.js @@ -2265,9 +2265,7 @@ if(wn.boot.expires_on&&in_list(user_roles,'System Manager')){var today=dateutil. This ERPNext subscription has expired. \ ',{expiry_string:expiry_string}));}} erpnext.set_about();if(wn.control_panel.custom_startup_code) -eval(wn.control_panel.custom_startup_code);} -$('body').append('')} +eval(wn.control_panel.custom_startup_code);}} erpnext.update_messages=function(reset){if(inList(['Guest'],user)||!wn.session_alive){return;} if(!reset){var set_messages=function(r){if(!r.exc){erpnext.toolbar.set_new_comments(r.message.unread_messages);var show_in_circle=function(parent_id,msg){var parent=$('#'+parent_id);if(parent){if(msg){parent.find('span:first').text(msg);parent.toggle(true);}else{parent.toggle(false);}}} show_in_circle('unread_messages',r.message.unread_messages.length);show_in_circle('open_support_tickets',r.message.open_support_tickets);show_in_circle('things_todo',r.message.things_todo);show_in_circle('todays_events',r.message.todays_events);show_in_circle('open_tasks',r.message.open_tasks);}else{clearInterval(wn.updates.id);}} diff --git a/public/js/all-web.js b/public/js/all-web.js index 9f4d63b054..787ab63a25 100644 --- a/public/js/all-web.js +++ b/public/js/all-web.js @@ -725,9 +725,7 @@ if(wn.boot.expires_on&&in_list(user_roles,'System Manager')){var today=dateutil. This ERPNext subscription has expired. \ ',{expiry_string:expiry_string}));}} erpnext.set_about();if(wn.control_panel.custom_startup_code) -eval(wn.control_panel.custom_startup_code);} -$('body').append('')} +eval(wn.control_panel.custom_startup_code);}} erpnext.update_messages=function(reset){if(inList(['Guest'],user)||!wn.session_alive){return;} if(!reset){var set_messages=function(r){if(!r.exc){erpnext.toolbar.set_new_comments(r.message.unread_messages);var show_in_circle=function(parent_id,msg){var parent=$('#'+parent_id);if(parent){if(msg){parent.find('span:first').text(msg);parent.toggle(true);}else{parent.toggle(false);}}} show_in_circle('unread_messages',r.message.unread_messages.length);show_in_circle('open_support_tickets',r.message.open_support_tickets);show_in_circle('things_todo',r.message.things_todo);show_in_circle('todays_events',r.message.todays_events);show_in_circle('open_tasks',r.message.open_tasks);}else{clearInterval(wn.updates.id);}}