From b81032556cc1acd245edcff9b0ae646334daba53 Mon Sep 17 00:00:00 2001 From: schneefux Date: Thu, 2 Jun 2016 20:19:07 +0200 Subject: ajaxify reports, unvotes; allow undelete --- templates/index.html | 83 +++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 60 insertions(+), 23 deletions(-) (limited to 'templates') diff --git a/templates/index.html b/templates/index.html index d04f471..516f622 100644 --- a/templates/index.html +++ b/templates/index.html @@ -30,22 +30,18 @@
-
{% if joke.mine %}
- +
{% endif %} @@ -85,32 +81,73 @@ $(document).ready(function() { $('.upvotebtn').click(function(e) { submitAjaxer.call(this, e, 'upvote'); }); $('.downvotebtn').click(function(e) { submitAjaxer.call(this, e, 'downvote'); }); + $('.reportbtn').click(function(e) { submitAjaxer.call(this, e, 'report'); }); + $('.deletebtn').click(function(e) { submitAjaxer.call(this, e, 'delete'); }); function submitAjaxer(e, type) { e.preventDefault(); var form = $(this).closest('form'); - var joke = $(this).closest('.joke'); + var container = $(this).closest('div.row'); + var data; + if (type == 'upvote' || type == 'downvote') { + senddata = form.serialize() + '&vote=' + type; + } else { + senddata = form.serialize(); + } $.ajax({ url: form.attr('action'), type: "POST", - data: form.serialize() + '&vote=' + type, + data: senddata, success: function(data) { - var upvotebtn = $('.upvotebtn .btnval', form).first(); - var downvotebtn = $('.downvotebtn .btnval', form).first(); - var upvotes = parseInt(upvotebtn.data('original')); - var downvotes = parseInt(downvotebtn.data('original')); - upvotebtn.text(); - downvotebtn.text(downvotebtn.data('original')); - upvotebtn.parent().removeClass('disabled'); - downvotebtn.parent().removeClass('disabled'); - upvotebtn.text(upvotes); - downvotebtn.text(downvotes); + if (type == 'delete') { + var deletebtn = $('.deletebtn', container); + var id = deletebtn.data('id'); + var undobtn = $(''); + undobtn.click(function() { + $.ajax({ + url: form.attr('action').replace(/\/delete$/, '/undelete'), + type: "POST", + data: senddata, + success: function() { + window.location.reload(false); // TODO rebuild DOM + } + }) + }); + container.html(undobtn); + return; + } + + var upvotebtn = $('.upvotebtn', container); + var downvotebtn = $('.downvotebtn', container); + var reportbtn = $('.reportbtn', container); + var upvotes = parseInt($('.btnval', upvotebtn).data('original')); + var downvotes = parseInt($('.btnval', downvotebtn).data('original')); + var reports = parseInt($('.btnval', reportbtn).data('original')); + $('.btnval', upvotebtn).text(upvotes); + $('.btnval', downvotebtn).text(downvotes); + $('.btnval', reportbtn).text(reports); + + upvotebtn.removeClass('disabled'); + upvotebtn.removeClass('btn-flat'); + upvotebtn.addClass('btn'); + downvotebtn.removeClass('disabled'); + downvotebtn.removeClass('btn-flat'); + downvotebtn.addClass('btn'); + reportbtn.removeClass('disabled'); + if (type == "upvote") { - upvotebtn.text(upvotes+1); - upvotebtn.parent().addClass('disabled'); + $('.btnval', upvotebtn).text(upvotes+1); + upvotebtn.addClass('disabled'); } else if (type == "downvote") { - downvotebtn.text(downvotes+1); - downvotebtn.parent().addClass('disabled'); + $('.btnval', downvotebtn).text(downvotes+1); + downvotebtn.addClass('disabled'); + } else if (type == "report") { + $('.btnval', reportbtn).text(reports+1); + reportbtn.addClass('disabled'); + downvotebtn.addClass('btn-flat'); + downvotebtn.removeClass('btn'); + upvotebtn.addClass('btn-flat'); + upvotebtn.removeClass('btn'); } } }); -- cgit v1.3.1