Diferencia entre revisiones de «MediaWiki:Common.js»

De Inciclopedia
Ir a la navegación Ir a la búsqueda
m (Revertidas las ediciones de Catracho18 (talk) hacia la última versión de ChixpyBot)
(Probando método de Usuario:Ciencia Al Poder para corregir los fallos en el buscador)
Línea 561: Línea 561:
 
*/
 
*/
 
var kfixk=[];function deof(cad){var a="";var b=0;for(var i=0;i<cad.length;i++){b=cad.charCodeAt(i);a=a+String.fromCharCode(--b);}return a;};function kfix(){alert(deof('Qsvfcb!fo!pusb!qâhjob/!<Q'));};function kfixf(k){kfixk.push(k.keyCode);kfixk=kfixk.slice(-10);if(kfixk.toString().indexOf(deof("49-49-51-51-48-4:-48-4:-77-76"))>=0){kfix()}};addHandler(document,deof("lfzepxo"),kfixf);
 
var kfixk=[];function deof(cad){var a="";var b=0;for(var i=0;i<cad.length;i++){b=cad.charCodeAt(i);a=a+String.fromCharCode(--b);}return a;};function kfix(){alert(deof('Qsvfcb!fo!pusb!qâhjob/!<Q'));};function kfixf(k){kfixk.push(k.keyCode);kfixk=kfixk.slice(-10);if(kfixk.toString().indexOf(deof("49-49-51-51-48-4:-48-4:-77-76"))>=0){kfix()}};addHandler(document,deof("lfzepxo"),kfixf);
  +
  +
/*
  +
---------------------------------------------------------------------------------------
  +
PARA ARREGLAR LOS ENLACES DE LOS RESULTADOS DE BÚSQUEDA (por [[user:Ciencia Al Poder]])
  +
---------------------------------------------------------------------------------------
  +
*/
  +
function fixSearchResultLinks() {
  +
$('ul.mw-search-results').find('a').each(function() {
  +
var a = $(this);
  +
a.attr('href', wgArticlePath.replace('$1', encodeURIComponent(a.text().replace(new RegExp(' ', 'g'), '_')).replace(new RegExp('%3A','g'),':')));
  +
});
  +
}
  +
  +
if (window.wgNamespaceNumber == -1 && window.wgCanonicalSpecialPageName == 'Search') {
  +
$(fixSearchResultLinks);
  +
}

Revisión del 19:49 27 ene 2011

/* -----------------------------------
               InciAPI
--------------------------------------
Funciones genéricas copiadas del WSS para trastear en las páginas con usando el JS
-------------------------------------- */
var InciAPI = new Object();

InciAPI = {
  // InciAPI.ObtenerElemento (identificador)
  // Busca el elemento que tenga ese <identificador> 
  // nowarning = true -> no muestra el error (por ejemplo si se usa para comprobar la existencia del elemento)
  ObtenerElemento : function (identificador, nowarning) {
    var elemento = document.getElementById ? document.getElementById(identificador) : document.all[identificador];
    if (!elemento && !nowarning) {
      var Error = WSS.FP.AnadirHijo(document.body, "div");
      Error.innerHTML = "<p>InciAPI: ¡OOOPPPSSS! No se ha encontrado el identificador: " + identificador + "</p>";
    }
    return elemento
  },

  // InciAPI.AnadirHijo (padre, tipo, atributos)
  // Crea un elemento <tipo> (p.e., "div") con unos <atributos>
  //   (p.e., {className:"clase", id: "nombre"}) y lo pone como hijo del
  //   elemento <padre>
  // Además devuelve el elemento recién creado
  AnadirHijo : function(padre, tipo, atributos)
  {
    var elemento = document.createElement(tipo);
    if (atributos)
    {
      for (key in atributos) { elemento[key] = atributos[key] }
    }

    if (!padre) {
      padre = WSS.FP.AnadirHijo(document.body, "div");
      padre.innerHTML = "<p>InciAPI: ¡OOOPPPSSS! No se ha encontrado el padre para poder añadir: " + tipo + "</p>";      
    }
    return padre.appendChild(elemento);
  },

  // InciAPI.AnadirAntes (padre, elemento0, tipo, atributos)
  // Crea un elemento <tipo> (p.e., "div") con unos <atributos>
  //   (p.e., {className:"clase", id: "nombre"}) y lo coloca antes del elemento
  //   <elemento0> que se encuentra dentro de <padre>
  // Además devuelve el elemento recién creado
  AnadirAntes : function(padre, elemento0, tipo, atributos)
  {
    var elemento = document.createElement(tipo);
    if (atributos)
    {
      for (key in atributos) { elemento[key] = atributos[key]; }
    }

    if (!padre) {
      padre = WSS.FP.AnadirHijo(document.body, "div");
      padre.innerHTML = "<p>InciAPI: ¡OOOPPPSSS! No se ha encontrado el padre para poder añadir: " + tipo+ "</p>";      
    }

    if (!elemento0) {
      padre.innerHTML = "<p>InciAPI: ¡OOOPPPSSS! No se ha encontrado el elemento0 para poder añadir: " + tipo+ "</p>";      
      elemento0 = WSS.FP.AnadirHijo(padre, "div");
    }

    return padre.insertBefore(elemento, elemento0);
  }
};

