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 | ... | ... |