User:Dalton2/FindRedirectsForAliases.js

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
// Encuentra una lista de redirecciones, permitiendo al usuario seleccionar algunas de ellas para añadirlas como alias.
// El botón "Encontrar redirecciones" aparece situado en el submenú que hay junto a la caja de búsqueda.
$( function( $ ){
  if( mw.config.get('wgNamespaceNumber') != 0 ){return}
  var wgUserLanguage = mw.config.get('wgUserLanguage');
  var link = $(".wb-sitelinks-link-"+wgUserLanguage+" a");
  if( link.length == 0 ){return}
  function addAliasesFromRedirects(){
   mw.util.addCSS(".YRRedirectsToAdd{float: left; white-space: nowrap; border: 1px solid #AAA; border-radius: 3px; cursor: pointer; background-color: #FFF; padding: 2px 5px; margin: 2px; }.YRRedirectsToAdd:hover{ background-color: #F0F6FF; box-shadow: 0px 0px 5px #CCC inset; }.YRRedirectsToAdd.selected{ border-color:#0CC; }")
   var url = "//"+wgUserLanguage+".wikipedia.org/";
   mw.loader.using( ['jquery.ui'], function() {
     var $dialog = $("<div>").text("Cargando...").dialog({
       title: "Añadir alias desde redirecciones",
       autoOpen: true
     });
     function error(e) {
       $dialog.empty().append( $("<span>",{css:{color:"#F00"},text:"Error: "+e}));
     }
     $.ajax({
       url: url + "w/api.php",
       dataType: 'jsonp',
       data: {
         format: 'json',
         action: 'query', 
         bltitle: link.text(), 
         list: 'backlinks', 
         blfilterredir: 'redirects',
         blnamespace: 0,
         bllimit: 500
       },
       success: function( result ){
         result = result.query.backlinks;
         if( result.length == 0 ){
           // no se han encontrado resultados
           $dialog.text("No se han encontrado redirecciones.");
           return;
         }
         var selected = {};
         $dialog
            .text("Selecciona las redirecciones a añadir como alias: ")
            .append($("<hr>"))
            .dialog({buttons:{"Añadir":function(){
              var toAdd = [];
              for( var i in selected ){
                selected[ i ] && toAdd.push( i );
              }
              if( toAdd.length == 0 ){
                return;
              }
              $.ajax({
                type: 'POST',
                url: mw.util.wikiScript( 'api' ),
                data: {
                  format: 'json',
                  action: 'wbsetaliases',
                  id: mw.config.get("wbItemId"), 
                  token: mw.user.tokens.get( 'csrfToken' ),
                  add: toAdd.join( "|" ),
                  language: wgUserLanguage
                },
                success: function(){
                  location.reload();
                },
                error: error
              })
              $dialog.dialog({buttons:{}}).text("Cargando...");
            }}});
         for(var i = 0; i < result.length; i++) {
           ( function ( r ) {
             selected[ r ] = false;
             $dialog.append(
               $( "<span>" )
                 .addClass("YRRedirectsToAdd")
                 .text( r )
                 .on( "click", function(){
                   $( this )[ (selected[ r ] = !selected[ r ])?'addClass':'removeClass']( "selected" );
                 })
             )
           })( result[ i ].title )
         }
       },
       error: error
     })
   })
  }
  $( mw.util.addPortletLink( 'p-cactions', '#', 'Encontrar redirecciones', null, 'Añadir alias desde las redirecciones de Wikipedia' ) ).on( "click", addAliasesFromRedirects );
})