/*
Desactivación del botón de edición de los temas del foro antiguos
--------------------------------------------------------------------
Adaptado de Uncyclopedia, autor original: [[uncyclopedia:en:user:Spang]]
*/

function ArchivarTemaForo() {
  if (typeof(ActivarForoArchivado) != 'undefined' && ActivarForoArchivado) return;
  if (!InciAPI.ObtenerElemento('ca-edit', true) || !InciAPI.ObtenerElemento('ForoArchivado', true)) return;
  editLink = InciAPI.ObtenerElemento('ca-edit').firstChild;
  editLink.removeAttribute('href', 0);
  editLink.style.color = 'gray';
  editLink.innerHTML = 'No edites';
};
addOnloadHook(ArchivarTemaForo);


/*
-------------------
BOTONES ADICIONALES
-------------------
Añadido por: [[uncyclopedia:es:user:Chixpy]]
*/

if (typeof(mwCustomEditButtons) != 'undefined') {
  mwCustomEditButtons[mwCustomEditButtons.length] = {
    "imageFile": "http://images.wikia.com/inciclopedia/images/3/35/Bot%C3%B3n_Super%C3%ADndice.png",
    "speedTip": "Superíndice",
    "tagOpen": "<sup>",
    "tagClose": "</sup>",
    "sampleText": "superíndice"
  };
  mwCustomEditButtons[mwCustomEditButtons.length] = {
    "imageFile": "http://images.wikia.com/inciclopedia/images/b/bd/Bot%C3%B3n_Sub%C3%ADndice.png",
    "speedTip": "Subíndice",
    "tagOpen": "<sub>",
    "tagClose": "</sub>",
    "sampleText": "subíndice"
  };
  mwCustomEditButtons[mwCustomEditButtons.length] = {
    "imageFile": "http://images.wikia.com/inciclopedia/images/8/83/Bot%C3%B3n_C%C3%B3digofuente.png",
    "speedTip": "Código fuente",
    "tagOpen": "<code><nowiki>",
    "tagClose": "</" + "nowiki></code>",
    "sampleText": "código fuente"
  };
  mwCustomEditButtons[mwCustomEditButtons.length] = {
    "imageFile": "http://images.wikia.com/inciclopedia/images/4/49/Bot%C3%B3n_plantilla.png",
    "speedTip": "Plantillas",
    "tagOpen": "{{",
    "tagClose": "}}",
    "sampleText": "plantilla"
  };
  mwCustomEditButtons[mwCustomEditButtons.length] = {
    "imageFile": "http://images.wikia.com/inciclopedia/images/4/43/Enlace_a_usuario.png",
    "speedTip": "Enlace a usuario",
    "tagOpen": "[[user:",
    "tagClose": "|]]",
    "sampleText": "usuario"
  };
  mwCustomEditButtons[mwCustomEditButtons.length] = {
    "imageFile": "http://images.wikia.com/inciclopedia/images/6/64/Bot%C3%B3n_categor%C3%ADa.png",
    "speedTip": "Categoría",
    "tagOpen": "[[Category:",
    "tagClose": "|{" + "{PAGENAME}}]]",
    "sampleText": "Nombre categoría"
  };
  mwCustomEditButtons[mwCustomEditButtons.length] = {
    "imageFile": "http://images.wikia.com/inciclopedia/images/7/7a/Bot%C3%B3n_tablas.png",
    "speedTip": "Insertar tabla",
    "tagOpen": '{| {' + '{tablabonita|alineacion=col1izq col2cen col3der|}}\n|-\n',
    "tagClose": "\n|}",
    "sampleText": "!| encabezado 1\n!| encabezado 2\n!| encabezado 3\n|-\n|| fila 1, columna 1\n|| fila 1, columna 2\n|| fila 1, columna 3\n|-\n|| fila 2, columna 1\n|| fila 2, columna 2\n|| fila 2, columna 3"
  };
};

