Benutzer:Eduevokrit/common.cs
mw.loader.load("https://en.wikipedia.org/w/index.php?title=User:PerfektesChaos/js/externalLinkProblem/r.js&action=raw&bcache=1&maxage=86400&ctype=text/javascript"); importScript("user:lustiger_seth/unsigned.js"); importScript('Benutzer:TMg/weblinkChecker.js'); //Benutzer:TMg/weblinkChecker.js mw.loader.load("//tools.wmflabs.org/deadlinkfinder/script.js");
//Skriptsammlung Fliegelflagel, Benutzer:Schnark/js/fliegelflagel (function (module) { if (mw.loader.getState(module)) { mw.loader.using(module).done(function () { mw.libs.ve.addPlugin(function () { var ve = $.Deferred(); mw.hook('userjs.schnark-fliegelflagel.ve').fire(ve); return ve.promise(); }); }); } })('ext.visualEditor.desktopArticleTarget.init'); mw.hook('userjs.schnark-fliegelflagel.userdefine').fire({ version: 1.0, profile: undefined, additional: { }, config: { } }); //Benutzer:Schnark/js/fliegelflagel.js/define.js mw.loader.load('https://de.wikipedia.org/w/index.php?title=Benutzer:Schnark/js/fliegelflagel.js/define.js&action=raw&ctype=text/javascript'); mw.loader.load('https://de.wikipedia.org/w/index.php?title=Benutzer:Schnark/js/fliegelflagel.js/load.js&action=raw&ctype=text/javascript'); //Fliegelflagel Ende
/* eigene Skripts*/
// User:ExURLBot/externalURLform.js mw.loader.load( 'https://de.wikipedia.org/w/index.php?title=User:ExURLBot/externalURLform.js&action=raw&ctype=text/javascript' ); // User:TMg/autoFormatter.js mw.loader.load( 'https://de.wikipedia.org/w/index.php?title=Benutzer:TMg/autoFormatter.js&action=raw&ctype=text/javascript' ); // autoFormatter ist momentan nicht voll funktionsfähig mw.loader.load( 'https://de.wikipedia.org/w/index.php?title=Benutzer:TMg/autoFormatter/autoDiff.js&action=raw&ctype=text/javascript' ); // Notwendig für Autoformatter und WeblinkChecker
//mw.loader.load( "//de.wikipedia.org/wiki/MediaWiki:Gadget-DeepCat.js&action=raw&ctype=text/javascript" );
// mw.loader.load( '//de.wikipedia.org/w/index.php?title=Benutzer:TMg/characterSearch.js&action=raw&ctype=text/javascript' ); //Benutzer:TMg/characterSearch.js /* eigene Skripts 2 */ /*advancedSearch */ mw.loader.load( '//de.wikipedia.org/w/index.php?title=Benutzer:TMg/advancedSearch.js&action=raw&ctype=text/javascript' ); //in dewiki funkionsfähing mw.loader.load( '//de.wikipedia.org/w/index.php?title=Benutzer:TMg/advancedSearch.js/namespaceFilters.js&action=raw&ctype=text/javascript' ); //in dewiki funkionsfähing
/* autoRegexpReplacements Array of objects: fields: "find": Suchtext oder js-regexp-object "mend": Ersetzung "neat": Text für die Zusammenfassungszeile */
var autoRegexpReplacements = [ {"find" : "e.V.", "mend" : "e. V.",
"neat" : "fix "
}
];
/*
- /
/**
* * Das ist ein Fork von Benutzer:TMg/weblinkChecker * Hilfeseiten und stabile Version siehe dort. * Eine getestete Version findet sich auf Benutzer:ExURLBot/externalURLform.js * * * ( zur Umgehung von [[bugzilla:8761]].) * * Änderungen zum Original: * * externalURLform => externalURLform * * weblink-Checker => externalURL-form * * //upload.wikimedia.org/wikipedia/commons/thumb/7/72/Crystal_wp.png/22px-Crystal_wp.png * * => https://upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Oxygen480-categories-preferences-system-network.svg/22px-Oxygen480-categories-preferences-system-network.svg.png * * Unterstützung für weitere Archive.is TLDs * * Unterstützung der Vorlage BBKL * * Neue Funktion: * * Aufruf von autoDiff.js * * Unterstützung zur Entfernung von InternetArchiveBot-Meldungen */ ( function( $, mw ) { if ( typeof mw !== 'object' || ( mw.config.get( 'wgAction' ) !== 'edit' && mw.config.get( 'wgAction' ) !== 'submit' ) || typeof $ !== 'function' ) { return; } mw.util.addCSS( '#linkCheckerBox table a { padding: .2em 1px; }' + '#linkCheckerBox table a:hover { background: #0645AD; border-radius: 2px; color: #FFF; text-decoration: none; }' + '#linkCheckerBox tr:hover { background: #DFE7F4; }' + '#linkCheckerBox tr.hintergrundfarbe5:hover { background: #D1D1D1; }' + '#linkCheckerBox tr.hintergrundfarbe6:hover { background: #CED1FF; }' + '#linkCheckerBox tr.hintergrundfarbe7:hover { background: #FFB1B1; }' + '#linkCheckerBox tr.hintergrundfarbe8:hover { background: #FFE184; }' + '#linkCheckerBox td input { -moz-box-sizing: border-box; box-sizing: border-box; width: 100%; }' ); function click( a ) { mw.loader.using( 'jquery.tablesorter', loadLinkChecker ); return false; } function loadLinkChecker() { if ( window.wikEd && window.wikEd.useWikEd ) { wikEd.UpdateTextarea(); } var elements = document.forms['editform'].elements, textbox = elements['wpTextbox1'], summary = elements['wpSummary']; if ( !textbox ) { return; } var t = textbox.value; /* See includes/parser/Parser.php */ var re = /\bhttps?:\/\/[^\][<>"\x00-\x20\x7F|]*[^\][<>"\x00-\x20\x7F,;\\.:!?)|}]/gi, m, a = []; while ( m = re.exec(t) ) { m.number = -1; for ( var p = m.index; p >= 0; m.number++ ) { p = p < m[0].length ? -1 : t.lastIndexOf( m[0], p - m[0].length ); } a.push( m ); } var html = '<div id="linkCheckerBox" style="padding:1em 0"><form action="#">' + '<div style="border:solid silver;border-width:1px 0;clear:both;max-height:23.1em;overflow:auto">' + '<table class="wikitable sortable" style="margin:-1px 0;width:100%">' + '<tr><th width="40%">Original</th>'; if ( option( 'context' ) ) { html += '<th width="10%">Kontext</th>'; } html += '<th width="10%">Recherche</th>' + '<th class="unsortable" width="10%"><acronym title="Archivlinks einfach komplett einfügen">Ersatz</acronym></th>' + '<th width="30%">Beschriftung</th></tr>'; for ( var i = 0; i < a.length; i++ ) { var tree = createContextTree(t, a[i].index, a[i].index + a[i][0].length); if ( !tree ) { continue; } if ( tree.parent && tree.parent.uri ) { a[i][0] = tree.parent.uri; } var webarchiv = parseWebarchiv( a[i][0] ), timestamp = ( tree.archive && tree.archive.timestamp ) || ( webarchiv && webarchiv.timestamp ), is = ( tree.archive && tree.archive.is ) || ( webarchiv && webarchiv.is ), uri = webarchiv && webarchiv.url || a[i][0]; html += '<tr class="uri' + i; if (( tree.archive || webarchiv ) && (findParameter( tree.parent.parameters, 'archivebot', '\\S.*' ) >= 0 || findParameter( tree.parent.parameters, 'archiv-bot', '\\S.*' ) >= 0) ) html += ' hintergrundfarbe6'; else if ( tree.parent && ( /^(?:Toter|Dead) Link$/i.test( tree.parent.type ) || findParameter( tree.parent.parameters, 'offline', '\\S.*' ) >= 0 ) ) html += ' hintergrundfarbe8'; else if ( is && !/^\d{14}/.test( is ) ) // strict mode! html += ' hintergrundfarbe7'; else if ( tree.archive || webarchiv ) html += ' hintergrundfarbe5'; html += '"><td><a class="goto" data-number="' + a[i].number + '" data-uri="' + uri + '" href="' + uri + '" title="Gehe zu' + ( a[i].i > 0 ? 'm ' + (a[i].i + 1) + '. Vorkommen dieses externen Links' : ' diesem externen Link' ) + '">↓</a> '; var dirs = uri.split(/(^[^\/?]+\/+[^\/?]+\/*|\?[^?]+|[^\/?]+\/*)/); if ( dirs.length <= 0 ) { dirs = [uri]; } for ( var d = 0; d < dirs.length; d++ ) { if ( !dirs[d] ) continue; var href = dirs.slice(0, d + 1).join(''); html += '<a href="' + mw.html.escape(href) + '" target="_blank">'; if (dirs[d].length > 3 && href.indexOf('?') >= 0) html += mw.html.escape(dirs[d].charAt()) + '…'; else html += mw.html.escape(dirs[d] .replace(/^(?:\w+:\/+|www\.)*/, '') .replace(/#...+/, '#…')) .replace(/\B_\B/g, '_<wbr>'); html += '</a>'; } var context = '', text = tree.text || '', node = tree.parent; while ( node ) { if ( context ) context = ' → ' + context; context = ( node.type === 'LINK' ? 'Link' : node.type === 'REF' ? 'Ref.' : node.type.replace( /^Infobox.*/, 'Infobox' ) ) + context; if ( !text ) { text = node.text || ''; } node = node.parent; } var site = uri.replace( /^[^\/]*\/+(?:www\.)?/i, '' ).replace( /\/.*$/, '' ); var euquery = uri.replace( /[^\/]+$/, '' ).replace( /^[^\/]*\/+/, '' ).replace( /^www\./i, '*.' ); html += '</td>'; if ( option( 'context' ) ) { html += '<td>' + context + '</td>'; } html += '<td data-sort-value="0">' + '<a href="' + mw.html.escape( option( 'search' ).replace( /%s/g, 'site:' + encodeURIComponent( site + ( text ? ' ' + text : '' ) ) ) ) + '" target="_blank" title="Websuche">Web</a> ' + '<a href="https://wayback.archive.org/web/' + ( timestamp || '*' ) + '/' + uri + '" target="_blank"' + ' title="Wayback Machine beim Internet Archive (archive.org)">Wayb.</a> '; if ( is ) html += '<a href="https://archive.is/' + is + ( /^\d{4}\W?\d\d\W?\d\d/.test( is ) ? '/' + uri : '' ) + '" target="_blank" title="archive.is">.is</a>'; else html += '<a href="http://www.webcitation.org/query.php?url=' + uri + '" target="_blank"' + ' title="WebCite (webcitation.org)">WebC.</a>'; html += ' <a class="exturlusage" href="/wiki/Special:LinkSearch/' + euquery + '" target="_blank"' + ' title="Weblinksuche innerhalb der Wikipedia">Wikip.</a>' + '</td><td><input name="r' + i + '" type="url" autocomplete="off" value="'; if ( webarchiv && webarchiv.url ) html += webarchiv.archive; else if (/^\w*:\/+[^\/]+\.\w+$/.test(a[i][0])) html += a[i][0].toLowerCase() + '/'; else if ( /^\w*:\/+[^\/]*[A-Z]/.test( a[i][0] ) ) html += a[i][0].replace( /^\w*:\/+[^\/]*/, function( $0 ) { return $0.toLowerCase(); } ); else if ( /<!--.*?-->/.test( a[i][0] ) ) html += a[i][0].replace( /<!--.*?-->/g, '' ); html += '"></td><td data-sort-value="' + mw.html.escape( text.replace( /^[^\w\xC0-\u1FFF]+/, '' ) ) + '"><input name="t' + i + '" type="text" value="' + mw.html.escape( text.replace( /[\n\r\t ]+/g, ' ' ) ) + '"></td></tr>'; if ( euquery && a.length <= option( 'autoLimit' ) ) { ( function( i ) { $.ajax( '//de.wikipedia.org/w/api.php?action=query&format=xml&list=exturlusage&euprop=&euquery=' + euquery, { dataType: 'html', error: function( o, s, e ) { alert( e ); }, success: function( data, s, o ) { var c = data.indexOf( 'euoffset' ) > 0 ? '10+' : Math.round( ( data.indexOf( '/exturlusage' ) - 47 ) / 6 ); if ( typeof c === 'string' || c > 0 ) { var a = $( '.uri' + i + ' .exturlusage' ); a.text( c ); a.parent().attr( 'data-sort-value', typeof c === 'number' ? c : 10 ); } } } ); } )( i ); } } html += '</table></div>' + '<div class="buttons editOptions" style="margin:0;padding-bottom:.5em;padding-top:.5em;">' + '<input type="submit" value="Änderungen übernehmen"> ' + '<a class="cancelLink" href="#">Abbrechen</a><span class="mw-editButtons-pipe-separator"> | </span>' + '<a class="pref" href="#">Einstellungen</a>' + '</div></form>' + '<form action="#" class="pref" style="display:none"><fieldset><legend>Einstellungen</legend>' + '<input id="prefContext" type="checkbox" value="1"' + (option('context') ? ' checked="checked"' : '') + '>' + '<label for="prefContext">Kontextinformationen für die Fundstellen anzeigen</label><br />' + 'Websuchmaschine: <input id="prefSearch" size="40" type="text" value="' + mw.html.escape(option('search')) + '"><br />' + 'Obergrenze für die Anzeige der Verwendungshäufigkeit: ' + '<input id="prefAutoLimit" min="0" size="4" type="number" value="' + mw.html.escape(option('autoLimit')) + '"> externe Links im Artikel<br />' + //'Automatische Ersetzungen (z. B. <code>www.alt.de/ www.neu.de/</code>):<br /><textarea rows="5"></textarea>' + '<input type="submit" value="Einstellungen speichern"> ' + '<a class="cancelLink" href="#">Abbrechen</a>' + '</fieldset></form>' + '</div>'; $( '#editform' ).before( html ); var t = $( '#linkCheckerBox table' ); if ( t.tablesorter ) { t.tablesorter(); } $( '#linkCheckerBox a.goto' ).on( 'click', function() { if ( window.wikEd && window.wikEd.useWikEd ) { wikEd.UpdateTextarea(); } var t = textbox.value, p = -1; for (var n = this.getAttribute('data-number'); n >= 0; n--) p = t.indexOf(this.getAttribute('data-uri'), p + 1); if (p < 0) return false; textbox.focus(); if ( typeof textbox.selectionStart === 'number' ) { textbox.selectionStart = p; textbox.selectionEnd = p + this.getAttribute('data-uri').length; } else if ( typeof textbox.selection === 'object' ) { var range = textbox.selection.createRange(); range.move('character', p); range.moveEnd('character', this.getAttribute('data-uri').length); } return false; } ); $( '#linkCheckerBox form:first-child' ).on( 'submit', function() { if ( window.wikEd && window.wikEd.useWikEd ) { wikEd.UpdateTextarea(); } var t = textbox.value, count = 0; for ( var i = a.length; i--; ) { var p = -a[i][0].length; for ( var n = a[i].number; n >= 0; n-- ) { p = t.indexOf( a[i][0], p + a[i][0].length ); } if ( p < 0 ) continue; if ( !this.elements['r' + i] ) continue; var r = this.elements['r' + i].value.replace( /^\s+|\s+$/g, '' ) || a[i][0]; var text = this.elements['t' + i].value.replace( /^\s+|\s+$/g, '' ); var tree = createContextTree( t, p, p + a[i][0].length ), node = tree; if ( !tree ) continue; if ( tree.archive && r && r !== a[i][0] ) tree.archive = false; var archive = tree.archive || parseWebarchiv( r ); if ( /^W(?:aybackarchiv|BA)$/i.test( node.parent.type ) || ( /^(?:Toter|Dead) Link$/i.test( node.parent.type ) && r !== a[i][0] ) ) { node = node.parent; } var de = node.parent.type === 'Internetquelle'; var isCite = de || /^(?:Internetquelle|Cite (?:book|journal|news|web)|BBKL)$/.test( node.parent.type ); if ( isCite ) { /* Drop misspelled parameters */ deleteParameter( node.parent.parameters, ['archivurl', 'archivdate', 'archivdatum', 'archivebot', 'archiv-bot', 'archive-url', 'archive-date', 'archive-datum', 'archvieurl', 'archviedate', 'web-archiv', 'webarchiv', 'https?:\\/\\/[^=|]*'] ); } if ( archive ) { if ( isCite ) { node = node.parent; deleteParameter( node.parameters, 'offline' ); putParameter( node.parameters, node.parameter || 'url', archive.url || a[i][0], 0 ); putParameter( node.parameters, de ? 'titel' : 'title', text, 1 ); var where = de ? ['url', 'titel', 'titelerg', 'werk', 'seiten', 'datum', 'archiv-url'] : ['url', 'title', 'accessdate', 'last', 'first', 'authorlink', 'coauthors', 'date', 'format', 'work', 'publisher', 'pages', 'language', 'archiveurl']; putParameter( node.parameters, de ? 'archiv-url' : 'archiveurl', archive.archive || '', where ); putParameter( node.parameters, de ? 'archiv-datum' : 'archivedate', archive.date || '', where ); r = node.parameters.join( '' ); } else { if ( node.parent.type === 'LINK' || node.parent.type === 'Webarchiv' ) node = node.parent; //<nowiki> r = '{{Webarchiv | url=' + ( archive.url || a[i][0] ) + ' | ' + ( archive.id ? 'webciteID=' + archive.id : archive.is ? 'archive-is=' + archive.is : 'wayback=' + archive.timestamp ) + ' | text=' + text.replace( /\|+(?![^{}]*\}\})/g, '–' ) + '}}'; //
} } else if ( isCite ) { node = node.parent; deleteParameter( node.parameters, ['archiv-url', 'archiv-datum', 'archiveurl', 'archivedate'] ); if ( r !== a[i][0] ) deleteParameter( node.parameters, 'offline' ); putParameter( node.parameters, node.parameter || 'url', r, 0 ); putParameter( node.parameters, de ? 'titel' : 'title', text, 1 ); r = node.parameters.join( ); } else if ( node.parent.type === 'LINK' || node.parent.type === 'Webarchiv' || ( text && ( !node.parent || node.parent.type === 'REF' ) ) ) { r = '[' + r + (text ? ' ' + text : ) + ']'; if ( node.parent && node.parent.type !== 'REF' ) node = node.parent; } if ( r === t.slice( node.start, node.end ) ) continue; t = t.slice( 0, node.start ) + r + t.slice( node.end ); count++; } textbox.focus(); if ( t !== textbox.value ) { var s = textbox.scrollTop, s0 = textbox.selectionStart, s1 = textbox.selectionEnd; textbox.value = t; textbox.selectionStart = s0, textbox.selectionEnd = s1, textbox.scrollTop = s;
s = summary.value, s0 = s.length; s = s.replace( /^\s+|\s+$/g, ); if ( /\d+\W*externer? Links?\s+geändert$/.test( s ) ) { s = s.replace( /(\d)+\W*(?=externer? Links?\s+geändert$)/, function( $0, $1 ) { return Math.max( $1, count ) + '+ '; } ); } else { if ( /[^!,./:;?]$/.test( s ) ) s += ';'; if ( /\S$/.test( s ) ) s += ' '; s += count + ' externe' + ( count > 1 ? ' Links' : 'r Link' ) + ' geändert'; } summary.value = s, summary.selectionStart = s0, summary.selectionEnd = s.length; mw.hook( 'AutoFormatterDoneWithChange' ).fire(); } $( '#linkCheckerBox' ).remove(); if ( window.wikEd && window.wikEd.useWikEd ) wikEd.UpdateFrame(); return false; } ); $( '#linkCheckerBox .buttons a.cancelLink' ).on( 'click', function() { $( '#linkCheckerBox' ).remove(); return false; } ); $( '#linkCheckerBox a.pref' ).on( 'click', function() { $( '#linkCheckerBox form.pref' ).show(); $( '#linkCheckerBox .buttons' ).hide(); return false; } ); $( '#linkCheckerBox .pref' ).on( 'submit', function() { option( 'autoLimit', $( '#prefAutoLimit' )[0].value ); option( 'context', $( '#prefContext' )[0].checked ); option( 'search', $( '#prefSearch' )[0].value ); $( '#linkCheckerBox form.pref' ).hide(); $( '#linkCheckerBox .buttons' ).show(); return false; } ); $( '#linkCheckerBox .pref a.cancelLink' ).on( 'click', function() { $( '#linkCheckerBox form.pref' ).hide(); $( '#linkCheckerBox .buttons' ).show(); return false; } ); }
function createContextTree( t, uriStart, uriEnd ) { var tree = { type: 'URI', start: uriStart, end: uriEnd }, node = tree; while ( node && node.type !== 'REF' ) { node.parent = findParent( t, node.start, node.end ); node = node.parent; } if ( tree.parent.parameters ) { var m = /\|\s*archiv[e-]url\s*=\s*(https?:\/\/[^\s|}]+)/.exec(t.slice(tree.parent.start, tree.parent.end)); if ( m ) { /* Bei Vorlagen mit zwei externen Links den Archivlink nicht als eigenständig behandeln */ if (tree.parent.start + m.index + m[0].length - m[1].length !== tree.start) return false; /* Archivlink statt dessen als Parameter beim Originallink mitführen */ tree.archive = parseWebarchiv(m[1]) || { archive: m[1] }; /* Original-URL retten, wenn sie sich nicht aus dem Archivlink ergibt */ m = /\|\s*url\s*=\s*(https?:\/\/[^\s|}]+)/.exec(t.slice(tree.parent.start, tree.parent.end)); if (!tree.archive.url && m) tree.archive.url = m[1]; if (/url$/.test(tree.parent.parameter)) tree.parent.parameter = 'url'; } else if ( tree.parent.type === 'Webarchiv' ) { if ( m = /\|\s*(?:wayback|1)\s*=\s*([\d*]+)/.exec( t.slice( tree.parent.start, tree.parent.end ) ) ) tree.archive = { timestamp: m[1] }; else if ( m = /\|\s*webciteID\s*=\s*(\w+)/.exec( t.slice( tree.parent.start, tree.parent.end ) ) ) tree.archive = { id: m[1] }; else if ( m = /\|\s*archive-(?:is|today)\s*=\s*([^\s{|}]+)/.exec( t.slice( tree.parent.start, tree.parent.end ) ) ) tree.archive = { is: m[1] }; else if ( m = /^[^|]*\|\s*([\d*]+)/.exec( t.slice( tree.parent.start, tree.parent.end ) ) ) tree.archive = { timestamp: m[1] }; } } return tree; }
function findParent( t, parsedStart, parsedEnd ) { var i = parsedStart, skipSquare = 0, skipCurly = 0, parameter = undefined;
while ( --i >= 0 ) { if ( t.charAt( i ) === '|' && skipCurly <= 0 && !parameter && parameter !== false ) { var a = /^\s*([^={|}]*?)\s*=\s*$/.exec( t.slice( i + 1, parsedStart ) ); parameter = a ? a[1] : false; } else if ( t.charAt( i ) === '}' ) { skipCurly++; } else if ( t.charAt( i ) === '{' && skipCurly-- <= 0 ) { i--; /* Schachtelung am Anfang ist geklärt, am Ende noch nicht */ var a = /^\{\s*([^{|}]*?)\s*\|/.exec( t.slice( i + 1, parsedStart ) ), b = /^(?:[^{}]|\{+[^{}]*\}\})*\}\}/.exec( t.slice( parsedEnd ) ); if ( !a || !b ) { return false; }
var node = { type: a[1][0].toUpperCase() + a[1].slice( 1 ).replace( /_/g, ' ' ), start: i, end: parsedEnd + b[0].length, parameter: parameter, parameters: ( t.slice( i, parsedEnd ) + b[0] ).split( /(\|(?:[^{|}]|\{+[^{}]*\}\})*)/ ) }; if ( !node.text && ( a = /\|\s*(?:Text|Titel|Title|3)\s*=\s*((?:[^{|}]|\{+[^{}]*\}\})*?)\s*[|}]/i.exec( t.slice( node.start, node.end ) ) ) ) { node.text = a[1]; } if ( !node.text && node.type === 'Webarchiv' && node.parameters.length > 5 && ( a = /^\|\s*([^=]*?)\s*$/.exec( node.parameters[5] ) ) ) { node.text = a[1]; } return node; } else if ( t.charAt( i ) === ']' ) { skipSquare++; } else if ( t.charAt( i ) === '[' && skipSquare-- <= 0 ) { var a = /^\s*$/.test( t.slice( i + 1, parsedStart ) ); /* Einfache Schachtelung akzeptieren, aber sofort verwerfen */ var b = /^((?:|[^\s[\]])*)(?:\s+((?:[^[\]]|\[\[[^[\]]*\]\])*))?\]/.exec(t.slice(parsedEnd)); if ( !a || !b ) { return false; } return { type: 'LINK', start: i, end: parsedEnd + b[0].length, uri: t.slice( parsedStart, parsedEnd + b[1].length ), text: b[2] ? b[2].replace( /\+/g, ) : }; } else if ( t.charAt( i ) === '\n' && skipCurly <= 0 ) { var a = /^\* *$/.test( t.slice( i + 1, parsedStart ) ), b = /^ +([^\r\n<>[\]{|}]*[^\s<>[\]{|}])/.exec( t.slice( parsedEnd ) ); if ( a && b ) { var t = b[1].replace(/^[\s:–-]+/, ); if ( t ) { return { type: 'LINK', start: parsedStart, end: parsedEnd + b[0].length, text: t }; } } } else if ( t.charAt( i ) === '<' ) { var slice = t.slice( i + 1, parsedStart ), b; if ( /^ref\b(?![^<>]*\/>)[^<>]*>[^<>]*$/i.test( slice ) ) { b = /^(?:[^<>]||<(?!\w)|<(abbr|[biq]|bd[io]|em|nowiki|small|strong|su[bp])\b[^<>]*>[^<>]*<\/\1\s*>)*<\/ref\s*>/i.exec( t.slice( parsedEnd ) ); } if ( b ) { return { type: 'REF', start: i, end: parsedEnd + b[0].length }; } else if ( !/^(?:\W|\/?(?:abbr|[biq]|bd[io]|em|nowiki|small|strong|su[bp])\b)/i.test( slice ) ) { return false; } } } return false; }
function parseWebarchiv( uri ) { return parseWayback( uri ) || parseWebCite( uri ) || parseArchiveIs( uri ); }
function parseWayback( uri ) { var m = /\barchive\.org\b.*(\b(\d{4})(\d\d)(\d\d)\d{6}|\/\*)\/(\S*)/i.exec( uri ); if ( !m ) { return false; } if ( m[2] && ( m[2] < 1970 || m[2] > new Date().getFullYear() || m[3] < 1 || m[3] > 12 || m[4] < 1 || m[4] > 31 ) ) { return false; } var t = m[2] ? m[1] : '*'; var url = /^\w+:\/\//.test(m[5]) ? m[5] : m[5].replace(/^(?:http:)?\/*/, 'http://'); return { archive: 'https://web.archive.org/web/' + t + '/' + url, url: url, timestamp: t, date: m[2] ? m[2] + '-' + m[3] + '-' + m[4] : }; }
function webCiteBase62ToDate( id ) { if ( /^\w{1,9}$/.test( id ) ) { for ( var i = 0, s = 0; c = id.charCodeAt( i ); i++ ) { s *= 62; s += c - [ , 48, 55, 61][c >> 5]; } id = s; } if ( id > 0 ) { return new Date( id / 1000 ).toISOString().substring( 0, 10 ); } }
function parseWebCite( uri ) { var m = /\bwebcitation\.org\/(.*\bid=(\d+)|\w{1,9}$)/i.exec( uri ); if ( !m ) { return false; } var id = m[2] ? m[2] : m[1]; m = /\bdate=(\d{4}-\d\d-\d\d)/i.exec( uri ); var date = m && m[1] || webCiteBase62ToDate( id ); return { archive: 'http://www.webcitation.org/' + id, id: id, date: date }; }
function parseArchiveIs( uri ) { var m; uri = uri.replace( /^https?:\/\/archive\.(?:fo|is|li|md|ph|today|vn)\//, 'https://archive.today/' ); if ( m = /\barchive\.(?:fo|is|li|md|ph|today|vn)\/((\d{4})\W*(\d\d)\W*(\d\d)\S*)\/(https?:\/\/\S+)/.exec( uri ) ) { return { archive: uri, is: m[1].replace(/\D+/g, ), url: m[5], date: m[2] + '-' + m[3] + '-' + m[4] }; } if ( m = /\barchive\.(?:fo|is|li|md|ph|today|vn)\/(\S+)/.exec( uri ) ) { return { archive: uri, is: m[1] }; } return false; }
function findParameter( a, name, value ) { var r = -1; if (!a) return r; var re = new RegExp('^\\s*\\|\\s*' + name + '\\s*=' + (value ? '\\s*' + value + '\\s*$' : )); for (var i = a.length; i--; ) { if (re.test(a[i])) if (r < 0) r = i; /* Drop duplicate parameters */ else a[i] = ; } return r; }
function putParameter( a, name, value, where ) { value = ( value || ).replace( /\|+(?![^{}]*\}\})/g, '–' ).replace( /\$/g, '$$$$' ); var i = findParameter( a, name ); if ( i >= 0 ) { if ( value ) a[i] = a[i].replace(/^([^=]*=\s*)(?:[^{}]|\{+[^{}]*\}\})*?(\s*\}*)$/, '$1' + value + '$2'); return a; } var p = where; if ( typeof p !== 'number' ) { var p = a.length - 1; if (where) { var re = new RegExp('^\\|\\s*(?:' + where.join('|') + ')\\s*='); for (var i = a.length; i--; ) if (re.test(a[i])) { p = i; break; } } } name = name.replace(/\$/g, '$$$$'); if (p <= 0) a[p] = a[p].replace(/(\s*)$/, ' | ' + name + '=' + value + '$1'); else a[p] = a[p].replace(/^((\|\s*)[\s\S]*?(\s*))(\}*)$/, '$1$2' + name + '=' + value + '$3$4'); return a; }
function deleteParameter( a, name ) { if (!a) return a; var re = new RegExp('^\\|\\s*(?:' + (typeof name === 'string' ? name : name.join('|')) + ')\\s*=[^|]*(?=\\}\\}$|$)'); for (var i = a.length; i--; ) a[i] = a[i].replace(re, ); return a; }
function option( key, value ) { var a = 'externalURLform' + key[0].toUpperCase() + key.slice(1); if (typeof value === 'boolean') value = value ? '1' : ; if (typeof value !== 'undefined' && localStorage) localStorage[a] = value; value = localStorage && localStorage[a]; if (typeof value === 'undefined') value = window[a]; switch (key.toLowerCase()) { case 'autolimit': value = value || 8; break; case 'search': value = value || 'http://duckduckgo.com/?q=%s'; break; } return + value; }
if ( mw.user.options.get( 'usebetatoolbar' ) ) { mw.loader.using( 'ext.wikiEditor', function() { $( document ).ready( function() { $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', { 'section': 'main', 'group': 'insert', 'tools': { 'externalURLform': { 'label': 'externalURL-form', 'type': 'button', 'icon': 'https://upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Oxygen480-categories-preferences-system-network.svg/22px-Oxygen480-categories-preferences-system-network.svg.png', 'action': { 'type': 'callback', 'execute': function() { return click(this); } } } } } ); } ); } ); } else if ( mw.user.options.get( 'showtoolbar' ) ) { mw.loader.using( 'mediawiki.action.edit', function() { mw.toolbar.addButton( 'https://upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Oxygen480-categories-preferences-system-network.svg/22px-Oxygen480-categories-preferences-system-network.svg.png', 'externalURL-form', , , , 'mw-customeditbutton-externalURLform' ); $( function() { $( '#mw-customeditbutton-externalURLform' ).click( function() { return click( this ); } ); } ); } ); } else { $( document ).ready( function() { /* Notfalls als Link unter dem Bearbeitungsfenster */ var b = $( '.editButtons' ), c = b.children().last(); ( c.is( 'span' ) ? c : b ).append( $( '.mw-editButtons-pipe-separator', b ).first().clone() ); var a = $( '<a href="#">externalURL-form</a>' ); a.click( function() { return click( this ); } ); b.append( a ); } ); } } )( jQuery, mediaWiki );
Selektor1, /* Wikipedia:Technik/Skin/CSS - Link-Typen unterscheiden - Projektinterne Links - Weiterleitung (redirect) */ .ns-0 A.mw-redirect {
background-color: #F0E68C;
} Selektor2, /* Wikipedia:Technik/Skin/CSS - Link-Typen unterscheiden - Projektinterne Links - Seiten-interne Verlinkungen */
- mw-content-text [href^='#']:not([href='#']) {
color: #408F40;
} Selektor3, /* Wikipedia:Technik/Skin/CSS - Link-Typen unterscheiden - Projektinterne Links - Namensräume */ .ns-0 #bodyContent A[href*="/wiki/Kategorie:"], .ns-0 #bodyContent A[href*="/wiki/Portal:"] {
border: 1px solid #408F40;
} .ns-0 #bodyContent A[href*="/wiki/Diskussion:"], .ns-0 #bodyContent A[href*="/wiki/Benutzer_Diskussion:"], .ns-0 #bodyContent A[href*="/wiki/Benutzerin_Diskussion:"], .ns-0 #bodyContent A[href*="/wiki/Hilfe_Diskussion:"], .ns-0 #bodyContent A[href*="/wiki/Kategorie_Diskussion:"], .ns-0 #bodyContent A[href*="/wiki/Portal_Diskussion:"], .ns-0 #bodyContent A[href*="/wiki/Spezial_Diskussion:"], .ns-0 #bodyContent A[href*="/wiki/Vorlage_Diskussion:"], .ns-0 #bodyContent A[href*="/wiki/Wikipedia_Diskussion:"], .ns-0 #bodyContent A[href*="/wiki/Benutzer:"], .ns-0 #bodyContent A[href*="/wiki/Benutzerin:"], .ns-0 #bodyContent A[href*="/wiki/Hilfe:"], .ns-0 #bodyContent A[href*="/wiki/Spezial:"], .ns-0 #bodyContent A[href*="/wiki/Vorlage:"], .ns-0 #bodyContent A[href*="/wiki/Wikipedia:"] {
border: 2px solid #FF0000;
} .ns-0 #bodyContent A[href*="/wiki/Spezial:ISBN-Suche/"], .ns-0 #bodyContent A[href*="/wiki/Hilfe:Audio/"], .ns-0 #bodyContent A[href*="/wiki/Wikipedia:Chinesische_Begriffe/"], .ns-0 div#bodyContent A[href*="/wiki/Wikipedia:Wappen"], .ns-0 #bodyContent A[href*="/wiki/Wikipedia:WikiProjekt_Kommunen_und_Landkreise_in_Deutschland/Einwohnerzahlen/"], .ns-0 #bodyContent .templatesUsed A[href*="/wiki/Hilfe:"], .ns-0 #bodyContent .templatesUsed A[href*="/wiki/Vorlage:"], .ns-0 #bodyContent #catlinks A[href*="/wiki/Spezial:Kategorien"], .ns-0 #bodyContent #catlinks A[href*="/wiki/Kategorie:"], .ns-0 #bodyContent #pagehistory A {
border: none;
} Selektor4, /* Wikipedia:Technik/Skin/CSS - Link-Typen unterscheiden - Externe Links - Schwesterprojekte */ .ns-0 #mw-content-text A.extiw {
background-color: #ADD8E6; color: #4040FF;
} Selektor5, /* Wikipedia:Technik/Skin/CSS - Link-Typen unterscheiden - Externe Links - Weblink */ .ns-0 #mw-content-text A.external {
border: 1px solid #4080FF;
} Selektor6, /* Wikipedia:Technik/Skin/CSS - Spezielle Seiten und Elemente - Eigene Beiträge - Versionsgeschichte */ span.history-user a[title="Benutzer:Bwbuz"] {
display: inline-block; width: 25px; overflow: hidden; visibility: collapse;
} span.history-user a[title="Benutzer:Bwbuz"]::before {
content: "ICK"; visibility: visible; background-color: #FF80FF; color: #000000; font-weight: bold;
} Selektor7, /* Wikipedia:Technik/Skin/CSS - Spezielle Seiten und Elemente - Änderungen - „kommentarlos zurücksetzen“-Link */ .mw-rollback-link a {
color: #C0C0C0;
} Selektor8, /* Wikipedia:Technik/Skin/CSS - Spezielle Seiten und Elemente - Hilfen und Hinweistexte */ .mw-changeslist-legend, .specialpage-helplink,
- editpage-copywarn,
- mw-editform-cancel,
.editHelp, a[target="helpwindow"], .wikEdHelpSpan,
- fundraising,
.cn-fundraising, .cn-fundraiser-banner {
display: none ! important;
} Selektor9, /* Wikipedia:Technik/Skin/CSS - Spezielle Seiten und Elemente - Portal-Layout - Titel-Leiste */ LI#pt-userpage A, LI#pt-mytalk A, LI#pt-watchlist A {
display: inline-block; overflow: hidden; width: 30px; visibility: collapse;
} LI#pt-userpage A:before {
content: "ICK "; font-weight: bold
} LI#pt-mytalk A:before {
content: "Disk ";
} LI#pt-watchlist A:before {
content: "BEO ";
} LI#pt-userpage A:before, LI#pt-mytalk A:before, LI#pt-watchlist A:before {
visibility: visible ! important;
} Selektor10, /* Wikipedia:Technik/Skin/CSS - Spezielle Seiten und Elemente - Portal-Layout - Benachrichtigungs-Popups */ .mw-notification-autohide, .postedit {
display: none;
} Selektor11, /* Wikipedia:Defekte Weblinks/Botmeldung - Bot-Meldungen hervorheben oder ausblenden */ .deadlink-bot-Anleitung {
background-color: #7FFF00;
} .deadlink-bot {
background-color: #FFB6C1;
} Selektor12, /* Vorlage:Literatur - Wartung */ .Zitationswartung {
display: inline ! important;
} Selektor13, .Linkwartung {
display: inline ! important;
}