完善评论层级现实功能

sh_branch
车亮亮 9 years ago
parent 175cfe6dc1
commit f934115621

@ -1,3 +1,3 @@
#DjangoBlog
基于`python3.5`和`Django1.9`的博客。
基于`python3.5`和`Django1.10`的博客。

@ -1,55 +0,0 @@
upstream hello_app_server {
server unix:/var/www/DjangoBlog/run/gunicorn.sock fail_timeout=0;
}
server {
server_name blog.lylinux.org;
root /var/www/DjangoBlog/;
listen 80;
keepalive_timeout 70;
access_log off;
location /static/ {
alias /var/www/DjangoBlog/blog/static/;
}
location ~* ^.+.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ {
expires max;
}
location / {
# an HTTP header important enough to have its own Wikipedia entry:
# http://en.wikipedia.org/wiki/X-Forwarded-For
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# enable this if and only if you use HTTPS, this helps Rack
# set the proper protocol for doing redirects:
# proxy_set_header X-Forwarded-Proto https;
# pass the Host: header from the client right along so redirects
# can be set properly within the Rack application
proxy_set_header Host $http_host;
# we don't want nginx trying to do something clever with
# redirects, we set the Host: header above already.
proxy_redirect off;
# set "proxy_buffering off" *only* for Rainbows! when doing
# Comet/long-poll stuff. It's also safe to set if you're
# using only serving fast clients with Unicorn + nginx.
# Otherwise you _want_ nginx to buffer responses to slow
# clients, really.
# proxy_buffering off;
# Try to serve static files from nginx, no point in making an
# *application* server like Unicorn/Rainbows! serve static files.
if (!-f $request_filename) {
proxy_pass http://hello_app_server;
break;
}
}
}

@ -2260,8 +2260,7 @@ li #reply-title {
}
#cancel-comment-reply-link {
display: block;
position: absolute;
float: right;
bottom: 26px;
right: 20px;
font-size: 12px;
@ -2349,4 +2348,12 @@ li #reply-title {
content: "";
display: table;
clear: both;
}
.cancel-comment {
margin: 0;
padding: 0;
border: 0;
font: inherit;
vertical-align: baseline;
}

@ -0,0 +1,19 @@
/**
* Created by liangliang on 2016/11/20.
*/
function do_reply(parentid) {
console.log(parentid);
$("#id_parent_comment_id").val(parentid)
$("#commentform").appendTo($("#div-comment-" + parentid));
$("#reply-title").hide();
$("#cancel_comment").show();
}
function cancel_reply() {
$("#reply-title").show();
$("#cancel_comment").hide();
$("#id_parent_comment_id").val('')
$("#commentform").appendTo($("#respond"));
}

File diff suppressed because it is too large Load Diff

@ -127,6 +127,7 @@ def load_article_detail(article, isindex):
# TEMPLATE USE: {{ email|gravatar_url:150 }}
@register.filter
def gravatar_url(email, size=40):
"""获得gravatar头像"""
email = email.encode('utf-8')
default = "https://avatar.duoshuo.com/avatar-50/928/120117.jpg".encode('utf-8')
@ -139,10 +140,31 @@ def gravatar_url(email, size=40):
# TEMPLATE USE: {{ email|gravatar:150 }}
@register.filter
def gravatar(email, size=40):
"""获得gravatar头像"""
url = gravatar_url(email, size)
return mark_safe('<img src="%s" height="%d" width="%d">' % (url, size, size))
@register.assignment_tag
def query(qs, **kwargs):
""" template tag which allows queryset filtering. Usage:
{% query books author=author as mybooks %}
{% for book in mybooks %}
...
{% endfor %}
"""
return qs.filter(**kwargs)
"""
article = Article.objects.get(pk=4)
comments = Comment.objects.filter(article=article)
for c in comments.filter(parent_comment=None):
datas = parse_commenttree(comments, c)
print(datas)
"""
"""
@register.tag
def parseCategoryName(parser,token):

@ -8,7 +8,6 @@ from django.views.generic.edit import CreateView, FormView
from django.views.generic.dates import YearArchiveView, MonthArchiveView
from blog.models import Article, Category, Tag
from django.conf import settings
import markdown
from django.template.defaultfilters import stringfilter
from django.utils.safestring import mark_safe
from django.core.exceptions import ObjectDoesNotExist
@ -66,7 +65,9 @@ class ArticleDetailView(DetailView):
form.fields["name"].initial = user.username
article_comments = self.object.comment_set.all()
print(article_comments)
# print(article_comments)
kwargs['form'] = form
kwargs['article_comments'] = article_comments
kwargs['comment_count'] = len(article_comments) if article_comments else 0;

@ -21,6 +21,35 @@ from comments.forms import CommentForm
register = template.Library()
@register.assignment_tag
def parse_commenttree(commentlist, comment):
"""获得当前评论子评论的列表
用法: {% parse_commenttree article_comments comment as childcomments %}
"""
datas = []
def parse(c):
childs = commentlist.filter(parent_comment=c)
for child in childs:
datas.append(child)
parse(child)
parse(comment)
return datas
@register.inclusion_tag('comments/tags/comment_item.html')
def show_comment_item(comment, ischild):
"""评论"""
depth = 1 if ischild else 2;
return {
'comment_item': comment,
'depth': depth
}
"""
@register.simple_tag(name='get_comment_count')
def GetCommentCount(parser, token):
@ -41,4 +70,4 @@ def load_post_comment(article, lastform=None):
'article': article,
'form': form
}
"""
"""

