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>Brackenheim
m (add)
Line 31: Line 31:
 
== 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):
<source lang="javascript" style="height:30em; overflow:auto;">/** Code for [[Template:InterProject]] */
+
<source 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);
 
 
     }
 
     }
})});
+
 +
    //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 */</source>
 
/** End of code for Template:Interproject */</source>
  
 
<!-- Categories go here and interwikis go in Wikidata. -->
 
<!-- Categories go here and interwikis go in Wikidata. -->
 
[[Category:Link templates]]
 
[[Category:Link templates]]

Revision as of 17:42, 12 February 2014

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):

/*
## 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 */