Benutzer:Martinnitus/common.js/linkchecker.js: Unterschied zwischen den Versionen

Aus Stupidedia, der sinnfreien Enzyklopädie!
Wechseln zu: Navigation, Suche
K
 
(32 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 4: Zeile 4:
 
  */
 
  */
 
var linkchecker = {};
 
var linkchecker = {};
 +
linkchecker.altbool = false;
 
linkchecker.pinhaltbool = false;
 
linkchecker.pinhaltbool = false;
 
linkchecker.pinhalt = {};
 
linkchecker.pinhalt = {};
 +
linkchecker.init = function() {
 +
    if ( mw.config.get( 'wgAction' ) == 'view' && global.isArticle && global.pageExists ) {
 +
        if( mw.config.get( 'wgNamespaceNumber' ) !== 0 ){
 +
            linkchecker.altbool = true;
 +
        }
 +
        $( mw.util.addPortletLink( 'p-cactions', '#', 'Linkcheck', 'ca-check' ) ).find( 'a' ).click( linkchecker.search );
 +
        $( mw.util.addPortletLink( 'p-cactions', '#', 'Alternativ-Linkcheck', 'ca-altcheck' ) ).find( 'a' ).click( linkchecker.altsearch );
 +
    }
 +
};
 
linkchecker.pobj = function( p ){
 
linkchecker.pobj = function( p ){
 
return {
 
return {
Zeile 11: Zeile 21:
 
           page: p,
 
           page: p,
 
           disablepp: true,
 
           disablepp: true,
           prop: 'wikitext|text|links',
+
           prop: 'templates|wikitext|links',
 
       };
 
       };
 
};
 
};
linkchecker.init = function() {
+
linkchecker.altsearch = function( e ) {
     if ( mw.config.get( 'wgAction' ) == 'view' && global.isArticle && global.pageExists ) {
+
     e.preventDefault();
         $( mw.util.addPortletLink( 'p-cactions', '#', 'Linkcheck', 'ca-check' ) ).find( 'a' ).click( linkchecker.search );
+
    var tex = $('<input />',{
    }
+
         type: 'text'
 +
    });
 +
    var but = $('<input />',{
 +
        type: 'button',
 +
        value: 'Suche',
 +
        click: function(){
 +
            linkchecker.alttext = tex.val();
 +
            linkchecker.altbool = true;
 +
            linkchecker.search( e );
 +
        }
 +
    });
 +
    $( '#ca-altcheck a' ).unbind( 'click' ).html( '' ).css( 'text-decoration', 'none' ).append( tex, ' ', but );
 
};
 
};
  
Zeile 25: Zeile 46:
 
     linkchecker.results = [];
 
     linkchecker.results = [];
 
     linkchecker.backlinks = [];
 
     linkchecker.backlinks = [];
 
+
    linkchecker.wgname = linkchecker.alttext || mw.config.get( 'wgTitle' );
 +
    linkchecker.wgname = $.ucFirst( linkchecker.wgname );
 
     $( '#linkchecker-container' ).remove();
 
     $( '#linkchecker-container' ).remove();
 
     $( '#mw-content-text' ).hide().before( '<div id="linkchecker-results" style="font-family: Courier; background-color: #DDD;"></div>\n<div id="linkchecker-container"><p>Liste wird geladen …</p><p></p></div>' );
 
     $( '#mw-content-text' ).hide().before( '<div id="linkchecker-results" style="font-family: Courier; background-color: #DDD;"></div>\n<div id="linkchecker-container"><p>Liste wird geladen …</p><p></p></div>' );
Zeile 38: Zeile 60:
 
         list: 'search',
 
         list: 'search',
 
         srwhat: 'text',
 
         srwhat: 'text',
         srsearch: '"' + mw.config.get( 'wgTitle' ) + '"',
+
         srsearch: '"' + linkchecker.wgname + '"',
 
         srlimit: 'max',
 
         srlimit: 'max',
 
         srnamespace: '0|102|104|106'
 
         srnamespace: '0|102|104|106'
Zeile 61: Zeile 83:
 
         action: 'query',
 
         action: 'query',
 
         list: 'backlinks',
 
         list: 'backlinks',
         bltitle: mw.config.get( 'wgPageName' ),
+
         bltitle: mw.config.get( 'wgPageName' ).replace( /_/g, ' ' ),
 
         bllimit: 'max'
 
         bllimit: 'max'
 
     };
 
     };