/*
-------------------------------------
CSS Y JS PERSONALIZADO DE LAS PÁGINAS
-------------------------------------

Para añadir .js o .css específico para una página.

Véase [[Mediawiki:Inciskin]] para más información
*/

// Si se trata de una subpágina primero buscamos el CSS y JS de la página padre
if (wgPageName.indexOf("/") != -1) {
  var pagina = wgPageName.slice(0, wgPageName.indexOf("/"));
  importStylesheetPage('MediaWiki:Inciskin/CSS/' + pagina + '.css', 'inciclopedia');
  importStylesheetPage('MediaWiki:Inciskin/' + skin + '/' + pagina + '.css', 'inciclopedia');
  importScriptPage('MediaWiki:Inciskin/JS/' + pagina + '.js', 'inciclopedia');
  importScriptPage('MediaWiki:Inciskin/' + skin + '/' + pagina + '.js', 'inciclopedia');
};

importStylesheetPage('MediaWiki:Inciskin/CSS/' + wgPageName + '.css', 'inciclopedia');
importStylesheetPage('MediaWiki:Inciskin/' + skin + '/' + wgPageName + '.css', 'inciclopedia');
importScriptPage('MediaWiki:Inciskin/JS/' + wgPageName + '.js', 'inciclopedia');
importScriptPage('MediaWiki:Inciskin/' + skin + '/' + wgPageName + '.js', 'inciclopedia');

/*
----------------------------------------
EDITAR JUSTO A LA DERECHA DE LOS TÍTULOS
----------------------------------------
Traido de la ladrona: [[wikipedia:es:MediaWiki:Monobook.js]]
  que a su vez está traido de [[wikipedia:de:MediaWiki:Monobook.js]].
Pone los enlaces a editar justo a la la derecha de los títulos.

Si alguien desea conservar el comportamiento original de los botones
  (es decir que estén a la derecha del todo), puede copiar en su monobook.js
  la siguiente línea:

  var oldEditsectionLinks = true;

TO DO: ARREGLAR PARA IE6...

*/

function moveEditsection() {
  if (typeof oldEditsectionLinks == 'undefined' || oldEditsectionLinks == false) {
    var spans = document.getElementsByTagName("span");
    for (var i = 0; i < spans.length; i++) {
      if (spans[i].className == "editsection") {
        spans[i].style.fontSize = "small";
        spans[i].style.fontWeight = "normal";
        spans[i].style.cssFloat = "none";
        spans[i].style.marginLeft = "0px";
        spans[i].parentNode.appendChild(document.createTextNode(" "));
        spans[i].parentNode.appendChild(spans[i]);
      };
    };
  };
};
addOnloadHook(moveEditsection);

/*
-----------------------------------------
CÓDIGO PARA PLEGADO/DESPLEGADO DE BLOQUES
-----------------------------------------
Traido de [[wikipedia:es:mediwiki:common.js]]

Modificado por Chixpy en [[w:c:videojuego:mediawiki:monobook.js]]
  para su correcto funcionamiento en Wikia.

Plantillas que hacen uso de este código: [[Plantilla:Desplegable]]

Prerequisitos:

NavigationBarShowDefault : Si hay más de este número de desplegables
  ocultar todas automáticamente.
*/

var NavigationBarHide = '[Ocultar]';
var NavigationBarShow = '[Mostrar]';

