您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Add a link to issues you've contributed to on GitHub
当前为
// ==UserScript== // @name GitHub My Issues // @description Add a link to issues you've contributed to on GitHub // @author chocolateboy // @copyright chocolateboy // @version 1.2.0 // @namespace https://github.com/chocolateboy/userscripts // @license GPL: http://www.gnu.org/copyleft/gpl.html // @include https://github.com/ // @include https://github.com/* // @require https://cdn.jsdelivr.net/npm/[email protected]/dist/cash.min.js // @grant GM_log // ==/UserScript== /* * value of the ID attribute for the "My Issues" link. used to identify an * existing link so it can be removed on pjax page loads */ const ID = 'my-issues' /* * selector for the "Issues" link which we clone the "My Issues" link from and * append to */ const ISSUES = '[aria-label="Global"] a[href="/issues"]' /* * text for the "My Issues" link */ const MY_ISSUES = 'My Issues' /* * meta-tag selector for the `<user>/<repo>` identifier on full pages */ const PAGE_REPO = 'octolytics-dimension-repository_nwo' /* * selector for the `/<user>/<repo>` identifier on pjax pages */ const PJAX_REPO = '[data-pjax="#js-repo-pjax-container"]' /* * meta-tag selector for the name of the logged-in user */ const SELF = 'user-login' /* * meta-tag selector for the username on a profile page */ const USER = 'profile:username' /* * helper function which extracts a value from a meta tag */ function meta (name, key = 'name') { const quotedName = JSON.stringify(name) return $(`meta[${key}=${quotedName}]`).attr('content') } /* * add the "My Issues" link */ function run () { const self = meta(SELF) const $issues = $(ISSUES) // if we're here via a pjax load, there may be an existing "My Issues" link // from a previous page load. we can't reuse it as the event handlers may no // longer work, so we just replace it $(`#${ID}`).remove() if (!self || $issues.length !== 1) { return } let prop, query = `involves:${self} sort:updated-desc`, path = '/issues' if (prop = meta(PAGE_REPO)) { // user/repo path = `/${prop}/issues` } else if (prop = $(PJAX_REPO).attr('href')) { // /user/repo path = `${prop}/issues` } else if (prop = meta(USER, 'property')) { // user let queries if (prop === self) { // own homepage // user:<self> involves:<self> is:open archived:false queries = [`user:${prop}`, query, 'is:open', 'archived:false'] } else { // other user's homepage // user:<user> involves:<self> queries = [`user:${prop}`, query] } query = queries.join('+') } const href = `${path}?q=${escape(query)}` const $link = $issues.clone() .attr({ href, 'data-hotkey': 'g I', id: ID }) .text(MY_ISSUES) $issues.after($link) } $(document).on('pjax:end', run) // run on pjax page loads $(run) // run on full page loads