RSS for blog
Comment addition into blog page's dom
diff --git a/erpnext/website/templates/blog/blog.html b/erpnext/website/templates/blog/blog.html
index 9132e52..d87b128 100644
--- a/erpnext/website/templates/blog/blog.html
+++ b/erpnext/website/templates/blog/blog.html
@@ -9,19 +9,17 @@
 				<div class="help">By {{ full_name }} on {{ updated }}</div>
 				<br>
 				{{ content_html }}
-				<hr><h3>Comments</h3>
-				<br>
+				<hr>
+				<h3>Comments</h3><br>
 				<div class="blog-comments">
-					{% for comment in comment_list %}
-					<div class="comment-row">
-						<div class="comment-title">
-							{{ comment.comment_by_fullname }} - {{ comment.comment_date }}:
-							{{ comment.comment_date_type }}
-						</div>
-						<p class="comment-content">{{ comment.comment }}</p>
-						<hr>
+					<div class="no-result help hide">
+						<p>Be the first one to comment</p>
+						<br />
 					</div>
-					{% endfor %}
+
+					{% include 'blog/comment.html' %}
+
+					<button class="btn add-comment">Add Comment</button>
 				</div>
 			</div>
 
diff --git a/erpnext/website/templates/blog/blog.js b/erpnext/website/templates/blog/blog.js
index 3ad1575..24d5033 100644
--- a/erpnext/website/templates/blog/blog.js
+++ b/erpnext/website/templates/blog/blog.js
@@ -23,24 +23,16 @@
 	erpnext.blog.wrapper = wrapper;
 	
 	// sidebar
-	wrapper.recent_list = new wn.ui.Listing({
-		parent: $(wrapper).find('.recent-posts'),
-		no_toolbar: true,
-		query: 'select name, title, left(content, 100) as content from tabBlog\
-			where ifnull(published,0)=1 and name!="{{ name }}" order by creation desc',
-		hide_refresh: true,
-		render_row: function(parent, data) {
-			//console.log(data);
-			if(data.content && data.content.length==100) data.content += '...';
-			parent.innerHTML = repl('<a href="%(name)s.html">%(title)s</a>\
-				<div class="comment">%(content)s</div><br>', data);
-			
-			// adjust page height depending on sidebar height
-			erpnext.blog.adjust_page_height(wrapper);
-		},
-		page_length: 5,
-	});
-	wrapper.recent_list.run();
+	erpnext.blog.render_recent_list(wrapper);
+	
+	// unhide no-result if no comments found
+	erpnext.blog.toggle_no_result(wrapper);
+	
+	// bind add comment button to comment dialog
+	erpnext.blog.make_comment_dialog(wrapper);
+	
+	// hide add comment button after 50 comments
+	erpnext.blog.toggle_add_comment_btn(wrapper);
 }
 
 erpnext.blog.adjust_page_height = function(wrapper) {
@@ -54,52 +46,131 @@
 		$main_page.height($sidebar.height());
 	}
 }
-	// wrapper.comment_list = new wn.ui.Listing({
-	// 	parent: $(wrapper).find('.blog-comments').get(0),
-	// 	no_toolbar: true,
-	// 	query: 'select comment, comment_by_fullname, creation\
-	// 		from `tabComment` where comment_doctype="Page"\
-	// 		and comment_docname="{{ name }}" order by creation desc',
-	// 	no_result_message: 'Be the first one to comment',
-	// 	render_row: function(parent, data) {
-	// 		data.comment_date = prettyDate(data.creation);
-	// 		$(parent).html(repl("<div style='color:#777'>\
-	// 			%(comment_by_fullname)s | %(comment_date)s:\
-	// 			</div>\
-	// 			<p style='margin-left: 20px;'>%(comment)s</p><br>", data))
-	// 	},
-	// 	hide_refresh: true,
-	// });
-	// wrapper.comment_list.run();
-	// 
-	// // add comment
-	// $(wrapper).find('.layout-main-section').append('<br><button class="btn add-comment">\
-	// 	Add Comment</button>');
-	// $(wrapper).find('button.add-comment').click(function(){
-	// 	d = new wn.widgets.Dialog({
-	// 		title: 'Add Comment',
-	// 		fields: [
-	// 			{fieldname:'comment_by_fullname', label:'Your Name', reqd:1, fieldtype:'Data'},
-	// 			{fieldname:'comment_by', label:'Email Id', reqd:1, fieldtype:'Data'},
-	// 			{fieldname:'comment', label:'Comment', reqd:1, fieldtype:'Text'},
-	// 			{fieldname:'post', label:'Post', fieldtype:'Button'}
-	// 		]
-	// 	});
-	// 	d.fields_dict.post.input.onclick = function() {
-	// 		var btn = this;
-	// 		var args = d.get_values();
-	// 		if(!args) return;
-	// 		args.comment_doctype = 'Page';
-	// 		args.comment_docname = '{{ name }}';
-	// 		$(btn).set_working();
-	// 		$c('webnotes.widgets.form.comments.add_comment', args, function(r) {
-	// 			$(btn).done_working();
-	// 			d.hide();
-	// 			wrapper.comment_list.refresh();
-	// 		})
-	// 	}
-	// 	d.show();
-	// })
 
