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. 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.

 /** "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 (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 (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. */
 		}
 	 });
 }