User:Kernigh/monobook.js

/* Top of Javascript */

/* Copied from http://commons.wikimedia.org/wiki/MediaWiki:Extra-tabs.js * Changed by Kernigh: * 2006-04-16: Point to en.wikibooks.org, uncomment tab strings. */

/* tooltips and access keys */ // ========================================================================== // BEGIN: MediaWiki interface button definition for Duesentrieb's image tools: // "Check usage", "User image gallery", "Orphaned images of user" and // "Untagged images of user". // If you are located at an "Image:" you get the "check usage" tab, if you // are at a "User:" page you get the "gallery", "orphans" and "untagged" tab. // If you are on other pages these tabs do not get shown. // These functions are _ONLY_ enabled for Wikimedia Commons sysops by default // in order to test the whole thing and not to harm the tool server. // Other users and IP's will see nothing new by default. // This script has been tested with Konqueror 3.5 and Firefox 1.5. If you enhance // or change this template please test it previous to editing here in your local // monobook.js with as many as possible browsers (in order not to clash with the // function names here change in your local monobook.js all "global_" to "local_"). // Be aware that the global monobook.js script does not get updated by the // Wikimedia servers that fast after saving it here.

// written by Dbenbenn, Avatar, Duesentrieb and Arnomane

// Translations (variables for internationalisation and localisation):

// project var tab_project = 'en.wikibooks.org';

// namespace names var tab_ns_image = 'Image:'; var tab_ns_imagetalk = 'Image_talk:'; var tab_ns_user = 'User:'; var tab_ns_usertalk = 'User_talk:'; var tab_ns_category = 'Category:'; var tab_ns_special = 'Special:';

// Interface strings, get defined in the localised Mediawiki:Monobook.js/ // Uncommented because Wikibooks does not have the localistations of Commons var tab_check_usage = 'check usage'; var tab_categorize = 'categorize'; var tab_log = 'log'; var tab_gallery = 'gallery'; var tab_orphans = 'orphans'; var tab_untagged = 'untagged'; var tab_tree = 'Tree'; var tab_catscan = 'CatScan'; var tab_blocklog = 'Blocklog';

// Appends a new tab. function global_append_tab(url, name) { var na = document.createElement('a'); na.setAttribute('href', url); var txt = document.createTextNode(name); na.appendChild(txt); var li = document.createElement('li'); li.appendChild(na);

// Grab the element we want to append the tab and append the tab to it. var c1 = document.getElementById('column-one'); var tabs = c1.getElementsByTagName('div')[0].getElementsByTagName('ul')[0]; tabs.appendChild(li); }

// Gets the article lemma, with the namespace and with sub pages. function global_get_tidy_title { // get the article link from the label 'ca-edit' out of the document text. var editlk = document.getElementById('ca-edit');

// If a page is write protected (for that user, a sysop will always have 'ca-edit') // we need 'ca-viewsource' as 'ca-edit' does not exist there. if (editlk == null) {   editlk = document.getElementById('ca-viewsource'); }

// editlk will still be null on a Special page. Now we try the ca-article tab. if (editlk == null) {   editlk = document.getElementById('ca-article'); }

editlk = editlk.getElementsByTagName('a')[0].href;

// If we found the ca-edit or ca-viewsource tab, the link will have title=. // If we found the ca-article tab (on a Special page) it won't. if (editlk.indexOf('title=') >= 0) {   // Cut everything up to "title=" from the start and everything past "&action=edit" // from the end. editlk = editlk.substring(editlk.indexOf('title=') + 6, editlk.indexOf('&')); } else {   // Cut everything up to "/wiki/" from the start. editlk = editlk.substring(editlk.indexOf('/wiki/') + 6); }

return editlk; } // Is user a sysop? This function is needed in order to have these features // enabled by default for sysops only during test period. function global_get_sysop_status { // only sysops have the delete or the block button // The delete tab won't exist on user pages that don't exist, but the block link will. var delete_tab = document.getElementById('ca-delete'); var block_link = document.getElementById('t-blockip');

// this is needed for the Special:Blockip page in order to determine admin status if (block_link == null || block_link == false) {   block_link = document.getElementById('blockip'); }

