vBulletin Multi-Merge

Makes merge more powerful.

  1. // ==UserScript==
  2. // @name vBulletin Multi-Merge
  3. // @namespace http://home.comcast.net/~mailerdaemon/
  4. // @include */postings.php
  5. // @version 0.0.1.20140517011658
  6. // @description Makes merge more powerful.
  7. // ==/UserScript==
  8.  
  9. if(!String.prototype.trim) String.prototype.trim = function() { return this.replace(/^\s*/,'').replace(/\s*$/, ''); }
  10.  
  11. var form = null;
  12. var url = null;
  13. var sub = null;
  14. form = document.forms.namedItem("vbform");
  15. if(form == null)
  16. {
  17. // GM_log("form == null");
  18. return;
  19. }
  20. url = form.elements.namedItem("mergethreadurl");
  21. if(url == null)
  22. {
  23. // GM_log("url == null");
  24. return;
  25. }
  26.  
  27. for(i = 0; i<form.elements.length; i++)
  28. if(form.elements.item(i).type == "submit")
  29. sub = form.elements.item(i);
  30. if(sub == null)
  31. {
  32. GM_log("sub == null");
  33. return;
  34. }
  35.  
  36. sub.type = "button";
  37. sub.value = "Merge Multiple Threads";
  38. sub.addEventListener("click", mysubmit, true);
  39.  
  40. textarea = document.createElement("textarea");
  41. textarea.name = "mergethreadurls";
  42. textarea.rows = "10";
  43. textarea.cols = "80";
  44. //textarea.value = "\n\n\n";
  45. url.parentNode.replaceChild(textarea, url);
  46. url = null;
  47.  
  48. var running = 0;
  49. var done = true;
  50.  
  51. function mysubmit(e)
  52. {
  53. done = false;
  54. sub.disabled = true;
  55. var title = form.elements.namedItem("title").value;
  56. var master = form.elements.namedItem("t").value;
  57. var urls = textarea.value.split(/[;\n]+/);
  58. for(i = 0; i < urls.length; ++i)
  59. {
  60. var j = urls[i].trim();
  61. if(j != "")
  62. {
  63. var Data = 's=&do=domergethread&t='+encodeURIComponent(master)+'&title='+encodeURIComponent(title)+'&mergethreadurl='+encodeURIComponent(urls[i]);
  64. // GM_log(j+"\n"+ Data);
  65. //*
  66. ++running;
  67. GM_xmlhttpRequest({
  68. method: 'POST',
  69. headers: {
  70. 'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey',
  71. 'Content-type': 'application/x-www-form-urlencoded'
  72. },
  73. url: 'http://forums.secondlife.com/postings.php',
  74. onload: function(responseDetails) {
  75. // GM_log('Request to merge threads returned ' + responseDetails.status + ' ' + responseDetails.statusText);
  76. --running;
  77. check();
  78. },
  79. data: Data
  80. });//*/
  81. }
  82. }
  83. done = true;
  84. check();
  85. return true;
  86. }
  87.  
  88. function check()
  89. {
  90. if(running == 0 && done)
  91. {
  92. sub.disabled = false;
  93. textarea.value = "";//"\n\n\n";
  94. }
  95. }