Zeile 98: Zeile 120:
 
         } );
 
         } );
 
         list += '</ul>';
 
         list += '</ul>';
         $( '#linkchecker-container p:first' ).html( '\n' + list + '\n' );
+
         $( '#linkchecker-container p:first' ).html( '\n' + list + '\n' ).append(
 +
          $('<input />', {
 +
                  'type': 'button',
 +
                  'value': 'Keine auswählen',
 +
                  'onclick': '$("#linkchecker-container input[type=\'checkbox\']").removeAttr("checked");'
 +
          }).after(
 +
              $('<input />', {
 +
                  'type': 'button',
 +
                  'value': 'Alle auswählen',
 +
                  'onclick': '$("#linkchecker-container p:first input[type=\'checkbox\']").attr("checked","checked");'
 +
              })
 +
          ).after( '<hr />' )
 +
        );
 
         $( '<input />' ).attr({
 
         $( '<input />' ).attr({
 
             type: 'button',
 
             type: 'button',
Zeile 107: Zeile 141:
 
                 $( '#linkchecker-container p' ).hide();
 
                 $( '#linkchecker-container p' ).hide();
 
                 $( '#linkchecker-results' ).html( 'Bitte warten…' );
 
                 $( '#linkchecker-results' ).html( 'Bitte warten…' );
                 api.request( linkchecker.pobj( linkchecker.arts[0].id ), linkchecker.parsed, 0 );
+
                 api.request( linkchecker.pobj( linkchecker.arts[0].id ), linkchecker.content, 0 );
 
             }
 
             }
 
         }).appendTo( '#linkchecker-container p:first' );
 
         }).appendTo( '#linkchecker-container p:first' );
Zeile 113: Zeile 147:
 
};
 
};
  
