Потребител:Metrónomo/common.js: Разлика между версии

от Уикипедия, свободната енциклопедия
Изтрито е съдържание Добавено е съдържание
Metrónomo (беседа | приноси)
Нова страница: „//<nowiki> //CATEGORIZAR function cargarCategorizar() { var tmp=''; //tmp += agregarBoton('Coleópteros', 'autoedit', 's~[Cc]ategoría:[Ii]nsectos~ategoría:...“
 
Metrónomo (беседа | приноси)
Редакция без резюме
Ред 46: Ред 46:
//tmp += agregarBoton('Huracán', 'autoedit', 's~{{Saffir~{{subst:Saffir~g&autoclick=wpSave&autominor=false&autosummary=Reemplazando plantilla por tabla');
//tmp += agregarBoton('Huracán', 'autoedit', 's~{{Saffir~{{subst:Saffir~g&autoclick=wpSave&autominor=false&autosummary=Reemplazando plantilla por tabla');
tmp += agregarBoton('(bordered)', 'autoedit', 's~[_ ]\(bordered\)~~g&autominor=true&autosummary=&autoclick=wpSave');
tmp += agregarBoton('(bordered)', 'autoedit', 's~[_ ]\(bordered\)~~g&autominor=true&autosummary=Ненужно защото [[Шаблон:Флагче]] който използвате параметър "border" (if I make a mistake, please [[User Talk:Metrónomo|let me know]])&autoclick=wpSave');
//tmp += agregarBoton('doméstica/os', 'autoedit', 's~dom[eé]stic[ao]s~nacionales~g&autominor=true&autosummary=Corrigiendo [[falso amigo]]. Véanse http://www.wordreference.com/es/translation.asp?tranword=flight y http://www.linguee.es/ingles-espanol/traduccion/domestic+flight.html&autoclick=wpSave');
//tmp += agregarBoton('doméstica/os', 'autoedit', 's~dom[eé]stic[ao]s~nacionales~g&autominor=true&autosummary=Corrigiendo [[falso amigo]]. Véanse http://www.wordreference.com/es/translation.asp?tranword=flight y http://www.linguee.es/ingles-espanol/traduccion/domestic+flight.html&autoclick=wpSave');

Версия от 10:10, 19 октомври 2016

//<nowiki>

//CATEGORIZAR
function cargarCategorizar()
{
	var tmp='';
 
	//tmp += agregarBoton('Coleópteros', 'autoedit', 's~[Cc]ategoría:[Ii]nsectos~ategoría:Coleópteros~g&autoclick=wpSave&autominor=true&autosummary=Cambio de categorías');
	//tmp += agregarBoton('Mantodeos', 'autoedit', 's~[Cc]ategoría:[Ii]nsectos~ategoría:Mantodeos~g&autoclick=wpSave&autominor=true&autosummary=Cambio de categorías');
//	tmp += agregarBoton('#REDIRECCIÓN [[Plantilla:babel]]', "subst");

	return tmp;
}

//DESTRUIR
function cargarDestruir()
{
	var tmp='';
 
//	tmp += agregarBoton('Pruebas de edición', "FBdest");
//	tmp += agregarBoton('Redirección innecesaria', "FBdest");
//	tmp += agregarBoton('Categoría vacía', "cat");
	//tmp += agregarBotonMenu("Usuario inexistente, página creada por","leerInformacionBoton('Usuario','dest');");
	//tmp += agregarBotonMenu("Plagio","leerInformacionBoton('URL','FBplagio');");
//	tmp += agregarBotonMenu("Otro","leerInformacionBoton('Motivo','FBdest');");
 
	return tmp;
}

//PLANTILLAS
function cargarPlantillas()
{
	var tmp='';
 
	//tmp += agregarBoton('SRA', 'FBplant', '{{sinrelevancia|{{subst:CURRENTDAY}}|{{subst:CURRENTMONTHNAME}}}}');
	//tmp += agregarBoton('Consulta de borrado', 'borrado', '{{subst:cdb}}');
	//tmp += agregarBoton('Aviso de consulta', 'aviso', '{{subst:aviso cdb|{{subst:FULLPAGENAME}}}} ~~~~');
 
	return tmp;
}
 
//SUSTITUIR
function cargarSustituir()
{
	var tmp='';
 
	//tmp += agregarBoton('Huracán', 'autoedit', 's~{{Saffir~{{subst:Saffir~g&autoclick=wpSave&autominor=false&autosummary=Reemplazando plantilla por tabla');
	tmp += agregarBoton('(bordered)', 'autoedit', 's~[_ ]\(bordered\)~~g&autominor=true&autosummary=Ненужно защото [[Шаблон:Флагче]] който използвате параметър "border" (if I make a mistake, please [[User Talk:Metrónomo|let me know]])&autoclick=wpSave');
	//tmp += agregarBoton('doméstica/os', 'autoedit', 's~dom[eé]stic[ao]s~nacionales~g&autominor=true&autosummary=Corrigiendo [[falso amigo]]. Véanse http://www.wordreference.com/es/translation.asp?tranword=flight y http://www.linguee.es/ingles-espanol/traduccion/domestic+flight.html&autoclick=wpSave');
  
	return tmp;
}
 
