User:PiRSquared17/stalkuser.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.
/* New changes box */
var uc_http;
var uc_enabled;
var uc_num_pages;
var uc_refresh;
var uc_user;
$( uc_init );
/* initalise */
function uc_init() {
// allow user settings through
if(uc_enabled == null) {
uc_enabled = false;
}
if(uc_num_pages == null) {
uc_num_pages = 10;
}
if(uc_refresh == null) {
uc_refresh = 5;
}
// A few limits to be nice to the servers
if (uc_num_pages > 50) {
uc_num_pages = 50;
}
if (uc_num_pages < 1) {
uc_num_pages = 1;
}
if (uc_refresh < 2) {
uc_refresh = 2;
}
// get our cookies
if (document.cookie.length > 0) {
var c_start = document.cookie.indexOf("uc_show_box=");
if (c_start != -1) {
c_start = c_start + 12;
c_end = document.cookie.indexOf(";", c_start);
if (c_end == -1) {
c_end = document.cookie.length;
}
if (document.cookie.substring(c_start, c_end) == "yes") {
uc_enabled = true;
} else {
uc_enabled = false;
}
}
c_start = document.cookie.indexOf("uc_user=");
if (c_start != -1) {
c_start = c_start + 8;
var c_end = document.cookie.indexOf(";", c_start);
if (c_end == -1) {
c_end = document.cookie.length;
}
uc_user = document.cookie.substring(c_start, c_end);
}
}
// Either make a request or show nothing
if (uc_enabled == true) {
uc_ajax_request();
} else {
uc_draw_disabled_box();
}
}
/* init ajax */
function uc_create_request() {
try {
uc_http = new XMLHttpRequest();
} catch (e) {
try {
uc_http = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
uc_http = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
alert("Your browser does not support AJAX");
return false;
}
}
}
uc_http.onreadystatechange = function() {
if(uc_http.readyState == 4) uc_ajax_response();
}
return true;
}
/* make a request */
function uc_ajax_request() {
// check we are enabled
if (uc_enabled == false) return;
// firstly, inform the user
var cur_box = document.getElementById('p-usercontribs');
if (cur_box != null) {
cur_box.firstChild.firstChild.data = 'User contribs (updating)';
}
if (uc_create_request () == false) {
if (cur_box != null) {
cur_box.firstChild.firstChild.data = 'User contribs (update failed)';
} else {
alert ("There seems to be a problem using the UserStalk script. It can't make AJAX objects.");
}
}
// Then make the request
uc_http.open("GET", mw.config.get('wgServer') + mw.config.get('wgScriptPath') + "/api.php?action=query&list=usercontribs&ucuser=" +
uc_user + "&format=xml&rcshow=!bot&rclimit=" + uc_num_pages, true);
uc_http.send(null);
}
/* we have received a response */
function uc_ajax_response() {
var items = uc_http.responseXML.getElementsByTagName('item');
// create the div that holds all the usercontribs links
var link_div = document.createElement('div');
link_div.className = 'pBody';
var list = document.createElement('ul');
link_div.appendChild(list);
// populate the list with 10 links.
for (var i = 0; i < items.length; i++) {
var item_name = items[i].getAttribute('title');
var item_oldid = items[i].getAttribute('revid');
var item_url = mw.config.get('wgServer') + mw.config.get('wgScript') + '?diff=prev&oldid=' + item_oldid + '&title=' + escape(item_name);
a = document.createElement('a');
a.setAttribute('href', item_url);
a.appendChild(document.createTextNode(item_name));
var li = document.createElement('li');
li.appendChild(a);
list.appendChild(li);
}
// Container div
var div = document.createElement('div');
div.setAttribute('id', 'p-usercontribs');
div.className = 'portlet';
var heading = document.createElement('h5');
heading.appendChild(document.createTextNode('User Contribs'));
div.appendChild(heading);
div.appendChild(link_div);
// disable link
var p = document.createElement('p');
p.style.fontSize = 'x-small';
p.style.margin = '0px';
p.style.textAlign = 'right';
a = document.createElement('a');
a.appendChild(document.createTextNode('disable this box'));
a.onclick = uc_disable_box;
p.appendChild(a);
a2 = document.createElement('a');
a2.appendChild(document.createTextNode(' set user'));
a2.onclick = uc_set_user;
p.appendChild(a2);
link_div.appendChild(p);
// now replace the div
var old_div = document.getElementById('p-usercontribs');
var side_col = document.getElementById('column-one');
if (old_div != null) {
side_col.replaceChild(div, old_div);
} else {
var node = document.getElementById('p-search');
side_col.insertBefore(div, node);
}
// and do it again in 5 secs
setTimeout("uc_ajax_request()", uc_refresh * 1000);
}
function uc_disable_box() {
uc_enabled = false;
uc_draw_disabled_box();
document.cookie = "uc_show_box=no; path=/";
}
function uc_enable_box() {
uc_enabled = true;
document.cookie = "uc_show_box=yes; path=/";
uc_ajax_request();
}
function uc_set_user() {
document.cookie = "uc_user=" + (uc_user = prompt("Enter user to \"stalk\":", "Example")) + ";";
uc_ajax_request();
}
function uc_draw_disabled_box() {
// Container div
var link_div = document.createElement('div');
link_div.className = 'pBody';
var div = document.createElement('div');
div.setAttribute('id', 'p-usercontribs');
div.className = 'portlet';
var heading = document.createElement('h5');
heading.appendChild(document.createTextNode('User Contribs'));
div.appendChild(heading);
div.appendChild(link_div);
// enable link
var p = document.createElement('p');
p.style.fontSize = 'x-small';
p.style.margin = '0px';
var a = document.createElement('a');
a.appendChild(document.createTextNode('enable this box'));
a.onclick = uc_enable_box;
p.appendChild(a);
link_div.appendChild(p);
// now replace the div
var old_div = document.getElementById('p-usercontribs');
var side_col = document.getElementById('column-one');
if (old_div != null) {
side_col.replaceChild(div, old_div);
} else {
var node = document.getElementById('p-search');
side_col.insertBefore(div, node);
}
}
npp_refresh = 10;