Bahaipedia
Bahaipedia
Menu
About Bahaipedia
Ask a question
General help
Random page
Recent changes
In other projects
Tools
What links here
Related changes
Upload file
Special pages
Printable version
Permanent link
Page information
Message
Discussion
View source
View history
Talk
Contributions
Create account
Log in
Navigation
About Bahaipedia
Ask a question
General help
Random page
Recent changes
In other projects
Learn more
Core topics
Bahá’í Faith
Central Figures
Teachings
Practices
Tools
What links here
Related changes
Upload file
Special pages
Printable version
Permanent link
Page information
Translations

MediaWiki:Sysop.js

From Bahaipedia
Jump to:navigation, search

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)
  • Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
 /** Creates a button to invert checkboxes on Special:Undelete */
 if (wgCanonicalNamespace == "Special" && wgCanonicalSpecialPageName == "Undelete") {
     (function () {
         var form             = document.forms["undelete"];
         if( !form ) {
             return;
         }
         var elements         = form.elements;
         var submitButton     = elements["mw-undelete-submit"];
         if( !submitButton ) {
             return;
         }
         var toggleButton     = document.createElement("input");
         toggleButton.type    = "button";
         toggleButton.value   = "Invert selection";
         
         toggleButton.onclick = function () {
                 for( var i = 0; i < elements.length; ++i ) {
                     var input = elements[i];
                     if( input.type != "checkbox" ) {
                         continue;
                     }
                     input.checked = !input.checked;
                 }
             };
         submitButton.parentNode.insertBefore( toggleButton, submitButton );
     })();
 }

 /** Clean CSD G10 deletion summaries ******************************************
  *
  *  Description: Replaces autogenerated deletion summaries for articles tagged
  *               for speedy deletion as attack pages (CSD G10) with a neutral
  *               summary that avoids including any part of the article content
  *               in the deletion log.
  *  Maintainers: [[User:Ilmari Karonen]]
  */
 if (wgAction == "delete") {
     (function () {
         var wpReason = document.getElementById("wpReason");
         if (!wpReason) return;
         var regexp = /\{\{\s*(msg:\s*)?(template:\s*)?(db-a(p|tk)?|((csd|db)[-:])?(a6|attack(pages?|template)?|g10))\s*[|}]/i;
         if (regexp.test(wpReason.value))
             wpReason.value = "[[WP:CSD#G10|CSD G10]]: [[Wikipedia:Attack page|Attack Page]]";
     })();
 }
 /*
  * Note: These are the known redirects to [[Template:Db-attack]] as of 7 Jun 2007.
  * The regexp above should catch these as well as a number of possible variants.
  *
  * [[Template:A6]]
  * [[Template:Attackpage]]
  * [[Template:Attackpages]]
  * [[Template:CSD:G10]]
  * [[Template:Csd-a6]]
  * [[Template:Db-Attack]]
  * [[Template:Db-a]]
  * [[Template:Db-a6]]
  * [[Template:Db-ap]]
  * [[Template:Db-atk]]
  * [[Template:Db-attack]]
  * [[Template:Db-attacktemplate]]
  * [[Template:Db-g10]]
  * [[Template:G10]]
  */

 /** Automatic deletion dropdown
  *******************************************************
  *
  *  Description: Augments the drop-down menu of standard deletion reasons
  *               generated from [[MediaWiki:Deletereason-dropdown]], to 
  *               automatically pick a reason from the list based on speedy 
  *               deletion tags.
  *  Maintainers: [[User:Random832]]
  */
 if (wgAction == 'delete' && typeof(csdDeleteForm) == 'undefined') {
  (function() { // scope
  var list = document.getElementById('wpDeleteReasonList');
  if(!list) return;
  var summaryBox = document.getElementById('wpReason') || document.getElementById('wpComment');
  if(!summaryBox) return;
  var re = /\[\[([^\]\|]*\|)?([^\]]*)\]\]/g; // convert pipe links to their display text.
  for(var i=0;i<list.options.length;i++) {
     var o=list.options[i];
     o.text = o.text.replace(re,'$2');
  }
  function csdChangeBox() {
   if(summaryBox.value.indexOf('content was:') != -1) summaryBox.value = '';
  }
  function addEvent(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 findCSD(s) { // s e.g. "U1", "G10"
    for(var i=0;i<list.options.length;i++) {
       var o=list.options[i];
       if (o.text.indexOf("CSD "+s+":") == 0) return o;
       if (o.text.indexOf(s+":") == 0) return o;
       //TODO fine-tuning for A7 and G6
    }
  }
  var reasons_regex = {
     'G10': // copied from [[User:Ilmari Karonen]]'s script, covers more bases than the others since it's more important (this script should blank the summary in _all_ cases where the other script does
/\{\{\s*(msg:\s*)?(template:\s*)?(db-a(p|tk)?|((csd|db)[-:])?(a6|attack(pages?|template)?|g10))\s*[|}]/i,
// other regexes are simpler and cover probably 99% of actual tags.
     'G1': /\{\{\s*(db-|csd[-:])?(nonsense|ns|g1)\s*\}\}/i,
     'G2': /\{\{\s*(db-|csd[-:])?(test|g2)\s*\}\}/i,
     'G3': /\{\{\s*(db-|csd[-:])?(vandalism|vandal|vand|g3)\s*\}\}/i,
     'G4': /\{\{\s*((db-|csd[-:])?(repost|g4)|deleteagain)\s*\}\}/i,
     'G5': /\{\{\s*(db-|csd[-:])?(banned|ban|g5)\s*\}\}/i,
     'G6': /\{\{\s*(db-|csd[-:])?(maintenance|move|histmerge|g6)\s*\}\}/i, // db-move and db-histmerge should be covered elsewhere if possible
     'G7': /\{\{\s*(db-|csd[-:])?(author|blanked|g7)\s*\}\}/i,
     'G8': /\{\{\s*(db-|csd[-:])?(talk|g8)\s*\}\}/i,
     // G9 is for office, there is no tag.
     // G10 is covered above
     'G11': /\{\{\s*(db-|csd[-:])?(spam|ad|advert|g11)\s*\}\}/i,
     'G12': /\{\{\s*(db-|csd[-:])?(copyvio|cv|cvio|g12|a8)\s*(\}\}|\|)/i,
     'A1': /\{\{\s*(db-|csd[-:])?((no)?context|a1)\s*\}\}/i,
     'A3': /\{\{\s*(db-|csd[-:])?((no)?content|a3|contact|a4)\s*\}\}/i,
     // A4 = A3
     // A6 = G10
     'A7 (bio)': /\{\{\s*(nn-|db-|csd[-:])?(a7|notability|bio|person)\s*\}\}/i,
     'A7 (web)': /\{\{\s*(nn-|db-|csd[-:])?(web(site)?|inter(net|tubes))\s*\}\}/i,
     'A7 (group)': /\{\{\s*(db-|csd[-:]|nn-)?(band|club|music|inc|corp|comp(any)?)\s*\}\}/i,
              // TODO separate for music/band?
      // A8 = G12
     'C1': /(\{\{\s*(db-|csd[-:])?(emptycat|c1)\s*\}\}|empty category)/i,
     'U1': /\{\{\s*(db-|csd[-:])?(userreq|u1|user)\s*\}\}/i,
     'I2': /\{\{\s*(db-|csd[-:])?(noimage|i2)\s*\}\}/i,
     'R1': /\{\{\s*(db-|csd[-:])?(redirnone|r1)\s*\}\}/i,
     // no point in including the other image categories here, this will only work
     // when deleting a description page with no image
     'dummy': /this will never be reached, it is there to allow every entry above to end in a comma/
  }
  function autopick_deletion_reason() {
   for(var csd in reasons_regex) {
     if(reasons_regex[csd].test(summaryBox.value)) {
        var option = findCSD(csd);
        if(!option) {
            if(csd == 'G10')
            summaryBox.value = "[[WP:CSD#G10|CSD G10]]: [[Wikipedia:Attack page|Attack Page]]"; // last resort, if G10 can't be found in the menu.
            return;
        }
        list.selectedIndex = option.index;
        csdChangeBox(); // clear summary box
     }
   }
   // TODO "content before blanking" and A7, etc.
   // TODO We can autodetect G8 from the namespace and a redlinked tab.
   var xfdregex = /.*\{\{AfDM\|page=([^\|]*)\|.*/;
   if(xfdregex.test(summaryBox.value))  { 
      summaryBox.value = summaryBox.value.replace(xfdregex,'[[Wikipedia:Articles for deletion/$1]]');
      return;
   }
   xfdregex = /.*\{\{mfdtag\|([^}]*)\}\}.*/;
   if(xfdregex.test(summaryBox.value))  { 
      summaryBox.value = summaryBox.value.replace(xfdregex,'[[Wikipedia:Miscellany for deletion/$1]]');
      return;
   }
   xfdregex = /.*\{\{dated prod\|concern = (\{\{\{concern\|)?(.*?)(\}\}\})?\|month.*/;
   if(xfdregex.test(summaryBox.value))  { 
      summaryBox.value = summaryBox.value.replace(xfdregex,'[[WP:PROD]], reason was \'$2\'.');
      return;
   }
   if(summaryBox.value.indexOf('\{\{rfd\}\}') != -1) {
      // best we can do without a direct link
      summaryBox.value = '[[WP:RFD|RFD]]';
      return;
   }
   xfdregex = /.*\{\{((db|delete).*?)\}\}.*/;
   if(xfdregex.test(summaryBox.value))  { // last resort for unhandled speedy tags
      summaryBox.value = summaryBox.value.replace(xfdregex,'$1');
      return;
   }
  }
  addEvent(list, "change", csdChangeBox, false);
  autopick_deletion_reason();
  })(); // scope
 }

// Sensitive IP checker - maintained by east718
if (wgCanonicalNamespace == "Special" && wgCanonicalSpecialPageName == "Blockip")
{
	ips = Array(
		Array(/\b63\.162\.143\.21\b/, 'the [[United States Department of Homeland Security|U.S. Department of Homeland Security]]'),
		Array(/\b82\.148\.9(6\.68|7\.69)\b/, '[[Qatar|Qatar]]'),
		Array(/\b128\.183\.103\.97\b/, '[[NASA|NASA]]'),
		Array(/\b(((2|5)?6|7|[12]1|2(2|8|9)|3(0|3)|55)\.([01]?\d\d?|2(5[0-5]|[0-4]\d))|130\.22)(\.([01]?\d\d?|2(5[0-5]|[0-4]\d))){2}\b/, 'the [[United States Department of Defense|U.S. Department of Defense]]'),
		Array(/\b138\.16[23](\.([01]?\d\d?|2(5[0-5]|[0-4]\d))){2}\b/, 'the [[United States Navy|U.S. Naval Telecommunications Station]]'),
		Array(/\b143\.2(2[89]|3[01])(\.([01]?\d\d?|2(5[0-5]|[0-4]\d))){2}\b/, 'the [[United States House of Representatives|U.S. House of Representatives]]'),
		Array(/\b149\.101(\.([01]?\d\d?|2(5[0-5]|[0-4]\d))){2}\b/, 'the [[United States Department of Justice|U.S. Department of Justice]]'),
		Array(/\b156\.33(\.([01]?\d\d?|2(5[0-5]|[0-4]\d))){2}\b/, 'the [[United States Senate|U.S. Senate]]'),
		Array(/\b(162\.4[56]\.([01]?\d\d?|2(5[0-5]|[0-4]\d))|198\.81\.(128|129|1[3-8]\d|191))\.([01]?\d\d?|2(5[0-5]|[0-4]\d))\b/, 'the [[Central Intelligence Agency|U.S. Central Intelligence Agency]]'),
		Array(/\b192\.197\.(7[7-9]|8[0-6])\.([01]?\d\d?|2(5[0-5]|[0-4]\d))\b/, 'the [[Government of Canada|Government of Canada]]'),
		Array(/\b(51(\.([01]?\d\d?|2(5[0-5]|[0-4]\d))){2}|194.60.\d[0-5]?)\.([01]?\d\d?|2(5[0-5]|[0-4]\d))\b/, 'the [[Parliament of the United Kingdom|U.K. Parliament]]'),
		Array(/\b66\.230\.(19[2-9]|2[0-3]\d)\.([01]?\d\d?|2(5[0-5]|[0-4]\d))\b/, 'the [[Wikimedia Foundation|Wikimedia secure gateway]]'),
		Array(/\b91\.198\.174\.(19[2-9]|2([01]\d|2[0-3]))\b/, 'the [[m:Toolserver|Wikimedia Toolserver]]')
	);
	ip = document.getElementById('mw-bi-target').value;
	if (/\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/.test(ip))
	{
		for (i = 0; i < ips.length; i++)
		{
			if (ip.match(ips[i][0]))
			{
				jsMsg('<table><tr><td valign="center"><img src="http://upload.wikimedia.org/wikipedia/commons/thumb/f/f7/Nuvola_apps_important.svg/48px-Nuvola_apps_important.svg.png" /></td><td valign="center">You are blocking a sensitive IP address belonging to ' + ips[i][1].replace('[[', '<a href="http://en.wikipedia.org/wiki/').replace('|', '">').replace(']]', '</a>') + '. Please be sure to <a href="http://meta.wikimedia.org/wiki/Communications_committee/Notifications" class="extiw" title="meta:Communications_committee/Notifications">notify</a> the <a href="http://meta.wikimedia.org/wiki/Communications_committee" class="extiw" title="meta:Communications_committee">Wikimedia Foundation Communications Committee</a> immediately.</td></tr></table>');
			}
		}
	}
}
Retrieved from "https://bahaipedia.org/index.php?title=MediaWiki:Sysop.js&oldid=22388"
This page was last edited on 19 July 2008, at 08:50.
Text is available under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License.
Privacy policy
About Bahaipedia
Disclaimers
Powered by MediaWiki