Wikipedia:Votaciones/2009/Para la asignación de una política oficial para los userboxes y páginas de usuario/registro de votantes

Esta subpágina lista los votantes[1] de Wikipedia:Votaciones/2009/Para la asignación de una política oficial para los userboxes y páginas de usuario.

Se realiza el listado para poder, al cierre de la votación, comprobar que todos los votos se efectuaron adecuadamente y cumpliendo las normas de 100 ediciones y 30 días (registrados antes del 3 de octubre de 2009).

Fecha de publicación: 2/11/2009 8:00

  1. Listado:
  1. 3coma14 [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  2. Agux [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  3. Astarothv2 [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  4. Banfield [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  5. Biasoli [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  6. Billyrobshaw [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  7. Bizkaino [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  8. BRONSON77 [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  9. Bucho [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  10. Cameta [disc. · EDIT100 · edit100 · gruposcontr. · stats]clase
  11. Camr [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  12. Caskete [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  13. Chico512 [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  14. Cinabrium [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  15. Comu nacho [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  16. David53352 [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  17. Davidmartindel [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  18. Dferg [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  19. Diegusjaimes [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  20. Dorieo [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  21. Dreitmen [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  22. Efegé [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  23. Eligna [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  24. Elliniká [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  25. Eloy [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  26. Ensada [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  27. Erfil [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  28. Eric [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  29. Erick91 [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  30. ERPN [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  31. Escarlati [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  32. Farisori [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  33. Ferbr1 [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  34. Fremen [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  35. Globalphilosophy [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  36. Gorospe [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  37. Guillermoamartinez [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  38. Gustavocarra [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  39. Gustronico [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  40. HAMM [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  41. Haylli [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  42. Henry Knight [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  43. Hipertron [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  44. Hispalois [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  45. Hprmedina [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  46. Humberto [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  47. Ingolll [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  48. Jarke [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  49. Javierme [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  50. Jewbask [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  51. Jorab [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  52. Karshan [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  53. Kordas [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  54. LeonimuZ [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  55. Linfocito B [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  56. Link58 [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  57. Locos epraix [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  58. Luis1970 [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  59. Lungo [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  60. Manu Lop [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  61. Manuelt15 [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  62. Martingala [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  63. Miguel [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  64. Miguillen [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  65. Mircalla22 [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  66. Mister Crujiente [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  67. Morza [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  68. Muro de Aguas [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  69. Netito777 [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  70. Nixón [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  71. Oikema [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  72. Osado [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  73. Oscar . [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  74. ÓscarN [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  75. Pedro Felipe [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  76. Pepepitos [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  77. Pintoandres90 [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  78. Pipe26 [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  79. Pipenolc [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  80. Poco a poco [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  81. Poromiami [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  82. Qoan [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  83. Ravave [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  84. Rizome [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  85. Robertkostka [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  86. Rodelar [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  87. Rosymonterrey [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  88. Rrmsjp [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  89. RubiksMaster110 [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  90. Sabbut [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  91. Satordi [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  92. Serg!o [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  93. Skipe linkin [disc. · EDIT100 · edit100 · gruposcontr. · stats]}
  94. Snakeyes [disc. · EDIT100 · edit100 · gruposcontr. · stats]}}
  95. Taichi [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  96. Takashi kurita [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  97. Tyk [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  98. Tintero [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  99. Truor [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  100. Vitamine [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  101. XalD [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  102. Xatanga [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  103. Xosema [disc. · EDIT100 · edit100 · gruposcontr. · stats]
  104. Betiu [disc. · EDIT100 · edit100 · gruposcontr. · stats] //Usuario de pruebas, para la evaluación de mi user-script
  105. Donix1 [disc. · EDIT100 · edit100 · gruposcontr. · stats] //Usuario de pruebas, para la evaluación de mi user-script
  106. Drodriguez505 [disc. · EDIT100 · edit100 · gruposcontr. · stats] //Usuario de pruebas, para la evaluación de mi user-script

UserScript de comprobaciónEditar

El siguiente UserScript puede ser usado en esta página con la configuración que se muestra a continuación.
Requisitos:

VERIÓN 2.0

  1. La versión actual, muestra si un usuario cumple con el requisito de antigüedad —>30 días—.
  2. También se comprueba la fecha de su primera edición, y su edición número 100.
  3. Indica si cumple los dos requisitos necesaios para votar —antigüedad y versión nº100—.
  4. Iré actualizando este userscript. Queda:
    1. que genere link un link al usuario.
    2. que indique el grupo del usuario —biblio, reversor, etcétera—.
    3. cambios menores en la apariencia de los datos mostrados
// ==UserScript==
// @name Antigüedad wikipédica
// @namespace Wikipedia
// @description Probador de antigüedad wikipédica.
// @include http://es.wikipedia.org/wiki/Wikipedia:Votaciones/2009/Para_la_asignaci%C3%B3n_de_una_pol%C3%ADtica_oficial_para_los_userboxes_y_p%C3%A1ginas_de_usuario/registro_de_votantes
// ==/UserScript==


//xPath
var XPFirst = XPathResult.FIRST_ORDERED_NODE_TYPE;
var XPList = XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE;
function find(xpath,xpres,i)
{var ret=document.evaluate(xpath,document,null,xpres,null);
 return xpres==XPFirst?ret.singleNodeValue:(i?ret.snapshotItem(i):ret);
}

//GEBI
function GEBI(id)
{return document.getElementById(id);}

//GEBIh
function GEBIh(id)
{return GEBI(id).innerHTML;}

//función que pasa de "wiki-mes" a "JavaScript-mes"
function MEStoJS(wiki)
{MES=new Array();
 switch(wiki)
 {case 'ene':MES[0]=0;MES[1]='enero';break;
  case 'feb':MES[0]=1;MES[1]='febrero';break;
  case 'mar':MES[0]=2;MES[1]='marzo';break;
  case 'abr':MES[0]=3;MES[1]='abril';break;
  case 'may':MES[0]=4;MES[1]='mayo';break;
  case 'jun':MES[0]=5;MES[1]='junio';break;
  case 'jul':MES[0]=6;MES[1]='julio';break;
  case 'ago':MES[0]=7;MES[1]='agosto';break;
  case 'sep':MES[0]=8;MES[1]='septiembre';break;
  case 'oct':MES[0]=9;MES[1]='octubre';break;
  case 'nov':MES[0]=10;MES[1]='noviembre';break;
  case 'dic':MES[0]=11;MES[1]='diciembre';break;
 }
return MES;
}


//función que pasa de "wiki-fecha" a "JavaScript-fecha"
function WIKItoJS(wiki,input_format,output_format)
{if(input_format==1)	//23:33 14 oct 2009
	{FECHA=wiki.split(' ');
	 FECHA=new Array(FECHA[3],MEStoJS(FECHA[2])[(output_format==1?0:1)],FECHA[1],FECHA[0].split(':')[0],FECHA[0].split(':')[1]);
	}
    else		//30 sep 2009 a las 23:58
	{FECHA=wiki.split(' ');
	 FECHA=new Array(FECHA[2],MEStoJS(FECHA[1])[(output_format==1?0:1)],FECHA[0],FECHA[5].split(':')[0],FECHA[5].split(':')[1]);	
	}

 return (output_format==1)?
	eval('new Date('+FECHA+')'):							//devuelve un OBJETO de fecha
	FECHA[2]+' de '+FECHA[1]+' de '+FECHA[0]+', a las '+FECHA[3]+':'+FECHA[4];	//devuelve un STRING con la fecha
}

//AJAX
function llamarasincrono(url,container,func)
{//CREA EL OBJETO
 var AJAXobj=false;
 if (window.XMLHttpRequest)
    {AJAXobj=new XMLHttpRequest();}
 else if (window.ActiveXObject)
    {try
      {AJAXobj=new ActiveXObject ("Msxml2.XMLHTTP");}
      catch (e)
      {try
        {AJAXobj=new ActiveXObject ("Microsoft.XMLHTTP");}
	catch (e){}
      }
    }
 else {return false;}


//Verifica que una fecha (dada por "string", en formato "input_format"), sea menor que otra puesta como requisito ("date2"), y escribe el resultado en el elemento xHTML marcado por su "id"
function verify(id,string,input_format,date2,k)
{GEBI(id).innerHTML=WIKItoJS(string,input_format,2);
 REG_date=WIKItoJS(string,input_format,1);
 GEBI(id).setAttribute('style',date2>REG_date?'color:'+(k>0?'black':'green')+';':'color:'+(k>0?'orange':'red')+';');
 GEBI(id).setAttribute('apto' ,date2>REG_date?1:k.toString());
}

 //EJECUTA EL CAMBIO CUANDO ESTÁ LISTO EL OBJETO AJAX
 AJAXobj.onreadystatechange=function()
 {if(AJAXobj.readyState==4 && (AJAXobj.status==200 || window.location.href.indexOf("http")==-1))
  	{if(url.indexOf('Listusers')>0)
		//Obtiene la fecha de registro, y grupos a los que pertenece el usuario [[Especial:Listusers]].
		{if(AJAXobj.responseText.indexOf('registrado desde el ')<0)
			//algunos usuarios no indican su fecha de registro (ej:Eric), esto es porque son muy antíguos.
			{GEBI('res_'+container).innerHTML='''usuario veterano''';
			 GEBI('res_'+container).setAttribute('apto','1');
			 GEBI('res_'+container).setAttribute('style','color:green');
			}
		 else
			{fecha=AJAXobj.responseText.split('registrado desde el ')[1].split(')')[0];
			 verify('res_'+container,
				fecha,2,
				REQ_date,0);
			}
		}
	 else
		//Obtiene la lista de contribuciones del usuario, y la guarda en un <div id="tmp">
		{GEBI('tmp_'+container).firstChild.innerHTML=AJAXobj.responseText;
		 EDITS=document.evaluate('//div[@id="bodyContent"]//td[@id="tmp_'+container+'"]//div[@id="bodyContent"]//ul/li',document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);

		 //Obtiene la primera edición
		 if(EDITS.snapshotLength>0)
			{fecha=EDITS.snapshotItem(EDITS.snapshotLength-1).firstChild.innerHTML
			 verify('ed1_'+container,
				fecha,1,
				REQ_date,0.5);
			}

		 //Obtiene la edición nº100
		 if(EDITS.snapshotLength==100)
			{fecha=EDITS.snapshotItem(0).firstChild.innerHTML
			 verify('ed100_'+container,
				fecha,1,
				PUB_date,0);
			}
		 else
			{GEBI('ed100_'+container).innerHTML=EDITS.snapshotLength>0?'El usuario tiene '+EDITS.snapshotLength+' ediciones':'no tiene ediciones';
			 GEBI('ed100_'+container).setAttribute('style','color:red');
			}

		 //Llegado al final, hace las comprobaciones ('apto'). Si todas están "apro=1", el usuario podrá votar.
		 result=eval(GEBI('res_'+container).getAttribute('apto')+'*'+GEBI('ed1_'+container).getAttribute('apto')+'*'+GEBI('ed100_'+container).getAttribute('apto'));
		 GEBI('tmp_'+container).innerHTML=(result>0?(result>0.5?'<img src="http://upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/16px-Yes_check.svg.png" width="16" /> Sí':'<img src="http://upload.wikimedia.org/wikipedia/commons/thumb/0/0c/Olive_green_check.svg/600px-Olive_green_check.svg.png" width="16" /> -'):'<img src="http://upload.wikimedia.org/wikipedia/commons/thumb/a/a2/X_mark.svg/16px-X_mark.svg.png" width="16" /> NO');
		}

	 func();
	}
 }

 //Realiza la petición
 AJAXobj.open('GET',url,true);
 AJAXobj.send (null);
}

//Llama a las sucesivas verificaciones.
function next(i)
{
 if(i<OLm.length){llamarasincrono('http://es.wikipedia.org/w/index.php?title=Especial:Listusers&limit=1&username='+OLm[i],i,
				 function()
				 {llamarasincrono('http://es.wikipedia.org/w/index.php?title=Especial:Contribuciones&dir=prev&limit=100&target='+OLm[i],i,function(){next(i+1)})}
				 );

		 }
}

var PUB_date;			//Fecha de publicación de la votación.
var REQ_date;			//Fecha ante la cual se requiere ya estar registrado.
var REQ_time=30*24*60*60*1000;	//Milisegundos antes del inicio de la votación, que se requieren como requisito de antigüedad.

//funcionPrincipal
function funcionPrincipal()
{OL='<table class="wikitable"><tr><td>#</td><td>user:</td><td>registrado el:</td><td>edición nº1 el:</td><td>edición nº100 el:</td><td></td></tr>';
 OLm=new Array();
 LI=find('//div[@id="bodyContent"]//div[@id="listado"]/ol/li/span',XPList,false);
 for(i=0;i<LI.snapshotLength;i++)
 {OLm[i]=LI.snapshotItem(i).firstChild.innerHTML;
  OL+='<tr><td>'+(i+1)+'</td><td>'+OLm[i]+'</td><td id="res_'+i+'"></td><td id="ed1_'+i+'"></td><td id="ed100_'+i+'"></td><td id="tmp_'+i+'"><div style="display:none;">'+i+'</div></td></tr>';
 }
 OL+='</table>';
 find('//div[@id="bodyContent"]//div[@id="listado"]/ol',XPFirst,false).innerHTML=OL;

 PUB_date=GEBI('publicado').innerHTML;
 PUB_date=new Date(PUB_date.split('/')[2].split(' ')[0],parseFloat(PUB_date.split('/')[1])-1,PUB_date.split('/')[0],PUB_date.split(' ')[1].split(':')[0],PUB_date.split(' ')[1].split(':')[1]);
 REQ_date=new Date().setTime(PUB_date.getTime()-REQ_time);
 next(0);

}

// Ordena ejecutar la funcion principal, cuando se ha cargado toda la pagina
window.addEventListener('DOMContentLoaded', funcionPrincipal, false);
if (document.body) funcionPrincipal();