NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name OUJS-1 // @namespace https://openuserjs.org/users/Marti // @description Small changes to OUJS that may or may not make it upstream // @copyright 2016+, Marti Martz, (https://openuserjs.org/users/Marti) // @copyright 2014-2016, TimidScript // @copyright 2013+, OpenUserJS Group (https://github.com/OpenUserJs) // @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 // @version 3.0.1a.0 // @icon https://gravatar.com/avatar/7ff58eb098c23feafa72e0b4cd13f396?s=48 // @author Marti // @contributor jerone // @contributor sizzle // @contributor TimidScript // @homepageURL https://github.com/Martii/UserScripts/tree/master/src/oujs/OUJS-1 // @homepageURL https://openuserjs.org/scripts/Marti/OUJS-1 // @supportURL https://openuserjs.org/scripts/Marti/OUJS-1/issues // @updateURL https://openuserjs.org/meta/Marti/OUJS-1.meta.js // @downloadURL https://openuserjs.org/install/Marti/OUJS-1.user.js // @include https://openuserjs.org/* // @include http://openuserjs.org/* // @include http://localhost:8080/* // @match https://openuserjs.org/* // @match http://openuserjs.org/* // @match http://localhost:8080/* // @grant GM_getValue // @grant GM_setValue // @grant GM.getValue // @grant GM.setValue // @noframes // @require https://openuserjs.org/src/libs/sizzle/GM_config.js // ==/UserScript== /* jshint esversion: 5 */ /* globals GM_config: true, GM_configStruct */ (function() { 'use strict'; // Let the GC know to remove some preallocated memory GM_config = undefined; var gmc = new GM_configStruct(); // Find node on location of /user/preferences var hookNode = document.querySelector('.edit-authentication-box'); if (hookNode) { hookNode = hookNode.parentNode; } else { hookNode = document.body; } var prefNode = document.createElement('div'); hookNode = hookNode.appendChild(prefNode); gmc.init( { frame: hookNode, id: 'gmc', title: 'OUJS-1', fields: { 'showScriptListLineNumbers': { "type": 'checkbox', "label": 'Show script list line numbers', "default": false }, 'clipScriptListLineNumbers': { "type": 'checkbox', "label": 'Clip script list line numbers', "default": false }, 'borderImages': { "type": 'checkbox', "label": 'Border images', "default": false }, 'emphasizeTableHeaderSorts': { "type": 'checkbox', "label": 'More emphasis on sortBy with table headers', "default": false }, 'emphasizeCurrentUsername': { "type": 'checkbox', "label": 'More emphasis on current username', "default": false }, 'rememberCurrentUsername': { "type": 'checkbox', "label": 'Remember current username', "default": false }, 'currentUsername': { "type": 'hidden', "default": '' }, 'stickMainNav': { "type": 'checkbox', "label": 'Main navigation to sticky', "default": false } }, css: [ '#gmc { position: static !important; width: auto !important; height: auto !important; max-height: none !important; max-width: none !important; margin: 0 !important; border: none !important; margin-top: 20px !important; margin-bottom: 10px !important; }', '#gmc_header { text-align: left !important; font-family: "Squada One","Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 30px; font-weight: 500; line-height: 1.1; }', '#gmc .field_label { font-size: inherit; font-weight: inherit; line-height: inherit; margin-left: 5px; }', '#gmc_clipScriptListLineNumbers_var, #gmc_rememberCurrentUsername_var { margin-left: 1.4em !important; }', '#gmc_resetLink { display: none; }', '#gmc_closeBtn { display: none; }' ].join(''), events: { init: onInit, open: function (aDoc) { var saveNode = aDoc.querySelector('#gmc_saveBtn'); saveNode.classList.remove('saveclose_buttons'); saveNode.classList.add('btn'); saveNode.classList.add('btn-success'); } } } ); function onInit() { if (document.location.pathname === '/user/preferences') { gmc.open(); } if (gmc.get('showScriptListLineNumbers')) { var count = null; if (document.querySelector('.pagination')) { var req = new XMLHttpRequest(); req.responseType = 'document'; req.open('GET', '/?limit=1'); req.onreadystatechange = function () { if (this.readyState == this.DONE) { switch (this.status) { case 200: var doc = this.responseXML; var paginationNode = doc.querySelector('.pagination li:last-child'); count = parseInt(paginationNode.textContent); var limit = document.location.search.match(/limit\=(\d+)/); limit = limit ? parseInt(limit[1]) : 25; var page = document.location.search.match(/p\=(\d+)/); page = page ? parseInt(page[1]): 1; var nodes = document.querySelectorAll('.col-sm-8 table .tr-link'); count = nodes.length; for (var i = 0; i < count; ++i) { var nodeSpan = document.createElement('span'); nodeSpan.classList.add('badge'); if (gmc.get('clipScriptListLineNumbers')) { nodeSpan.textContent = (i + 1 + ((page - 1) * limit)) % 100; if (nodeSpan.textContent.length === 1) { nodeSpan.textContent = '0' + nodeSpan.textContent; } } else { nodeSpan.textContent = i + 1 + ((page - 1) * limit); } nodes[i].firstChild.nextSibling.insertBefore(nodeSpan, nodes[i].firstChild.nextSibling.firstChild); } break; } } }; req.send(); } else { var nodes = document.querySelectorAll('.col-sm-8 table .tr-link'); count = nodes.length; for (var i = 0; i < count; ++i) { var nodeSpan = document.createElement('span'); nodeSpan.classList.add('badge'); if (gmc.get('clipScriptListLineNumbers')) { nodeSpan.textContent = (i + 1) % 100; } else { nodeSpan.textContent = i + 1; } nodes[i].firstChild.nextSibling.insertBefore(nodeSpan, nodes[i].firstChild.nextSibling.firstChild); } } } if (gmc.get('borderImages')) { var nodeStyle = document.createElement('style'); nodeStyle.setAttribute("type", "text/css"); nodeStyle.textContent = '.user-content img, .topic-post-contents img { max-width: 98%; border: 1px solid blue; padding: 2px; color: yellow; margin: 5px 0; box-shadow: 5px 5px 2px #888; }'; document.head.appendChild(nodeStyle); } if (gmc.get('emphasizeTableHeaderSorts')) { var nodeStyle = document.createElement('style'); nodeStyle.setAttribute("type", "text/css"); nodeStyle.textContent = '.table th.active { background-color: rgba(44, 62, 80, 0.6) !important; } .table th.active a { color: white !important; }'; document.head.appendChild(nodeStyle); } if (gmc.get('emphasizeCurrentUsername')) { var nodeStyle = document.createElement('style'); nodeStyle.setAttribute("type", "text/css"); nodeStyle.textContent = '.label-primary a { color: white !important; }'; document.head.appendChild(nodeStyle); // Check for logged in var logoutNode = document.querySelector('.navbar-right li .fa-sign-out'); if (logoutNode) { var thatNode = document.querySelector('.navbar-right li:last-child'); var usernameNode = thatNode.previousSibling.previousSibling.firstChild; var username = usernameNode.textContent; gmc.set('currentUsername', gmc.get('rememberCurrentUsername') ? username : ''); gmc.save(); } else { if (gmc.get('rememberCurrentUsername')) { var username = gmc.get('currentUsername'); } } var ownerNodes = document.querySelectorAll('span.label'); for (var i = 0; i < ownerNodes.length; ++i) { if (ownerNodes[i].firstChild && ownerNodes[i].firstChild.textContent === username) { ownerNodes[i].classList.remove('label-info'); ownerNodes[i].classList.add('label-primary'); } } } if (gmc.get('stickMainNav')) { var nodeStyle = document.createElement('style'); nodeStyle.setAttribute("type", "text/css"); nodeStyle.textContent = '.sticky { position: sticky; top: 0; }'; document.head.appendChild(nodeStyle); var bodynavNode = document.querySelector('body nav'); if (bodynavNode) { bodynavNode.classList.add('sticky'); } } } })();