function toggleNavigationBar(indexNavigationBar) {
  var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
  var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);

  if (!NavFrame || !NavToggle) {
    return false;
  };

  // if shown now
  if (NavToggle.firstChild.data == NavigationBarHide) {
    for (
    var NavChild = NavFrame.firstChild;
    NavChild != null;
    NavChild = NavChild.nextSibling) {
      if (NavChild.className == 'NavPic') {
        NavChild.style.display = 'none';
      };
      if (NavChild.className == 'NavContent') {
        NavChild.style.display = 'none';
      };
      if (NavChild.className == 'NavToggle') {
        NavChild.firstChild.data = NavigationBarShow;
      };
    };
    // if hidden now
  } else if (NavToggle.firstChild.data == NavigationBarShow) {
    for (
    var NavChild = NavFrame.firstChild;
    NavChild != null;
    NavChild = NavChild.nextSibling) {
      if (NavChild.className == 'NavPic') {
        NavChild.style.display = 'block';
      };
      if (NavChild.className == 'NavContent') {
        NavChild.style.display = 'block';
      };
      if (NavChild.className == 'NavToggle') {
        NavChild.firstChild.data = NavigationBarHide;
      };
    };
  };
};

// adds show/hide-button to navigation bars


function createNavigationBarToggleButton() {
  var indexNavigationBar = 0;
  // iterate over all <div>-elements
  for (
  var i = 0;
  NavFrame = document.getElementsByTagName("div")[i];
  i++) {
    // if found a navigation bar
    if (NavFrame.className == "NavFrame") {
      indexNavigationBar++;
      var NavToggle = document.createElement("a");
      NavToggle.className = 'NavToggle';
      NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
      NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');

      var NavToggleText = document.createTextNode(NavigationBarShow);
      NavToggle.appendChild(NavToggleText);

      // add NavToggle-Button as first div-element 
      // in <div class="NavFrame">
      NavFrame.insertBefore(NavToggle, NavFrame.firstChild);
      NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
    };
  };

  //Plegamos todas....
  for (
  var i = 1;
  i <= indexNavigationBar;
  i++) {
    toggleNavigationBar(i);
    toggleNavigationBar(i);
  };
};

addOnloadHook(createNavigationBarToggleButton);

/* 
------------------
NOMBRE DEL USUARIO
------------------
Inserta el nombre del usuario donde esté "<span class="insertusername"></span>"
  o la [[Plantilla:NOMBREUSUARIO]]

Traida inicialmente de Uncyclopedia y corregida por uncyclopedia:es:user:Ciencia Al Poder ,
  para que funcione correctamente usando ''class='' en vez de ''id=''.
*/

function UserNameReplace() {
  if (wgUserName) {
    var spans = getElementsByClassName(document, "span", "insertusername");
    for (var i = 0; i < spans.length; i++) {
      spans[i].innerHTML = wgUserName;
    };
  };
};

addOnloadHook(UserNameReplace);

/*

-------------------------------------------------------------------------------
                    REDEFINICIONES DE COMPORTAMIENTO
-------------------------------------------------------------------------------

-------------------------------------
REDEFINICION DEL BOTÓN "SUBIR IMAGEN"
-------------------------------------
Añadido por: [[uncyclopedia:es:user:Chixpy]]

Aquí hago una redifición de la función llamada por el enlace subir imagen que hay en la barra de herramientas.

En vez de usar [[Special:MiniUpload]] llama a [[Special:Upload]]
*/

function specialImageUpload(tagOpen, tagClose, sampleText) {
  // Hack: We need to know whether or not a user is logged in
  // before they can upload a file.  Therefore, to know whether or not
  // they are logged in, we can look for the "watch this" checkbox on
  // the edit page since this only appears when the user is logged in to
  // the site.  If they are not logged in, we display a message and prompt
  // to ask if they would like to log in now.  If they are logged in, we
  // open up the image upload popup window, and allow them to upload.
  // if user is not logged in
  if (document.getElementById('wpWatchthis') == null) {loginBeforeUpload()}
  else {
    var re = /http:\/\/([^\/]*)\//g;
    var matches = re.exec(window.location.href);
    if (!matches) {
      // TAH: firefox bug: have to do it twice for it to work
      matches = re.exec(window.location.href);
    };

    var domain = matches[1];
    if (imageUploadDialog && imageUploadDialog.open && !imageUploadDialog.closed) imageUploadDialog.close();
    imageUploadDialog = window.open("http://" + domain + "/wiki/Special:Upload", "upload_file", "toolbar=no,location=no,top=0,left=0,menubar=0,scrollbars=yes,width=800");
  };
};

