You are viewing the MafiaScum.net Wiki. To play the game, visit the forum.

MediaWiki:Common.js: Difference between revisions

From MafiaWiki
Jump to navigation Jump to search
(Script to convert category headers to integers for setup categories)
(Remove unused variable from setupFix)
 
(One intermediate revision by the same user not shown)
Line 8: Line 8:
   var numberOfTags = h3Tags.length;
   var numberOfTags = h3Tags.length;
   var tagNameMap = {'A':1,'B':2,'C':3,'D':4,'E':5,'F':6,'G':7,'H':8,'I':9,'J':10,'K':11,'L':12,'M':13,'N':14,'O':15,'P':16,'Q':17,'R':18,'S':19,'T':20,'U':21,'V':22,'W':23,'X':24,'Y':25,'Z':26};
   var tagNameMap = {'A':1,'B':2,'C':3,'D':4,'E':5,'F':6,'G':7,'H':8,'I':9,'J':10,'K':11,'L':12,'M':13,'N':14,'O':15,'P':16,'Q':17,'R':18,'S':19,'T':20,'U':21,'V':22,'W':23,'X':24,'Y':25,'Z':26};
  var headerTextPattern = /([A-Z])(?: cont\.)?/;


   for(var index = 0;index < numberOfTags;++index) {
   for(var index = 0;index < numberOfTags;++index) {


     var tag = h3Tags[index];
     var tag = h3Tags[index];
     var patternMatches = tag.textContent.match(headerTextPattern);
     var tagContent = tag.textContent;
   
    if(patternMatches === null)
      continue;


     tag.textContent = tagNameMap[patternMatches[1]];
    if(!tagContent.match(/^[A-Z]$/) && !tagContent.match(/^([A-Z]) cont\.$/))
        continue;
 
     tag.textContent = tagNameMap[tagContent.substr(0,1)];
   }
   }
}
}

Latest revision as of 19:18, 4 April 2018

 /** Setup Category Fix **************************************************
  *
  *  Description: Changes category headers to show # of players per setup.
  *  Maintainers: [[User:Kison]] wiki.mafiascum.net
  */ 
function setupFix() {
  var h3Tags = document.getElementsByTagName("h3");
  var numberOfTags = h3Tags.length;
  var tagNameMap = {'A':1,'B':2,'C':3,'D':4,'E':5,'F':6,'G':7,'H':8,'I':9,'J':10,'K':11,'L':12,'M':13,'N':14,'O':15,'P':16,'Q':17,'R':18,'S':19,'T':20,'U':21,'V':22,'W':23,'X':24,'Y':25,'Z':26};

  for(var index = 0;index < numberOfTags;++index) {

    var tag = h3Tags[index];
    var tagContent = tag.textContent;

    if(!tagContent.match(/^[A-Z]$/) && !tagContent.match(/^([A-Z]) cont\.$/))
        continue;

    tag.textContent = tagNameMap[tagContent.substr(0,1)];
  }
}

if(document.getElementById('setupFix') !== null) {
  setupFix();
}

 /* Has TOC's collapsed by default **************************************
  *
  * Description: Collapses the TOC on page load.
  * Maintainers: [[User:wgeurts]]
  */
