From 8adb139d949034c9808a462fbbcd9aceb1fd80cc Mon Sep 17 00:00:00 2001 From: Thorsten S Date: Wed, 6 Sep 2017 17:02:40 +0200 Subject: [PATCH] major rewrite, use native js, adapt to new layout --- quickmod.user.js | 167 ++++++++++++++++++++++++----------------------- 1 file changed, 86 insertions(+), 81 deletions(-) diff --git a/quickmod.user.js b/quickmod.user.js index 120e46a..1835fcc 100644 --- a/quickmod.user.js +++ b/quickmod.user.js @@ -1,120 +1,125 @@ // ==UserScript== // @name debianforum.de-quickmod-additions // @namespace org.free.for.all -// @require http://code.jquery.com/jquery-latest.min.js // @include https://debianforum.de/forum/viewtopic.php.* // @author Thorsten Sperber -// @version 0.4 +// @version 1.0 // ==/UserScript== -_log = function(x) { - try { - console.log(x); - } catch(e) { - } -}; ARCHIVFORUMID = 35; boardurl = "/forum/"; -user_id = "18865"; - -function get_post_id(_this) { - return $(_this).closest('.post').attr('id').slice(1); -} +mod_user_id = "18865"; function get_thread_id() { - return window.location.search.match(/t=([0-9]+)/)[1]; + return document.querySelector('a[href*="t="').getAttribute('href').match(/t=([0-9]+)/)[1]; } + function get_forum_id() { - return window.location.search.match(/f=([0-9]+)/)[1]; -} -function get_session_id() { - return $("a[href*='?sid']:last").attr("href").match(/sid=([a-z0-9]+)/)[1]; + return document.querySelector('a[href*="f="').getAttribute('href').match(/f=([0-9]+)/)[1]; } -function removepost(event) { +// ##################### derp, should do this with less... - _log(event); - var post_id = get_post_id(event.currentTarget); - var thread_id = get_thread_id(); - - var url = boardurl + "mcp.php?&f=" + get_forum_id() + "&t=" + thread_id + "&i=main&mode=topic_view&action=split&start=0"; - var data = { - "action": "split_all", - "icon": "1", - "mcp_topic_submit": "Submit", - "post_id_list[]": post_id, - "posts_per_page": "10", - "sd": "a", - "sk": "t", - "st": "0", - "st_old": "0", - "subject": "[spam] " + $('.topic-title a').text(), - "to_forum_id": ARCHIVFORUMID, - "to_topic_id": "0", - }; - $.ajax( - { - type: 'POST', - url: url, - data: data, - dataType: "html", - error: function(a, b, c) { - _log(a, b, c); - }, - success: function(data, status) { - key = data.match(/confirm_key=([A-Z0-9]+)/)[1]; - _removepost(post_id, key); +function param(object) { + var encodedString = ''; + for (var prop in object) { + if (object.hasOwnProperty(prop)) { + if (encodedString.length > 0) { + encodedString += '&'; } + encodedString += encodeURI(prop + '=' + object[prop]); } - ); + } + return encodedString; +} + +// ##################### /derp +function remove_post_handler(event) { + var post_id = event.currentTarget.closest('.post').getAttribute('id').slice(1); + var thread_title = document.querySelector('.topic-title a').text; + send_mcp_request_archival(post_id, get_thread_id(), thread_title); } - function _removepost(post_id, confirm_key) { - var thread_id = get_thread_id(); - url = boardurl + "mcp.php?action=split&f=" + get_forum_id() + "&i=main&mode=topic_view&start=0&t=" + thread_id + "&confirm_key=" + confirm_key; - data = { + +function send_mcp_request_confirmation(confirm_key, sess, sid, post_id, thread_id, thread_title) { + var url = boardurl + "mcp.php?f=" + get_forum_id() + "&t=" + thread_id + "&i=main&mode=topic_view&action=split&start=0&confirm_key=" + confirm_key; + var data = { "action": "split_all", "confirm": "Ja", - "confirm_uid": user_id, + "confirm_uid": mod_user_id, "f": "0", "i": "main", "icon": "1", "mode": "topic_view", "post_id_list[0]": post_id, "redirect": "/", - "sess": get_session_id(), + "sess": sess, + "sid": sid, "start": "0", - "subject": "[spam] " + $('#page-body').find('h2').text(), + "subject": "[spam] " + thread_title, "t": thread_id, "to_forum_id": ARCHIVFORUMID }; + var req = new XMLHttpRequest(); + req.addEventListener("load", function() { + // hide it + document.querySelector('.post#p' + post_id).style.display = "none"; + }); + req.open('POST', url); + req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); + req.send(param(data)); +} - $.ajax( - { - type: 'POST', - url: url, - data: data, - dataType: "html", - success: function() { $('#p' + post_id).fadeToggle(); } - } - ); +function send_mcp_request_archival(post_id, thread_id, thread_title) { + var req = new XMLHttpRequest(); + req.addEventListener("load", function() { + // extract the confirmation ID, proceed + // console.log(this.responseText); + var confirm_key = this.responseText.match(/confirm_key=([A-Z0-9]+)/)[1]; + var sess = this.responseText.match(/name="sess" value="([a-z0-9]+)"/)[1]; + var sid = this.responseText.match(/name="sid" value="([a-z0-9]+)"/)[1]; + send_mcp_request_confirmation(confirm_key, sess, sid, post_id, thread_id, thread_title); + }); + var url = boardurl + "mcp.php?f=" + get_forum_id() + "&t=" + thread_id + "&i=main&mode=topic_view&action=split&start=0"; + var data = { + "action": "split_all", + "mcp_topic_submit": "Absenden", + "post_id_list[]": post_id, + "posts_per_page": "15", + "st": "0", + "sk": "t", + "sd": "a", + "icon": "1", + "subject": "[spam] " + thread_title, + "to_forum_id": ARCHIVFORUMID, + "to_topic_id": "0", + "st_old": "0", + "post_ids[0]": post_id + }; + req.open('POST', url); + req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); + req.send(param(data)); } -$(".postbody .profile-icons .droppost").off('click'); -li = $("
  • "); -li.html('weg damit'); -$(".postbody .profile-icons").prepend(li); -$('li.droppost a').on('click', removepost).css({ - "background": "linear-gradient(to bottom, #f7f7f7, #e3e3e3) repeat scroll 0 0 rgba(0, 0, 0, 0)", - "border": "1px solid #666", - "border-radius": "3px", - "color": "#d70751", - "font-weight": "bold", - "line-height": "11px", - "margin-top": "3px", - "padding": "1px 0 1px 2px" +function add_buttons() { + var postbuttons = document.querySelectorAll(".postbody .post-buttons"); + postbuttons.forEach(function(el) { + // well... + el.style.maxWidth = '41%'; + + var del_post_btn_outer = document.createElement('li'); + var del_post_btn = document.createElement('a'); + del_post_btn.className = 'button button-icon-only'; + del_post_btn.innerHTML = 'Abfall'; + + del_post_btn.addEventListener("click", remove_post_handler); + + del_post_btn_outer.append(del_post_btn); + el.insertBefore(del_post_btn_outer, el.querySelector('.dropdown-container')); + }); } -); + +add_buttons(); \ No newline at end of file -- 2.39.2