//OTROS
function cargarOtros()
{
	var tmp='';

	var advertenciaMenu = encodeURI("Aviso:\n(nada): Prueba\n0a: Etiqueta\n0b: Estilo\n0c: Spam\n2: Ediciones sin sentido\n2a: Blanqueo\n3: Detente\n4: Última advertencia\n5: Bloqueo");
 
	//tmp += agregarBotonMenu("Advertencia","leerInformacionBoton(\'"+advertenciaMenu+"\','FBwarn');");
 
	return tmp;
}
 
//*********************************************************************************************************************************
//Funciones generales
//*********************************************************************************************************************************
 
//agregarPlantilla: añade una plantilla al inicio de la página y guarda.
function agregarPlantilla(plantilla,resumen)
{
	document.getElementById("wpTextbox1").value = plantilla + '\n' + document.getElementById("wpTextbox1").value;
	document.editform.wpSummary.value = resumen;
	document.editform.submit();
}
 
 
//agregarPlantillaFinal: añade una plantilla al final de la página y guarda.
function agregarPlantillaFinal(plantilla,resumen)
{
	document.getElementById("wpTextbox1").value = document.getElementById("wpTextbox1").value + '\n' + plantilla;
	document.editform.wpSummary.value = resumen;
	document.editform.submit();
}
 
 
//borrarCategoria: añade una plantilla al final de la página y guarda.
function borrarCategoria(plantilla,resumen)
{
	document.getElementById("wpTextbox1").value = plantilla;
	document.editform.wpSummary.value = resumen;
	document.editform.submit();
}
 
 
//agregarBoton: genera la cadena para añadir un botón, tomando ciertos parámetros.
function agregarBoton(buttonLabel, buttonType, typeParam, wikiAction )
{
	if (!typeParam) var typeParam = buttonLabel;
	if (!wikiAction) var wikiAction = 'edit';
	return '<span class="keyboard-key" style="font-size:smaller; border:1px solid; border-color: #fff #bbb #bbb #fff; outline:1px solid #ddd; background:#F5DEB3; padding: 0.1em 0.3em; white-space:nowrap"><a href='+wikiURL+ wikiAction + '&' + buttonType + '='+encodeURI(typeParam)+'>'+buttonLabel+'</a></span> ';
}
 
//agregarBotonMenu: genera la cadena para añadir un botón de acción.
function agregarBotonMenu(buttonLabel, accion)
{
	return '<a onclick='+accion+'><span class="keyboard-key" style="font-size:smaller; border:1px solid; border-color: #fff #bbb #bbb #fff; outline:1px solid #ddd; background:#FFFACD; padding: 0.1em 0.3em; white-space:nowrap">'+buttonLabel+'</span></a> ';

}
 
 
//leerInformacionBoton: ejecuta el código de un botón de acción que lee datos. Lee un dato del usuario.
function leerInformacionBoton(mensaje, buttonType, wikiAction)
{
	if (!wikiAction) var wikiAction='edit';
	var input = prompt(decodeURI(mensaje));
	if (input!=null) location.href=wikiURL+wikiAction+'&'+buttonType+'='+encodeURI(input);
}
 
//*********************************************************************************************************************************
//Añadir los botones
//*********************************************************************************************************************************
 
var PAGENAME='';
var USERNAME='';
var FBList=''; 
var wikiURL = 'https://bg.wikipedia.org/w/index.php?title=';
 
 
//Extraer datos de la página
PAGENAME=encodeURI(wgPageName);
if (PAGENAME.match("&"))
{
PAGENAME=PAGENAME.replace("&","%26");
}
wikiURL=wikiURL+PAGENAME+"&action=";
USERNAME=PAGENAME.split(":")[1];

//Botones de categorizar
 
{
	if (typeof botonesCategorizar=='function') {
	  tmp = botonesCategorizar();
	} else {
	  tmp = cargarCategorizar();
	}
	if (tmp!='') {
	  FBList = FBList + 'Categorías: ' + tmp + '<br>';
	}
}

//Botones de destruir
 
{
	if (typeof botonesDestruir=='function') {
	  tmp = botonesDestruir();
 	} else {
	  tmp = cargarDestruir();
	}
	if (tmp!='') {
	  FBList = FBList + 'Destruir: ' + tmp + '<br>';
	}
}
 
//Plantillas
 
