您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Add custom links to the sidebar
// ==UserScript== // @name GC - Custom Sidebar Links // @namespace https://greasyfork.org/users/319295 // @version 0.1.1 // @description Add custom links to the sidebar // @author wibreth // @icon https://www.google.com/s2/favicons?sz=64&domain=grundos.cafe // @match https://grundos.cafe/* // @match https://www.grundos.cafe/* // @grant GM_addStyle // @grant GM_setValue // @grant GM_getValue // ==/UserScript== (function() { 'use strict'; /* globals $:false */ GM_addStyle(`#custom div label { width: 380px; display: flex; align-items: baseline; justify-content: space-between; } #custom div input[type=text] { width: 300px; flex-grow: 0; } #custom div > div > div { border: 0; padding: 0; display: block; } .custom img { max-height: 35px; }`); function populateDropdown() { const linksList = GM_getValue('linkslist', []); $('#delete-links-select').empty(); $('#delete-links-select').append('<option selected value="-1">Delete a custom link</option>'); for (let i = 0; i < linksList.length; i++) { $('#delete-links-select').append(`<option value="${i}">${linksList[i].name}</option>`); } } function editSidebar() { const html = `<h2 class="arrow" id="custom-header" data-id="custom">Custom Links <span style="float:right">↓</span></h2> <div id="custom" class="sidebar_section" style="display: none;"> <label>View as text links? <input type="checkbox" id="custom-text" checked=""></label><br> <select id="delete-links-select" name="deletelinks"> </select> <input type="button" id="delete-links-btn" value="Delete"> <div style="display: flex; flex-direction: column"> <div> <div> <label>Name: <input type="text" id="custom-name" class="big-input mt-1" maxlength="100" value=""></label> <label>Image: <input type="text" id="custom-image" class="big-input mt-1" maxlength="250" value=""></label> <label>URL: <input type="text" id="custom-url" class="big-input mt-1" maxlength="250" value=""></label> </div> <input type="button" id="insert-link" value="Insert"> </div> </div> </div>` ; $('#sidebarcss').after(html); populateDropdown(); const textLinks = GM_getValue('linkstext', true); if (!textLinks) $('#custom-text').prop('checked', false) $('#delete-links-btn').click((e) => { const idx = parseInt($('#delete-links-select').val()); let linksList = GM_getValue('linkslist', []); if (idx < 0 || !Number.isInteger(idx) || idx >= linksList.length) { alert('Cannot delete invalid link'); return; } if (!confirm(`Are you sure you want to delete the link to ${$(`#delete-links-select option[value=${idx}]`).text()}?`)) { e.preventDefault(); return; } $(`#delete-links-select option[value=${idx}]`).remove(); linksList.splice(idx, 1); GM_setValue('linkslist', linksList); addLinks(); }); $('#custom-text').change(function() { const textLinks = $(this).prop('checked'); GM_setValue('linkstext', textLinks); addLinks(); }); $('#insert-link').click(() => { const name = $('#custom-name').val(); const img = $('#custom-image').val(); const url = $('#custom-url').val(); if (!(name && url)) { alert('Cannot insert link. Please fill out name and url fields.'); return; } let link = { 'name': name, 'image': img ? img : 'https://d2yr2ruk7u0bm3.cloudfront.net/images/tnt_alt_icon.gif', 'url': url } let linksList = GM_getValue('linkslist', []); linksList.push(link); GM_setValue('linkslist', linksList); populateDropdown(); addLinks(); $('#custom-name').val(''); $('#custom-image').val(''); $('#custom-url').val(''); }); } //removes and re-adds the custom links module on the sidebar function addLinks() { $('.custom').remove(); const linksList = GM_getValue('linkslist', []); const textLinks = GM_getValue('linkstext', true); $('#aio_sidebar').append(`<div class="custom"><strong class="aio-section-header">Custom Links</strong><div class="${textLinks ? 'aioTxt' : 'aioImg'}"></div></div>`); for (const link of linksList) { const linkContent = textLinks ? link.name : `<img src="${link.image}">`; $('.custom .aioTxt, .custom .aioImg').append(`<div><a href="${link.url}" title="${link.name}">${linkContent}</a></div>`); } } $('document').ready(() => { addLinks(); if (window.location.href.includes('sidebar')) editSidebar(); }); })();