User:DESiegel/monobook.js

From Wikipedia, the free encyclopedia

If a message on your talk page led you here, please be wary of who left it. The code below could contain malicious content capable of compromising your account; if your account appears to be compromised, it will be blocked. If you are unsure whether the code is safe, you can ask at the appropriate village pump.
Note: After saving, you have to bypass your browser's cache to see the changes. In Internet Explorer and Firefox, hold down the Ctrl key and click the Refresh or Reload button. Opera users have to clear their caches through Tools→Preferences, see the instructions for Opera. Konqueror and Safari users can just click the Reload button.
// if(document.title.indexOf("My watchlist") == 0) unwatchlinks(); //commented out 25 apr 07
 
// -----------------------------------------------------------------------------
// Ãœbergodmode Monobook skin
// (c) 2005 Sam Hocevar <sam@zoy.org>
// $Id: ubergodmode.js 886 2005-05-14 23:56:48Z sam $
// -----------------------------------------------------------------------------
 
var blocklink = 'Block this user';
 
// -----------------------------------------------------------------------------
// Our nice Block functions
// -----------------------------------------------------------------------------
function PerformBlock() {
  var l, target = '';
  // Look for '&faketarget=XXX' in URL
  url = location.pathname;
  l = location.search.substring(1).split('&');
  for (i = 0; i < l.length; i++) {
    var n = l[i].indexOf('=');
    if (l[i].substring(0, n) == 'faketarget') {
      target = l[i].substring(n + 1);
    }
  }
  if (!target)
    return;
  form = document.getElementById('blockip');
  if (!form)
    return;
  input = form.getElementsByTagName('input')[0];
  input.value = target;
}
 
// -----------------------------------------------------------------------------
// Add block buttons to the page
// -----------------------------------------------------------------------------
function AddBlockButtons() {
  var l, article = '', vandal;
  // Add 'block' links to a diff page
  l = document.getElementById('t-emailuser');
  if (l) {
    clone = l.cloneNode(true);
    l.id = 't-blockuser';
    a = clone.getElementsByTagName('a')[0];
    a.href = a.href.replace(/Special:Emailuser/, 'Special:Blockip');
    a.href = a.href.replace(/target=/, 'faketarget=');
    a.innerHTML = blocklink;
    l.parentNode.insertBefore(clone, l.nextSibling);
  }
}
 
// -----------------------------------------------------------------------------
// Modify the page once it is loaded
// -----------------------------------------------------------------------------
if (window.addEventListener) {
  window.addEventListener("load", PerformBlock, false);
  window.addEventListener("load", AddBlockButtons, false);
} else if (window.attachEvent) {
  window.attachEvent("onload", PerformBlock);
  window.attachEvent("onload", AddBlockButtons);
}
 
 
 
// This will add an [edit top] link at the top of all pages except preview pages // by 
 
 
setTimeout("editTopLink()", 0) // this is equivalent of onload 
function editTopLink() {
 
   // if this is preview page or generated page, stop
  if(document.getElementById("wikiPreview") || window.location.href.indexOf("w/index.php?title=Special:") != -1) return;
 
  // get the page title
  var pageTitle = document.title.split(" - ")[0].replace(" ", "_"); 
 
  // create div and set innerHTML to link
  var divContainer = document.createElement("div");
  divContainer.innerHTML = '<div class="editsection" style="float:right;margin-left:5px;margin-top:3px;">[<a href="/w/index.php?title='+pageTitle+'&action=edit&section=0" title="'+document.title.split(" - ")[0]+'">edit top</a>]</div>';
 
  // insert divContainer into the DOM before the h1
  document.getElementById("content").insertBefore(divContainer, document.getElementsByTagName("h1")[0]);
 
}
 
// //Add purge to tabs 
function addPurge(){
 
   ta['ca-purge'] = ['g', 'Purge the internal cache for this page'];
   var x = document.getElementById('ca-history');
   if(!x) return;
   if(x.children) x = x.children[0].href;
   else x = x.childNodes[0].href;
   addTab(x.replace(/=history/, "=purge"), 'purge', 'ca-purge');
   akeytt();
}
 
if (window.addEventListener) window.addEventListener("load", addPurge, false); else if (window.attachEvent) window.attachEvent("onload", addPurge);
 
//
 
//From http://en.wikipedia.org/w/index.php?title=User:JesseW/monobook.js&oldid=20755510
// ** function removed 25 apr 07
 
 
// **** Functions called by Modules ****
 
function addlilink(tabs, url, name, id, title, key){
 
   var na = document.createElement('a');
   na.href = url;
   na.appendChild(document.createTextNode(name));
   var li = document.createElement('li');
   if(id) li.id = id;
   li.appendChild(na);
   tabs.appendChild(li);
   if(id)
   {
       if(key && title)
       {
           ta[id] = [key, title];
       }
       else if(key)
       {
           ta[id] = [key, ];
       }
       else if(title)
       {
           ta[id] = [, title];
       }
   }
   // re-render the title and accesskeys from existing code in wikibits.js
   akeytt();
   return li;
}
 
