Zum Inhalt springen

Benutzer:Umherirrender/monobook.js

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 11. August 2013 um 22:08 Uhr durch Umherirrender (Diskussion | Beiträge) (fix). Sie kann sich erheblich von der aktuellen Version unterscheiden.

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
  • Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
/*
 * @author Umherirrender - [[:de:User:Umherirrender]]
 * develop with and for Internet Explorer 8
 *
 * gegen Übernahmen spricht nichts, nur bitte nicht diese JavaScript-Seite direkt einbinden
 * ohne Gewähr und ohne Support
 *
 * eigene Anpassungen für die deutschsprachige Wikipedia
 */

/*
 * Globale Anpassungen
 * [[Benutzer:Umherirrender/monobook-sul.js]]
 */
document.write('<script type="text/javascript" src="//de.wikipedia.org/w/index.php?title=Benutzer:Umherirrender/monobook-sul.js&action=raw&ctype=text/javascript"><\/script>');

/*
 * Anpassungen FlaggedRevs
 * [[Benutzer:Umherirrender/monobook-flaggedrevs.js]]
 */
document.write('<script type="text/javascript" src="//de.wikipedia.org/w/index.php?title=Benutzer:Umherirrender/monobook-flaggedrevs.js&action=raw&ctype=text/javascript"><\/script>');

//<nowiki>

/*
 * lokale Anpassungen
 */

/* belasse den lokalen Bearbeitungslink bei Commonsbilder - aus [[MediaWiki:Common.js]] */
mw.config.set( 'keepLocalFileTabs', true );