linkchecker.parsed = function( c, i ){
+
linkchecker.content = function( c, i ){
 
     $( '#linkchecker-results' ).html( 'Ermittle Artikel ' + (i+1) + ' von ' + linkchecker.arts.length + '…' );
 
     $( '#linkchecker-results' ).html( 'Ermittle Artikel ' + (i+1) + ' von ' + linkchecker.arts.length + '…' );
     var artext, w = mw.config.get( 'wgPageName' );
+
     var w = linkchecker.wgname;
     function ex( e ){
+
     var spl = [], skip = false, artext;
        return ( artext.match( e ) !== null );
+
     $.each( c.parse.links, function( i, link ){
     }
+
        if( link['*'] === $.ucFirst( mw.config.get('wgPageName').replace( /_/g, ' ' ) ) ){
    artext = c.parse.wikitext['*'].replace( new RegExp( w, 'gi'), '[[' + w + ']]');                                                                     //
+
            skip = true;
     var temexp = new RegExp( '(\\{\\{([Vv]orlage:)?(?![Gg]edicht\\||[Tt]oggle\\||[Zz]itat\\|).*(\\[\\[' + w + '\\]\\]).*\\}\\})', 'i' );
+
            return false;
    while( ex( temexp ) ){
+
        }
               artext = artext.replace( ilexp, '$1' );
+
    });
               artext = artext.replace( RegExp.$1, RegExp.$1.replace( new RegExp( '(\\[\\[)(?=' + w + ')', 'gi' ), '' ) );
+
     $.each( c.parse.templates, function( i, temp ){
               artext = artext.replace( new RegExp( '(\\{\\{[^\\{\\}]*(' + w + '\\]\\])[^\\[\\]]*\\}\\})', 'i' ), '$1' );
+
        if( temp['*'] === 'Vorlage:Inuse' || temp['*'] === 'Vorlage:CT' ){
               artext = artext.replace( RegExp.$1, RegExp.$1.split('').reverse().join('').replace( new RegExp( '\\]\\](?=' + w.split('').reverse().join('') + ')', 'gi' ) , '' ).split( '' ).reverse().join( '' ) );
+
            skip = true;
 +
            return false;
 +
        }
 +
    });
 +
    function lreplace( e, r, m ){
 +
        var multiline = m === true ? 'm' : '';
 +
        while( artext.match( new RegExp( e, multiline ) ) !== null ){
 +
               artext = artext.replace( new RegExp( e, multiline ), '$1' );
 +
               artext = artext.replace( RegExp.$1, RegExp.$1.replace( new RegExp( '(\\$\\{)(?=' + w + ')', 'g' ), '' ) );
 +
               artext = artext.replace( new RegExp( r, multiline ), '$1' );
 +
               artext = artext.replace( RegExp.$1, RegExp.$1.split('').reverse().join('').replace( new RegExp( '\\$\\}(?=' + w.split('').reverse().join('') + ')', 'g' ) , '' ).split( '' ).reverse().join( '' ) );
 +
        }
 
     }
 
     }
     var komexp = new RegExp( '(\\<\\!\\-\\-.*(\\[\\[' + w + '\\]\\]).*\\-\\-\\>)', 'i' );
+
     function rep(){
    while( ex( komexp ) ){
+
        artext = c.parse.wikitext['*'].replace( new RegExp( w + '(?=(\\b|((e(n)?)?|s|n)\\b))', 'g'), '${' + w + '}$').replace(/\]\]/g,']]\n');
              artext = artext.replace( ilexp, '$1' );
+
        lreplace( '(<[^]*(\\$\\{' + w + '\\}\\$)[^]*>)', '(<[^]*(' + w + '\\}\\$)[^]*>)', true );
              artext = artext.replace( RegExp.$1, RegExp.$1.replace( new RegExp( '(\\[\\[)(?=' + w + ')', 'gi' ), '' ) );
+
        lreplace( '(^\\={1,6}[^\\=]*(\\$\\{' + w + '\\}\\$)[^\\=]*\\={1,6} *$)', '(^\\={1,6}[^\\=]*(' + w + '\\}\\$)[^\\=]*\\={1,6} *$)', true );
              artext = artext.replace( new RegExp( '(\\<\\!\\-\\-[^\\-]*(' + w + '\\]\\])[^\\[\\]]*\\-\\-\\>)', 'i' ), '$1' );
+
        lreplace( '(\\{\\{([Vv]orlage:)?(?![Gg]edicht\\||[Tt]oggle\\||[Zz]itat\\||[Kk]lappe\\|)[^]*(\\$\\{' + w + '\\}\\$)[^]*\\}\\})', '(\\{\\{[^]*(' + w + '\\}\\$)[^]*\\}\\})' );
              artext = artext.replace( RegExp.$1, RegExp.$1.split('').reverse().join('').replace( new RegExp( '\\]\\](?=' + w.split('').reverse().join('') + ')', 'gi' ) , '' ).split( '' ).reverse().join( '' ) );
+
        lreplace( '(\\<\\!\\-\\-[^]*(\\$\\{' + w + '\\}\\$)[^]*\\-\\-\\>)', '(\\<\\!\\-\\-[^]*(' + w + '\\}\\$)[^]*\\-\\-\\>)' );
 +
        lreplace( '(\\[(\\[|http(s)?:\\/\\/).*(\\$\\{' + w + '\\}\\$).*(\\])?\\])', '(\\[(\\[|http(s)?:\\/\\/).*(' + w + '\\}\\$).*(\\])?\\])' );
 +
        spl = artext.split( '${' + w + '}$' );
 
     }
 
     }
     var ilexp = new RegExp( '(\\[\\[[^\\]]*(\\[\\[' + w + '\\]\\])[^\\]]*\\]\\])', 'i' );