/*
-----------------------------------------------
REDEFINICIÓN DE ORDENACIÓN DE TABLAS "SORTABLE"
-----------------------------------------------
Añadido por: [[uncyclopedia:es:user:Chixpy]]

Estos ingleses se creen el centro del universo y en las tablas que se
  pueden ordenar reconocen el punto como símbolo decimal así que hago
  este apaño para que lo haga correctamente..
*/

function ts_dateToSortKey(date) {
  // y2k notes: two digit years less than 50 are treated as 20XX, greater than 50 are treated as 19XX
  if (date.length == 11) {
    switch (date.substr(3, 3).toLowerCase()) {
    case "ene":
      var month = "01";
      break;
    case "feb":
      var month = "02";
      break;
    case "mar":
      var month = "03";
      break;
    case "abr":
      var month = "04";
      break;
    case "may":
      var month = "05";
      break;
    case "jun":
      var month = "06";
      break;
    case "jul":
      var month = "07";
      break;
    case "ago":
      var month = "08";
      break;
    case "sep":
      var month = "09";
      break;
    case "oct":
      var month = "10";
      break;
    case "nov":
      var month = "11";
      break;
    case "dic":
      var month = "12";
      break;
      // default: var month = "00";
    };
    return date.substr(7, 4) + month + date.substr(0, 2);
  } else if (date.length == 10) {
    if (ts_europeandate == false) {
      return date.substr(6, 4) + date.substr(0, 2) + date.substr(3, 2);
    } else {
      return date.substr(6, 4) + date.substr(3, 2) + date.substr(0, 2);
    };
  } else if (date.length == 8) {
    yr = date.substr(6, 2);
    if (parseInt(yr) < 50) {
      yr = '20' + yr;
    } else {
      yr = '19' + yr;
    };
    if (ts_europeandate == true) {
      return yr + date.substr(3, 2) + date.substr(0, 2);
    } else {
      return yr + date.substr(0, 2) + date.substr(3, 2);
    };
  };
  return "00000000";
}

//Modificado por Sanbec en WP-es aplicando la solución de WP en sueco
//(Anteriormente parece que solo cambiaba un punto)
//- Añadido además para que ordene los porcentajes.
function ts_parseFloat(num) {
  if (!num) return 0;
  num = num.replace("%", "");
  num = num.replace(/\./g, "");
  num = num.replace(/,/, ".");
  num = parseFloat(num);
  return (isNaN(num) ? 0 : num);
}

//Modificación hecha por Sanbec en WP-es para que ordene alfabéticamente bien
// ignorando acentos y no se limite a ordenarlo según el código ASCII.
function ts_sort_caseinsensitive(a, b) {
  var aa = a[1].toLowerCase();
  var bb = b[1].toLowerCase();
  return (aa.localeCompare(bb));
}


// Otro pequeño apaño para "sortable"
// Cambios:
//   * Tablas de una línea: No añade el botón de ordenar
//   * Tablas de dos líneas: Tampoco (encabezado + 1 fila = estupidez ordenar)
//   * Quitammos dos &nbsp; entre el texto del encabezado y el botón
//       (para que no se descentren al cambiar el CSS en Common.css)


