User:Spacebirdy/grmpf.js
Note: After publishing, 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 / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
// from http://en.wikipedia.org/wiki/User:Jsimlo/shortcuts.js by [[w:en:User:Jsimlo]]
/**********************************************************************
* *
* Changes to this file affect other users. *
* Please discuss on the talk page before editing. *
* *
**********************************************************************/
var shortcutsVersion = "1.1.2"; // updated 2015-03-23 for latest MediaWiki changes
var shortcutsReleaseDate = "2009-07-26";
/***********************************************************
* INTERFACE
***********************************************************/
/**
* Starts a new section of links. Function for external use.
*/
function shortcutsStartSection(name) {
shortcutsLinks[shortcutsLinks.length] = { 'name': name, 'links': [] };
}
/**
* Adds new link into the current section of links. Function for external use.
*/
function shortcutsAddLink(name, article) {
var links = shortcutsLinks[shortcutsLinks.length - 1].links;
links[links.length] = { 'name': name, 'article': article };
}
/***********************************************************
* IMPLEMENTATION
***********************************************************/
/**
* Link maker.
* Creates and returns an li element with the desired link.
*/
function shortcutsMakeLink(name, url) {
var ntxt = document.createTextNode(name);
var na = document.createElement('a');
var nli = document.createElement('li');
na.setAttribute('href', '/wiki/' + url);
nli.setAttribute('class', 'n-shortcut');
na.appendChild(ntxt);
nli.appendChild(na);
return nli;
}
/**
* Portlet maker.
* Creates and returns a portlet populated by list of links.
*/
function shortcutsMakePortlet(name, links) {
var nportlet = document.createElement('div');
var nh5 = document.createElement('h5');
var ntit = document.createTextNode(name);
var nbody = document.createElement('div');
var nul = document.createElement('ul');
if (mw.config.get('skin') == 'vector') {
nportlet.setAttribute('id', 'p-'+name);
nportlet.setAttribute('class', 'portal');
nh5.setAttribute('xml:lang', 'en');
nh5.setAttribute('lang', 'en');
nbody.setAttribute('class', 'body');
}
else {
nportlet.setAttribute('id', 'p-'+name);
nportlet.setAttribute('class', 'portlet');
nbody.setAttribute('class', 'pBody');
nul.setAttribute('id', 'p-'+name);
}
for (var i = 0; i < links.length; i++)
nul.appendChild(shortcutsMakeLink(links[i].name, links[i].article));
nh5.appendChild(ntit);
nportlet.appendChild(nh5);
nbody.appendChild(nul);
nportlet.appendChild(nbody);
return nportlet;
}
/**
* Main function.
* Enumerates all non-empty sections, and adds new portlets beneath the old ones.
*/
function shortcutsMain() {
var sidecol = mw.config.get('skin') == 'vector' ? document.getElementById('mw-panel') : document.getElementById('column-one');
for (var i = 0; i < shortcutsLinks.length; i++) {
if (shortcutsLinks[i].links.length > 0)
sidecol.appendChild(shortcutsMakePortlet(shortcutsLinks[i].name, shortcutsLinks[i].links));
}
}
/**
* Initializes the onload events.
*/
function shortcutsInitialize() {
//shortcutsInit();
shortcutsMain();
}
/***********************************************************
* INITIALIZATION
***********************************************************/
var shortcutsLinks = [];
shortcutsStartSection(mw.config.get('wgUserName') || 'shortcuts');
$(shortcutsInitialize);