Commit 80ac5e86ad9672725466dcb3339a9b43995eb4c6
1 parent
82e90bd1
Exists in
master
and in
5 other branches
Adding post answer deletion [Issue: #165]
Showing
5 changed files
with
47 additions
and
5 deletions
Show diff stats
forum/static/js/forum.js
| ... | ... | @@ -212,6 +212,11 @@ function delete_post(url, post) { |
| 212 | 212 | }); |
| 213 | 213 | } |
| 214 | 214 | |
| 215 | +/* | |
| 216 | +* | |
| 217 | +* Function to load answer post form and set the submit function | |
| 218 | +* | |
| 219 | +*/ | |
| 215 | 220 | function answer(id, url) { |
| 216 | 221 | $.ajax({ |
| 217 | 222 | url: url, |
| ... | ... | @@ -241,4 +246,28 @@ function answer(id, url) { |
| 241 | 246 | }); |
| 242 | 247 | |
| 243 | 248 | $("#post_"+id).find(".answer_post").show(); |
| 249 | +} | |
| 250 | + | |
| 251 | +/* | |
| 252 | +* | |
| 253 | +* Function to delete an answer | |
| 254 | +* | |
| 255 | +*/ | |
| 256 | +function delete_answer(url, answer, message) { | |
| 257 | + alertify.confirm(message, function(){ | |
| 258 | + var csrftoken = getCookie('csrftoken'); | |
| 259 | + | |
| 260 | + $.ajax({ | |
| 261 | + method: 'post', | |
| 262 | + beforeSend: function (request) { | |
| 263 | + request.setRequestHeader('X-CSRFToken', csrftoken); | |
| 264 | + }, | |
| 265 | + url: url, | |
| 266 | + success: function(data) { | |
| 267 | + alertify.alert('Amadeus', data, function(){ | |
| 268 | + $("#answer_"+answer).remove(); | |
| 269 | + }); | |
| 270 | + } | |
| 271 | + }); | |
| 272 | + }); | |
| 244 | 273 | } |
| 245 | 274 | \ No newline at end of file | ... | ... |
forum/templates/post_answers/post_answer_list.html
| ... | ... | @@ -2,7 +2,7 @@ |
| 2 | 2 | |
| 3 | 3 | {% if answers|length > 0 %} |
| 4 | 4 | {% for answer in answers %} |
| 5 | - <div id="answer_{{ answer_id }}" class="row" style="background-color: #e0e0e0"> | |
| 5 | + <div id="answer_{{ answer.id }}" class="row" style="background-color: #e0e0e0"> | |
| 6 | 6 | <div class="col-sm-12 col-xs-12"> |
| 7 | 7 | <h3 class="user-name"> |
| 8 | 8 | {{ answer.user }} |
| ... | ... | @@ -14,7 +14,7 @@ |
| 14 | 14 | </a> |
| 15 | 15 | <ul class="dropdown-menu" aria-labelledby="dropdownMenu1"> |
| 16 | 16 | <li><a href="javascript:void(0)"><i class="material-icons">create</i> {% trans 'Edit' %}</a></li> |
| 17 | - <li><a href="javascript:void(0)"><i class="material-icons">delete_sweep</i> {% trans 'Remove' %}</a></li> | |
| 17 | + <li><a href="javascript:delete_answer('{% url 'course:forum:delete_answer' answer.id %}', '{{ answer.id }}', '{% trans "Are you sure you want to delete this answer?" %}')"><i class="material-icons">delete_sweep</i> {% trans 'Remove' %}</a></li> | |
| 18 | 18 | </ul> |
| 19 | 19 | </div> |
| 20 | 20 | </div> | ... | ... |
forum/templates/post_answers/post_answer_render.html
| 1 | 1 | {% load i18n permission_tags %} |
| 2 | 2 | |
| 3 | -<div id="answer_{{ answer_id }}" class="row" style="background-color: #e0e0e0"> | |
| 3 | +<div id="answer_{{ answer.id }}" class="row" style="background-color: #e0e0e0"> | |
| 4 | 4 | <div class="col-sm-12 col-xs-12"> |
| 5 | 5 | <h3 class="user-name"> |
| 6 | 6 | {{ answer.user }} |
| ... | ... | @@ -12,7 +12,7 @@ |
| 12 | 12 | </a> |
| 13 | 13 | <ul class="dropdown-menu" aria-labelledby="dropdownMenu1"> |
| 14 | 14 | <li><a href="javascript:void(0)"><i class="material-icons">create</i> {% trans 'Edit' %}</a></li> |
| 15 | - <li><a href="javascript:void(0)"><i class="material-icons">delete_sweep</i> {% trans 'Remove' %}</a></li> | |
| 15 | + <li><a href="javascript:delete_answer('{% url 'course:forum:delete_answer' answer.id %}', '{{ answer.id }}', '{% trans "Are you sure you want to delete this answer?" %}')"><i class="material-icons">delete_sweep</i> {% trans 'Remove' %}</a></li> | |
| 16 | 16 | </ul> |
| 17 | 17 | </div> |
| 18 | 18 | </div> | ... | ... |
forum/urls.py
| ... | ... | @@ -19,5 +19,7 @@ urlpatterns = [ |
| 19 | 19 | url(r'^post_answers/$', views.PostAnswerIndex.as_view(), name='post_answers'), |
| 20 | 20 | url(r'^reply_post/$', views.CreatePostAnswerView.as_view(), name='reply_post'), |
| 21 | 21 | url(r'^render_post_answer/([\w_-]+)/$', views.render_post_answer, name='render_post_answer'), |
| 22 | + url(r'^delete_post_answer/(?P<pk>[\w_-]+)/$', views.PostAnswerDeleteView.as_view(), name='delete_answer'), | |
| 23 | + url(r'^post_answer_deleted/$', views.answer_deleted, name='deleted_answer'), | |
| 22 | 24 | url(r'^(?P<slug>[\w_-]+)/$', views.ForumDetailView.as_view(), name='view'), |
| 23 | 25 | ] | ... | ... |
forum/views.py
| ... | ... | @@ -208,4 +208,15 @@ def render_post_answer(request, answer): |
| 208 | 208 | context = {} |
| 209 | 209 | context['answer'] = last_answer |
| 210 | 210 | |
| 211 | - return render(request, "post_answers/post_answer_render.html", context) | |
| 212 | 211 | \ No newline at end of file |
| 212 | + return render(request, "post_answers/post_answer_render.html", context) | |
| 213 | + | |
| 214 | +class PostAnswerDeleteView(LoginRequiredMixin, generic.DeleteView): | |
| 215 | + login_url = reverse_lazy("core:home") | |
| 216 | + redirect_field_name = 'next' | |
| 217 | + | |
| 218 | + model = PostAnswer | |
| 219 | + pk_url_kwarg = 'pk' | |
| 220 | + success_url = reverse_lazy('course:forum:deleted_answer') | |
| 221 | + | |
| 222 | +def answer_deleted(request): | |
| 223 | + return HttpResponse(_("Post answer deleted successfully.")) | |
| 213 | 224 | \ No newline at end of file | ... | ... |