mw.loader.using( [ 'mediawiki.util' ], function() { $( function () {
 var wgNamespaceNumber = mw.config.get( 'wgNamespaceNumber' );
 /* nur Systemnachrichten */
 if( wgNamespaceNumber === 8 ) {
  /* link zum translatewiki */
  var messageName = mw.config.get( 'wgTitle' );
  if( messageName.indexOf( '/' ) === -1 ) {
   messageName += '/de';
  }
  mw.util.addPortletLink(
   'p-tb',
   '//translatewiki.net/wiki/MediaWiki:' + mw.util.wikiUrlencode( messageName ),
   'Translatewiki',
   't-translatewiki',
   'Translatewiki',
   'b',
   '#t-recentchangeslinked'
  );
 }
 /* nur Dateien */
 if( wgNamespaceNumber === 6 ) {
  /* setzt die hinzugefügten Hinweise bei Dateien sichtbar in den ersten head */
  var firstHeading = $( '#firstHeading' );
  var nc = $( '#Vorlage_NowCommons' );
  if( nc.length ) {
   var span = $( document.createElement( 'span' ) );
   span.css( 'font-size', '50%' );
   span.attr( 'id', 'hinweis-local-file-nc' );
   span.text( ' (NowCommons)' );
   firstHeading.append( span );
  }
  var sc = $( '#Vorlage_ShadowsCommons' );
  if( sc.length ) {
   var span = $( document.createElement( 'span' ) );
   span.css( 'font-size', '50%' );
   span.attr( 'id', 'hinweis-local-file-sc' );
   span.text( ' (ShadowsCommons)' );
   firstHeading.append( span );
  }
 }
 /* nur im Vorschaumodus */
 if ( mw.config.get( 'wgAction' ) === 'submit' ) {
  //hinweis wenn noch keine Bearbeitungskommentar zum voreingestellten Text ergänzt wurde
  var summary = $( '#wpSummary' );
  if ( summary.length && summary.val().substring(0,2) === ' |' ) {
   summary.css( 'background-color', 'FF6A6A' );
  }
 }
 /* im Bearbeitenmodus */
 if ( mw.config.get( 'wgAction' ) === 'edit' || mw.config.get( 'wgAction' ) === 'submit' ) {
  /* ergänzt zum label für Zusammenfassungszeile ein Auswahlmenü */
  // span of the label
  var spanLabel = document.getElementById( "wpSummaryLabel" );
  //nur, wenn unter der Textbox steht
  if ( spanLabel && spanLabel.parentNode && spanLabel.parentNode.className === "editOptions" ) {
   //the select
   var summarySelect = document.createElement( "select" );
   summarySelect.name = "summarySelect";
   summarySelect.id = "summarySelect";
   summarySelect.onchange = changeSummarySelect;
   // the label
   var label = spanLabel.getElementsByTagName ( "label" )[0];
   // set default
   var optionFirst = document.createElement( "option" );
   summarySelect.appendChild ( optionFirst );
   //Zeile kann link enthalten, suche Text
   var child = label.firstChild;
   while (!child.data) {
    child = child.firstChild;
   }
   //text setzen
   optionFirst.value = "";
   optionFirst.text = child.data;
   if ( summaryOption && summaryOption.length ) {
    //set options
    for (var i = 0; i < summaryOption.length; i++) {
     var option = document.createElement( "option" );
     summarySelect.appendChild ( option );
     option.value = summaryOption[i];
     option.text = summaryOption[i];
    }
   }
   //make visible - hidden by my css
   spanLabel.style.display="block";
   //remove label
   spanLabel.removeChild( label ) ;
   //append select
   spanLabel.appendChild( summarySelect );
   
   //Link zum leeren der Zusammenfassung
   spanLabel.appendChild( document.createTextNode( '  | ' ) );
   var aLeeren = document.createElement( 'a' );
   aLeeren.href = 'javascript:summaryLeeren()';
   aLeeren.appendChild( document.createTextNode( 'leeren' ) );
   spanLabel.appendChild ( aLeeren );
   //vordefinierten Text entfernen
   spanLabel.appendChild( document.createTextNode( ' | ' ) );
   var aEntfernen = document.createElement( 'a' );
   aEntfernen.href = 'javascript:summaryEntfernen()';
   aEntfernen.appendChild( document.createTextNode( 'entfernen' ) );
   spanLabel.appendChild ( aEntfernen );
   //bei falsche auswahl
   spanLabel.appendChild( document.createTextNode( ' | ' ) );
   var aFalsch = document.createElement( 'a' );
   aFalsch.href = 'javascript:summaryFalsch()';
   aFalsch.appendChild( document.createTextNode( 'falsch' ) );
   spanLabel.appendChild ( aFalsch );
  }
  var textbox = document.getElementById("wpTextbox1");
  //falls man nicht darf, braucht es auch keine Auswahl
  if(textbox && !textbox.getAttribute("readonly")) {
   /* setzt ein Auswahlmenü für Textvorlagen */
   var textTemplateSelect = document.createElement( "select" );
   textTemplateSelect.name = "textTemplateSelect";
   textTemplateSelect.id = "textTemplateSelect";
   textTemplateSelect.onchange = changeTextTemplateSelect;
   var textTemplateOutput = document.createElement( "input" );
   textTemplateOutput.name = "textTemplateOutput";
   textTemplateOutput.id = "textTemplateOutput";
   textTemplateOutput.size = "60";
   // set default
   var optionTextvorlage = document.createElement( "option" );
   textTemplateSelect.appendChild ( optionTextvorlage );
   optionTextvorlage.value = "";
   optionTextvorlage.text = "Textvorlage auswählen";
   //set options
   setOptionsToSelect(textTemplateSelect, textTemplateOption );
   //set on window before textarea - div to avoid line feed
   var div = document.createElement( "div" );
   div.appendChild(textTemplateSelect);
   div.appendChild(textTemplateOutput);
   textbox.parentNode.insertBefore(div, textbox);
  }
  // Funktionen in [[Benutzer:Umherirrender/monobook-tidy-up.js]] enthalten
  //Link für Suchen und Ersetzen
  addPortletLink( 'p-tb', 'javascript:loadTidyup();tidyupReplace()', 'Suchen und Ersetzen', 't-tidy-up-replace', 'tidy-up-replace', null, null );
  //Standardlink zum Quelltext aufräumen
  addPortletLink( 'p-tb', 'javascript:loadTidyup();tidyup()', 'tidy-up', 't-tidy-up', 'tidy-up', null, null );
 }
})});

/* event of summarySelect */
function changeSummarySelect() {
 var summarySelect = document.getElementById( "summarySelect" );
 var option = summarySelect.getElementsByTagName( "option" )[ summarySelect.selectedIndex ];
 var summary = document.getElementById( "wpSummary" );
 //append with a space
 if (summary.value === "") {
  summary.value = option.value;
 }
 //für vorbelegungen
 else if (summary.value.substring(0,2) === " |") {
  summary.value = option.value + summary.value;
 } else {
  summary.value += " " + option.value;
 }
}

