您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Beautify that forum
// ==UserScript== // @name Dashboard forum // @version 2.4 // @description Beautify that forum // @author A Meaty Alt // @match https://fairview.deadfrontier.com/onlinezombiemmo/index.php?action=forum // @grant none // @namespace https://greasyfork.org/users/150647 // ==/UserScript== (function() { ////////////////////////////////////////// //Workaround for credit shop ads ////////////////////////////////////////// $("#fancybox-wrap").remove(); $("#fancybox-overlay").remove(); ////////////////////////////////////////// //WRAPPER ////////////////////////////////////////// function getItemsFromForum(){ var rows = $(".row111").first().parent().parent()[0].children; var items = []; var categories = ["News", "Talk", "Trade and Services", "Off Topic", "Information", "In Character", "Other", "Gold Member Area"]; var title; function isCategory(text){ for(var j=0; j<categories.length; j++){ if(text == categories[j]){ return true; } } return false; } for(var i=1; i<rows.length; i++){ var text = rows[i].textContent.trim(); if(isCategory(text)){ title = document.createElement("div"); title.classList.add("holder"); title.style.height = "auto"; var inner = document.createElement("div"); inner.classList.add("title"); inner.innerHTML = text; title.appendChild(inner); if(title){ items.push(title); } } else{ var content = document.createElement("div"); content.classList.add("content"); var postA = rows[i].children[4].children[0].children[2]; postA.innerHTML = postA.title; rows[i].children[4].children[0].children[2] = postA; content.innerHTML = rows[i].outerHTML; title.appendChild(content); } } return items; } var items = getItemsFromForum(); var body = $("table")[16]; body.innerHTML = ""; var head = document.getElementsByTagName("head")[0]; var wrapper = document.createElement("div"); wrapper.classList.add("grid-stack"); wrapper.classList.add("grid-stack-3"); var loading = document.createElement("img"); loading.id = "loading_gif"; loading.src = "https://m.popkey.co/163fce/Llgbv_s-200x150.gif"; body.appendChild(loading); body.appendChild(wrapper); ////////////////////////////////////////// //STYLES ////////////////////////////////////////// var st1 = document.createElement("link"); st1.rel = "stylesheet"; st1.href = "https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"; var gridstackCss = document.createElement("link"); gridstackCss.rel = "stylesheet"; gridstackCss.href = "https://cdn.rawgit.com/gridstack/gridstack.js/74b1875a/dist/gridstack.css"; var gridstackExtraCss = document.createElement("link"); gridstackExtraCss.rel = "stylesheet"; gridstackExtraCss.href = "https://cdn.rawgit.com/gridstack/gridstack.js/74b1875a/dist/gridstack-extra.css"; var style = document.createElement("style"); style.innerHTML = ".grid-stack-item{height: auto; position: relative; text-align: center; overflow: hidden; background-color: #303030; border-style: outset; border-color: #701724;}"; style.innerHTML += ".title{border-bottom-style: outset; border-color: #701724; font-size: large; color: #AF9B6D;}"; style.innerHTML += ".ui-draggable-handle{height: 20px; cursor: all-scroll}"; style.innerHTML += "body{background: black !important;}"; style.innerHTML += "#loading_gif {display: block; margin: auto;}"; head.appendChild(style); head.appendChild(st1); head.appendChild(gridstackCss); head.appendChild(gridstackExtraCss); ////////////////////////////////////////// //SCRIPTS ////////////////////////////////////////// var scriptURLs = ["https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js", "https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.0/jquery-ui.js", "https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js", "https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.5.0/lodash.min.js", "https://cdn.rawgit.com/gridstack/gridstack.js/74b1875a/dist/gridstack.js", "https://cdn.rawgit.com/gridstack/gridstack.js/74b1875a/dist/gridstack.jQueryUI.js"]; appendScript(0).then(dashboardState); function appendScript(i){ return new Promise((resolve) => { if(i >= scriptURLs.length){ initializeDashboard(); resolve(); } else{ $.get(scriptURLs[i], (response) => { var script = document.createElement('script'); script.text = response; head.appendChild(script); appendScript(i+1).then(() => {resolve();}); }); } }); } function initializeDashboard() { $("#loading_gif").remove(); var options = { width: 3, }; $('.grid-stack').gridstack(options); var itemsSettings = loadDashboardState(); function loadDashboardState(){ var settings = []; var storage = JSON.parse(localStorage.getItem("dashboardState")); if(storage) return storage; return settings; } if(itemsSettings.length === 0) { var first = true; var height = 0; for (var i=0; i<items.length; i++){ var settings = {}; settings.x = first? 0:1; settings.y = height; settings.width = 1; settings.height = items[i].children.length+2; itemsSettings.push(settings); first = !first; height += settings.height; } } $('.grid-stack').each(function () { var grid = $(this).data('gridstack'); _.each(itemsSettings, function (node, i) { grid.addWidget($('<div><div class="grid-stack-item-content" />'+items[i].outerHTML+'<div/>'), node.x, node.y, node.width, node.height); }, this); }); } ////////////////////////////////////////// //Save dashboard state ////////////////////////////////////////// function dashboardState(){ var dst = $(".gensmall")[1]; var save = document.createElement("input"); save.type = "button"; save.value = "Save changes"; save.style.float = "right"; var saveMsg = document.createElement("div"); saveMsg.innerHTML = "Changes were saved!"; saveMsg.id = "save_msg"; saveMsg.style.display = "none"; $(save).on("click", function(){ var serializedData = _.map($('.grid-stack > .grid-stack-item:visible'), function (el) { el = $(el); var node = el.data('_gridstack_node'); return { x: node.x, y: node.y, width: node.width, height: node.height }; }, this); localStorage.setItem("dashboardState", JSON.stringify(serializedData)); $("#save_msg").animate({opacity: 'toggle'}, 800); setTimeout(() => $("#save_msg").animate({opacity: 'toggle'}, 800), 1000); }); dst.appendChild(save); dst.appendChild(saveMsg); } })();