// in case of Special:Contributions we need again another way...  var testlink = global_get_tidy_title if (testlink.indexOf(tab_ns_special +'Contributions') == 0) {   var flag = document.getElementById('contentSub'); flag = flag.getElementsByTagName('a')[2].href; if (flag.indexOf(tab_ns_special + 'Blockip') >= 0) {     block_link = 'ok'; }   else {     block_link = 0; } }

// If user is no sysop the variable is null, don't know if it also can be // somehow false, but just in case... if (delete_tab == null || delete_tab == false) {   if (block_link == null || block_link == false) {     var sysop_status = false; }   else {     var sysop_status = true; } }  else {   var sysop_status = true; } return sysop_status; }

function global_add_image_tabs(imagetitle) { imagetitle = imagetitle.substring(imagetitle.indexOf(':') + 1); // strip off "Image:" namespace

global_append_tab('http://tools.wikimedia.de/~daniel/WikiSense/CheckUsage.php?i=' + imagetitle + '&w=_100000', tab_check_usage);

global_append_tab('http://tools.wikimedia.de/~daniel/WikiSense/CommonSense.php?i=' + imagetitle + '&go-clean=yes', tab_categorize);

global_append_tab('/w/index.php?title=' + tab_ns_special + 'Log&page=' + tab_ns_image + imagetitle, tab_log); } function global_add_user_tabs(username) { username = username.substring(username.indexOf(':') + 1); // strip off namespaces like "User:"

username = username.replace(/\/.*$/, ''); //removing subpages from the link

global_append_tab('http://tools.wikimedia.de/~daniel/WikiSense/Gallery.php?&wiki=' + tab_project + '&img_user_text=' + username, tab_gallery); global_append_tab('http://tools.wikimedia.de/~daniel/WikiSense/OrphanImages.php?wiki=' + tab_project + '&img_user_text=' + username, tab_orphans); global_append_tab('http://tools.wikimedia.de/~daniel/WikiSense/UntaggedImages.php?wiki=' + tab_project + '&img_user_text=' + username, tab_untagged); }

function global_add_category_tabs(category) { category = category.substring(category.indexOf(':') + 1); // strip off "Category:" namespace

global_append_tab('http://tools.wikimedia.de/~daniel/WikiSense/CategoryTree.php?wiki=' + tab_project + '&cat=' + category, tab_tree); global_append_tab('http://tools.wikimedia.de/~daniel/WikiSense/CategoryIntersect.php?wiki=' + tab_project + '&basecat=' + category, tab_catscan); }

// On Special:Contributions, we add the user tabs just like for a user page. // On Special:Blockip, we add a blocklog tab. function global_add_special_tabs(title) { if (title.indexOf(tab_ns_special + 'Blockip') == 0) {   var username = document.getElementsByName('wpBlockAddress')[0].defaultValue;

if (username != '') {     global_append_tab('/w/index.php?title=' + tab_ns_special + 'Log&type=block&page=' + tab_ns_user + username, tab_blocklog); } }  else if (title.indexOf(tab_ns_special + 'Contributions') == 0) {   var username = document.getElementById('contentSub').getElementsByTagName('a')[0].firstChild.nodeValue; global_add_user_tabs(tab_ns_user + username); } } function global_do_onload { // if ((global_get_sysop_status) == true) // {    // extract the namespace var title = global_get_tidy_title;

if (title.indexOf(tab_ns_image) == 0 || title.indexOf(tab_ns_imagetalk) == 0) {     global_add_image_tabs(title); }   else if (title.indexOf(tab_ns_user) == 0 || title.indexOf(tab_ns_usertalk) == 0) {     global_add_user_tabs(title); }   else if (title.indexOf(tab_ns_category) == 0) {     global_add_category_tabs(title); }   else if (title.indexOf(tab_ns_special) == 0) {     global_add_special_tabs(title); } // } }

if (window.addEventListener) window.addEventListener("load", global_do_onload, false); else if (window.attachEvent) window.attachEvent("onload", global_do_onload);

// END: MediaWiki interface button definition for Duesentrieb's image tools. // ======================================================================== /* Bottom of Javascript */