@ -39,10 +39,14 @@ class CommentPostView(FormView):
author_id = self.request.user.pk
comment = form.save(False)
comment.article = article
comment.author = BlogUser.objects.get(pk=author_id)
comment.article = article
if form.cleaned_data['parent_comment_id']:
parent_comment = Comment.objects.get(pk=form.cleaned_data['parent_comment_id'])
comment.parent_comment = parent_comment
comment.save(True)
return HttpResponseRedirect(article.get_absolute_url())

@ -37,8 +37,9 @@
<link rel='stylesheet' id='twentytwelve-ie-css' href='{% static 'blog/css/ie.css' %}' type='text/css' media='all' />
<![endif]-->
<script type='text/javascript' src='{% static 'blog/js/jquery.js' %}' defer='defer'></script>
<script type='text/javascript' src='{% static 'blog/js/jquery-migrate.min.js' %}' defer='defer'></script>
{% comment %}<script type='text/javascript' src='{% static 'blog/js/jquery.js' %}' defer='defer'></script>
<script type='text/javascript' src='{% static 'blog/js/jquery-migrate.min.js' %}' defer='defer'></script>{% endcomment %}
<script type="text/javascript" src="{% static 'blog/js/jquery-3.1.1.js' %}"></script>
</head>
@ -46,7 +47,8 @@
<div id="page" class="hfeed site">
<header id="masthead" class="site-header" role="banner">
<hgroup>
<h1 class="site-title"><a href="{{ SITE_BASE_URL }}" title="{{ SITE_NAME }}" rel="home">{{ SITE_NAME }}</a></h1>
<h1 class="site-title"><a href="{{ SITE_BASE_URL }}" title="{{ SITE_NAME }}" rel="home">{{ SITE_NAME }}</a>
</h1>
<h2 class="site-description">大巧无工,重剑无锋</h2>
</hgroup>
@ -109,14 +111,14 @@
</nav><!-- #site-navigation -->
</header><!-- #masthead -->
<div id="main" class="wrapper">
{% block content %}
{% endblock %}
<div id="main" class="wrapper">
{% block content %}
{% endblock %}
{% block sidebar %}
{% endblock %}
{% block sidebar %}
{% endblock %}
</div><!-- #main .wrapper -->
</div><!-- #main .wrapper -->
<footer id="colophon" role="contentinfo">
<div class="site-info">
Copyright&copy;&nbsp;2016&nbsp;
@ -152,5 +154,6 @@ var wpAutoTopSpeed = 1;</script>
<link href="{% static 'highlight/styles/github-gist.css' %}" rel="stylesheet">
<script type="application/javascript" src="{% static 'highlight/highlight.pack.js' %}"></script>
<script>hljs.initHighlightingOnLoad();</script>
<script src="{% static 'blog/js/blog.js' %}" type="application/javascript"></script>
</body>
</html>

@ -0,0 +1,25 @@
{% load blog_tags %}
<li class="comment even thread-even depth-{{ depth }} parent" id="comment-{{ comment_item.pk }}">
<div id="div-comment-{{ comment_item.pk }}" class="comment-body">
<div class="comment-author vcard">
<img alt=""
src="{{ comment_item.author.email|gravatar_url:150 }}"
srcset="{{ comment_item.author.email|gravatar_url:150 }}"
class="avatar avatar-96 photo" height="96" width="96"> <cite class="fn"><a
href="#" rel="external nofollow"
class="url">{{ comment_item.author.username }}</a></cite><span
class="says">说道</span></div>
<div class="comment-meta commentmetadata"><a
href="#">
{{ comment_item.created_time }}</a></div>
<p>{{ comment_item.body }}</p>
<div class="reply"><a rel="nofollow" class="comment-reply-link"
href="javascript:void(0)"
onclick="do_reply({{ comment_item.pk }})"
aria-label="回复给{{ comment_item.author.username }}">回复</a></div>
</div>
</li><!-- #comment-## -->

