User:Agradman/vector.js
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
/**
* HAPPI gadget
*
* This gadget is part of a research study being conducted by the
* GroupLens Research lab at the University of Minnesota. Please see
* the consent form at http://wikipedia.grouplens.org/HAPPI/consent.
* If you have questions/comments/suggestions, please direct them to
* User:EpochFail.
*
* importScript("User:EpochFail/HAPPI.js")
*
* importScript("User:Csewiki/vector.js");
* importStylesheet('User:Csewiki/vector.css');
**/
$(function()
{
elems = document.getElementsByClassName('editsection');
for (i = 0; i < elems.length; i++)
elems[i].innerHTML = '[<a href="#top">Back to top</a>] ' + elems[i].innerHTML;
});
var wlUnwatch = new function(){
var unWatchLinks = [];
var watchMsg = window.wgAjaxWatch ? mw.config.get('wgAjaxWatch').watchMsg : 'Watch';
var unwatchMsg = window.wgAjaxWatch ? mw.config.get('wgAjaxWatch').unwatchMsg : 'Unwatch';
var wlForm;
var inProgress = null;
var timeoutID = null;
this.onLoad = function() { //public method
if (!(wlForm = document.forms[0]) || !wlForm.namespace) return;
var content = document.getElementById('content') || document.getElementById('mw_content')
var links = content.getElementsByTagName('a');
for (var i = 0; i < links.length; i++){ //append (x) links after history links
if (!links[i].href.match(/[?&]action=history([&#]|$)/)) continue;
var unwatch = document.createElement('a');
unwatch.href = mw.config.get('wgServer')+mw.config.get('wgScript')+'?action=unwatch&title='+encodeURIComponent(links[i].title);
unwatch.onclick = onClick;
unWatchLinks.push(unwatch);
var nextEl = links[i].nextSibling.nextSibling; //item after )
nextEl.parentNode.insertBefore(document.createTextNode(' ('), nextEl);
nextEl.parentNode.insertBefore(unwatch, nextEl);
nextEl.parentNode.insertBefore(document.createTextNode(') '), nextEl);
setUnwatchLink(unwatch, false);
}
}
function setUnwatchLink (unwatchLink, state) {
unwatchLink.innerHTML = state ? '+' : 'x';
unwatchLink.title = state ? watchMsg : unwatchMsg;
}
function getPgName (unwatchLink){
return decodeURIComponent(unwatchLink.href.match(/&title=(.+)/)[1]);
}
function onClick(e) {
if (inProgress) return false;
if (!e) var e = window.event;
if (e.target) var targ = e.target; else if (e.srcElement) var targ = e.srcElement;
inProgress = getPgName(targ);
timeoutID = window.setTimeout( function() {inProgress = null}, 10000 );
//call server
var action = (targ.innerHTML == 'x') ? 'u' : 'w';
sajax_do_call('wfAjaxWatch', [inProgress, action], showResult);
return false;
}
function showResult (request) {
if (timeoutID) window.clearTimeout(timeoutID);
var response = request.responseText;
if (window.wlUnwatchShowMsg) jsMsg (response.substr(4), 'watch');
var name = inProgress, name2 = name, state, prefix, idx, ns = 0, pg, i, el;
inProgress = null;
if (response.match(/^<u#>/))
state = true
else if (response.match(/^<w#>/))
state = false
else return; //unrecognized response
//find the name of "other page"
if ((idx = name.indexOf(':')) != -1){ //not main namespace
prefix = name.substring(0,idx);
name2 = name.substring(idx + 1)
for (i=2; i < wlForm.namespace.options.length; i++)
if (wlForm.namespace.options[i].text == prefix)
ns = i - 1;
if (ns == 0) name2 = name; // guess : was a part of the page name
}
if (ns % 2) ns--; else ns++; //switch to "other" namespace
if (ns > 0) name2 = wlForm.namespace.options[ns+1].text + ':' + name2;
//now mark all pages that are either name or name2
for (i=0; i<unWatchLinks.length; i++)
if ((pg = getPgName(unWatchLinks[i])) && (pg==name || pg==name2)) {
setUnwatchLink (unWatchLinks[i], state);
el = unWatchLinks[i]; //now mark the whole line
while ((el=el.previousSibling) && (el.nodeName!='DIV') && (el.nodeName!='BR'))
if (el.style) el.style.textDecoration = state ? 'line-through' : '';
}
}
}//obj
if (mw.config.get('wgCanonicalSpecialPageName') && mw.config.get('wgCanonicalSpecialPageName')=='Watchlist' && mw.config.get('wgAction')=='view') {
if (doneOnloadHook) wlUnwatch.onLoad(); //if imported dynamically
else addOnloadHook (wlUnwatch.onLoad)
}
/*** BEGIN WIKIBREAK ENFORCER ***/
$(function() {
/*** Start editing here ***/
// When you want to end your break?
// no leading zeroes. (example: 7 - correct, 07 - incorrect)
var date = { year: 2011, month: 2, day: 26};
var time = { hours: 20, minutes: 22, seconds: 0 };
/*** Stop editing here ***/
var currentDate = new Date();
var enforcedBreakEnd = new Date(
date.year,date.month-1,date.day,time.hours,time.minutes,time.seconds);
if (currentDate <= enforcedBreakEnd) {
alert("Enforced wikibreak until "+enforcedBreakEnd.toLocaleString()
+ "\n(now is "+currentDate.toLocaleString()+")\n\nBye!");
location = "http://"+location.host+"/w/index.php?title="
+ "Special:Userlogout&returnto=Main_Page";
}
});
/*** END WIKIBREAK ENFORCER ***/