MediaWiki:Gadget-heading-icons.js

Z Wikipodróży

Uwaga: aby zobaczyć zmiany po opublikowaniu, może zajść potrzeba wyczyszczenia pamięci podręcznej przeglądarki.

  • Firefox / Safari: Przytrzymaj Shift podczas klikania Odśwież bieżącą stronę, lub naciśnij klawisze Ctrl+F5, lub Ctrl+R (⌘-R na komputerze Mac)
  • Google Chrome: Naciśnij Ctrl-Shift-R (⌘-Shift-R na komputerze Mac)
  • Internet Explorer / Edge: Przytrzymaj Ctrl, jednocześnie klikając Odśwież, lub naciśnij klawisze Ctrl+F5
  • Opera: Naciśnij klawisze Ctrl+F5.
window.headingIconGadget = {
        version: 3,
        enabled: true,
        firstHeading: null,
        managedElements: [],
        sortWeights: {
                editsection: 1,
                padlock: 2,
                // other = 5
                coordinates: 10,
                shortcut_upper: 11
        }
};
 
/* Translatable strings */
mw.messages.set( {
        'msg-small-protection': 'Tylko użytkownicy automatycznie zatwierdzeni mogą edytować tę stronę (niski poziom zabezpieczenia).',
        'msg-medium-protection': 'Tylko redaktorzy mogą edytować tę stronę (średni poziom zabezpieczenia).',
        'msg-high-protection': 'Tylko administratorzy mogą edytować tę stronę (wysoki poziom zabezpieczenia).',
} );
 
 
headingIconGadget.append = function( element ) {
        if ( !this.firstHeading ) {
                return;
        }
 
        var sortKey = 5;
        if ( this.sortWeights[element.id] ) {
                sortKey = this.sortWeights[element.id]
        } else if ( this.sortWeights[element.className] ) {
                sortKey = this.sortWeights[element.className];
        }
 
        this.managedElements.push( {
                'element': element,
                'sortKey': sortKey
        } );
 
        this.firstHeading.insertBefore( element, this.firstHeading.firstChild );
}
 
headingIconGadget.grab = function() {
        var that = this;
 
        jQuery( "span.put-in-header" ).add( "div.put-in-header" ).each( function() {
                this.style.cssText = 'position:static; display:inline-block; float:right; padding:3px 5px; font-size:50%;';
                that.append( this );
        } );
}
 
// correction in 0-section edit link
headingIconGadget.fix0SectionEdit = function() {
        if ( this.managedElements.length == 0 ) {
                return;
        }
 
        var secEdit = jQuery( 'div.editsection' );
        if ( secEdit.length ) {
                secEdit[0].style.cssText = 'padding:.7em 0 0 1.0em; float:right; font-size:50%;';
                this.append( secEdit[0] );
        }
}
 
/**
 * Wyświetlanie kłódki w prawym górnym rogu kiedy
 * strona jest zabezpieczona
 */
headingIconGadget.padlockIcon = function() {
        // na stronie głównej nie pokazujemy kłódki
        if ( mw.config.get( 'wgIsMainPage' ) ) {
                return;
        }
 
        // brak zabezpieczeń?
        var wgRestrictionEdit = mw.config.get( 'wgRestrictionEdit' );
        if ( wgRestrictionEdit == null || wgRestrictionEdit.length < 1 || wgRestrictionEdit[0] == "" ) {
                return;
        }
 
        // wydruk?
        if ( mw.util.getParamValue( 'printable' ) == 'yes' ) {
                return;
        }
 
        var img = document.createElement( 'img' );
        if ( wgRestrictionEdit[0] == "autoconfirmed" ) {
                img.src = "//upload.wikimedia.org/wikipedia/commons/thumb/8/8a/Padlock-green.svg/22px-Padlock-green.svg.png";
                img.title = mw.msg( 'msg-small-protection' );
        } else if ( wgRestrictionEdit[0] == "editor" ) {
                img.src = "//upload.wikimedia.org/wikipedia/commons/thumb/e/e0/Padlock-gold.svg/22px-Padlock-gold.svg.png";
                img.title = mw.msg( 'msg-medium-protection' );
        } else if ( wgRestrictionEdit[0] == "sysop" ) {
                img.src = "//upload.wikimedia.org/wikipedia/commons/thumb/4/48/Padlock-red.svg/22px-Padlock-red.svg.png";
                img.title = mw.msg( 'msg-high-protection' );
        }
        img.alt = "padlock";
 
        var link = document.createElement( 'a' );
        link.id = "padlock";
        link.href = mw.util.getUrl( "Wikipedia:Strona zabezpieczona" );
        link.style.cssText = 'position:static; display:inline-block; float:right; padding:3px 5px; font-size:50%;';
        link.appendChild( img );
 
        this.append( link );
}
 
headingIconGadget.sortElements = function() {
        if ( this.managedElements.length < 2 ) {
                return;
        }
 
        // sort array
        this.managedElements.sort( function( a, b ) {
                return a.sortKey - b.sortKey;
        } );
 
        // sort elements
        for ( var i = this.managedElements.length - 1; i >= 0; i-- ) {
                this.firstHeading.insertBefore( this.managedElements[i].element, this.firstHeading.firstChild );
        }
}
 
headingIconGadget.init = function() {
        this.firstHeading = document.getElementById( 'firstHeading' );
 
        if ( !this.firstHeading ) {
                return;
        }
 
        headingIconGadget.grab();
        headingIconGadget.padlockIcon();
        headingIconGadget.fix0SectionEdit();
        headingIconGadget.sortElements();
}

$( window ).on( 'load', function() {
        if ( typeof( wikiminiatlas ) == 'object' && typeof( wikiminiatlas.loader ) == 'function' && document.getElementById( 'coordinates' ) && document.getElementById( 'coordinates' ).getElementsByTagName( 'img' ).length < 1 ) {
                wikiminiatlas.oldhookUpMapbutton = wikiminiatlas.hookUpMapbutton;
                wikiminiatlas.hookUpMapbutton = function( mb ) {
                        mb.onload = headingIconGadget.init;
                        wikiminiatlas.oldhookUpMapbutton( mb );
                }
        } else {
                headingIconGadget.init();
        }
} );