+
     if( !skip )
     while( ex( ilexp ) ){
+
        rep();
              artext = artext.replace( ilexp, '$1' );
+
     if( !skip && !spl.slice( 1 ).length && c.parse.wikitext['*'].match( new RegExp( w.charAt(0).toLowerCase() + w.slice(1) ) ) !== null ){
              artext = artext.replace( RegExp.$1, RegExp.$1.replace( new RegExp( '(\\[\\[)(?=' + w + ')', 'gi' ), '' ) );
+
        w = w.charAt(0).toLowerCase() + w.slice(1);
              artext = artext.replace( new RegExp( '(\\[\\[[^\\[\\]]*(' + w + '\\]\\])[^\\[\\]]*\\]\\])', 'i' ), '$1' );
+
        rep();
              artext = artext.replace( RegExp.$1, RegExp.$1.split('').reverse().join('').replace( new RegExp( '\\]\\](?=' + w.split('').reverse().join('') + ')', 'gi' ) , '' ).split( '' ).reverse().join( '' ) );
 
 
     }
 
     }
    var spl = artext.split( '[[' + w + ']]' );
 
 
     if( spl.slice( 1 ).length ){    //Verlinkbare Treffer gefunden
 
     if( spl.slice( 1 ).length ){    //Verlinkbare Treffer gefunden
         artext = [ spl[0], spl.slice( 1 ).join( w ) ].join( '[[' + w + ']]' );
+
         artext = [ spl[0], spl.slice( 1 ).join( w ) ].join( '${' + w + '}$' );
 +
        artext = artext.replace(/\]\]\n/g,']]').replace('${' + w + '}$','[[' + w + ']]');
 +
        if( linkchecker.altbool )
 +
            artext = artext.replace('[[' + w + ']]','[[' + mw.config.get('wgPageName').replace( /_/g, ' ' ) + '|' + w + ']]');
 
         linkchecker.pinhaltbool = true;
 
         linkchecker.pinhaltbool = true;
         linkchecker.pinhalt[ c.parse.title ] = artext;