{
	if (typeof botonesPlantillas=='function') {
	  tmp = botonesPlantillas();
 	} else {
	  tmp = cargarPlantillas();
	}
	if (tmp!='') {
	  FBList = FBList + 'Plantillas: ' + tmp + '<br>';
	}
}
 
//Sustituir
 
{
	if (typeof botonesSustituir=='function') {
	  tmp = botonesSustituir();
 	} else {
	  tmp = cargarSustituir();
	}
	if (tmp!='') {
	  FBList = FBList + 'Sustituir: ' + tmp + '<br>';
	}
}
 
//Otros
 
{
	if (typeof botonesOtros=='function') {
	  tmp = botonesOtros();
 	} else {
	  tmp = cargarOtros();
	}
	if (tmp!='') {
	  FBList = FBList + 'Otros: ' + tmp;
	}
}


/* Mostrar los botones en la página */
 
addOnloadHook(function ()
{
 
	if (wgCanonicalNamespace == "Special") return;

	if (document.getElementById('contentSub').innerHTML!='') document.getElementById('contentSub').innerHTML += '<br>';
	document.getElementById('contentSub').innerHTML += FBList;
 
 
 
	if (location.href.match("FBdest="))
	{
		var plantilla = decodeURI(location.href.substring(location.href.indexOf("FBdest=")+7));
		agregarPlantilla("{{destruir|"+plantilla+"}}" , "Destruir: "+plantilla);
	}
 
	if (location.href.match("FBplant="))
	{
		var plantilla = decodeURI(location.href.substring(location.href.indexOf("FBplant=")+8));
		agregarPlantilla(plantilla , "Plantilla: "+plantilla);
	}
 
	if (location.href.match("borrado="))
	{
		var articulo = decodeURI(location.href.substring(location.href.indexOf("borrado=")+8));
		agregarPlantilla(articulo , "Nominada para su borrado: véase [[Wikipedia:Consultas de borrado/"+PAGENAME+"]]");
	}
 
	if (location.href.match("FBplagio="))
	{
		var url = decodeURI(location.href.substring(location.href.indexOf("FBplagio=")+9));
		agregarPlantilla('{{plagio|1='+url+'|2=~~~~}}', "Plagio desde "+url);
	}
 
 
	if (location.href.match("dest="))
	{
		var usuario = decodeURI(location.href.substring(location.href.indexOf("dest=")+5));
		agregarPlantilla('{{destruir|Usuario inexistente, página creada por [[Usuario:'+usuario+']].}}', "Destruir: Usuario inexistente");
	}
 
 	if (location.href.match("cat="))
	{
		var plantilla = decodeURI(location.href.substring(location.href.indexOf("cat=")+4));
		borrarCategoria('{{destruir|'+plantilla+'}}', "Destruir: Categoría vacía");
	}

 	if (location.href.match("subst="))
	{
		var texto = decodeURI(location.href.substring(location.href.indexOf("subst=")+6));
		borrarCategoria('#REDIRECCIÓN [[Plantilla:babel]]', "Redirigiendo a [[Plantilla:babel]]");
	}
 
	if (location.href.match("aviso="))
	{
		var aviso= decodeURI(location.href.substring(location.href.indexOf("aviso=")+6));
		agregarPlantillaFinal(aviso,'Aviso al usuario');
	}
 
 
	else if (location.href.match("FBwarn="))
	{
		var advertencia= decodeURI(location.href.substring(location.href.indexOf("FBwarn=")+7));
		agregarPlantillaFinal('{{subst:prueba'+decodeURI(advertencia)+'}} --~~~~','Aviso al usuario');
	}
 
});

//*********************************************************************************************************************************
//Autoedit
//*********************************************************************************************************************************

function getParamValue(paramName) {
  var cmdRe=RegExp('[&?]'+paramName+'=([^&]*)');
  var h=document.location;
  var m;
  if (m=cmdRe.exec(h)) {
    try { 
      return decodeURI(m[1]);
    } catch (someError) {}
  }
  return null;
};

function substitute(data,cmdBody) {
  // alert('sub\nfrom: '+cmdBody.from+'\nto: '+cmdBody.to+'\nflags: '+cmdBody.flags);
  var fromRe=RegExp(cmdBody.from, cmdBody.flags);
  return data.replace(fromRe, cmdBody.to);
};

function execCmds(data, cmdList) {
  for (var i=0; i<cmdList.length; ++i) {
    data=cmdList[i].action(data, cmdList[i]);
  }
  return data;
}

function parseCmd(str) {
  // returns a list of commands
  if (!str.length) return [];
  var p=false;
  switch (str.charAt(0)) {
  case 's':
    p=parseSubstitute(str);
    break;
  case 'j':
    p=parseJavascript(str);
    break;
  default:
    return false;
  }
  if (p) return [p].concat(parseCmd(p.remainder));
  return false;
};

