Vagrant Box Download Helper

Add a download button in app.vagrantup.com

  1. // ==UserScript==
  2. // @id vagrant-box-download-helper@senhtry
  3. // @name Vagrant Box Download Helper
  4. // @version 1.0
  5. // @author senhtry
  6. // @description Add a download button in app.vagrantup.com
  7. // @include https://app.vagrantup.com/*
  8. // @run-at document-end
  9. // @namespace https://greasyfork.org/users/81130
  10. // ==/UserScript==
  11.  
  12. main();
  13.  
  14. function main() {
  15.  
  16. var elementList = document.querySelectorAll(".media-list .list-group-item");
  17.  
  18. for (var i = 0; i < elementList.length; i++) {
  19. addDownloadButton(elementList[i]);
  20. }
  21. }
  22.  
  23. function addDownloadButton(element) {
  24. var versionHref = element.href;
  25.  
  26. var div = document.createElement('div');
  27. div.className ='btn-group btn-group-xs"';
  28. div.style.cssText= 'margin-top: 10px;';
  29.  
  30. var btn = document.createElement('button');
  31. btn.className = 'btn btn-default dropdown-toggle';
  32. btn.setAttribute("type","button");
  33.  
  34. btn.setAttribute("aria-haspopup", "true");
  35. btn.setAttribute("aria-expanded", "false");
  36. btn.setAttribute("data-toggle", "dropdown");
  37.  
  38. btn.innerHTML = 'download<span class="caret"></span>';
  39.  
  40.  
  41. var ul = document.createElement('ul');
  42. ul.className = 'dropdown-menu';
  43.  
  44.  
  45. var proList = element.querySelectorAll(".col-md-3 span.label-inline");
  46. var version = element.querySelector(".col-md-5 small").innerHTML.trim().replace(/\s+/g, '').replace(/<.*$/g, '');
  47.  
  48. for (var i = 0; i < proList.length; i++) {
  49. var pro = proList[i].innerHTML.trim().replace(/\s+/g, '').replace(/<.*$/g, '');
  50. var url = versionHref +"/versions/" + version + '/providers/' + pro + '.box';
  51.  
  52. var li = document.createElement('li');
  53. var a = document.createElement('a');
  54.  
  55. a.setAttribute('href', url);
  56. a.innerHTML = pro;
  57. li.appendChild(a);
  58. ul.appendChild(li);
  59. }
  60.  
  61. div.appendChild(btn);
  62. div.appendChild(ul);
  63.  
  64. element.appendChild(div);
  65. }