+
         linkchecker.pinhalt[ linkchecker.arts[i].id ] = artext;
 
     }
 
     }
 
     if( i + 1 !== linkchecker.arts.length ){
 
     if( i + 1 !== linkchecker.arts.length ){
         api.request( linkchecker.pobj( linkchecker.arts[++i].id ), linkchecker.parsed, i );
+
         api.request( linkchecker.pobj( linkchecker.arts[++i].id ), linkchecker.content, i );
 
     }else{
 
     }else{
 
         linkchecker.change();
 
         linkchecker.change();
Zeile 164: Zeile 212:
 
       }
 
       }
 
       $.each( linkchecker.pinhalt, function( i, p ){
 
       $.each( linkchecker.pinhalt, function( i, p ){
          $( '#linkchecker-results ul' ).append( '\n<li>' + linkstring( i ) + ': <span style="color: green;">Bearbeitet.</span></li>' );
 
 
           api.request({
 
           api.request({
 
               action: 'edit',
 
               action: 'edit',
 
               title: i,
 
               title: i,
               summary: '[[' + mw.config.get('wgPageName') + '|' + mw.config.get('wgPageName') + ' verlinkt.]]',
+
               summary: '[[' + mw.config.get('wgPageName').replace( /_/g, ' ' ) + '|' + ( linkchecker.altbool ? linkchecker.wgname + ' auf ' : '' ) + mw.config.get('wgPageName').replace( /_/g, ' ' ) + ' verlinkt.]]',
 +
              minor: true,
 +
              bot: true,
 
               text: p,
 
               text: p,
 
               token: global.editToken
 
               token: global.editToken

Aktuelle Version vom 17. Oktober 2015, 13:40 Uhr

/**
 *   Linkchecker 2.0
 *   <nowiki>
 */
var linkchecker = {};
linkchecker.altbool = false;
linkchecker.pinhaltbool = false;
linkchecker.pinhalt = {};
linkchecker.init = function() {
    if ( mw.config.get( 'wgAction' ) == 'view' && global.isArticle && global.pageExists ) {
        if( mw.config.get( 'wgNamespaceNumber' ) !== 0 ){
            linkchecker.altbool = true;
        }
        $( mw.util.addPortletLink( 'p-cactions', '#', 'Linkcheck', 'ca-check' ) ).find( 'a' ).click( linkchecker.search );
        $( mw.util.addPortletLink( 'p-cactions', '#', 'Alternativ-Linkcheck', 'ca-altcheck' ) ).find( 'a' ).click( linkchecker.altsearch );
    }
};
linkchecker.pobj = function( p ){
return {
           action: 'parse',
           page: p,
           disablepp: true,
           prop: 'templates|wikitext|links',
       };
};
linkchecker.altsearch = function( e ) {
    e.preventDefault();
    var tex = $('<input />',{
        type: 'text'
    });
    var but = $('<input />',{
        type: 'button',
        value: 'Suche',
        click: function(){
            linkchecker.alttext = tex.val();
            linkchecker.altbool = true;
            linkchecker.search( e );
        }
    });
    $( '#ca-altcheck a' ).unbind( 'click' ).html( '' ).css( 'text-decoration', 'none' ).append( tex, ' ', but );
};

linkchecker.search = function( e ) {
    e.preventDefault();

    linkchecker.results = [];
    linkchecker.backlinks = [];
    linkchecker.wgname = linkchecker.alttext || mw.config.get( 'wgTitle' );
    linkchecker.wgname = $.ucFirst( linkchecker.wgname );
    $( '#linkchecker-container' ).remove();
    $( '#mw-content-text' ).hide().before( '<div id="linkchecker-results" style="font-family: Courier; background-color: #DDD;"></div>\n<div id="linkchecker-container"><p>Liste wird geladen …</p><p></p></div>' );
    var link = $( '<a>Zurück zum Artikel</a>' ).click( function() {
        $( '#linkchecker-container, #linkchecker-results' ).remove();
        $( '#mw-content-text' ).show();
    } );
    $( '#linkchecker-container p:last' ).append( link );

    api.request( {
        action: 'query',
        list: 'search',
        srwhat: 'text',
        srsearch: '"' + linkchecker.wgname + '"',
        srlimit: 'max',
        srnamespace: '0|102|104|106'
    }, function( data ) {
        var results = api.makeArray( data );
        $.each( results, function() {
            var title = $.trim( this.title );
            if ( title !== mw.config.get( 'wgPageName' ).replace( /_/g, ' ' ) ) {
                linkchecker.results.push( title );
            }
        } );
        if ( linkchecker.results.length === 0 ) {
            $( '#linkchecker-container p:first' ).html( 'Suche ergebnislos.' );
            return;
        }
        linkchecker.getBacklinks();
    } );
};

linkchecker.getBacklinks = function( cont ) {
    var obj = {
        action: 'query',
        list: 'backlinks',
        bltitle:  mw.config.get( 'wgPageName' ).replace( /_/g, ' ' ),
        bllimit: 'max'
    };
    if ( cont ) {
        obj.blcontinue = cont;
    }
    api.request( obj, linkchecker.receiveBacklinks );
};

linkchecker.receiveBacklinks = function( data ) {
    var pages = api.makeArray( data );
    $.each( pages, function() {
        linkchecker.backlinks.push( $.trim( this.title ) );
    } );

    if ( data['query-continue'] ) {
        linkchecker.getBacklinks( data['query-continue'].backlinks.blcontinue );
    }

    else {
        var unlinked = [];
        $.each( linkchecker.results, function() {
            var title = this.toString();
            if ( $.inArray( title, linkchecker.backlinks ) === -1 ) {
                unlinked.push( title );
            }
        } );
        if ( unlinked.length === 0 ) {
            $( '#linkchecker-container p:first' ).html( 'Keine unverlinkten Treffer gefunden.' );
            return;
        }
        var list = 'In folgende Artikel können Links hierher gesetzt werden:<ul>';
        $.each( unlinked, function( i ) {
            var title = this.toString();
            list += '<li><a href="' + mw.util.wikiGetlink( title ) + '">' + mw.html.escape( title ) + '</a><input type="checkbox" id="' + title + '" checked="checked" /></li>';
        } );
        list += '</ul>';
        $( '#linkchecker-container p:first' ).html( '\n' + list + '\n' ).append( 
           $('<input />', {
                   'type': 'button',
                   'value': 'Keine auswählen',
                   'onclick': '$("#linkchecker-container input[type=\'checkbox\']").removeAttr("checked");'
           }).after(
              $('<input />', {
                   'type': 'button',
                   'value': 'Alle auswählen',
                   'onclick': '$("#linkchecker-container p:first input[type=\'checkbox\']").attr("checked","checked");'
              })
           ).after( '<hr />' )
        );
        $( '<input />' ).attr({
            type: 'button',
            value: 'Ausgewählte verlinken'
        }).click(function(){
            linkchecker.arts = $( '#linkchecker-container p:first' ).find( 'input[type="checkbox"]:checked' ).toArray();
            if( linkchecker.arts.length ){
                $( '#linkchecker-container p' ).hide();
                $( '#linkchecker-results' ).html( 'Bitte warten…' );
                api.request( linkchecker.pobj( linkchecker.arts[0].id ), linkchecker.content, 0 );
            }
        }).appendTo( '#linkchecker-container p:first' );
    }
};

linkchecker.content = function( c, i ){
    $( '#linkchecker-results' ).html( 'Ermittle Artikel ' + (i+1) + ' von ' + linkchecker.arts.length + '…' );
    var w = linkchecker.wgname;
    var spl = [], skip = false, artext;
    $.each( c.parse.links, function( i, link ){
        if( link['*'] === $.ucFirst( mw.config.get('wgPageName').replace( /_/g, ' ' ) ) ){
            skip = true;
            return false;
        }
    });
    $.each( c.parse.templates, function( i, temp ){
        if( temp['*'] === 'Vorlage:Inuse' || temp['*'] === 'Vorlage:CT' ){
            skip = true;
            return false;
        }
    });
    function lreplace( e, r, m ){
        var multiline = m === true ? 'm' : '';
        while( artext.match( new RegExp( e, multiline ) ) !== null ){
               artext = artext.replace( new RegExp( e, multiline ), '$1' );
               artext = artext.replace( RegExp.$1, RegExp.$1.replace( new RegExp( '(\\$\\{)(?=' + w + ')', 'g' ), '' ) );
               artext = artext.replace( new RegExp( r, multiline ), '$1' );
               artext = artext.replace( RegExp.$1, RegExp.$1.split('').reverse().join('').replace( new RegExp( '\\$\\}(?=' + w.split('').reverse().join('') + ')', 'g' ) , '' ).split( '' ).reverse().join( '' ) );
        }
    }
    function rep(){
        artext = c.parse.wikitext['*'].replace( new RegExp( w + '(?=(\\b|((e(n)?)?|s|n)\\b))', 'g'), '${' + w + '}$').replace(/\]\]/g,']]\n');
        lreplace( '(<[^]*(\\$\\{' + w + '\\}\\$)[^]*>)', '(<[^]*(' + w + '\\}\\$)[^]*>)', true );
        lreplace( '(^\\={1,6}[^\\=]*(\\$\\{' + w + '\\}\\$)[^\\=]*\\={1,6} *$)', '(^\\={1,6}[^\\=]*(' + w + '\\}\\$)[^\\=]*\\={1,6} *$)', true );
        lreplace( '(\\{\\{([Vv]orlage:)?(?![Gg]edicht\\||[Tt]oggle\\||[Zz]itat\\||[Kk]lappe\\|)[^]*(\\$\\{' + w + '\\}\\$)[^]*\\}\\})', '(\\{\\{[^]*(' + w + '\\}\\$)[^]*\\}\\})' );
        lreplace( '(\\<\\!\\-\\-[^]*(\\$\\{' + w + '\\}\\$)[^]*\\-\\-\\>)', '(\\<\\!\\-\\-[^]*(' + w + '\\}\\$)[^]*\\-\\-\\>)' );
        lreplace( '(\\[(\\[|http(s)?:\\/\\/).*(\\$\\{' + w + '\\}\\$).*(\\])?\\])', '(\\[(\\[|http(s)?:\\/\\/).*(' + w + '\\}\\$).*(\\])?\\])' );
        spl = artext.split( '${' + w + '}$' );
    }
    if( !skip )
        rep();
    if( !skip && !spl.slice( 1 ).length && c.parse.wikitext['*'].match( new RegExp( w.charAt(0).toLowerCase() + w.slice(1) ) ) !== null ){
        w = w.charAt(0).toLowerCase() + w.slice(1);
        rep();
    }
    if( spl.slice( 1 ).length ){    //Verlinkbare Treffer gefunden
        artext = [ spl[0], spl.slice( 1 ).join( w ) ].join( '${' + w + '}$' );
        artext = artext.replace(/\]\]\n/g,']]').replace('${' + w + '}$','[[' + w + ']]');
        if( linkchecker.altbool )
            artext = artext.replace('[[' + w + ']]','[[' + mw.config.get('wgPageName').replace( /_/g, ' ' ) + '|' + w + ']]');
        linkchecker.pinhaltbool = true;
        linkchecker.pinhalt[ linkchecker.arts[i].id ] = artext;
    }
    if( i + 1 !== linkchecker.arts.length ){
        api.request( linkchecker.pobj( linkchecker.arts[++i].id ), linkchecker.content, i );
    }else{
        linkchecker.change();
    }
};

linkchecker.change = function(){
    if( !linkchecker.pinhaltbool ){
        alert( 'Keine verlinkbaren Treffer gefunden.' );
        window.location.reload();
    }else{
       $( '#linkchecker-results' ).html( '<ul></ul>' );
       function linkstring( a ){
           return '<a href="/stupi/' + mw.util.wikiUrlencode( a ) + '" title="' + a + '">' + a + '</a>';
       }
       $.each( linkchecker.pinhalt, function( i, p ){
           api.request({
               action: 'edit',
               title: i,
               summary: '[[' + mw.config.get('wgPageName').replace( /_/g, ' ' ) + '|' + ( linkchecker.altbool ? linkchecker.wgname + ' auf ' : '' ) + mw.config.get('wgPageName').replace( /_/g, ' ' ) + ' verlinkt.]]',
               minor: true,
               bot: true,
               text: p,
               token: global.editToken
           },function( data ){
               if( data.error ){
                   $( '#linkchecker-results ul' ).append( '\n<li>' + linkstring( i ) + ': <span style="color: red;">Fehler. Code: ' + data.error.code + ', Info: ' + data.error.info + '.</span></li>' );
               }else if( data.edit.result === 'Failure' ){
                   $( '#linkchecker-results ul' ).append( '\n<li>' + linkstring( i ) + ': <span style="color: red;">Unbekannter Fehler.</span></li>' );
               }else{
                   $( '#linkchecker-results ul' ).append( '\n<li>' + linkstring( i ) + ': <span style="color: green;">Bearbeitet.</span></li>' );
               }
           });
       });
       $( '#linkchecker-container p:last' ).show();
    }
};

execute( 'linkchecker.init' );

Linktipps: Faditiva und 3DPresso