Difference between revisions of "MediaWiki:Vector.js"

Jump to: navigation, search

Difference between revisions of "MediaWiki:Vector.js"

(Blanked the page)
 
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
// By User:Pile0nades.
 
// Makes the diff page display as a single column, instead of two.
 
  
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>'
 
});
 
});
 

Latest revision as of 01:40, 20 November 2015