//
 
 
function addTab(url, name, id, title, key){
 
   var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0];
   addlilink(tabs, url, name, id, title, key);
} //
 
 
 
// ================================================================
// Adds an unwatch link after each entry on the regular watchlist 
// (instead of requiring you to navigate to a separate page)
// by User:Omegatron
// Workaround for Bug 424 http://bugzilla.wikipedia.org/show_bug.cgi?id=424
//
 
 
// function unwatchlinks(){
// if(document.title.indexOf("My watchlist") == 0) {
//     var x,i;
//     x=document.links;                                           // Gets all the links on the page
//         for(i=0;i<x.length;++i) {
//             if (/action=history/.test(x[i].href)) {             // Find all the ones that link to history pages
//                 newUnwatchLink = document.createElement('a');
//                 newSeparator = document.createTextNode("; ");
//                 newUnwatchLink.href = x[i].href.match(/\/w\/.+?&/) + "action=unwatch";    // Replace the action=history with action=unwatch
//                 newUnwatchLink.innerHTML = "un";
//                 x[i].parentNode.insertBefore(newUnwatchLink, x[i].nextSibling);
//                 x[i].parentNode.insertBefore(newSeparator, x[i].nextSibling);             // Insert after the hist link with a semicolon
//             }
//         }
//     }
// }
 
// Delete reason helper //
/* <pre><nowiki> */
 
