From 4150ca70f93d281a94023a3bb0831812c4d8fc48 Mon Sep 17 00:00:00 2001 From: James Campos Date: Sun, 10 Jun 2012 15:07:12 -0700 Subject: [PATCH] ajax delete --- 4chan_x.user.js | 40 ++++++++++++++++++++++++++++++++++++++-- script.coffee | 36 ++++++++++++++++++++++++++++++++++-- 2 files changed, 72 insertions(+), 4 deletions(-) diff --git a/4chan_x.user.js b/4chan_x.user.js index 358c9650c..285785f74 100644 --- a/4chan_x.user.js +++ b/4chan_x.user.js @@ -3435,8 +3435,44 @@ return $.on(a, 'click', DeleteButton["delete"]); }, "delete": function() { - $.x('preceding-sibling::input', this).checked = true; - return $.id('delPassword').nextElementSibling.click(); + var data, id, m, pwd; + if (m = d.cookie.match(/4chan_pass=([^;]+)/)) { + pwd = decodeURIComponent(m[1]); + } else { + this.textContent = 'Error: no password found'; + return; + } + DeleteButton.el = this; + $.off(this, 'click', DeleteButton["delete"]); + this.textContent = 'Deleting...'; + id = $.x('preceding-sibling::input', this).name; + data = new FormData(); + data.append(id, 'delete'); + data.append('mode', 'usrdel'); + return $.ajax("https://sys.4chan.org/" + g.BOARD + "/imgboard.php", { + onload: DeleteButton.load, + onerror: DeleteButton.error + }, { + type: 'post', + form: data, + pwd: pwd + }); + }, + load: function() { + var doc, msg, tc; + doc = d.implementation.createHTMLDocument(''); + doc.documentElement.innerHTML = this.response; + if (doc.title === '4chan - Banned') { + tc = 'Banned!'; + } else if (msg = doc.getElementById('errmsg')) { + tc = msg.textContent; + } else { + tc = 'Deleted'; + } + return DeleteButton.el.textContent = tc; + }, + error: function() { + return DeleteButton.el.textContent = 'Error'; } }; diff --git a/script.coffee b/script.coffee index a537e5f78..3b42631c2 100644 --- a/script.coffee +++ b/script.coffee @@ -2619,8 +2619,40 @@ DeleteButton = $.add $('.postInfo', post.el), a $.on a, 'click', DeleteButton.delete delete: -> - $.x('preceding-sibling::input', @).checked = true - $.id('delPassword').nextElementSibling.click() + if m = d.cookie.match(/4chan_pass=([^;]+)/) + pwd = decodeURIComponent m[1] + else + @textContent = 'Error: no password found' + return + + DeleteButton.el = @ + $.off @, 'click', DeleteButton.delete + @textContent = 'Deleting...' + + id = $.x('preceding-sibling::input', @).name + data = new FormData() + data.append id, 'delete' + data.append 'mode', 'usrdel' + $.ajax "https://sys.4chan.org/#{g.BOARD}/imgboard.php", { + onload: DeleteButton.load + onerror: DeleteButton.error + }, { + type: 'post' + form: data + pwd: pwd + } + load: -> + doc = d.implementation.createHTMLDocument '' + doc.documentElement.innerHTML = @response + if doc.title is '4chan - Banned' # Ban/warn check + tc = 'Banned!' + else if msg = doc.getElementById 'errmsg' # error! + tc = msg.textContent + else + tc = 'Deleted' + DeleteButton.el.textContent = tc + error: -> + DeleteButton.el.textContent = 'Error' ReportButton = init: ->