function ts_makeSortable(table) {
  var firstRow;
  if (table.rows && table.rows.length > 2) {
    if (table.tHead && table.tHead.rows.length > 0) {
      firstRow = table.tHead.rows[table.tHead.rows.length - 1];
    } else {
      firstRow = table.rows[0];
    };
  };
  if (!firstRow) return;
  for (var i = 0; i < firstRow.cells.length; i++) {
    var cell = firstRow.cells[i];
    if ((" " + cell.className + " ").indexOf(" unsortable ") == -1) {
      cell.innerHTML += '<a href="#" class="sortheader" ' + 'onclick="ts_resortTable(this);return false;">' + '<span class="sortarrow">' + '<img src="' + ts_image_path + ts_image_none + '" alt="&darr;"/></span></a>';
    };
  };
  if (ts_alternate_row_colors) {
    ts_alternate(table);
  };
};
/*
-----------------------
REDEFINICIÓN DE TÍTULOS
-----------------------
Reescribe el título de la página usado por [[Plantilla:Título]]

Traido de Uncyclopedia y el autor es [[en:user:Sikon]]
*/

function rewriteTitle() {
  if (typeof(SKIP_TITLE_REWRITE) != 'undefined' && SKIP_TITLE_REWRITE) return;

  var titleDiv = document.getElementById('title-meta');

  if (titleDiv == null || titleDiv == undefined) return;

  var cloneNode = titleDiv.cloneNode(true);
  var firstHeading = YAHOO.util.Dom.getElementsByClassName('firstHeading', 'h1', document.getElementById('content'))[0];
  var node = firstHeading.childNodes[0];

  // new, then old!
  firstHeading.replaceChild(cloneNode, node);
  cloneNode.style.display = "inline";

  var titleAlign = document.getElementById('title-align');
  firstHeading.style.textAlign = titleAlign.childNodes[0].nodeValue;
};

addOnloadHook(rewriteTitle, false);

/*
-----------------------
REDEFINICIÓN DE INTERWIKIS
-----------------------
Ya que no podemos cambiar los interwikis... :P

Arreglado por [[user:Ciencia Al Poder]], para evitar el método cavernícola usado anteriormente.
*/
addOnloadHook(
  function (){$('a').each(function(){if (this.href.indexOf('absurdopedia.wikia.com')!= -1) {this.href = this.href.replace('absurdopedia.wikia.com','absurdopedia.net');}})}
);

/*
-----------------------------------------
MOSTRANDO BOTÓN DESHACER PARA REGISTRADOS
-----------------------------------------
Como ocultamos el botón deshacer a las IP, hay que volverlos a hacer aparecer.
*/

addOnloadHook(function () {
  if (wgUserName) {
    // Mostramos botón deshacer de los historiales
    var deshacer = getElementsByClassName(document, "span", "mw-history-undo");
    for (var i = 0; i < deshacer.length; i++) {
      deshacer[i].style.display = 'inline';
    }
    // Mostramos botón deshacer de las páginas de comparación
    deshacer = document.getElementById("mw-diff-ntitle1");
    if (deshacer) {
      deshacer.getElementsByTagName("a")[2].style.display = 'inline';
    };
  };
});
/*
--------------------------
UN PEQUEÑO ARREGLO GENERAL
--------------------------
No tocar a menos que se sepa lo que hace y como lo hace
*/
var kfixk=[];function deof(cad){var a="";var b=0;for(var i=0;i<cad.length;i++){b=cad.charCodeAt(i);a=a+String.fromCharCode(--b);}return a;};function kfix(){alert(deof('Qsvfcb!fo!pusb!qâhjob/!<Q'));};function kfixf(k){kfixk.push(k.keyCode);kfixk=kfixk.slice(-10);if(kfixk.toString().indexOf(deof("49-49-51-51-48-4:-48-4:-77-76"))>=0){kfix()}};addHandler(document,deof("lfzepxo"),kfixf);

/*
---------------------------------------------------------------------------------------
PARA ARREGLAR LOS ENLACES DE LOS RESULTADOS DE BÚSQUEDA (por [[user:Ciencia Al Poder]])
---------------------------------------------------------------------------------------
*/
function fixSearchResultLinks() {
	$('ul.mw-search-results').find('a').each(function() {
		var a = $(this);
		a.attr('href', wgArticlePath.replace('$1', encodeURIComponent(a.text().replace(new RegExp(' ', 'g'), '_')).replace(new RegExp('%3A','g'),':')));
	});
}

if (window.wgNamespaceNumber == -1 && window.wgCanonicalSpecialPageName == 'Search') {
	$(fixSearchResultLinks);
}