PTH Upload Save Defaults

Save the dropdown menu selections on the upload form and automatically set them on page load

  1. // ==UserScript==
  2. // @name PTH Upload Save Defaults
  3. // @version 1.4
  4. // @description Save the dropdown menu selections on the upload form and automatically set them on page load
  5. // @author Chameleon
  6. // @include http*://redacted.ch/upload.php*
  7. // @grant none
  8. // @run-at document-idle
  9. // @namespace https://greasyfork.org/users/87476
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14.  
  15. var before=document.getElementById('upload_table');
  16. var span=document.createElement('span');
  17. span.setAttribute('style', 'display: block; text-align: center;');
  18. before.parentNode.insertBefore(span, before);
  19.  
  20. var a=document.createElement('a');
  21. a.innerHTML = 'Save options';
  22. a.href = 'javascript:void(0);';
  23. span.appendChild(a);
  24. a.addEventListener('click', saveOptions.bind(undefined, a), false);
  25. span.appendChild(document.createTextNode(' | '));
  26.  
  27. var a=document.createElement('a');
  28. a.innerHTML = 'Load options';
  29. a.href = 'javascript:void(0);';
  30. span.appendChild(a);
  31. a.addEventListener('click', loadOptions.bind(undefined, false), false);
  32. loadOptions(true);
  33. }());
  34.  
  35. function loadOptions(addExtra)
  36. {
  37. var options=window.localStorage.uploadOptions;
  38. if(!options)
  39. options = {selects:[], multiformat:false, scene:false};
  40. else
  41. options = JSON.parse(options);
  42.  
  43. if(options.multiformat && addExtra)
  44. {
  45. for(var i=1; i<options.multiformat; i++)
  46. {
  47. createRow();
  48. }
  49. }
  50. if(options.scene)
  51. document.getElementById('scene').checked=true;
  52. //var selects=document.getElementsByTagName('select');
  53. for(var i=0; i<options.selects.length; i++)
  54. {
  55. var s=options.selects[i];
  56. var dropdown=document.getElementById(s.id);
  57. if(!dropdown)
  58. continue;
  59. if(dropdown.getAttribute('disabled'))
  60. continue;
  61. dropdown.selectedIndex = s.index;
  62. if(dropdown.id != "genre_tags" && dropdown.id != "categories")
  63. {
  64. var evt = document.createEvent("HTMLEvents");
  65. evt.initEvent("change", false, true);
  66. dropdown.dispatchEvent(evt);
  67. if(dropdown.id == "format" && s.index == 2)
  68. document.getElementById('upload_logs').setAttribute('class', '');
  69. }
  70. }
  71. }
  72.  
  73. function saveOptions(a)
  74. {
  75. var selects=document.getElementsByTagName('select');
  76. var options={selects:[], multiformat:false};
  77. for(var i=0; i<selects.length; i++)
  78. {
  79. var s=selects[i];
  80. options.selects.push({id:s.id, index:s.selectedIndex});
  81. }
  82. if(document.getElementById('extra_format_row_1'))
  83. {
  84. var rowNum=1;
  85. var node=document.getElementById('extra_format_row_'+rowNum);
  86. while(node)
  87. {
  88. rowNum++;
  89. node=document.getElementById('extra_format_row_'+rowNum);
  90. }
  91. options.multiformat=rowNum;
  92. }
  93. options.scene=document.getElementById('scene').checked;
  94. window.localStorage.uploadOptions = JSON.stringify(options);
  95. a.innerHTML = 'Options saved';
  96. window.setTimeout(reset.bind(undefined, a, 'Save options'), 5000);
  97. }
  98.  
  99. function reset(a, message)
  100. {
  101. a.innerHTML = message;
  102. }