您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds 2 links to sort by "recently updated" (issues & PR)
当前为
- // ==UserScript==
- // @name GitHub: sort by recently updated
- // @namespace https://github.com/Procyon-b
- // @version 0.5.3
- // @description Adds 2 links to sort by "recently updated" (issues & PR)
- // @author Achernar
- // @match https://github.com/*
- // @run-at document-end
- // @grant none
- // @noframes
- // ==/UserScript==
- (function() {
- 'use strict';
- var E=document.getElementById("js-repo-pjax-container");
- if (!E) { E=document.querySelector('.application-main main'); }
- if (!E) return;
- var TO, obs=new MutationObserver(cb), config = { attributes: false, childList: true, subtree: false};
- obs.observe(E, config);
- function cb(mutL,o) {
- for(var mut of mutL) {
- if (mut.type == 'childList') {
- if (TO) clearTimeout(TO);
- TO=setTimeout(addLink,0);
- }
- }
- }
- function addLink() {
- var e=E.querySelector('nav.js-repo-nav, nav'), user;
- function aLink(e,q,st,st0) {
- if (!e) return;
- if (e.id) return;
- var astyle=((st0!=undefined) && st0) || '', style='', url=e.href || e.parentNode.href, Q=url.indexOf('?')>=0;
- url+=(Q?'':'?q=')+(q?'+'+escape(q):'')+(Q?'':'+is%3Aopen')+'+sort%3Aupdated-desc';
- if ((url == location.href)) style+=( ((st!=undefined) && st) || 'background-color:#EEEEEE;');
- e.innerHTML+='<a style="color:inherit; text-decoration:inherit;'+astyle+'" href="'+url+'"> <span'+(style?' style="'+style+'"':'')+'>(r)</span> </a>';
- e.id="addedModifiedLink";
- }
- user=document.head.querySelector(':scope meta[name="user-login"]');
- if (e) {
- aLink(e.querySelector(':scope span a[data-selected-links~="repo_issues"] span[itemprop="name"], :scope li a[data-selected-links~="repo_issues"] span[itemprop="name"], :scope li a[data-selected-links~="repo_issues"] span[data-content]'),'is:issue');
- aLink(e.querySelector(':scope span a[data-selected-links~="repo_pulls"] span[itemprop="name"], :scope li a[data-selected-links~="repo_pulls"] span[itemprop="name"], :scope li a[data-selected-links~="repo_pulls"] span[data-content]'),'is:pr');
- let aria=e.attributes['aria-label'], c, RE;
- if (aria && ['Issues','Pull Requests'].includes(aria.value) ) {
- if (!e.id) {
- RE=new RegExp('\\+(author|assignee|mentions)%3A'+user.content);
- e.id='addedCommenter';
- c=e.firstElementChild.cloneNode(true);
- c.innerText='Commenter';
- c.title=aria.value+' you commented';
- c.attributes['aria-label'].value=aria.value+' you commented';
- c.removeAttribute('aria-current');
- c.id='commenter';
- let u=c.href.replace(RE,'+commenter%3A'+user.content);
- if (u.startsWith(location.origin)) u=u.substr(location.origin.length);
- c.href=u;
- c.dataset.selectedLinks='dashboard_commented '+u;
- c.classList.remove('selected');
- e.appendChild(c);
- setTimeout(addLink,0);
- if (aria.value=='Pull Requests') e.innerHTML+='<style>.subnav-search-input-wide {width: 450px;}</style>';
- }
- else {
- let cmt='+commenter%3A'+user.content, sel=e.getElementsByClassName('selected');
- RE=new RegExp('\\+commenter%3A'+user.content,'g');
- for (let c,i=0; c=e.children[i]; i++) {
- if (!c.href) continue;
- if ( (c.id=='commenter') && !sel.length) c.classList.add('selected');
- let u=c.href.replace(RE, '');
- if (u.startsWith(location.origin)) u=u.substr(location.origin.length);
- c.href=u+(c.id=='commenter'?cmt:'');
- c.dataset.selectedLinks=c.dataset.selectedLinks.replace(RE, '')+(c.id=='commenter'?cmt:'');
- }
- }
- }
- }
- if (user) {
- aLink(document.querySelector('nav[aria-label="Global"] a[href="/pulls"]'), 'is:open+is:pr+author:'+user.content+'+archived:false', ' ','font-size:0.8em;');
- aLink(document.querySelector('nav[aria-label="Global"] a[href="/issues"]'), 'is:open+is:issue+author:'+user.content+'+archived:false', ' ','font-size:0.8em;');
- }
- }
- addLink();
- })();