@ -1,6 +1,6 @@
<section id="comments" class="themeform">
{% load blog_tags %}
{% load comments_tags %}
<h3 class="heading">{{ comment_count }} 条回复</h3>
<ul class="comment-tabs group">
@ -12,60 +12,23 @@
<div id="commentlist-container" class="comment-tab" style="display: block;">
<ol class="commentlist">
{% query article_comments parent_comment=None as parent_comments %}
{% for comment in parent_comments %}
{% show_comment_item comment False %}
{% parse_commenttree article_comments comment as childcomments %}
{% if childcomments %}
<ul class="children">
{% for child in childcomments %}
{% show_comment_item child True %}
{% endfor %}
</ul><!-- .children -->
{% endif %}
{% for comment in article_comments %}
<li class="comment even thread-even depth-1 parent" id="comment-{{ comment.pk }}">
<div id="div-comment-{{ comment.pk }}" class="comment-body">
<div class="comment-author vcard">
<img alt=""
src="{{ comment.author.email|gravatar_url:150 }}"
srcset="{{ comment.author.email|gravatar_url:150 }}"
class="avatar avatar-96 photo" height="96" width="96"> <cite class="fn"><a
href="#" rel="external nofollow"
class="url">{{ comment.author.username }}</a></cite><span
class="says">说道</span></div>
<div class="comment-meta commentmetadata"><a
href="#">
{{ comment.created_time }}</a></div>
<p>{{ comment.body }}</p>
<div class="reply"><a rel="nofollow" class="comment-reply-link"
href="#"
onclick="return addComment.moveForm( &quot;div-comment-6&quot;, &quot;6&quot;, &quot;respond&quot;, &quot;12&quot; )"
aria-label="回复给DIYgod">回复</a></div>
</div>
{% comment %} <ul class="children">
<li class="comment byuser comment-author-hellcom bypostauthor odd alt depth-2"
id="comment-7">
<div id="div-comment-7" class="comment-body">
<div class="comment-author vcard">
<img alt=""
src="http://cn.gravatar.com/avatar/f51db6db4fcb66f4cdf10c6189dd20cf?s=96&amp;d=monsterid&amp;r=g"
srcset="http://cn.gravatar.com/avatar/f51db6db4fcb66f4cdf10c6189dd20cf?s=192&amp;d=monsterid&amp;r=g 2x"
class="avatar avatar-96 photo" height="96" width="96"> <cite
class="fn"><a href="http://www.bixiv.com/" rel="external nofollow"
class="url">Hellcom</a></cite><span
class="says">说道</span></div>
<div class="comment-meta commentmetadata"><a
href="http://www.bixiv.com/2bps/12#comment-7">
2016年11月5日 下午9:16</a></div>
<p><a class="comment-reply-chain" rel="nofollow"
href="#comment-6">@DIYgod</a> 么么哒😘</p>
<div class="reply"><a rel="nofollow" class="comment-reply-link"
href="http://www.bixiv.com/2bps/12?replytocom=7#respond"
onclick="return addComment.moveForm( &quot;div-comment-7&quot;, &quot;7&quot;, &quot;respond&quot;, &quot;12&quot; )"
aria-label="回复给Hellcom">回复</a></div>
</div>
</li><!-- #comment-## -->
</ul><!-- .children -->{% endcomment %}
</li><!-- #comment-## -->
{% endfor %}
{% comment %} <li class="comment even thread-even depth-1 parent" id="comment-6">
{% comment %} <li class="comment even thread-even depth-1 parent" id="comment-6">
<div id="div-comment-6" class="comment-body">
<div class="comment-author vcard">
<img alt=""

@ -1,5 +1,3 @@
<div id="comments" class="comments-area">
<div id="respond" class="comment-respond">
@ -50,7 +48,9 @@
{{ form.parent_comment_id }}
<p class="form-submit"><input name="submit" type="submit" id="submit" class="submit" value="发表评论"/>
<small class="cancel-comment" id="cancel_comment" style="display: none">
<a href="javascript:void(0)" id="cancel-comment-reply-link" onclick="cancel_reply()">取消回复</a>
</small>
</p>
</form>
</div><!-- #respond -->
@ -58,4 +58,3 @@
</div><!-- #comments .comments-area -->

Loading…
Cancel
Save