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