User:Interiot/js/RealTitle.js

From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
 /** "Technical restrictions" title fix *****************************************
  *
  *  Description:
  *  Maintainers: [[User:Interiot]], [[User:Mets501]]
  */
 
 // 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)
 	 addOnloadHook(function() {
 		try {
 			var realTitleBanner = document.getElementById("RealTitleBanner");
 			if (realTitleBanner && !document.getElementById("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 (mw.config.get('wgNamespaceNumber') != 0) {
 						if (mw.config.get('wgCanonicalNamespace') == verifyTitle.substr(0, mw.config.get('wgCanonicalNamespace').length).replace(/ /g, "_") && verifyTitle.charAt(mw.config.get('wgCanonicalNamespace').length) == ":") {
 							verifyTitle = verifyTitle.substr(mw.config.get('wgCanonicalNamespace').length + 1);
 						} else {
 							realTitleText = mw.config.get('wgCanonicalNamespace').replace(/_/g, " ") + ":" + realTitleText;
 							realTitleHTML = mw.config.get('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 == mw.config.get('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. */
 		}
 	 });
 }