Difference between revisions of "Template:InterProject/doc"

From blackwiki
Jump to navigation Jump to search
imported>Brackenheim
(Created page with '{{Documentation subpage}} <!-- Categories go at the bottom of this page and interwikis go in Wikidata. --> This template is used to generate links to sister pro...')
imported>WOSlinker
m (change source to syntaxhighlight)
 
(5 intermediate revisions by 5 users not shown)
Line 30: Line 30:
  
 
== Programming ==
 
== Programming ==
JavaScript must be enabled to use this template. To apply this template to a different wiki, the following javascript code is needed (see also [[MediaWiki:Common.js]] for the current code):
+
JavaScript must be enabled to use this template. To apply this template to a different wiki, the following javascript code is needed (see also [[MediaWiki:Common.js]] for the current code; see also [[wikt:de:MediaWiki:InterProject.js]]):
<source lang="javascript" style="height:30em; overflow:auto;">/** Code for [[Template:InterProject]] */
+
<syntaxhighlight lang="javascript" style="height:30em; overflow:auto;">/*
mw.loader.using( [ 'mediawiki.util' ], function() { jQuery( document ).ready(function() {
+
## ProjektLinks ##
     var iProject = document.getElementById("interProject");
+
by Skript von [[user:Merlissimo]] (Idee basierend auf http://de.wiktionary.org/wiki/MediaWiki:Common.js von [[User:Pathoschild]] und [[wikt:de:User:Melancholie]])
     if(!iProject) return;
+
erzeugt Sitebar-Interwiki zu Schwesterprojekten aufgrund von Vorlage [[Vorlage:InterProjekt]]
     var sistersibling = document.getElementById("p-lang");
+
siehe auch Feature-Request [[bugzilla:708]]
     if(!sistersibling) sistersibling= document.getElementById("p-tb");
+
*/
     if(!sistersibling) return;
+
if( mw.config.get( 'wgNamespaceNumber' ) > 0 ) {
     var sisterparent = sistersibling.parentNode;
+
  mw.loader.using( [ 'mediawiki.util' ], function() { $( function() {
     var sisterprojectnav = document.createElement("div");
+
     var iProject = $( '#interProject' );
     sisterprojectnav.id = "p-sisterprojects";
+
     if( !iProject.length ) {
     sisterprojectnav.className = sistersibling.className
+
        return;
     sisterprojectnav.innerHTML = '<h5>'+document.getElementById("sisterProjects").firstChild.innerHTML+'</h5><div><ul></ul></div>';
+
    }
     var sistersiblingsub = sistersibling.getElementsByTagName("div")[0];
+
     var sistersibling = $( '#p-lang' );
     if(sistersiblingsub){
+
     if( !sistersibling.length ) {
         sisterprojectnav.childNodes[1].className = sistersiblingsub.className;
+
        sistersibling = $( '#p-tb' );
 +
    }
 +
     if( !sistersibling.length ) {
 +
        return;
 +
    }
 +
    //Link auf Parennode des Portletmenues
 +
     var sisterparent = sistersibling.parent();
 +
 +
    //Erzeuge neues Portletmenue
 +
     var sisterprojectnav = $( document.createElement( 'div' ) );
 +
     sisterprojectnav.attr( 'id', 'p-sisterprojects' );
 +
     sisterprojectnav.attr( 'class', sistersibling.attr( 'class' ) );
 +
     var header = $( document.createElement( 'h3' ) );
 +
    header.text( $( '#sisterProjects:first' ).text() );
 +
    sisterprojectnav.append( header );
 +
    var portletDiv = $( document.createElement( 'div' ) );
 +
     var sistersiblingsub = sistersibling.find( 'div:first' );
 +
     if( sistersiblingsub.length ) {
 +
         portletDiv.attr( 'class', sistersiblingsub.attr( 'class' ) );
 
     } else {
 
     } else {
         sisterprojectnav.childNodes[1].className = "pBody";
+
         portletDiv.attr( 'class', 'pBody' );
 
     }
 
     }
     var sisternext = document.getElementById("p-lang");
+
     sisterprojectnav.append( portletDiv );
     if ( sisternext && sisternext.parentNode == sisterparent ){
+
         sisterparent.insertBefore( sisterprojectnav, sisternext );
+
    //Wenn möglich vor den Interwikis einfügen
     }else{
+
     if ( sisterparent.has( '#p-lang' ).length ) {
         sisterparent.appendChild(sisterprojectnav);
+
         sisterprojectnav.insertBefore( '#p-lang' );
    }
+
     } else {
    var sisterlinks = iProject.getElementsByTagName("a");
+
         sisterparent.append( sisterprojectnav );
    for (var i = 0; i < sisterlinks.length; i++) {
 
        var sistername = sisterlinks[i].firstChild.nodeValue
 
        mw.util.addPortletLink('p-sisterprojects', sisterlinks[i].getAttribute("href") + '?uselang=' + mw.config.get( 'wgUserLanguage' ), sistername, "sister-"+ sistername, sistername);
 
 
     }
 
     }
})});
+
/** End of code for Template:Interproject */</source>
+
    //Schwesterlinks ermitteln und einfügen
 +
    iProject.find( 'a' ).each( function() {
 +
        $this = $( this );
 +
        var sistername = $this.text();
 +
        mw.util.addPortletLink(
 +
            'p-sisterprojects',
 +
            $this.attr( 'href' ) + '?uselang=' + mw.util.rawurlencode( mw.config.get( 'wgUserLanguage' ) ),
 +
            sistername,
 +
            'sister-' + sistername,
 +
            sistername
 +
        );
 +
    });
 +
  })});
 +
}
 +