function unEscape(str, sep) {
  return str.split('\\\\').join('\\')
        .split('\\'+sep).join(sep)
        .split('\\n').join('\n');
};


function runJavascript(data, argWrapper) {
  // flags aren't used (yet)

  // from the user's viewpoint,
  // data is a special variable may appear inside code
  // and gets assigned the text in the edit box

  // alert('eval-ing '+argWrapper.code);

  return eval(argWrapper.code);
};

function parseJavascript(str) {
  // takes a string like j/code/;othercmds and parses it

  var tmp,code,flags;

  if (str.length<3) return false;
  var sep=str.charAt(1);
  str=str.substring(2);
  
  tmp=skipOver(str,sep);
  if (tmp) { code=tmp.segment.split('\n').join('\\n'); str=tmp.remainder; }
  else return false;

  flags='';
  if (str.length) {
    tmp=skipOver(str,';') || skipToEnd(str, ';');
    if (tmp) {flags=tmp.segment; str=tmp.remainder; }
  }

  return { action: runJavascript, code: code, flags: flags, remainder: str };
};

function parseSubstitute(str) {
  // takes a string like s/a/b/flags;othercmds and parses it

  var from,to,flags,tmp;

  if (str.length<4) return false;
  var sep=str.charAt(1);
  str=str.substring(2);

  tmp=skipOver(str,sep);
  if (tmp) { from=tmp.segment; str=tmp.remainder; } 
  else return false;

  tmp=skipOver(str,sep);
  if (tmp) { to=tmp.segment; str=tmp.remainder; } 
  else return false;

  flags='';
  if (str.length) {
    tmp=skipOver(str,';') || skipToEnd(str, ';');
    if (tmp) {flags=tmp.segment; str=tmp.remainder; }
  }
  
  return {action: substitute, from: from, to: to, flags: flags, remainder: str};

};

function skipOver(str,sep) {
  var endSegment=findNext(str,sep);
  if (endSegment<0) return false;
  var segment=unEscape(str.substring(0,endSegment), sep);
  return {segment: segment, remainder: str.substring(endSegment+1)};
}

function skipToEnd(str,sep) {
  return {segment: str, remainder: ''};
}

function findNext(str, ch) {
  for (var i=0; i<str.length; ++i) {
    if (str.charAt(i)=='\\') i+=2;
    if (str.charAt(i)==ch) return i;
  }
  return -1;
};

function runOnLoad(f) {
  if (window.addEventListener) {
    window.addEventListener("load",f,false);
  }
  else if (window.attachEvent) {
    window.attachEvent("onload",f);
  }
  else {
    window._old_popup_autoedit_onload = window.onload;
    window.onload = function() {
      window._old_popup_autoedit_onload();
      f();
    }
  }
};

window.autoEdit=function() {
  if (window.autoEdit.alreadyRan) return false;
  window.autoEdit.alreadyRan=true;
  var cmdString=getParamValue('autoedit');
  if (cmdString) {
    try { 
      var editbox=document.editform.wpTextbox1;
    } catch (dang) { return; }
    var cmdList=parseCmd(cmdString);
    var input=editbox.value;
    var output=execCmds(input, cmdList);
    editbox.value=output;
    // wikEd user script compatibility
    if (typeof(wikEdUseWikEd) != 'undefined') {
      if (wikEdUseWikEd == true) {
        WikEdUpdateFrame();
      }
    }
  }

  var summary=getParamValue('autosummary');
  if (summary) document.editform.wpSummary.value=summary;

  var minor=getParamValue('autominor');
  if (minor) {
    switch (minor) {
    case '1':
    case 'yes':
    case 'true':
      document.editform.wpMinoredit.checked=true;
      break;
    case '0':
    case 'no':
    case 'false':
      document.editform.wpMinoredit.checked=false;
    }
  }

  var watch = getParamValue('autowatch');
  if (watch) {
    switch (watch) {
      case '1':
      case 'yes':
      case 'true':
        document.editform.wpWatchthis.checked = true;
        break;
      case '0':
      case 'no':
      case 'false':
        document.editform.wpWatchthis.checked = false;
    }
  }

  var btn=getParamValue('autoclick');
  if (btn) {
    if (document.editform && document.editform[btn]) {
      var headings=document.getElementsByTagName('h1');
      if (headings) {
        var div=document.createElement('div');
        var button=document.editform[btn];
        div.innerHTML='<font size=+1><b>The "' + button.value + 
          '" button has been automatically clicked.' + 
          ' Please wait for the next page to load.</b></font>';
        document.title='('+document.title+')';
        headings[0].parentNode.insertBefore(div, headings[0]);
        button.click();
      }
    } else {
      alert('autoedit.js\n\nautoclick: could not find button "'+ btn +'".');
    }  
  }
};

runOnLoad(autoEdit);

//</nowiki>