Jump to content

User:Tinz/addEditAndRevertLinks.js

From Wikipedia, the free encyclopedia
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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.
 // ============================================================
 // BEGIN addEditAndRevertLinks
 // (ursprünglich von [[Benutzer:Berlin-Jurist]] so weit ich weiß)
 // Revert-Fkt hinzugefügt + Beschränkung auf Seiten wo es Sinn macht. [[Benutzer:Littl]].
 //
 // verschiedene Fixes von [[Benutzer:PDD]]:
 // - verwirrende Extrabuttons auf den Diff-Seiten (oben in den Tabs) entfernt
 // - ausführlichere Revert-Informationen
 // - bessere Erkennung von zu revertierenden/editierenden Links
 // - optional Benutzer-Link in Revertinfo (über var revlinkshowuser)
 // - Anpassung auf neue MediaWiki-Oberfläche (31.5.2006)
 // - Verhinderung zu langer Editkommentare
 
 // <nowiki>
 
 // Variables that should be defined in your monobook
 if (typeof(editlinkoldversion) == 'undefined')
     var editlinkoldversion = true;
 if (typeof(editlinktxt) == 'undefined')
     var editlinktxt = "edit";
 if (typeof(revertwithreason) == 'undefined')
     var revertwithreason = true;
 if (typeof(revlinktxt) == 'undefined')
     var revlinktxt = "rev";
 if (typeof(revlinkshowuser) == 'undefined')
     var revlinkshowuser = true;
 if (typeof(rvisminor) == 'undefined')
     var rvisminor = true;
 if (typeof(aearldefault) == 'undefined')
     var aearldefault = "Reason: no improvement of article";
 if (typeof(aearlhere) == 'undefined')
     var aearlhere = false;
 
 // Hauptfunktion: addEditAndRevertLinks
 function addEditAndRevertLinks() {
 
   var is_history = (UrlParameters['action']=='history');
   var is_diff = (UrlParameters['diff']>'');
 
   var mainNode = document;
 
   if (is_history) {
     for (var i=0; mainNode = document.body.getElementsByTagName("UL")[i]; i++)
        if (mainNode.id == "pagehistory")
            tagNodes (mainNode, is_history, is_diff);
   }
   else if (is_diff) {
     for (var i=0; mainNode = document.body.getElementsByTagName("TD")[i]; i++)
        if ((mainNode.className == "diff-otitle") || (mainNode.className == "diff-ntitle"))
            tagNodes (mainNode, is_history, is_diff);
   }
 }
 // END addEditAndRevertLinks
 // ============================================================
 
 // tagNodes (tagging descendant nodes of mainNode)
 function tagNodes (mainNode, is_history, is_diff) {
 
   var Edit = "(" + editlinktxt + ")";
   var Rv   = "(" + revlinktxt + ")";
 
   var first= true;
   for (var i=0; aNode = mainNode.getElementsByTagName("A")[i]; i++)
   {
     // if it's a link to an old version but not a diff-link and not already an edit link
     if ( (href = aNode.getAttribute("href")) && (href.search(/oldid=/) != -1) 
          && (href.search(/diff=/) == -1) && (href.search(/action=edit/) == -1) )
     {
       // Create Edit link (only on history; new MW has edit links on diffpage so we can skip this)
       if (editlinkoldversion  && is_history) {
         var EditNode = document.createElement('a');
         EditNode.setAttribute('href', href + '&action=edit#summary'); 
         var EditTextNode = document.createTextNode(Edit);
         EditNode.appendChild(EditTextNode);
         // Add Edit Link To Old Version Link
         aNode.parentNode.insertBefore( EditNode, aNode.nextSibling );
         // Insert whitespace before Edit Link
         aNode.parentNode.insertBefore( document.createTextNode(' '), aNode.nextSibling );
         // jump over inserted (edit) anchor
         i++;
       }
 
       // Create RV Link
       if (revertwithreason && (is_diff || (is_history && !first))) {  
        var rvtimestamp = aNode.innerHTML.replace(/.*from /,'');
        var rvtsdate = rvtimestamp.replace(/.*, /,'');
        var rvtstime = rvtimestamp.replace(/, .*/,'');
        // für ISO 8601 datumsformat: erstmal keine Umformung
        if (rvtsdate == rvtstime) rvtstime = '';
 
        // Benutzernamen müsste man eigtl. aus dem href nehmen (um UTF8-Namen korrekt zu übernehmen),
        // aber dann brauchen wieder IPs eine Sonderbehandlung. Vielleicht später...
        var rvuser;
        if (is_history)
           rvuser = mainNode.getElementsByTagName("A")[i+1].innerHTML;
        else  {
           // is_diff
           // linke Seite?
           if (mainNode.getElementsByTagName("A")[i+3].innerHTML == "Discussion")
              rvuser = mainNode.getElementsByTagName("A")[i+2].innerHTML;
           // rechte Seite
           else
              rvuser = mainNode.getElementsByTagName("A")[i+3].innerHTML;
        }
        // kleiner Hack für Username mit '&'
        rvuser = rvuser.split('&amp;').join('&');
 
        var defaultgrund = 'Revert to version by ' + rvtsdate + 
                           ((rvtstime == '')? '' : (' (' + rvtstime + ')'));
        if (revlinkshowuser)
            defaultgrund = 'Revert to version by [[User:' + rvuser + ']] (' + rvtsdate +
            ((rvtstime == '')? '' : (', ' + rvtstime)) + ')';
 
        var Rvnode = document.createElement('a');
        Rvnode.setAttribute('href', 'javascript:revertme("' + encodeURI(href) + '", "' + defaultgrund + '")');     
        var RvTextNode = document.createTextNode(Rv);
        Rvnode.appendChild(RvTextNode);
        aNode.parentNode.insertBefore( Rvnode, aNode.nextSibling );
        aNode.parentNode.insertBefore( document.createTextNode(' '), aNode.nextSibling );
        // jump over inserted (rev) anchor
        i++;
       } // END if2
       first=false;
     } // END if1
   } // END for
 }
 // END tagNodes
 // ============================================================
 
 // revertme by Littl, extended by PDD
 function revertme (href, defaultgrund) {
   var detailgrund = prompt(defaultgrund, aearldefault);
   if (detailgrund == null) return;
 
   detailgrund = trim(detailgrund);
   // detailgrund-shortcuts von [[Benutzer:-jha-]]
   switch (detailgrund) {
      case "for":  
      case "web":  detailgrund='Link bietet keine [[WP:WEB|weiterführenden lexikographischen Informationen]].';
                   break;
      case "pop":  detailgrund='Link führte zu Website mit bevormundender Navigation (siehe auch [[WP:WEB]]).';
                   break;
      case "dis":  detailgrund='Bitte Diskussionsseite beachten.';
                   break;
      case "rere": detailgrund='Bitte zunächst auf der Diskussionsseite einen Konsens herstellen.';
                   break;
      case "va":
      case "ba":   detailgrund='Grund: Vandalismus.';
                   break;
      case "er":   detailgrund='Eigenrevert! (Ich muss wohl mal wieder zum Optiker...)';
                   break;
      case "unt":  detailgrund='Nicht unterschriebenen Diskussionsbeitrag entfernt (siehe auch [[WP:SIG]]).';
                   break;
      case "unf":  detailgrund='Grund: Unfall in der Editbox';
                   break;
      case "twl":  detailgrund='Bitte keine externen Links (Weblinks) im Artikeltext selbst angeben (siehe auch [[WP:WEB]]).';
                   break;
      case "blau": detailgrund='Bitte keine extreme Überverlinkung (siehe auch [[WP:BLAU]]).';
                   break;
      case "blau2": detailgrund='[[Bitte]] [[keine]] [[Links]] [[ohne]] [[Bezug]] zum [[Thema]] [[reinsetzen]]. [[Danke]].';
                   break;
      case "komm": detailgrund='Kommentare gehören nicht in den Artikel, sondern auf die Diskussionsseite.';
                   break;
      case "qa":   detailgrund='Bitte inhaltliche Änderungen mit Fundstellen/Belegen/Quellen begründen (siehe auch [[WP:BLG]]) und künftig den Hinweis "[[WP:ZQ|Zusammenfassung und Quellen]]" nutzen.';
                   break;
      case "rl":   detailgrund='Relevanz fraglich. Bei Beispielaufzählungen mit mehreren "blauen" Links keine "roten" Links hinzufügen. Relevanz durch Anlegen der entsprechenden Artikel klären (siehe [[WP:VL]]).';
                   break;
      case "pov":  detailgrund='Beitrag widerspricht dem Grundsatz des [[WP:NPOV|Neutralen Standpunktes]].';
                   break;
      case "wl":   detailgrund='Nicht begründete/nachvollziehbare Ver-/Entlinkung. Bitte begründen! ([[WP:ZQ|Zusammenfassung und Quellen]] oder ggf. Diskussionsseite nutzen.)';
                   break;
      case "loe":  detailgrund='Nicht begründete/nachvollziehbare Entfernung längerer Textabschnitte. Bitte begründen! ([[WP:ZQ|Zusammenfassung und Quellen]] oder ggf. Diskussionsseite nutzen.)';
                   break;
      case "wwni": detailgrund='Form des Beitrages vermittelt kein enzyklopädisches Wissen. Bitte die Grundsätze in [[WP:WWNI|Was Wikipedia nicht ist]] beachten.';
                   break;
      case "enz":  detailgrund='Beitrag nicht von enzyklopädischer Textqualität. Bitte "[[WP:WSIGA|Wie schreibe ich einen guten Artikel]]" beachten.';
                   break;
      case "otrs": detailgrund='OTRS-Freigabe ist eingetroffen, bitte siehe die Diskussionsseite des Artikels.';
                   break;
      case "man":  detailgrund='Bitte keine fremden Diskussionsbeiträge verändern.';
                   break;
   }
 
   // sicherstellen, dass Begründung in die Zusammenfassungszeile passt
   if (EditCommentLength(defaultgrund+detailgrund+2) < 0) {
      // zu lang, also erstmal den defaultgrund kürzen
      defaultgrund = 'Revert';
      var commenttoolong = true;
      while ((commenttoolong == true) && (detailgrund != null)) {
        if ((superflu=EditCommentLength(defaultgrund+detailgrund+2)) < 0)
            detailgrund = prompt("Die Begründung ist leider etwas zu lang.\nBitte um "+(0-superflu)+" Zeichen kürzen.", detailgrund);
        else
            commenttoolong = false;
      }
   }
 
   if (detailgrund == null) return;
   if (detailgrund=='') grund = trim(defaultgrund);
   else grund = defaultgrund + ((defaultgrund == 'Revert')? ': ' : '. ') + detailgrund;
 
   href = href + "&action=edit&" + asuserp + "=" + generate_asuser() + "&" + astimep + "=" + generate_astime() + "&" + subjp + "=" + encodeURIComponent(grund);
   if (rvisminor) href = href + "&" + minorp + "=1";
   if (aearlhere)
      window.open (href,'_self','',true);
   else
      window.open (href,'_blank');
   window.focus(); 
 }
 // END revertme
 // ============================================================
 
 addOnloadHook(addEditAndRevertLinks);
 
 // </nowiki>