// ==UserScript== // @name Tag list // @namespace https://stackapps.com/questions/4207/burninator-toolkit // @author Will Sullivan (Will) // @developer David Bingham (Mogsdad) // @version 1.2.10 // @grant none // @description Adds an expandable list containing a link to every question on the current tag page. Useful when you want to open many questions with the same tag at the same time. // @include /^https?:\/\/(?:meta.)?(?:stackoverflow|stackexchange|serverfault|superuser|askubuntu|stackapps)\.com(?:\/(?:\?|questions(?:$|\/tagged|\?)|search|unanswered).*)?$/ // https://regex101.com/r/1D5jof/3 // ==/UserScript== var runTagList = tagList(); var wannaReSort = false; // Set to true to sort closed items to top $(document).ajaxComplete(tagList); function tagList() { // If list already present, quit. if ($('.linkylist').length) return; var App = {}; userscriptCSS(); // Locate the element containing list of posts. App.linkytarget = $('.question-summary').parent(); if (wannaReSort) { // re-sort list; move all the already handled cruff to the top $.each(["closed", "on hold", "migrated", "duplicate"], function(index) { App.items = $('.question-summary .summary:contains(' + this + ')'); App.items.closest('.question-summary').detach().insertBefore($('.question-summary').first()); }); } // Bail out if we don't have 5+ posts. (reviews have 1 or 2, but 5 is a nice number) if( $(App.linkytarget).children().length <= 5 ) return; // get all the hrefs App.root = App.linkytarget; App.hrefs = App.root.find('.question-hyperlink,.result-link'); // .result-link on searches, .question-hyperlink everywhere else if (App.hrefs.length === 0) { console.log("No post hyperlinks found"); return; } App.listroot = $('
'); App.listhead = $('Click here to open a list of all links on this page
'); App.listbody = $(''); App.linkytarget.before(App.listroot); App.listroot.prepend(App.listbody); App.listroot.prepend(App.listhead); App.listbody.hide(); App.listhead.click(function() { App.listbody.slideToggle(600); $('#linkyaction').text(function (index, text) { return (text == 'open' ? 'close' : 'open'); }); }); // note that when you click a link it gets removed from the list. App.hrefs.each(function() { App.parent = $(''); App.linkey = $(this).clone().attr('target', '_blank'); App.linkey.click(function() { $(this).closest('.linkeyspan').remove(); }); App.parent.prepend(App.linkey); App.parent.prepend($('