PTH Upload Save Defaults

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

目前为 2016-12-18 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name PTH Upload Save Defaults
  3. // @version 0.9
  4. // @description Save the dropdown menu selections on the upload form and automatically set them on page load
  5. // @author Chameleon
  6. // @include http*://passtheheadphones.me/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.  
  17. var a=document.createElement('a');
  18. a.setAttribute('style', 'display: block; text-align: center;');
  19. a.innerHTML = 'Save options';
  20. a.href = 'javascript:void(0);';
  21. before.parentNode.insertBefore(a, before);
  22. a.addEventListener('click', saveOptions.bind(undefined, a), false);
  23.  
  24. var options=window.localStorage.uploadOptions;
  25. if(!options)
  26. options = {selects:[], multiformat:false, scene:false};
  27. else
  28. options = JSON.parse(options);
  29.  
  30. if(options.multiformat)
  31. {
  32. for(var i=1; i<options.multiformat; i++)
  33. {
  34. createRow();
  35. }
  36. }
  37. if(options.scene)
  38. document.getElementById('scene').checked=true;
  39. var selects=document.getElementsByTagName('select');
  40. for(var i=0; i<options.selects.length; i++)
  41. {
  42. var s=options.selects[i];
  43. var dropdown=document.getElementById(s.id);
  44. if(!dropdown)
  45. continue;
  46. dropdown.selectedIndex = s.index;
  47. if(dropdown.id != "genre_tags" && dropdown.id != "categories")
  48. {
  49. var evt = document.createEvent("HTMLEvents");
  50. evt.initEvent("change", false, true);
  51. selects[i].dispatchEvent(evt);
  52. if(dropdown.id == "format" && s.index == 2)
  53. document.getElementById('upload_logs').setAttribute('class', '');
  54. }
  55. }
  56. }());
  57.  
  58. function saveOptions(a)
  59. {
  60. var selects=document.getElementsByTagName('select');
  61. var options={selects:[], multiformat:false};
  62. for(var i=0; i<selects.length; i++)
  63. {
  64. var s=selects[i];
  65. options.selects.push({id:s.id, index:s.selectedIndex});
  66. }
  67. if(document.getElementById('extra_format_row_1'))
  68. {
  69. var rowNum=1;
  70. var node=document.getElementById('extra_format_row_'+rowNum);
  71. while(node)
  72. {
  73. rowNum++;
  74. node=document.getElementById('extra_format_row_'+rowNum);
  75. }
  76. options.multiformat=rowNum;
  77. }
  78. options.scene=document.getElementById('scene').checked;
  79. window.localStorage.uploadOptions = JSON.stringify(options);
  80. a.innerHTML = 'Options saved';
  81. window.setTimeout(reset.bind(undefined, a, 'Save options'), 5000);
  82. }
  83.  
  84. function reset(a, message)
  85. {
  86. a.innerHTML = message;
  87. }