/* event of textTemplateSelect */
function changeTextTemplateSelect() {
 var textTemplateSelect = document.getElementById( "textTemplateSelect" );
 var textTemplateOutput = document.getElementById( "textTemplateOutput" );
 var option = textTemplateSelect.getElementsByTagName( "option" )[ textTemplateSelect.selectedIndex ];
 // extra behandlung für katsort
 if( option.text === 'katsort' ) {
  var textarea = document.getElementById( 'wpTextbox1' );
  if( textarea ) {
   var content = textarea.value;
   //bereits vorhanden?
   if( content.match( /\{\{\s*(?:SORTIERUNG|DEFAULTSORT|DEFAULTSORTKEY|DEFAULTCATEGORYSORT)\s*:[^\}]*\}\}/i ) ) {
    textTemplateOutput.style.backgroundColor = 'red';
   } else {
    //ersetze den ersten Kategorieeintrag durch SORTIERUNG und den Kategorieeintrag
    textarea.value = content.replace( /\s*\[\[\s*(?:kategorie|category)\s*:([^\|\]]*)\|?([^\]]*)\]\]/i,
                                       '\n\n{{SORTIERUNG:$2}}\n[[Kategorie:$1]]' );
   }
  }
 }
 //SLAs am Anfang ins Textfeld einfügen
 else if( option.value.match( /\{\{SLA\|/ ) ) {
  var textarea = document.getElementById( 'wpTextbox1' );
  if( textarea ) {
   textarea.value = option.value + '\n'
                  + textarea.value;
  }
 }
 textTemplateOutput.value = option.value;
 textTemplateOutput.select();
}

function setOptionsToSelect( select, desc, subdesc ) {
 for (var id in desc) {
  var value = desc [ id ];
  var subdescfordesc = null;
  if( typeof( value ) === 'object' ) {
   subdescfordesc = value;
  }
  
  //sofern Unterdefinitionen vorhanden sind
  if ( subdescfordesc !== null ) {
   var optgroup = document.createElement( "optgroup" );
   select.appendChild ( optgroup );
   optgroup.label = id;
   optgroup.value = id;
   for ( var subid in subdescfordesc ) {
    var option = document.createElement( "option" );
    optgroup.appendChild ( option );
    option.value = subdescfordesc [ subid ];
    option.text = subid;
   }
  } else {
    var option = document.createElement( "option" );
    select.appendChild ( option );
    option.value = value;
    option.text = id;
  }
 }
}

 /* angezeigter Text für die Zusammenfassung */
 var summaryOption = [
  "aw",
  "SLA",
  "katsort",
  "navifix",
  "linkfix",
  "dateifix",
  "typo",
  "reihenfolge",
  "PDfix",
  "PD ergänzt",
  "korrigiere Vorlageneinbindung",
  "Vorlage existiert nicht",
  "Vorlagen existieren nicht",
  "Vorlageneinbindung überflüssig",
  "nowiki, damit keine Vorlageneinbindung entsteht",
  "nowiki, damit keine Vorlageneinbindungen entstehen",
  "nowiki, damit keine Vorlagen- und Dateieinbindungen entstehen",
  "ich erlaube mir, die Seite zu leeren, um [[Spezial:Fehlende Vorlagen]] zu entlasten",
  "+{{[[Vorlage:Dokumentation|Dokumentation]]}}",
  "Doku ausgelagert",
  "Metadaten ausgelagert",
  "[[Wikipedia:Vermeide Selbstreferenzen]]",
  "[[Vorlage:PNDfehlt|PNDfehlt]] ist nur optional sichtbar, daher kein Aufzählungszeichen",
  "Keine browserspezifischen Anpassungen",
  "[[Hilfe:Einzelnachweise#Mehrspaltigkeit und alternative Formatierungen]]",
  "Lokale Anpassungen einer Systemnachricht auch für die Sprachvariante, durch Einbindung der Systemnachricht",
  "Vorlagenparameter damit Systemnachricht in Sprachvarianten einbindbar ist",
  "Keine Vorlagenkategorien in Artikelkategorien",
  "Keine Vorlagen in Artikelkategorien",
  "Keine Benutzerseiten in Artikelkategorien",
  "Keine Benutzerkategorien in Artikelkategorien",
  "Keine Dateien in Artikelkategorien",
  "Keine Dateikategorien in Artikelkategorien",
  "-lagewunsch, Koordinaten bereits vorhanden",
  "-lagewunsch, bereits durch Infobox",
  "Koordinaten in Infobox übertragen",
  "Toolbar-Müll entfernt"
 ];

 /* angezeigter Text als Textvorlage - links der angezeigte Text - rechts der gesetzte Text */
 var textTemplateOption = {
  "katsort": "{{SORTIERUNG:}}",
  'erledigt': '{{erledigt|~~~~}}',
  "SLAs": {
   "SLA": "{{SLA| --~~~~}}",
   "SLA (Vorlage)": "<noinclude>{{SLA| --~~~~}}</noinclude>",
   "Tastaturtest": "{{SLA|Tastaturtest --~~~~}}",
   "Verschieberest": "{{SLA|Verschieberest --~~~~}}",
   "Verschieberest (Vorlage)": "<noinclude>{{SLA|Verschieberest --~~~~}}</noinclude>",
   "Weiterleitung": "{{SLA|Unnötige Weiterleitung --~~~~}}",
   "Weiterleitung (NS)": "{{SLA|Unnötige Weiterleitung zwischen Namensräumen --~~~~}}",
   "lokale Dateiseite": "{{SLA|Unnötige Bildbeschreibungsseite für Commonsbild --~~~~}}",
   "auf Commons": "{{SLA|Informationen bereits auf Commons --~~~~}}",
   "nach Commons": "{{SLA|nach Commons übertragen --~~~~}}",
   "lokale Dateikat": "{{SLA|Keine lokale Kategorisierung von Commonsdateien --~~~~}}"
  },
  "Dokumentation": {
   "Dokumentation": "{{Dokumentation}}",
   "verwaist": "<noinclude>{{SLA|verwaiste Unterseite zu gelöschter Vorlage --~~~~}}</noinclude>",
   "Dokuseite": "<noinclude>{{Dokumentation/Dokuseite}}</noinclude>",
   "Metaseite": "<noinclude>{{Dokumentation/Metaseite}}</noinclude>",
   "Testseite": "<noinclude>{{Dokumentation/Testseite}}</noinclude>",
   "Wartungsseite": "<noinclude>{{Dokumentation/Wartungsseite}}</noinclude>",
   "Druckversion": "<noinclude>{{Dokumentation/Druckversion}}</noinclude>",
   "Unterseite": " <noinclude>{{Dokumentation/Unterseite}}</noinclude>",
   "Preloadseite": "<noinclude>{{Dokumentation/Preloadseite}}</noinclude>"
  }
 };

 //</nowiki>

/* Quelltext aufräumen
 * [[Benutzer:Umherirrender/monobook-tidy-up.js]]
 * load on demand
 */
function loadTidyup() {
 if( window.tidyupLoaded ) {
  return;
 }
 mw.loader.load( '//de.wikipedia.org/w/index.php?title=Benutzer:Umherirrender/monobook-tidy-up.js&action=raw&ctype=text/javascript' );
 window.tidyupLoaded = true;
}

 //<nowiki>

$( function() { 
 //nur Artikel und beim Öffnen des Bearbeitenmodus
 if ( mw.config.get( 'wgNamespaceNumber' ) === 0 && mw.config.get( 'wgAction' ) === 'edit' ) {
  loadTidyup();
  tidyup();
 }
});

function summaryFalsch () {
 var summary = document.getElementById( 'wpSummary' );
 if ( summary ) {
  var index = summary.value.indexOf( ' |' );
  if ( index !== -1 ) {
   summary.value = summary.value.substring( index );
  } else {
   summary.value = '';
  }
 }
}

function summaryEntfernen () {
 var summary = document.getElementById( 'wpSummary' );
 if ( summary ) {
  var index = summary.value.indexOf( ' |' );
  if ( index !== -1 ) {
   summary.value = summary.value.substring( 0, index );
  }
 }
}

function summaryLeeren () {
 var summary = document.getElementById( 'wpSummary' );
 if ( summary ) {
  summary.value = '';
 }
}
//</nowiki> __NOINDEX__

/**
 * Dynamische Beschränkung der Eingabelänge des Begründungsfeldes bei
 * Versionslöschungen, Seitenlöschungen, Benutzersperren und Seitenschutz
 * see [[bugzilla:34467]]
 * Something for [[MediaWiki:Group-sysop.js]]
 */
if( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Revisiondelete' || mw.config.get( 'wgAction' ) === 'revisiondelete'
 || mw.config.get( 'wgAction' ) === 'delete'
 || mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Block'
 || mw.config.get( 'wgAction' ) === 'protect' || mw.config.get( 'wgAction' ) === 'unprotect'
 ) {
 mw.loader.using( [ 'jquery.byteLimit' ], function() { $( function() {
  var reasonList = $( '#wpRevDeleteReasonList, #wpDeleteReasonList, #mw-input-wpReason, #wpProtectReasonSelection' );
  var currentValReasonList = reasonList.val();
  reasonList.change( function() {
   currentValReasonList = reasonList.val();
  });
  $( '#wpReason, #mw-input-wpReason-other, #mwProtect-reason' ).byteLimit( 255, function( input ) {
   if( currentValReasonList === 'other' || !currentValReasonList ) {
    return input;
   } else if( input ) {
    return currentValReasonList + ': ' + input; // [[MediaWiki:Colon-separator]]
   } else {
    return currentValReasonList;
   }
  });
 })});
}

/* Test, Anzeigen Wikibase_item für Seiten einer Kategorie */
if( mw.config.get( 'wgNamespaceNumber' ) === 14 ) {
  mw.loader.using( [ 'mediawiki.api', 'mediawiki.util', 'mediawiki.notify' ], function() {

    $history = $( '#ca-history' );
    if ( $history.length ) {
      mw.util.addPortletLink(
      'p-cactions',
      '#',
      'WD',
      'ca-wikibase-item',
      'Datenobjekte anzeigen',
      'w',
      $history[0] //needs the dom element
     );
   }
   var types = {
     'page': '#mw-pages',
     'subcat': '#mw-subcategories',
     'file': '#mw-category-media',
   }

   $( '#ca-wikibase-item' ).click( function() {

   var api = new mw.Api();

   for( var type in types ) {
       var section = $( types[type] );
       if( section.length ) {
           query = {
               requestid: type,
               action: 'query',
               generator: 'categorymembers',
               gcmtitle: mw.config.get( 'wgPageName' ),
               gcmlimit: 200,
               gcmtype: type,
               gcmsort: 'sortkey',
               prop: 'pageprops',
               ppprop: 'wikibase_item',
           }
           var from = mw.util.getParamValue( type + 'from' );
           if ( from ) {
               query.gcmstartsortkey = from;
           }
           var until = mw.util.getParamValue( type + 'until' );
           if ( until ) {
               query.gcmstartsortkey = until;
               query.gcmdir = 'descending';
           }
           api.get( query )
               .done( function( data ) {
                    var pages = data.query.pages;
                    var type = data.requestid;
                    var map = {};
                    for( var pageId in pages ) {
                        var page = pages[pageId];
                        var title = page.title;
                        if ( page.ns !== 0 ) {
                            title = title.substring( mw.config.get( 'wgFormattedNamespaces' )[page.ns].length + 1 );
                        }
                        map[title] = page.pageprops || {};
                    }
                    $( types[type] ).find( 'li' ).each( function() {
                        var $this = $( this );
                        var title = $this.find( 'a' ).text();
                        var pageprops = map[title];
                        if ( pageprops.wikibase_item ) {
                            var a = $( document.createElement( 'a' ) );
                            a.attr( 'href', '//www.wikidata.org/wiki/' + pageprops.wikibase_item );
                            a.text( pageprops.wikibase_item );
                            var span = $( document.createElement( 'span' ) );
                            span.css( 'font-size', 'smaller' );
                            span.append( ' (' );
                            span.append( a );
                            span.append( ')' );
                            $this.append( span );
                        } else {
                            var span = $( document.createElement( 'span' ) );
                            span.css( 'font-size', 'smaller' );
                            span.text( ' (nicht verbunden)' );
                            $this.append( span );
                        }
                    });
               })
               .fail( function( code, data ) {
                   mw.notify(
                       'Fehler beim Holen der Datenobjekte.' +
                       ' (' + code + ( data && data.error && data.error.info ? ': ' + data.error.info : '' ) + ')',
                       { tag: 'wikibase-item-error' }
                   );
               })
           ;
        }
   }
})
});
}