Greasy Fork is available in English.
Add features to enhance comments on GeenStijl & Powned & Dumpert & more.
// ==UserScript==// @name GeenStijl & Powned & Dumpert Comment Enhancer// @namespace https://github.com/jerone/UserScripts// @description Add features to enhance comments on GeenStijl & Powned & Dumpert & more.// @author jerone// @copyright 2014+, jerone (https://github.com/jerone)// @license CC-BY-NC-SA-4.0; https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode// @license GPL-3.0-or-later; http://www.gnu.org/licenses/gpl-3.0.txt// @homepage https://github.com/jerone/UserScripts/tree/master/GeenStijl_Powned_Dumpert_Comment_Enhancer// @homepageURL https://github.com/jerone/UserScripts/tree/master/GeenStijl_Powned_Dumpert_Comment_Enhancer// @supportURL https://github.com/jerone/UserScripts/issues// @contributionURL https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=VCYMHWQ7ZMBKW// @include http*://*geenstijl.nl/mt/archieven/*// @include http*://*geenstijl.tv/*// @include http*://*powned.tv/nieuws/*// @include http*://*dumpert.nl/mediabase/*// @include http*://*daskapital.nl/*// @include http*://*glamora.ma/*// @version 2.0// @grant none// ==/UserScript==// cSpell:ignore Dumpert, dumpert, geenstijl, powned, daskapital, glamora, perma/* eslint security/detect-object-injection: "off" */(function () {function proxy(fn) {return function () {var that = this;return function (e) {var args = that.slice(0); // clone;args.unshift(e); // prepend event;fn.apply(this, args);};}.call([].slice.call(arguments, 1));}function wait(condition, next) {var loop = window.setInterval(function () {if (condition() === true) {window.clearInterval(loop);next();}}, 100);}String.format = function (string) {var args = Array.prototype.slice.call(arguments, 1, arguments.length);return string.replace(/{(\d+)}/g, function (match, number) {return typeof args[number] !== "undefined" ? args[number] : match;});};var replyImgScr ="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAA###s+9AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABcSURBVChTjZBbDsAgCATl2PDFzW236RjqI+kmSsBxQS0i+q2GzKzVfBy8oOCj3L03bRIROjNHbQGBgRQx+TgC6ALQEawtGeNpzWNwETjD2xlVrGtp/et7ZpddfgEnfhsfVr//KQAAAABJRU5ErkJgggA=";var permaImgScr ="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAIAAAACUFjqAAAABGdBTUEAAK/INwWK6QAAAAlwSFlzAAAOwwAADsMBx2+oZAAAABZ0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMDvo9WkAAABfSURBVChTXY9BEsAgCAP7bMqpL4euDaJ2D0xMzKDXvWFmpSYjzsyIYP4YMQ2y7+rRrlhKh2ci091XDH1DJnPtlgsIetpYsTImmoxHVLuVMsHxaDf7D+tpQr/CAjnu/gJVo8cY6M1GEAAAAABJRU5ErkJggg==";var commentsList = document.getElementById("comments");if (commentsList) {wait(function () {return (commentsList.querySelectorAll("article .nsb,.comment .nsb").length > 0);},function () {Array.forEach(commentsList.querySelectorAll("article,.comment"),function (comment) {var footer = comment.querySelector("footer,.footer");if (comment.id) {var perma = document.createElement("a");perma.classList.add("nsb");perma.setAttribute("href",String.format("#{0}", comment.id),);perma.setAttribute("title",String.format("Permalink #{0}", comment.id),);perma.style.backgroundImage = String.format("url('{0}')",permaImgScr,);perma.style.backgroundPosition = "center center";perma.style.marginRight = "4px";if (/https?:\/\/www\.powned\.tv\/nieuws\/.*/.test(location.href,)) {// add missing css;perma.style.cursor = "pointer";perma.style.cssFloat = "right";perma.style.height = perma.style.width = "10px";}footer.appendChild(perma);}var textArea = document.getElementById("text");if (textArea) {var reply = document.createElement("span");reply.classList.add("nsb");reply.setAttribute("title", "Beantwoorden");reply.style.backgroundImage = String.format("url('{0}')",replyImgScr,);reply.style.backgroundPosition = "center center";reply.style.marginRight = "4px";if (/https?:\/\/www\.powned\.tv\/nieuws\/.*/.test(location.href,)) {// add missing css;reply.style.cursor = "pointer";reply.style.cssFloat = "right";reply.style.height = reply.style.width = "10px";}reply.addEventListener("click",proxy(function () {textArea.value += String.format("@{0}\n",Array.map(this.childNodes,function (node) {return node.nodeType === 3? node.textContent.trim(): "";},).join(" ").trim().replace(/\s{2,}/, " ").replace(/\s?\|\s?$/g, ""),);textArea.focus();textArea.scrollIntoView();}).bind(footer),);footer.appendChild(reply);}},);},);}})();