您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Hide deleted VM on your profile page.
当前为
// ==UserScript== // @name Kaskus - Hide Deleted VM // @id kaskus.vm@loucypher // @namespace http://userscripts.org/users/12 // @description Hide deleted VM on your profile page. // @version 1.20140219123729 // @author LouCypher // @license WTFPL // @icon http://loucypher.github.io/userscripts/kaskus/kaskus-48.png // @icon64URL http://loucypher.github.io/userscripts/kaskus/kaskus-64.png // @contributionURL http://loucypher.github.io/userscripts/donate.html?Kaskus+-+Hide+Deleted+VM // @homepageURL https://userscripts.org/scripts/show/162010 // @supportURL https://userscripts.org/scripts/discuss/162010 // @resource CSS https://raw.github.com/LouCypher/userscripts/master/kaskus/moderated-vm-fix.css // @resource CHANGELOG https://raw.github.com/LouCypher/userscripts/master/kaskus/kaskus-hide-deleted-vm.CHANGELOG.txt // @resource LICENSE https://raw.github.com/LouCypher/userscripts/master/licenses/WTFPL/LICENSE.txt // @include /^https?:\/\/www\.kaskus\.co\.id\/profile\/[0-9]+\/?$/ // @include /^https?:\/\/www\.kaskus\.co\.id\/profile\/?$/ // @run-at document-start // @grant unsafeWindow // @grant GM_getValue // @grant GM_setValue // @grant GM_addStyle // @grant GM_getResourceText // @grant GM_log // ==/UserScript== /* This program is free software. It comes without any warranty, to * the extent permitted by applicable law. You can redistribute it * and/or modify it under the terms of the Do What The Fuck You Want * To Public License, Version 2, as published by Sam Hocevar. See * http://www.wtfpl.net/ for more details. */ var log = (typeof GM_info == "object") ? "" : "\n"; start(isMyProfile(getUserId())); // Start if current page is user's profile page // Get user's numeric id from cookie if user is logged in function getUserId() { var userid = ""; document.cookie.split(";").forEach(function(cookie) { if (/userid/.test(cookie)) { userid = cookie.match(/\d+/).toString(); } }) log += "* You" + (userid ? " have" : "'re NOT") + " logged in."; return userid; } // Check if current page is user's profile page function isMyProfile(aUserId) { var mine = false; if ((location.href.match(/\d+/) == aUserId) || (/\/profile\/?$/.test(location.pathname))) { mine = true; } if (aUserId) { log += "\n* This is" + (mine ? " " : " NOT ") + "your profile page."; } return mine; } // Run on startup if argument is true function start(aOK) { if (aOK) { window.addEventListener("afterscriptexecute", process, true); document.addEventListener("DOMContentLoaded", contentLoad, false); } log += "\n* The userscript is" + (aOK ? " " : " NOT ") + "running.\n"; GM_getValue("debug", false) && GM_log(log); GM_setValue("debug", GM_getValue("debug", false)); } // Run after each script is executed function process(aEvent) { if (/profile.js$/.test(aEvent.target.src)) { window.removeEventListener(aEvent.type, arguments.callee, true); unsafeWindow.hideDeleted = true; // 'hideDeleted' is variable that // will be used by 'Show/Hide' button var $ = unsafeWindow.$; // Override 'getVM' function unsafeWindow.getVM = function getVM(b) { b && $("#do-see-more-updates").remove(); var profile = $("#profile-content"); profile.append('<div class="item" style="text-align:center"' + ' id="ajax_loader_html"><img src="http://kkcdn' + '-static.kaskus.co.id/img/ajax-loader.gif"/></div>'); $.getJSON("/profile/stream_activity_vm/all/" + (b ? b : "0") + "/" + $("#userid").val(), function(c) { $("#ajax_loader_html").remove(""); $.each(c.stream_activity, function(e, f) { var deleted = /deleted\-vm/.test(f.content); var hideDeleted = unsafeWindow.hideDeleted; var html = '<div class="item' + (deleted ? ' deleted' : '') + (deleted && hideDeleted ? ' hide' : '') + '" id="vm_' + f.vmid + '"><div class="item-content">' + '<a href="#vm_' + f.vmid + '" class="entry-head">' + '<i class="icon-star"></i></a>' + f.profilepic + '<div class="message"><div class="vcard">' + f.username + f.date + '</div>' + f.content + '</div></div>'; if (f.button_action != "") { html += '<div class="m-meta">' + f.button_action + "</div>" } html += "</div>"; profile.append(html); if (c.stream_activity.length - 1 == e && f.username != "") { profile.append('<div class="load-more"><a href="javascript:void(0);' + '" id="do-see-more-updates" onclick="getVM(\'' + c.oldest_id + '\'); return false;" class="button' + ' small white">Load More updates</a></div>') } }) }) } // Override 'moderate_vm' function unsafeWindow.moderate_vm = function moderate_vm(a, c) { $.get("/visitormessage/moderate/" + a + "/" + c, function(d) { if (c == "delete") { $("#vm_" + a + " .m-meta").html('<a href="javascript:void(0);"' + ' onclick="moderate_vm(' + a + ',\'undelete\');return false;"' + ' class="delete"><i class="icon-' + 'trash"></i>Undelete</a>') $("#vm_" + a).addClass("deleted"); $("#vm_" + a + " .message").addClass("deleted-vm"); // paint it red unsafeWindow.hideDeleted && $("#vm_" + a).addClass("hide"); // hide } else { // undelete $("#vm_" + a).html(d); $("#vm_" + a).removeClass("deleted hide"); // unhide } }) } } } // Run at DOMContentLoaded function contentLoad() { // Scriptish doesn't add styles at document-start so we put it here GM_addStyle(GM_getResourceText("CSS")); if (!("$" in unsafeWindow)) { var msg = "JavaScript must be enabled for Kaskus - Hide Deleted VM " + "userscript to work.\nIf you have NoScript extension, " + "you must allow `googleapis.com`, `kaskus.com` and\n" + "`kaskus.co.id` from NoScript menu."; alert(msg); throw new Error(msg); } var $ = unsafeWindow.$; // Add button to toggle show/hide deleted VM $("#say-what .act input").after('<input type="button"' + ' value="Show deleted VM"' + ' class="button small white"' + ' style="float:left"/>'); // Button action $("#say-what .act input[type='button']").click(function(e) { if ($(".deleted").hasClass("hide")) { e.target.value = e.target.value.replace(/^Show/, "Hide"); $(".deleted").removeClass("hide"); unsafeWindow.hideDeleted = false; } else { e.target.value = e.target.value.replace(/^Hide/, "Show"); $(".deleted").addClass("hide"); unsafeWindow.hideDeleted = true; } }) }