Benutzer:PDD/markUTF8.js

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.

  • Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
  • Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
  • Internet Explorer/Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
  • Opera: Strg+F5
 //***********************************************************************
 // Marks usernames containing UTF8 characters
 // by [[Benutzer:PDD]]
 // 27 Apr 2006
 //
 // Markiert in UTF8 kodierte Artikelnamen und Links
 // (z.B. zur Entdeckung von Namendopplungsvandalismus)
 //
 // Änderungen:
 // - 30.09.2006: LTR-Mark detection
 // - 09.01.2014: selbstgestrickte durch Standardfunktionen ersetzt [[Benutzer:TMg]]
 //***********************************************************************

 // <nowiki>

 // main function

 function markUTF8() {

   // Die Markierungen dürfen nie leer sein, das wird hier sichergestellt.
   var markutf8txt      = window.markutf8txt      || "UTF8!";
   var markltrtxt       = window.markltrtxt       || "UTF8:LTR!";

   var utfMark = document.createElement("strong");
   var utfMarkText = document.createTextNode(" (" + markutf8txt + ")");
   utfMark.appendChild(utfMarkText);

   var utfMarkHead = document.createElement("strong");
   var utfMarkHeadText = document.createTextNode(" (" + markutf8txt + ")");
   utfMarkHead.appendChild(utfMarkHeadText);
   utfMarkHead.style.color = 'red';
   utfMarkHead.style.fontSize = 'smaller';

   var ltrMark = document.createElement("strong");
   var ltrMarkText = document.createTextNode(" (" + markltrtxt + ")");
   ltrMark.appendChild(ltrMarkText);

   var ltrMarkHead = document.createElement("strong");
   var ltrMarkHeadText = document.createTextNode(" (" + markltrtxt + ")");
   ltrMarkHead.appendChild(ltrMarkHeadText);
   ltrMarkHead.style.color = 'red';
   ltrMarkHead.style.fontSize = 'smaller';

   // welche Seiten sollen markiert werden?
   var is_history = mw.config.get('wgAction') == 'history';
   var is_diff    = mw.util.getParamValue('diff') !== null;

   if ( ((mw.config.get('wgNamespaceNumber') >= -1) && (mw.config.get('wgNamespaceNumber') <= 4 )) ||
         is_history || is_diff) {
      var content_elem = (document.getElementById('content') != null) ? document.getElementById('content') : document.getElementById('mw_contentholder');
      // do the headings first
      var allheads = content_elem.getElementsByTagName('H1');
      for (var i=0; i < allheads.length; i++) {
          if (allheads[i].className == "firstHeading") {
              if (returnWarnUnicode(mw.config.get('wgTitle')))
                  allheads[i].appendChild(utfMarkHead.cloneNode(true));
              if (allheads[i].innerHTML.indexOf("\u200E") != -1)
                  allheads[i].appendChild(ltrMarkHead.cloneNode(true));
          }
      }

      // do the anchors second
      var allanchors = content_elem.getElementsByTagName("A");
      // evtl. auch noch die Anchors in p-cactions dazujoinen?
      for (var i=0; i < allanchors.length; i++) {
         var aNode = allanchors[i];
         if (aNode.firstChild && aNode.firstChild.nodeName === 'IMG')
              continue;
         // see if link has '%' in it
         if ((href = aNode.getAttribute("href")) && href.indexOf("%") != -1) {
              // yes, so it might be fakey UTF8
              if ( (href.indexOf('Spezial:') == -1) && (href.indexOf('Spezial%3A') == -1) &&
                   (href.search(/diff=/) == -1) && (href.search(/printable=/) == -1) &&
                   (href.search(/oldid=/) == -1) && (href.search(/curid=/) == -1) &&
                   (href.search(/action=history/) == -1) && (href.search(/section=/) == -1) &&
                   (href.search(/action=watch/) == -1) && (href.search(/action=unwatch/) == -1) ) {
                   try {
                       href = decodeURIComponent(href);
                   }
                   catch (e) {
                   }
                   // does this lemma contain problematic UTF8 characters?
                   if (returnWarnUnicode(href))
                       aNode.appendChild(utfMark.cloneNode(true));
                   if (href.indexOf("\u200E") != -1)
                       aNode.appendChild(ltrMark.cloneNode(true));
              }
         }
      }
   }
 }

 function returnWarnUnicode (utftext) {
      return /[\u036F-\u0500]/.test(utftext); // greek or cyrillic
 }

 $(document).ready(markUTF8);

 // </nowiki>