Unity Docs Version Switcher

adds a version dropdown, forcefully redirect to older documentation versions from google

  1. // ==UserScript==
  2. // @name Unity Docs Version Switcher
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.2
  5. // @description adds a version dropdown, forcefully redirect to older documentation versions from google
  6. // @author EntranceJew
  7. // @match https://docs.unity3d.com/*
  8. // @grant GM_setValue
  9. // @grant GM_getValue
  10. // ==/UserScript==
  11. /*
  12. 0.2 - some weird style junk happened so i reorganized it, now the version dropdown is taller
  13. 0.1 - inital version
  14. */
  15. /*
  16. @TODO:
  17. * gotta internalize the getVersion functions in order to work on older than 5.5 i think
  18. */
  19.  
  20. (function() {
  21. 'use strict';
  22.  
  23. var defaultVersion = GM_getValue("default_version", null);
  24. var cv = getCurrentVersion();
  25. var versionText = '';
  26.  
  27. if( cv.major > 5 ){
  28. versionText = (cv.major + 2011) + "." + cv.minor;
  29. } else {
  30. versionText = cv.major + "." + cv.minor;
  31. }
  32.  
  33. var vn = document.querySelector('.version-number');
  34. if( !vn ){
  35. vn = document.querySelector('.obsolete-version-number');
  36. }
  37.  
  38. while (vn.firstChild) {
  39. vn.removeChild(vn.firstChild);
  40. }
  41. var dd = vn.appendChild(document.querySelector('.otherversionswrapper'));
  42. dd.style.float = "none";
  43. dd.querySelector('a').innerHTML = "Version: <b>" + versionText + "</b>";
  44.  
  45. var changeDefault = document.createElement("a");
  46. changeDefault.addEventListener("click", switchListeners);
  47. function switchListeners(){
  48. var wr = (changeDefault.dataset.willRemove == "yeah");
  49. console.log(wr);
  50. if( wr ){
  51. delete changeDefault.dataset.willRemove;
  52. changeDefault.innerText = "Set Default";
  53. GM_setValue("default_version", null);
  54. } else {
  55. changeDefault.dataset.willRemove = "yeah";
  56. changeDefault.innerText = "Remove Default";
  57. GM_setValue("default_version", cv);
  58. defaultVersion = cv;
  59. }
  60. }
  61.  
  62. var isDefault = (cv && defaultVersion && cv.major == defaultVersion.major && cv.minor == defaultVersion.minor);
  63. if( isDefault ){
  64. changeDefault.dataset.willRemove = "yeah";
  65. changeDefault.innerText = "Remove Default";
  66. } else {
  67. changeDefault.innerText = "Set Default";
  68. }
  69. dd.appendChild(document.createTextNode(" ("));
  70. dd.appendChild(changeDefault);
  71. dd.appendChild(document.createTextNode(")"));
  72.  
  73. if( window.location.href != getTargetUrlFromVersion(cv.major, cv.minor, cv.page) ){
  74. if( !isDefault && defaultVersion !== null && cv.page ){
  75. window.location.href = getTargetUrlFromVersion(defaultVersion.major, defaultVersion.minor, cv.page);
  76. }
  77. }
  78.  
  79. populateOtherVersionsContainer();
  80. })();