/** End of code for Template:Interproject */</syntaxhighlight>
  
<!-- Categories go here and interwikis go in Wikidata. -->
+
<includeonly>{{Sandbox other||
 +
<!-- Categories below this line, please; interwikis at Wikidata -->
 
[[Category:Link templates]]
 
[[Category:Link templates]]
 +
}}</includeonly>

Latest revision as of 12:02, 7 July 2020

This template is used to generate links to sister projects similar to Interlanguage links. The template creates a box with the listed links above the display of interwiki links in the sidebar. It is not intended for use in the article namespace.

Usage

{{InterProject
|meta=
|metaglobal=
|commons=
|b=
|n=
|q=
|s=
|v=
|d=
|wikt=
|voy=
|species=
|incubator=
|mw=
}}

Parameters

For every parameter the page name must be entered separately. It should be noted that the localized name of the target wiki or the international name is used for the namespace (for example, user for the user-namespaces). A leading colon is not required.

For every sister project you can exactly specify one link. In sister projects with different languages (like Wikibooks), however, you can link to languages other than English: with {{Interprojekt|b=de:User:Example}} you link to the German-language Wikibooks.

Programming

JavaScript must be enabled to use this template. To apply this template to a different wiki, the following javascript code is needed (see also MediaWiki:Common.js for the current code; see also wikt:de:MediaWiki:InterProject.js):

/*
## ProjektLinks ##
by Skript von [[user:Merlissimo]] (Idee basierend auf http://de.wiktionary.org/wiki/MediaWiki:Common.js von [[User:Pathoschild]] und [[wikt:de:User:Melancholie]])
erzeugt Sitebar-Interwiki zu Schwesterprojekten aufgrund von Vorlage [[Vorlage:InterProjekt]]
siehe auch Feature-Request [[bugzilla:708]]
*/
if( mw.config.get( 'wgNamespaceNumber' ) > 0 ) {
  mw.loader.using( [ 'mediawiki.util' ], function() { $( function() {
    var iProject = $( '#interProject' );
    if( !iProject.length ) {
        return;
    }
    var sistersibling = $( '#p-lang' );
    if( !sistersibling.length ) {
        sistersibling = $( '#p-tb' );
    }
    if( !sistersibling.length ) {
        return;
    }
    //Link auf Parennode des Portletmenues
    var sisterparent = sistersibling.parent();
 
    //Erzeuge neues Portletmenue
    var sisterprojectnav = $( document.createElement( 'div' ) );
    sisterprojectnav.attr( 'id', 'p-sisterprojects' );
    sisterprojectnav.attr( 'class', sistersibling.attr( 'class' ) );
    var header = $( document.createElement( 'h3' ) );
    header.text( $( '#sisterProjects:first' ).text() );
    sisterprojectnav.append( header );
    var portletDiv = $( document.createElement( 'div' ) );
    var sistersiblingsub = sistersibling.find( 'div:first' );
    if( sistersiblingsub.length ) {
        portletDiv.attr( 'class', sistersiblingsub.attr( 'class' ) );
    } else {
        portletDiv.attr( 'class', 'pBody' );
    }
    sisterprojectnav.append( portletDiv );
 
    //Wenn möglich vor den Interwikis einfügen
    if ( sisterparent.has( '#p-lang' ).length ) {
        sisterprojectnav.insertBefore( '#p-lang' );
    } else {
        sisterparent.append( sisterprojectnav );
    }
 
    //Schwesterlinks ermitteln und einfügen
    iProject.find( 'a' ).each( function() {
        $this = $( this );
        var sistername = $this.text();
        mw.util.addPortletLink(
            'p-sisterprojects',
            $this.attr( 'href' ) + '?uselang=' + mw.util.rawurlencode( mw.config.get( 'wgUserLanguage' ) ),
            sistername,
            'sister-' + sistername,
            sistername
        );
    });
  })});
}
/** End of code for Template:Interproject */