+erpnext.blog.render_recent_list = function(wrapper) {
+	if (!wrapper) { wrapper = erpnext.blog.wrapper; }
+	if (!wrapper) { return; }
+	
+	wrapper.recent_list = new wn.ui.Listing({
+		parent: $(wrapper).find('.recent-posts'),
+		no_toolbar: true,
+		method: 'website.blog.get_recent_blog_list',
+		get_args: function() {
+			return { name: '{{ name }}' }
+		},
+		hide_refresh: true,
+		render_row: function(parent, data) {
+			if(data.content && data.content.length>=100) data.content += '...';
+			parent.innerHTML = repl('<a href="%(name)s.html">%(title)s</a>\
+				<div class="comment">%(content)s</div><br>', data);
+			
+			// adjust page height depending on sidebar height
+			erpnext.blog.adjust_page_height(wrapper);
+		},
+		page_length: 5,
+	});
+	wrapper.recent_list.run();
+}
+
+erpnext.blog.toggle_no_result = function(wrapper) {
+	if (!wrapper) { wrapper = erpnext.blog.wrapper; }
+	if (!wrapper) { return; }
+	
+	var $blog_comments = $(wrapper).find('.blog-comments');
+	var $comment_rows = $blog_comments.find('.comment-row');
+	var $no_result = $blog_comments.find('.no-result');
+	if ($comment_rows.length == 0) {
+		$no_result.removeClass('hide');
+	} else {
+		$no_result.addClass('hide');
+	}
+}
+
+erpnext.blog.make_comment_dialog = function(wrapper) {
+	if (!wrapper) { wrapper = erpnext.blog.wrapper; }
+	if (!wrapper) { return; }
+	
+	var $comment_btn = $(wrapper).find('button.add-comment');
+	
+	$comment_btn.click(function() {
+		if(!erpnext.blog.comment_dialog) {
+			var d = new wn.widgets.Dialog({
+				title: 'Add Comment',
+				fields: [
+					{
+						fieldname: 'comment_by_fullname', label: 'Your Name',
+						reqd: 1, fieldtype: 'Data'
+					},
+					{
+						fieldname: 'comment_by', label: 'Email Id',
+						reqd: 1, fieldtype: 'Data'
+					},
+					{
+						fieldname: 'comment', label: 'Comment',
+						reqd: 1, fieldtype: 'Text'
+					},
+					{
+						fieldname: 'post_comment', label: 'Post Comment',
+						fieldtype: 'Button'
+					},
+				],
+			});
+			
+			erpnext.blog.comment_dialog = d;
+		}
+		
+		erpnext.blog.comment_dialog.fields_dict.post_comment
+				.input.onclick = function() {
+			erpnext.blog.add_comment(wrapper);
+		}
+		
+		erpnext.blog.comment_dialog.show();
+	});
+
+}
+
+erpnext.blog.add_comment = function(wrapper) {
+	var args = erpnext.blog.comment_dialog.get_values();
+
+	if(!args) return;
+	
+	args.comment_doctype = 'Blog';
+	args.comment_docname = '{{ name }}';
+	args.page_name = '{{ page_name }}';
+	
+	wn.call({
+		method: 'website.blog.add_comment',
+		args: args,
+		btn: this,
+		callback: function(r) {
+			if(!r.exc) {
+				erpnext.blog.add_comment_to_page(wrapper, r.message);
+				erpnext.blog.comment_dialog.hide();
+			}
+		}
+	});
+}
+
+erpnext.blog.add_comment_to_page = function(wrapper, comment) {
+	$blog_comments = $(wrapper).find('.blog-comments');
+	$comment_rows = $blog_comments.find('.comment-row');
+	
+	if ($comment_rows.length) {
+		$comment_rows.last().after(comment);
+	} else {
+		$blog_comments.find('.no-result').after(comment);
+	}
+	
+	erpnext.blog.toggle_no_result(wrapper);
+	erpnext.blog.toggle_add_comment_btn(wrapper);
+}
+
+erpnext.blog.toggle_add_comment_btn = function(wrapper) {
+	var $wrapper = $(wrapper);
+	if ($wrapper.find('.blog-comments .comment-row').length > 50) {
+		var $comment_btn = $wrapper.find('button.add-comment');
+		$comment_btn.addClass('hide');
+	}
+}
 
 {% endblock %}
diff --git a/erpnext/website/templates/blog/comment.html b/erpnext/website/templates/blog/comment.html
new file mode 100644
index 0000000..1323e09
--- /dev/null
+++ b/erpnext/website/templates/blog/comment.html
@@ -0,0 +1,14 @@
+{#
+	this template generates comment rows for a blog
+	it is to be included in the blog/blog.html template
+#}
+
+{% for comment in comment_list %}
+<div class="comment-row">
+	<div class="comment-title">
+		{{ comment.comment_by_fullname }} - {{ comment.comment_date }}:
+	</div>
+	<p class="comment-content">{{ comment.comment }}</p>
+	<hr>
+</div>
+{% endfor %}
\ No newline at end of file