MediaWiki:Vector.js
MediaWiki:Vector.js
Revision as of 21:58, 2 July 2015 by Jeremy Jackson (talk | contribs)
Note: After saving, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Go to Menu → Settings (Opera → Preferences on a Mac) and then to Privacy & security → Clear browsing data → Cached images and files.
// By User:Pile0nades. // Makes the diff page display as a single column, instead of two. $j(function() { addOnloadHook(function() { // ==UserScript== // @name Wikipedia single column diffs // @namespace http://mywebsite.com/myscripts // @description Make Wikipedia diff pages read like patch-format diffs, only one column needed // @include http://en.wikipedia.org/w/index.php?*&diff=* // ==/UserScript== // remove the header for the previous revision, and add the next/prev links to the second header var prevHeader = get("//table[@class='diff'][1]/tbody/tr[1]/td[@class='diff-otitle']"); var nextHeader = get("//table[@class='diff'][1]/tbody/tr[1]/td[@class='diff-ntitle']"); var oldedit = get("//table[@class='diff'][1]/tbody/tr[1]/td[@class='diff-otitle']/a[@id='differences-prevlink']"); var newedit = get("//table[@class='diff'][1]/tbody/tr[1]/td[@class='diff-ntitle']/a[@id='differences-nextlink']"); for (var i = 0; i < prevHeader.snapshotLength; i++) { if (oldedit.snapshotLength != 0) { nextHeader.snapshotItem(i).appendChild(oldedit.snapshotItem(0)); } if (oldedit.snapshotLength != 0 && newedit.snapshotLength != 0) { nextHeader.snapshotItem(i).appendChild(document.createTextNode(" | ")); } if (newedit.snapshotLength != 0) { nextHeader.snapshotItem(i).appendChild(newedit.snapshotItem(0)); } remove(prevHeader.snapshotItem(i)); } // clone rows where the line changed but wasn't added/deleted, and delete where appropriate var changedLines = get("//table[@class='diff'][1]/tbody/tr/td[@class='diff-addedline' and position()=4]/../td[@class='diff-deletedline' and position()=2]") for (var i = 0; i < changedLines.snapshotLength; i++) { var cell = changedLines.snapshotItem(i); cell.parentNode.parentNode.insertBefore( cell.parentNode.cloneNode(true), cell.parentNode ); remove(cell.previousSibling.previousSibling); remove(cell); } // delete blank cells in the first column to move the added lines into the first column var blankcells = get("//table[@class='diff'][1]/tbody/tr/td[1]"); for (var i = 0; i < blankcells.snapshotLength; i++) { if (blankcells.snapshotItem(i).innerHTML == " ") { remove(blankcells.snapshotItem(i)); } } // delete everything past the second td in each column var waste = get("//table[@class='diff'][1]/tbody/tr/td[2]"); for (var i = 0; i < waste.snapshotLength; i++) { while (waste.snapshotItem(i).nextSibling) { remove(waste.snapshotItem(i).nextSibling); } } // delete the 2nd line number cell in each column var line = get("//table[@class='diff'][1]/tbody/tr/td[@class='diff-lineno'][1]"); for (var i = 0; i < line.snapshotLength; i++) { remove(line.snapshotItem(i)); } // delete the extra cols var cols = get("//table[@class='diff'][1]/col"); for (var i = 0; i < cols.snapshotLength; i++) { var col = cols.snapshotItem(i); if (col.className == "diff-content") { col.style.width = "98%"; col.removeAttribute("class"); } if (i > 1) remove(col); } // shorthand function to remove nodes function remove(node) { node.parentNode.removeChild(node); } // xpath function function get(query) { return document.evaluate( query, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null ); } })}); // $.ajax({ url: 'https://meta.wikimedia.org/w/index.php?title=User:Krinkle/Scripts/InsertWikiEditorButton.js&action=raw&ctype=text/javascript', dataType: 'script', cache: true }).done(function () { krInsertWikiEditorButton({ id: 'mw-customeditbutton-buttons', icon: '//rpm3.rcabc.org/resources/assets/buttons.jpg', label: 'Button Group', insertBefore: '<jstbutton group="Guarantee Standards">Guarantee Standards</jstbutton> <jstbutton group="rec">Recommendations</jstbutton> <jstbutton group="policies">Guiding Policies</jstbutton>' }); krInsertWikiEditorButton({ id: "mw-customeditbutton-policies", icon: "//rpm3.rcabc.org/resources/assets/policies.png", label: 'Guiding Policies', insertBefore: '<jstdiv group="policies">', insertAfter: '</jstdiv>', sampleText: 'Guiding Policies' }); krInsertWikiEditorButton({ id: 'mw-customeditbutton-recommendations', icon: '//rpm3.rcabc.org/resources/assets/recommendations.png', label: 'Recommendations', insertBefore: '<jstdiv group="rec">', insertAfter: '</jstdiv>', sampleText: 'Recommendations' }); krInsertWikiEditorButton({ id: 'mw-customeditbutton-tabgroup', icon: '//rpm3.rcabc.org/resources/assets/tabstart.png', label: 'Create Tab Group', insertBefore: '<tabs>', insertAfter: '</tabs>' }); krInsertWikiEditorButton({ id: 'mw-customeditbutton-tab', icon: '//rpm3.rcabc.org/resources/assets/tab.png', label: 'Create Tab', insertBefore: '<tab name="CHANGE ME">', insertAfter: '</tab>' }); });