Bulk Player Retirement

Lets you retire players in bulk.

  1. // ==UserScript==
  2. // @name Bulk Player Retirement
  3. // @namespace glb.warriorgeneral.com
  4. // @description Lets you retire players in bulk.
  5. // @include http://glb.warriorgeneral.com/game/home.pl
  6. // @copyright 2010, garrettFoster
  7. // @version 2014.04.22
  8. // ==/UserScript==
  9.  
  10. // pabst repaired it 1/12/14
  11.  
  12. window.setTimeout(main,1000); //needed to start greasemonkey
  13.  
  14. function main(){
  15. var option = document.getElementsByTagName('option');
  16. if (option[14].selected){
  17. //add button
  18. var div = document.createElement('div');
  19. div.setAttribute('id','retireDiv');
  20. var button = document.createElement('input');
  21. button.setAttribute('type','button');
  22. button.setAttribute('value','Retire Selected Players');
  23. button.setAttribute('style','float: right;');
  24. button.addEventListener('click',getPass,false);
  25. div.appendChild(button);
  26. var location = document.getElementById('players');
  27. location.parentNode.insertBefore(div,location);
  28. div = document.createElement('div');
  29. div.setAttribute('id','hidden-div');
  30. div.setAttribute('style','visibility:hidden; display:none;');
  31. location = document.getElementById('retireDiv');
  32. location.parentNode.insertBefore(div,location.nextSibling);
  33. div = document.createElement('div');
  34. div.setAttribute('style','clear: both;');
  35. location = document.getElementById('hidden-div');
  36. location.parentNode.insertBefore(div,location.nextSibling);
  37. //add headings
  38. var tr = document.getElementById('playerTable').getElementsByTagName('tr');
  39. var th = document.createElement('th');
  40. var a = document.createElement('a');
  41. a.innerHTML = 'Retire Player?';
  42. a.setAttribute('style','cursor:pointer;cursor:hand;');
  43. a.addEventListener('click',function(){toggle('retirePlayer');},false);
  44. th.appendChild(a);
  45. tr[0].appendChild(th);
  46. th = document.createElement('th');
  47. a = document.createElement('a');
  48. a.innerHTML = 'Delete Name?';
  49. a.setAttribute('style','cursor:pointer;cursor:hand;');
  50. a.addEventListener('click',function(){toggle('retireName');},false);
  51. th.appendChild(a);
  52. tr[0].appendChild(th);
  53. //add checkboxes
  54. for(var i=1;i<tr.length;i++){
  55. var id = tr[i].getElementsByTagName('td')[1].getElementsByTagName('a')[0].href.split('player_id=')[1];
  56. var td = document.createElement('td');
  57. var chk = document.createElement('input');
  58. chk.setAttribute('type','checkbox');
  59. chk.setAttribute('value',id);
  60. chk.setAttribute('class','retirePlayer');
  61. td.appendChild(chk);
  62. tr[i].appendChild(td);
  63. td = document.createElement('td');
  64. chk = document.createElement('input');
  65. chk.setAttribute('type','checkbox');
  66. chk.setAttribute('value','keep_name');
  67. chk.setAttribute('class','retireName');
  68. td.appendChild(chk);
  69. tr[i].appendChild(td);
  70. }
  71. }
  72. }
  73.  
  74. function getPass(){
  75. var player = document.getElementsByClassName('retirePlayer');
  76. var num = 0;
  77. for(var i=0;i<player.length;i++){
  78. if(player[i].checked){
  79. num++;
  80. }
  81. }
  82. var span = document.createElement('span');
  83. span.setAttribute('style','float: right;');
  84. span.innerHTML = 'Please enter your password to confirm retirement of ' + num + ' player(s): ';
  85. var input = document.createElement('input');
  86. input.setAttribute('type','password');
  87. input.setAttribute('id','retire_pass');
  88. input.setAttribute('value','');
  89. input.setAttribute('style','float: right;');
  90. var button = document.createElement('input');
  91. button.setAttribute('type','button');
  92. button.setAttribute('value','OK');
  93. button.setAttribute('style','float: right;');
  94. button.addEventListener('click',retirePlayers,false);
  95. var location = document.getElementById('retireDiv');
  96. location.innerHTML = '';
  97. location.appendChild(button);
  98. location.appendChild(input);
  99. location.appendChild(span);
  100. }
  101.  
  102. function retirePlayers(){
  103. var player = document.getElementsByClassName('retirePlayer');
  104. var retireId = new Array();
  105. for(i=0;i<player.length;i++){
  106. if(player[i].checked){
  107. retireId.push(player[i].value);
  108. }else{
  109. retireId.push(0);
  110. }
  111. }
  112. var names = document.getElementsByClassName('retireName');
  113. var retireName = new Array();
  114. for(i=0;i<names.length;i++){
  115. if(names[i].checked){
  116. retireName.push(0);
  117. }else{
  118. retireName.push(1);
  119. }
  120. }
  121. var password = document.getElementById('retire_pass').value;
  122. var url = 'http://glb.warriorgeneral.com/game/retire_player.pl';
  123. document.getElementById('retireDiv').innerHTML = '<span style="color: green; float: right;">Retiring Players...</span>';
  124. for(var i=0;i<retireId.length;i++){
  125. if(retireId[i] != 0){
  126. params = '?player_id='+retireId[i]+'&keep_name='+retireName[i]+'&password='+password+'&action=Retire';
  127. var txt = get(url+params);
  128. if(checkError(txt)){
  129. break;
  130. }
  131. }
  132. }
  133. document.getElementById('retireDiv').innerHTML = '<span style="color: green; float: right;">Done!</span>';
  134. }
  135.  
  136. function toggle(className){
  137. var chk = document.getElementsByClassName(className);
  138. for(var i=0;i<chk.length;i++){
  139. if(chk[i].checked){
  140. chk[i].checked = false;
  141. }else{
  142. chk[i].checked = true;
  143. }
  144. }
  145. }
  146.  
  147. function get(url){
  148. var xmlhttp = new XMLHttpRequest();
  149. xmlhttp.open('GET',url,false);
  150. xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  151. xmlhttp.send(null);
  152. return xmlhttp.responseText;
  153. }
  154.  
  155. function checkError(txt){
  156. var div = document.getElementById('hidden-div');
  157. div.innerHTML = txt;
  158. var error = document.getElementsByClassName('error');
  159. if(error.length != 0){
  160. document.getElementById('retireDiv').innerHTML = '<span style="color: red; float: right;">'+error[0].innerHTML+'</span>';
  161. return true;
  162. }
  163. return false;
  164. }
  165.  
  166.