您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Add profile and beta links in Waze forum
当前为
// ==UserScript== // @name Waze Forum links // @namespace https://github.com/WazeDev/ // @version 1.1.1 // @description Add profile and beta links in Waze forum // @author WazeDev // @contributor crazycaveman // @include https://www.waze.com/forum/ // @include /^https:\/\/.*\.waze\.com\/forum\/(?!ucp\.php(?!\?i=(pm|166))).*/ // @grant none // @noframes // ==/UserScript== /* global $ */ (function () { 'use strict'; var settings = {}; var settingsKey = 'WFL_settings'; var cl = { e: 1, error: 1, w: 2, warn: 2, i: 3, info: 3, d: 4, debug: 4, l: 0, log: 0, }; function log(message, level = 0) { switch (level) { case 1: case 'error': console.error('WFL: ', message); break; case 2: case 'warn': console.warn('WFL: ', message); break; case 3: case 'info': console.info('WFL: ', message); break; case 4: case 'debug': console.debug('WFL: ', message); break; default: console.log('WFL: ', message); } } function saveSettings() { if (!localStorage) { return; } localStorage.setItem(settingsKey, JSON.stringify(settings)); } function loadSettings() { let defaults = { beta: { value: false, updated: 0 }, }; if (!localStorage) { return; } if (Object.prototype.hasOwnProperty.call(localStorage, settingsKey)) { settings = JSON.parse(localStorage.getItem(settingsKey)); } else { settings = defaults; } Object.keys(defaults).forEach((prop) => { if (Object.prototype.hasOwnProperty.call(defaults, prop) && !Object.prototype.hasOwnProperty.call(settings, prop)) { settings[prop] = defaults[prop]; } }); } function betaLinks() { log('Adding beta links', cl.i); let links = $("div.content a[href*='/editor']").filter((i, elem) => $(elem).attr('href').match(/^https:\/\/www\.waze\.com\/(?!user\/)(.{2,6}\/)?editor/)); links.each((i, elem) => { let url = $(elem).attr('href'); let WMEbURL = url.replace('www.', 'beta.'); let WMEbAnchor = ` (<a target="_blank" class="postlink" href="${WMEbURL}">β</a>)`; $(elem).after(WMEbAnchor); }); } function checkBetaUser() { let betaUser = false; let d = new Date(); if (settings.beta.value) { log('Beta status stored', cl.d); betaLinks(); } else if (parseInt(settings.beta.updated, 10) + 7 < parseInt(d.getFullYear() + (`0${d.getMonth()}`).slice(-2) + (`0${d.getDate()}`).slice(-2), 10)) { let ifrm = $('<iframe>').attr('id', 'WUP_frame').hide(); ifrm.load((event) => { // What to do once the iframe has loaded log('iframe loaded', cl.d); let memberships = $(event.currentTarget).contents().find('form#ucp div.inner:first ul.cplist a.forumtitle'); memberships.each(() => { let group = $(event.currentTarget).text(); log(group, cl.d); if (group === 'WME beta testers') { betaUser = true; betaLinks(); return false; //Force end of each callback } return true; }); log(`isBetaUser: ${betaUser}`, cl.d); settings.beta = { value: betaUser, updated: d.getFullYear() + (`0${d.getMonth()}`).slice(-2) + (`0${d.getDate()}`).slice(-2), }; //$(this).remove(); //Remove frame saveSettings(); }); ifrm.attr('src', 'ucp.php?i=groups'); $('body').append(ifrm); } } function WMEProfiles() { log('Adding editor profile links', cl.i); let links = $("dl.postprofile dt a[href*='memberlist.php']"); //Post authors if (links.length === 0) { links = $("li.row a[href*='memberlist.php']"); //Topic lists } if (links.length === 0) { links = $("table.table1 tbody a[href*='memberlist.php']"); //Group member lists } if (links.length === 0) { links = $('dl.details dd:first span'); //Single user forum profile } links.each((i, elem) => { let username = $(elem).text(); let profileURL = ` (<a target="_blank" href="https://www.waze.com/user/editor/${username}">profile</a>)`; $(elem).after(profileURL); }); } function main() { if (!($ && document.readyState === 'complete')) { log('Document not ready, waiting', cl.d); setTimeout(main, 500); return; } console.group('WMEFL'); log('Loading', cl.i); loadSettings(); WMEProfiles(); checkBetaUser(); log('Done', cl.i); console.groupEnd('WMEFL'); } setTimeout(main, 500); }());