function hideToc() { 
  var toc = document.getElementById('toc');

  if(toc !== null)
    toc.getElementsByTagName('ul')[0]; 
  
  var toggleLink = document.getElementById('togglelink'); 

  if(toggleLink !== null)
    toggleLink.style.display = 'none'; 
} 
hideToc();


 /* Test if an element has a certain class **************************************
  *
  * Description: Uses regular expressions and caching for better performance.
  * Maintainers: [[User:Mike Dillon]], [[User:R. Koot]], [[User:SG]]
  */
 
 var hasClass = (function () {
     var reCache = {};
     return function (element, className) {
         return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);
     };
 })();


 /** Internet Explorer bug fix **************************************************
  *
  *  Description: UNDOCUMENTED
  *  Maintainers: [[User:Tom-]] from en.wikipedia.org
  */
 
 if (window.showModalDialog && document.compatMode && document.compatMode == "CSS1Compat")
 {
   var oldWidth;
   var docEl = document.documentElement;
 
   function fixIEScroll()
   {
     if (!oldWidth || docEl.clientWidth > oldWidth)
       doFixIEScroll();
     else
       setTimeout(doFixIEScroll, 1);
   
     oldWidth = docEl.clientWidth;
   }
 
   function doFixIEScroll() {
     docEl.style.overflowX = (docEl.scrollWidth - docEl.clientWidth < 4) ? "hidden" : "";
   }
 
   document.attachEvent("onreadystatechange", fixIEScroll);
   attachEvent("onresize", fixIEScroll);
 }

 /** Tooltips and access keys ***************************************************
  *
  *  Description: Adds tooltips and access keys to links part of the MediaWiki
  *               interface.
  *  Maintainers: [[User:Gwicke]] and [[User:Simetrical]] from en.wikipedia.org
  */
 
 ta = new Object();
 ta['pt-userpage']           = new Array('.','My user page'); 
 ta['pt-anonuserpage']       = new Array('.','The user page for the ip you\'re editing as'); 
 ta['pt-mytalk']             = new Array('n','My talk page'); 
 ta['pt-anontalk']           = new Array('n','Discussion about edits from this IP address'); 
 ta['pt-preferences']        = new Array('-','My preferences'); 
 ta['pt-watchlist']          = new Array('l','The list of pages you\'re monitoring for changes.'); 
 ta['pt-mycontris']          = new Array('y','List of my contributions'); 
 ta['pt-login']              = new Array('o','Logging in is not required, but brings many benefits.'); 
 ta['pt-logout']             = new Array('','Log out of your user account'); 
 ta['pt-anonlogin']          = new Array('o','Logging in is not required, but brings many benefits.'); 
 ta['ca-talk']               = new Array('t','Discussion about the content page'); 
 ta['ca-edit']               = new Array('e','You can edit this page. Please use the preview button before saving.'); 
 ta['ca-addsection']         = new Array('+','Start a new discussion'); 
 ta['ca-viewsource']         = new Array('e','This page is protected. You can view its source.'); 
 ta['ca-history']            = new Array('h','Past versions of this page'); 
 ta['ca-protect']            = new Array('=','Protect this page'); 
 ta['ca-unprotect']          = new Array('=','Unprotect this page');
 ta['ca-delete']             = new Array('d','Delete this page'); 
 ta['ca-undelete']           = new Array('d','Restore the edits done to this page before it was deleted'); 
 ta['ca-move']               = new Array('m','Move this page'); 
 ta['ca-nomove']             = new Array('','You don\'t have the permissions to move this page'); 
 ta['ca-watch']              = new Array('w','Add this page to your watchlist'); 
 ta['ca-unwatch']            = new Array('w','Remove this page from your watchlist'); 
 ta['search']                = new Array('f','Search MafiaWiki'); 
 ta['p-logo']                = new Array('','Main page'); 
 ta['n-mainpage']            = new Array('z','Visit the main page'); 
 ta['n-Main-page']           = new Array('z','Visit the main page'); 
 ta['n-portal']              = new Array('','About the forums, what you can do, where to find things');
 ta['n-currentevents']       = new Array('','Find background information on current status'); 
 ta['n-recentchanges']       = new Array('r','List of recent changes in MafiaWiki'); 
 ta['n-randompage']          = new Array('x','Load a random page'); 
 ta['n-help']                = new Array('','The place to find out about how to use MafiaWiki'); 
 ta['n-contact']             = new Array('','How to contact Wikipedia');
 ta['n-sitesupport']         = new Array('','Support us'); 
 ta['t-whatlinkshere']       = new Array('j','List of all wiki pages that link here'); 
 ta['t-recentchangeslinked'] = new Array('k','Recent changes in pages linked from this page'); 
 ta['feed-rss']              = new Array('','RSS feed for this page'); 
 ta['feed-atom']             = new Array('','Atom feed for this page'); 
 ta['t-contributions']       = new Array('','View the list of contributions of this user'); 
 ta['t-emailuser']           = new Array('','Send a mail to this user'); 
 ta['t-upload']              = new Array('u','Upload images or other media files'); 
 ta['t-specialpages']        = new Array('q','List of all special pages');
 ta['t-print']               = new Array('','Printable version of this page');
 ta['t-permalink']           = new Array('','Permanent link to this version of the page');
 ta['t-cite']                = new Array('','Cite this MafiaWiki article');
 ta['ca-nstab-main']         = new Array('c','View the content page'); 
 ta['ca-nstab-user']         = new Array('c','View the user page'); 
 ta['ca-nstab-media']        = new Array('c','View the media page'); 
 ta['ca-article']            = new Array('','This is a special page; you can\'t edit the page itself.'); 
 ta['ca-nstab-project']      = new Array('c','View the project page'); 
 ta['ca-nstab-image']        = new Array('c','View the image page'); 
 ta['ca-nstab-mediawiki']    = new Array('c','View the system message'); 
 ta['ca-nstab-template']     = new Array('c','View the template'); 
 ta['ca-nstab-help']         = new Array('c','View the help page'); 
 ta['ca-nstab-category']     = new Array('c','View the category page');

 /** Collapsible tables *********************************************************
  *
  *  Description: Allows tables to be collapsed, showing only the header. See
  *               [[Wikipedia:NavFrame]].
  *  Maintainers: [[User:R. Koot]]
  */
 
 var autoCollapse = 2;
 var collapseCaption = "hide";
 var expandCaption = "show";
 
 function collapseTable( tableIndex )
 {
     var Button = document.getElementById( "collapseButton" + tableIndex );
     var Table = document.getElementById( "collapsibleTable" + tableIndex );
 
     if ( !Table || !Button ) {
         return false;
     }
 
     var Rows = Table.getElementsByTagName( "tr" ); 
 
     if ( Button.firstChild.data == collapseCaption ) {
         for ( var i = 1; i < Rows.length; i++ ) {
             Rows[i].style.display = "none";
         }
         Button.firstChild.data = expandCaption;
     } else {
         for ( var i = 1; i < Rows.length; i++ ) {
             Rows[i].style.display = Rows[0].style.display;
         }
         Button.firstChild.data = collapseCaption;
     }
 }
 
 function createCollapseButtons()
 {
     var tableIndex = 0;
     var NavigationBoxes = new Object();
     var Tables = document.getElementsByTagName( "table" );
 
     for ( var i = 0; i < Tables.length; i++ ) {
         if ( hasClass( Tables[i], "collapsible" ) ) {
             NavigationBoxes[ tableIndex ] = Tables[i];
             Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex );
 
             var Button     = document.createElement( "span" );
             var ButtonLink = document.createElement( "a" );
             var ButtonText = document.createTextNode( collapseCaption );
 
             Button.style.styleFloat = "right";
             Button.style.cssFloat = "right";
             Button.style.fontWeight = "normal";
             Button.style.textAlign = "right";
             Button.style.width = "6em";
 
             ButtonLink.setAttribute( "id", "collapseButton" + tableIndex );
             ButtonLink.setAttribute( "href", "javascript:collapseTable(" + tableIndex + ");" );
             ButtonLink.appendChild( ButtonText );
 
             Button.appendChild( document.createTextNode( "[" ) );
             Button.appendChild( ButtonLink );
             Button.appendChild( document.createTextNode( "]" ) );
 
             var Header = Tables[i].getElementsByTagName( "tr" )[0].getElementsByTagName( "th" )[0];
             Header.insertBefore( Button, Header.childNodes[0] );
 
             tableIndex++;
         }
     }
 
     for ( var i = 0;  i < tableIndex; i++ ) {
         if ( hasClass( NavigationBoxes[i], "collapsed" ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], "autocollapse" ) ) ) {
             collapseTable( i );
         }
     }
 }
 
 mw.hook( 'wikipage.content' ).add( createCollapseButtons );

 /** Main Page layout fixes *********************************************************
  *
  *  Description:        Various layout fixes for the main page, including an
  *                      additional link to the complete list of languages available
  *                      and the renaming of the 'Article' to to 'Main Page'.
  *  Maintainers:        [[User:AzaToth]], [[User:R. Koot]] from en.wikipedia.org
  */
 
 function mainPageRenameNamespaceTab() {
     try {
         var Node = document.getElementById( 'ca-nstab-main' ).firstChild;
         if ( Node.textContent ) {      // Per DOM Level 3
             Node.textContent = 'Main Page';
         } else if ( Node.innerText ) { // IE doesn't handle .textContent
             Node.innerText = 'Main Page';
         } else {                       // Fallback
             Node.replaceChild( Node.firstChild, document.createTextNode( 'Main Page' ) ); 
         }
     } catch(e) {
         // bailing out!
     }
 }
 
 /*</nowiki>*/

 /** "Technical restrictions" title fix *****************************************
  *
  *  Description:
  *  Maintainers: [[User:Interiot]], [[User:Mets501]] on en.wikipedia.org
  */
 
 // For pages that have something like Template:Lowercase, replace the title, but only if it is cut-and-pasteable as a valid wikilink.
 //	(for instance [[iPod]]'s title is updated.  <nowiki>But [[C#]] is not an equivalent wikilink, so [[C Sharp]] doesn't have its main title changed)</nowiki>
 //
 // The function looks for a banner like this: <nowiki>
 // <div id="RealTitleBanner">    <!-- div that gets hidden -->
 //   <span id="RealTitle">title</span>
 // </div>
 // </nowiki>An element with id=DisableRealTitle disables the function.
 var disableRealTitle = 0;		// users can disable this by making this true from their monobook.js
 if (mw.config.get('wgIsArticle')) {			// don't display the RealTitle when editing, since it is apparently inconsistent (doesn't show when editing sections, doesn't show when not previewing)
     jQuery(function() {
 	try {
 		var realTitleBanner = document.getElementById("RealTitleBanner");
 		if (realTitleBanner && !document.getElementById("DisableRealTitle") && !disableRealTitle) {
 			var realTitle = document.getElementById("RealTitle");
 			if (realTitle) {
 				var realTitleHTML = realTitle.innerHTML;
 				realTitleText = pickUpText(realTitle);
 
 				var isPasteable = 0;
 				//var containsHTML = /</.test(realTitleHTML);	// contains ANY HTML
 				var containsTooMuchHTML = /</.test( realTitleHTML.replace(/<\/?(sub|sup|small|big)>/gi, "") ); // contains HTML that will be ignored when cut-n-pasted as a wikilink
 				// calculate whether the title is pasteable
 				var verifyTitle = realTitleText.replace(/^ +/, "");		// trim left spaces
 				verifyTitle = verifyTitle.charAt(0).toUpperCase() + verifyTitle.substring(1, verifyTitle.length);	// uppercase first character
 
 				// if the namespace prefix is there, remove it on our verification copy.  If it isn't there, add it to the original realValue copy.
 				if (wgNamespaceNumber != 0) {
 					if (wgCanonicalNamespace == verifyTitle.substr(0, wgCanonicalNamespace.length).replace(/ /g, "_") && verifyTitle.charAt(wgCanonicalNamespace.length) == ":") {
 						verifyTitle = verifyTitle.substr(wgCanonicalNamespace.length + 1);
 					} else {
 						realTitleText = wgCanonicalNamespace.replace(/_/g, " ") + ":" + realTitleText;
 						realTitleHTML = wgCanonicalNamespace.replace(/_/g, " ") + ":" + realTitleHTML;
 					}
 				}
 
 				// verify whether wgTitle matches
 				verifyTitle = verifyTitle.replace(/^ +/, "").replace(/ +$/, "");		// trim left and right spaces
 				verifyTitle = verifyTitle.replace(/_/g, " ");		// underscores to spaces
 				verifyTitle = verifyTitle.charAt(0).toUpperCase() + verifyTitle.substring(1, verifyTitle.length);	// uppercase first character
 				isPasteable = (verifyTitle == wgTitle);
 
 				var h1 = document.getElementsByTagName("h1")[0];
 				if (h1 && isPasteable) {
 					h1.innerHTML = containsTooMuchHTML ? realTitleText : realTitleHTML;
 					if (!containsTooMuchHTML)
 						realTitleBanner.style.display = "none";
 				}
 				document.title = realTitleText + " - Wikipedia, the free encyclopedia";
 			}
 		}
 	} catch (e) {
 		/* Something went wrong. */
 	}
     });
 }
 
 //fix edit summary prompt for undo
 //this code fixes the fact that the undo function combined with the "no edit summary prompter" causes problems if leaving the
 //edit summary unchanged
 //this was added by [[User:Deskana]], code by [[User:Tra]] on en.wikipedia.org
 jQuery(function () {
   if (document.location.search.indexOf("undo=") != -1
   && document.getElementsByName('wpAutoSummary')[0]) {
     document.getElementsByName('wpAutoSummary')[0].value='';
   }
 })