if ((document.title.indexOf("Confirm deletion") != -1) || (document.title.indexOf("Confirm delete") != -1)) {
     var csdDeleteForm = {
				FillSelect:function(sel, arr){
					if(arr && arr.length>0){
						if(arr.length>1){
							var FirstOpt = new Option("CSD Reasons", "");
							// catches stupid IE error
							if(FirstOpt.innerHTML != "CSD Reasons"){
								FirstOpt.innerHTML = "CSD Reasons";
							}
							sel.appendChild(FirstOpt);
							sel.options[0].style.color = "gray"
						}
						sel.disabled = false;
						for(var i=0;i<arr.length;i++){
							var opt = new Option(arr[i].display, arr[i].value);
							// catches stupid IE error
							if(opt.innerHTML != arr[i].display){
								opt.innerHTML = arr[i].display;
							}
							sel.appendChild(opt);
						}
					}else{
						sel.options[0] = new Option("No Options Available", "");
						// catches stupid IE error
						if(sel.options[0].innerHTML != "No Options Available"){
							sel.options[0].innerHTML = "No Options Available";
						}
						sel.disabled = true;
						return false;
					}
					return true;
				},
                                ValueArray:[
                                        {"value":"[[WP:CSD#G1|CSD G1]]: [[WP:PN|Patent Nonsense]]","display":"G1 - Nonsense"},
                                        {"value":"[[WP:CSD#G2|CSD G2]]: Test Pages","display":"G2 - Test Pages"},
                                        {"value":"[[WP:CSD#G3|CSD G3]]: [[WP:VAND|Pure Vandalism]]","display":"G3 - Pure Vandalism"},
                                        {"value":"[[WP:CSD#G4|CSD G4]]: Recreation of deleted material","display":"G4 - Recreated Deleted"},
                                        {"value":"[[WP:CSD#G5|CSD G5]]: Contributions by [[Wikipedia:List of banned users|Banned User]]","display":"G5 - Banned User"},
                                        {"value":"[[WP:CSD#G6|CSD G6]]: Housekeeping","display":"G6 - Housekeeping"},
                                        {"value":"[[WP:CSD#G7|CSD G7]]: Author Requests Deletion","display":"G7 - Author Request"},
                                        {"value":"[[WP:CSD#G8|CSD G8]]: Talkpage of deleted or non-Existent Article","display":"G8 - Talk Page"},
                                        {"value":"[[WP:CSD#G9|CSD G9]]: [[WP:OFFICE|Office Actions]]","display":"G9 - Office Actions"},
                                        {"value":"[[WP:CSD#G10|CSD G10]]: [[Wikipedia:Attack page|Attack Page]]","display":"G10 - Attack Pages"},
                                        {"value":"[[WP:CSD#G11|CSD G11]]: [[WP:SPAM|Blatant Advertising]]","display":"G11 - Advertising"},
                                        {"value":"[[WP:CSD#G12|CSD G12]]: [[WP:C|Blatant Copyright infringement]]","display":"G12 - Copyright"},
                                        {"value":"[[WP:CSD#A1|CSD A1]]: Very short article providing little or no context","display":"A1 - No Context"},
                                        {"value":"[[WP:CSD#A2|CSD A2]]: Foreign language article that exists on another Wikipedia","display":"A2 - Foreign Language"},
                                        {"value":"[[WP:CSD#A3|CSD A3]]: No content","display":"A3 - No Content"},
                                        {"value":"[[WP:CSD#A5|CSD A5]]: Has been transwikied","display":"A5 - Transwikied"},
                                        {"value":"[[WP:CSD#A7|CSD A7(Bio)]]: Biographical article that does not assert significance","display":"A7 - Unremarkable Bio"},
                                        {"value":"[[WP:CSD#A7|CSD A7(Group)]]: Article about a club or group that does not assert significance","display":"A7 - Unremarkable Group"},
                                        {"value":"[[WP:CSD#A7|CSD A7(Band)]]: Article about a band that does not assert [[WP:MUSIC|significance]]","display":"A7 - Unremarkable Band"},
                                        {"value":"[[WP:CSD#A7|CSD A7(Corp)]]: Article about a company that doesn't assert [[WP:CORP|significance]]","display":"A7 - Unremarkable Firm"},
                                        {"value":"[[WP:CSD#A7|CSD A7(Web)]]: Article about a web site that does not assert [[WP:WEB|significance]]","display":"A7 - Unremarkable Web"},
                                        {"value":"[[WP:CSD#R1|CSD R1]]: Redirect to non-existent page","display":"R1 - Bad Target"},
                                        {"value":"[[WP:CSD#R2|CSD R2]]: Redirect to User/User talk namespaces from mainspace","display":"R2 - Crossnamespace"},
                                        {"value":"[[WP:CSD#R3|CSD R3]]: Implausible typo","display":"R3 - Bad Typo"},
                                        {"value":"[[WP:CSD#I1|CSD I1]]: Redundant to another image","display":"I1 - Redundant"},
                                        {"value":"[[WP:CSD#I2|CSD I2]]: Image is corrupted","display":"I2 - Corrupt/Empty"},
                                        {"value":"[[WP:CSD#I3|CSD I3]]: Improper license","display":"I3 - Improper License"},
                                        {"value":"[[WP:CSD#I4|CSD I4]]: No license or No Source Information","display":"I4 - Lack of License"},
                                        {"value":"[[WP:CSD#I5|CSD I5]]: Is unused and [[WP:NFCC|not free]]","display":"I5 - Unused Unfree"},
                                        {"value":"[[WP:CSD#I6|CSD I6]]: No [[WP:FURG|justification]] given for fair use","display":"I6 - No Fair Use"},
                                        {"value":"[[WP:CSD#I7|CSD I7]]: Bad [[WP:FURG|justification]] given for fair use","display":"I7 - Invalid Fair Use"},
                                        {"value":"[[WP:CSD#I8|CSD I8]]: Image exists on the Commons","display":"I8 - On Commons"},
                                        {"value":"[[WP:CSD#G1|CSD C1]]: Category is Empty (and has been for 4 days or more)","display":"C1 - Empty"},
                                        {"value":"[[WP:CSD#C2|CSD C2]]: Speedy Renaming","display":"C2 - Speedy Rename"},
                                        {"value":"[[WP:CSD#C3|CSD C3]]: Corresponding template was deleted","display":"C3 - Template"},
                                        {"value":"[[WP:CSD#U1|CSD U1]]: User requested deletion","display":"U1 - User Request"},
                                        {"value":"[[WP:CSD#U2|CSD U2]]: Userpage of non-existent user","display":"U2 - No User"},
                                        {"value":"[[WP:CSD#U3|CSD U3]]: Userpage that is primarily a gallery of fair use images","display":"U3 - Fair Use Gallery"},
                                        {"value":"[[WP:CSD#T1|CSD T1]]: Template that is divisive and inflammatory.","display":"T1 - Divisive"},
                                        {"value":"[[WP:CSD#P2|CSD P2]]: Underpopulated","display":"P2 - Underpopulated"},
                                        {"value":"[[WP:AFD|AFD]]: Deleted after discussion at Articles for Deletion","display":"AFD close"},
                                        {"value":"Closing [[WP:PROD|prod]]","display":"Prod close"}
                                        ],
				//**************************** attaching function *****************************************
				// got thIS super handi function from http://www.scottandrew.com he is pretty dang smart **
			        //*****************************************************************************************
				addEvent:function(obj, evType, fn, useCapture){
					//alert(obj);
					if (obj.addEventListener){
						obj.addEventListener(evType, fn, useCapture);
						return true;
					} else if (obj.attachEvent){
						var r = obj.attachEvent("on"+evType, fn);
						return r;
					} else {
						alert("Handler could not be attached");
					}
				}
			}
			function addSelectAfter(){
    				var obj = document.getElementById('wpReason');
    			        // create select using included array
				var sel = document.createElement("SELECT");
				csdDeleteForm .FillSelect(sel, csdDeleteForm .ValueArray);
				// name it
				sel.name = "csdOptions";
				sel.id = "csdOptions";
                                sel.style.marginLeft = "10px";
                                csdDeleteForm .addEvent(sel, "change", csdChangeBox, false);
				// check for next sibling and insert before it or at the end
				if(obj.nextSibling){
					obj.parentNode.insertBefore(sel,obj.nextSibling);
				}else{
					obj.parentNode.appendChild(sel);
				}
			}
			try{
				// add one on load
				csdDeleteForm.addEvent(window, "load", addSelectAfter, false);
			}catch(err){}
}
 
function csdChangeBox() {
                                                         var obj = document.getElementById('wpReason');
                                                         obj.value = document.getElementById('csdOptions').value;
                                                         }
 
 
/* </nowiki><pre> */
// End Delete reason helper //