add remove feature comments
This commit is contained in:
parent
d1f9c12c2d
commit
c3d6b8ea41
5 changed files with 31 additions and 11 deletions
|
@ -11,6 +11,7 @@ from django.http import (
|
||||||
HttpResponseForbidden,
|
HttpResponseForbidden,
|
||||||
HttpResponseNotFound,
|
HttpResponseNotFound,
|
||||||
HttpResponseRedirect,
|
HttpResponseRedirect,
|
||||||
|
Http404,
|
||||||
)
|
)
|
||||||
from django.urls import reverse_lazy
|
from django.urls import reverse_lazy
|
||||||
from django.utils.decorators import method_decorator
|
from django.utils.decorators import method_decorator
|
||||||
|
@ -154,7 +155,10 @@ class CommentedDetailView(TemplateResponseMixin, SingleObjectMixin, View):
|
||||||
pre_query = None
|
pre_query = None
|
||||||
if "comment-id" in request.GET:
|
if "comment-id" in request.GET:
|
||||||
comment_id = int(request.GET["comment-id"])
|
comment_id = int(request.GET["comment-id"])
|
||||||
comment_obj = Comment.objects.get(pk=comment_id)
|
try:
|
||||||
|
comment_obj = Comment.objects.get(pk=comment_id)
|
||||||
|
except Comment.DoesNotExist:
|
||||||
|
raise Http404
|
||||||
pre_query = comment_obj
|
pre_query = comment_obj
|
||||||
while comment_obj is not None:
|
while comment_obj is not None:
|
||||||
pre_query = comment_obj
|
pre_query = comment_obj
|
||||||
|
@ -174,7 +178,9 @@ class CommentedDetailView(TemplateResponseMixin, SingleObjectMixin, View):
|
||||||
queryset = queryset.filter(parent=None, hidden=False)
|
queryset = queryset.filter(parent=None, hidden=False)
|
||||||
queryset_all = None
|
queryset_all = None
|
||||||
comment_count = len(queryset)
|
comment_count = len(queryset)
|
||||||
|
context["comment_remove"] = -1
|
||||||
if (pre_query != None):
|
if (pre_query != None):
|
||||||
|
comment_remove = pre_query.id
|
||||||
queryset_all = pre_query.get_descendants(include_self=True)
|
queryset_all = pre_query.get_descendants(include_self=True)
|
||||||
queryset_all = (
|
queryset_all = (
|
||||||
queryset_all.select_related("author__user")
|
queryset_all.select_related("author__user")
|
||||||
|
@ -182,6 +188,7 @@ class CommentedDetailView(TemplateResponseMixin, SingleObjectMixin, View):
|
||||||
.defer("author__about")
|
.defer("author__about")
|
||||||
.annotate(revisions=Count("versions", distinct=True))
|
.annotate(revisions=Count("versions", distinct=True))
|
||||||
)
|
)
|
||||||
|
context["comment_remove"] = comment_remove
|
||||||
else:
|
else:
|
||||||
queryset = (
|
queryset = (
|
||||||
queryset.select_related("author__user")
|
queryset.select_related("author__user")
|
||||||
|
@ -227,7 +234,7 @@ class CommentedDetailView(TemplateResponseMixin, SingleObjectMixin, View):
|
||||||
context["comment_root_id"] = 0
|
context["comment_root_id"] = 0
|
||||||
context["comment_parrent_none"] = 1
|
context["comment_parrent_none"] = 1
|
||||||
if (pre_query != None):
|
if (pre_query != None):
|
||||||
context["offset"] = 0
|
context["offset"] = 1
|
||||||
else:
|
else:
|
||||||
context["offset"] = 10
|
context["offset"] = 10
|
||||||
|
|
||||||
|
|
|
@ -123,8 +123,11 @@ def get_comments(request, limit=10):
|
||||||
if comment_id and not Comment.objects.filter(id=comment_id).exists():
|
if comment_id and not Comment.objects.filter(id=comment_id).exists():
|
||||||
raise Http404()
|
raise Http404()
|
||||||
offset = 0
|
offset = 0
|
||||||
if "offset" in request.GET:
|
if "offset" in request.GET:
|
||||||
offset = int(request.GET["offset"])
|
offset = int(request.GET["offset"])
|
||||||
|
comment_remove = -1
|
||||||
|
if "comment_remove" in request.GET:
|
||||||
|
comment_remove = int(request.GET["comment_remove"])
|
||||||
comment_root_id = 0
|
comment_root_id = 0
|
||||||
if (comment_id):
|
if (comment_id):
|
||||||
comment_obj = Comment.objects.get(pk=comment_id)
|
comment_obj = Comment.objects.get(pk=comment_id)
|
||||||
|
@ -134,6 +137,8 @@ def get_comments(request, limit=10):
|
||||||
queryset = comment_obj.linked_object.comments
|
queryset = comment_obj.linked_object.comments
|
||||||
if parrent_none:
|
if parrent_none:
|
||||||
queryset = queryset.filter(parent=None, hidden=False)
|
queryset = queryset.filter(parent=None, hidden=False)
|
||||||
|
if (comment_remove != -1):
|
||||||
|
queryset.get(pk=comment_remove).delete()
|
||||||
else:
|
else:
|
||||||
queryset = queryset.filter(parent=comment_obj, hidden=False)
|
queryset = queryset.filter(parent=comment_obj, hidden=False)
|
||||||
comment_count = len(queryset)
|
comment_count = len(queryset)
|
||||||
|
@ -165,6 +170,7 @@ def get_comments(request, limit=10):
|
||||||
"limit": limit,
|
"limit": limit,
|
||||||
"comment_count": comment_count,
|
"comment_count": comment_count,
|
||||||
"comment_parrent_none": parrent_none,
|
"comment_parrent_none": parrent_none,
|
||||||
|
"comment_remove": comment_remove,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
{% set logged_in = request.user.is_authenticated %}
|
||||||
|
{% set profile = request.profile if logged_in else None %}
|
||||||
{% for node in mptt_tree(comment_list) recursive %}
|
{% for node in mptt_tree(comment_list) recursive %}
|
||||||
<li id="comment-{{ node.id }}" data-revision="{{ node.revisions - 1 }}" data-max-revision="{{ node.revisions - 1 }}"
|
<li id="comment-{{ node.id }}" data-revision="{{ node.revisions - 1 }}" data-max-revision="{{ node.revisions - 1 }}"
|
||||||
data-revision-ajax="{{ url('comment_revision_ajax', node.id) }}" class="comment">
|
data-revision-ajax="{{ url('comment_revision_ajax', node.id) }}" class="comment">
|
||||||
|
@ -120,14 +122,14 @@
|
||||||
|
|
||||||
{% set comment_more = comment_count - offset %}
|
{% set comment_more = comment_count - offset %}
|
||||||
{% if comment_more == 1 %}
|
{% if comment_more == 1 %}
|
||||||
<a href="javascript:comment_show_more({{ comment_root_id }}, {{ comment_parrent_none }}, {{ offset }} )" class="show_more_comment">
|
<a href="javascript:comment_show_more({{ comment_root_id }}, {{ comment_parrent_none }}, {{ offset }}, {{ comment_remove }})" class="show_more_comment">
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-chevron-down" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-chevron-down" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
||||||
<path d="M6 9l6 6l6 -6"></path>
|
<path d="M6 9l6 6l6 -6"></path>
|
||||||
</svg>
|
</svg>
|
||||||
{{ comment_count - offset }} comment more</a>
|
{{ comment_count - offset }} comment more</a>
|
||||||
{% elif comment_more > 1 %}
|
{% elif comment_more > 1 %}
|
||||||
<a href="javascript:comment_show_more({{ comment_root_id }}, {{ comment_parrent_none }}, {{ offset }} )" class="show_more_comment">
|
<a href="javascript:comment_show_more({{ comment_root_id }}, {{ comment_parrent_none }}, {{ offset }}, {{ comment_remove }})" class="show_more_comment">
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-chevron-down" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-chevron-down" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
||||||
<path d="M6 9l6 6l6 -6"></path>
|
<path d="M6 9l6 6l6 -6"></path>
|
||||||
|
|
|
@ -152,7 +152,7 @@
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% set comment_more = comment_count - offset %}
|
{% set comment_more = comment_count - offset %}
|
||||||
{% if comment_more == 1 %}
|
{% if comment_more == 1 %}
|
||||||
<a href="javascript:comment_show_more({{ comment_root_id }}, {{ comment_parrent_none }}, {{ offset }} )" class="show_more_comment">
|
<a href="javascript:comment_show_more({{ comment_root_id }}, {{ comment_parrent_none }}, {{ offset }}, {{ comment_remove }})" class="show_more_comment">
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-chevron-down" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-chevron-down" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
||||||
<path d="M6 9l6 6l6 -6"></path>
|
<path d="M6 9l6 6l6 -6"></path>
|
||||||
|
@ -160,7 +160,7 @@
|
||||||
{{ comment_count - offset }} comment more
|
{{ comment_count - offset }} comment more
|
||||||
</a>
|
</a>
|
||||||
{% elif comment_more > 1 %}
|
{% elif comment_more > 1 %}
|
||||||
<a href="javascript:comment_show_more({{ comment_root_id }}, {{ comment_parrent_none }}, {{ offset }} )" class="show_more_comment">
|
<a href="javascript:comment_show_more({{ comment_root_id }}, {{ comment_parrent_none }}, {{ offset }}, {{ comment_remove }})" class="show_more_comment">
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-chevron-down" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-chevron-down" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
<path stroke="none" d="M0 0h24v24H0z" fill="none"></path>
|
||||||
<path d="M6 9l6 6l6 -6"></path>
|
<path d="M6 9l6 6l6 -6"></path>
|
||||||
|
@ -171,7 +171,7 @@
|
||||||
{% else %}
|
{% else %}
|
||||||
{% include "comments/content-list.html" %}
|
{% include "comments/content-list.html" %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
{% elif not comment_lock %}
|
{% elif not comment_lock %}
|
||||||
<p class="no-comments-message">{{ _('There are no comments at the moment.') }}</p>
|
<p class="no-comments-message">{{ _('There are no comments at the moment.') }}</p>
|
||||||
|
|
|
@ -119,6 +119,10 @@
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
const queryString = window.location.search;
|
||||||
|
const urlParams = new URLSearchParams(queryString);
|
||||||
|
const comment_remove = urlParams.get('comment-id');
|
||||||
|
console.log(comment_remove);
|
||||||
|
|
||||||
window.comment_get_replies = function (id, parrent_none) {
|
window.comment_get_replies = function (id, parrent_none) {
|
||||||
var $comment_show_btn = $("#comment-" + id + " .show_more_reply");
|
var $comment_show_btn = $("#comment-" + id + " .show_more_reply");
|
||||||
|
@ -145,7 +149,7 @@
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
window.comment_show_more = function (id, parrent_none, offset) {
|
window.comment_show_more = function (id, parrent_none, offset, comment_remove) {
|
||||||
console.log(parrent_none)
|
console.log(parrent_none)
|
||||||
if (parrent_none == 1) {
|
if (parrent_none == 1) {
|
||||||
var $comment_show_btn = $("#comment-0" + " .show_more_comment");
|
var $comment_show_btn = $("#comment-0" + " .show_more_comment");
|
||||||
|
@ -158,10 +162,10 @@
|
||||||
var $comment = $("#comment-" + id + "-children");
|
var $comment = $("#comment-" + id + "-children");
|
||||||
$comment.append("<p class='loading'> Loading... </p>");
|
$comment.append("<p class='loading'> Loading... </p>");
|
||||||
}
|
}
|
||||||
ajax_comment_show_more('{{ url('comment_show_more') }}', id, parrent_none, offset);
|
ajax_comment_show_more('{{ url('comment_show_more') }}', id, parrent_none, offset, comment_remove);
|
||||||
}
|
}
|
||||||
|
|
||||||
function ajax_comment_show_more(url, id, parrent_none, offset) {
|
function ajax_comment_show_more(url, id, parrent_none, offset, comment_remove) {
|
||||||
return $.ajax({
|
return $.ajax({
|
||||||
url: url,
|
url: url,
|
||||||
type: 'GET',
|
type: 'GET',
|
||||||
|
@ -169,6 +173,7 @@
|
||||||
id: id,
|
id: id,
|
||||||
parrent_none: parrent_none,
|
parrent_none: parrent_none,
|
||||||
offset: offset,
|
offset: offset,
|
||||||
|
comment_remove: comment_remove,
|
||||||
},
|
},
|
||||||
success: function(data) {
|
success: function(data) {
|
||||||
if (parrent_none == 1) {
|
if (parrent_none == 1) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue