Benutzer:$traight-$hoota/Gadget-redirectcategories.js

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.

  • Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
  • Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
  • Internet Explorer/Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
  • Opera: Strg+F5
/*
 * Basiert auf [[Benutzer:Fomafix/Gadget-redirectcategories.js]]
 * This gadget shows redirects with their categories below of the categories of the article.
 * 
 * @author Fomafix, 2015
 * dependencies=mediawiki.api,mediawiki.jqueryMsg,mediawiki.Title,mediawiki.util
 */
( function ( mw, $ ) {
  var api = new mw.Api(),
    pageId = mw.config.get( 'wgArticleId' );

  if ( !pageId || mw.config.get( 'wgAction' ) !== 'view' ) {
    return;
  }

  mw.messages.set( {
    'redirectcategories-redirect': '{{PLURAL:$1|Weiterleitung|Weiterleitungen}}'
  } );
  mw.loader.load("//de.wikipedia.org/w/index.php?title=Benutzer:$traight-$hoota/Gadget-redirectcategories.css&action=raw&ctype=text/css",
               "text/css");

  function getRedirectCategories( pageId ) {
    return api.get( {
      action: 'query',
      generator: 'redirects',
      prop: 'categories|pageprops|redirects',
      grdlimit: 50,
      cllimit: 50,
      rdlimit: 50,
      pageids: pageId,
      'continue': null
    } );
  }

  $( function () {
    getRedirectCategories( pageId )
    .done( function ( data ) {
      if ( !data.query ) {
        return;
      }
      var $redirects = $( '<div>' );
      $.each( data.query.pages, function () {
        var displaytitle = this.pageprops && this.pageprops.displaytitle,
          wikibase_item = this.pageprops && this.pageprops.wikibase_item,
          $list,
          $redirect = $( '<div>' )
            //.addClass('redirect')
            .append(
              $( '<a>' )
                .attr( {
                  href: mw.util.getUrl(
                    this.title,
                    { redirect: 'no' }
                  ),
                  title: this.title
                } )
              .addClass( 'mw-redirect' )
              .html( displaytitle || mw.html.escape( this.title ) )
            );
        if ( wikibase_item ) {
          $redirect.append(
            ' ',
            $('<span>')
              .addClass('wikibase-item')
              .append(
                '(',
                $( '<a>' )
                  .attr( {
                    href: '//www.wikidata.org/wiki/' + wikibase_item,
                    title: this.prefix + ':' + wikibase_item
                  } )
                  .text( wikibase_item ),
                ')'
              )
          );
        }
        if ( this.categories ) {
          $list = $( '<ul>' );
          $.each( this.categories, function () {
            var title = new mw.Title( this.title );
            $list.append(
              $( '<li>' ).append(
                $( '<a>' )
                .attr( {
                  href: title.getUrl(),
                  title: title.getPrefixedText()
                } )
                .text( title.getMainText() )
              )
            );
          } );
          $redirect.append( ': ', $list );
        }
        if ( this.redirects ) {
          $list = $( '<ul>' );
          $.each( this.redirects, function () {
            $list.append(
              $( '<li>' ).append(
                $( '<a>' )
                .attr( {
                  href: mw.util.getUrl(
                    this.title,
                    { redirect: 'no' }
                  ),
                  title: this.title
                } )
                .addClass( 'mw-redirect' )
                .text( this.title )
              )
            );
          } );
          $redirect.append(
            $('<div>').addClass('redirects').append($list)
          );
        }
        $redirects.append( $redirect );
      } );
      if ( data['continue'] ) {
        $redirects.append(
          $( '<li>' )
          .text( '…' )
        );
      }
      $( '#catlinks' )
        .after(
          $( '<div>' )
            .attr( 'id', 'redirect-catlinks-wrapper' )
            .attr('class', 'redirect-catlinks-wrapper')
            .append(
              $( '<a>' )
                .attr( {
                  href: mw.util.getUrl( 'Wikipedia:Weiterleitung' ),
                  title: 'Wikipedia:Weiterleitung'
                } )
                .text( mw.msg( 'redirectcategories-redirect', $redirects.children().length ) ),
              $( '<div>' )
                .attr('class', 'redirect-catlinks catlinks')
                .append(
                  $redirects
                )
            )
        );
    } );
  } );
}( mediaWiki, jQuery ) );