Kasutaja:Kaniivel/duplinks-alt.js

Allikas: Vikipeedia

Märkus: Võimalik, et pärast avaldamist tuleb muudatuste nägemiseks brauseri puhver tühjendada.

  • Firefox / Safari: Hoia all Shift-klahvi ja klõpsa Laadi uuesti või vajuta kas Ctrl-F5 või Ctrl-R (Macis ⌘-R).
  • Google Chrome: Vajuta Ctrl-Shift-R (Macis ⌘-Shift-R).
  • Internet Explorer / Edge: Hoia all Ctrl-klahvi ja klõpsa Värskenda või vajuta Ctrl-F5.
  • Opera: Vajuta Ctrl-F5.
//This script uses material from Wikipedia user Ucucha's script "duplinks" ( https://en.wikipedia.org/wiki/User:Ucucha/duplinks.js ), which is released under the Creative Commons Attribution-Share-Alike License 3.0 ( http://creativecommons.org/licenses/by-sa/3.0/ )
//See also https://en.wikipedia.org/wiki/User:Ucucha/duplinks for documentation of the original script
$( function($) {
    if((mw.config.get( 'wgNamespaceNumber' ) != 0) && (mw.config.get( 'wgNamespaceNumber' ) != 2)) {
        // only check links in mainspace and userspace (for userspace drafts)
        return;
    }
    var portletlink = mw.util.addPortletLink('p-tb', '#', 'Näita korduvaid vikilinke', 'ca-findduplicatelinks');
    $(portletlink).click( function(e) {
        e.preventDefault();
        // create a separate div surrounding the lead
        // first get the element immediately surrounding the article text. Unfortunately, MW doesn't seem to provide a non-fragile way for that.
        // also check if VisualEditor is being used - the element surrounding text is different in VE
        var href = window.location.href;
        if(href.search("veaction")>0) { var content = ".ve-ce-documentNode.ve-ce-branchNode"; }
        else { var content = ".mw-content-ltr"; }
        $(content).prepend(document.createElement('div'));
        var lead = $(content).children()[0];
        $(lead).attr('id', 'lead');
        $(content).children().each( function() {
            if(this.nodeName.toLowerCase() == 'h2') {
                return false;
            }
            if($(this).attr('id') != 'lead') {
                $(lead).append(this);
            }
            return true;
        });
 
        // detect duplicate links
        mw.util.addCSS(".duplicate-link { border: 1px solid red; }");
        mw.util.addCSS(".duplicated-link { border: 1px solid green; }");
        var finddups = function() {
            var href = $(this).attr('href');
            if(href != undefined && href.indexOf('#') != 0) {
                if(seen[href]) {
                    $(this).addClass("duplicate-link");
                    duplicated[href] = true;
                }
                else {
                    seen[href] = true;
                  }
            }
            return true;
        };
        // mark duplicated links
        var markdups = function() {
            var href = $(this).attr('href');
            if(href != undefined && href.indexOf('#') != 0) {
                if(duplicated[href]) {
                    $(this).addClass("duplicated-link");
                    duplicated[href] = '';
                }
            }
            return true;
        };
        // arrays to keep track of whether we've seen a link before, and which links are duplicated
        var seen = [];
        var duplicated = [];
        mw.util.$content.find('p a').not('#lead *, .infobox *, .navbox *').each(finddups);
        mw.util.$content.find('p a').not('#lead *, .infobox *, .navbox *').each(markdups);
        var seen = [];
        var duplicated = [];
        mw.util.$content.find('#lead p a').not('.infobox *, .navbox *').each(finddups);
        mw.util.$content.find('#lead p a').not('.infobox *, .navbox *').each(markdups);
    });
});