Guest User

Untitled

a guest
Nov 18th, 2017
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.86 KB | None | 0 0
  1. // ==UserScript==
  2. // @name SomethingAwful Fixes
  3. // @namespace http://collingrady.com/
  4. // @include http://forums.somethingawful.com/*
  5. // @include https://forums.somethingawful.com/*
  6. // @version 0.7.8.6
  7. // @grant none
  8. // ==/UserScript==
  9.  
  10. var old_breadcrumbs = true;
  11. var old_style = true;
  12. var old_pagenav = true;
  13. var keep_dropdown = false;
  14. var tweak_forum_jump = true;
  15.  
  16. (function (document) {
  17. var i,j,b;
  18.  
  19. if (old_pagenav)
  20. {
  21. var broken = document.querySelector(".standard.bookmarked_threads form .pages,form[name='bookmarks'] .pages.bottom");
  22. if (broken) broken.parentNode.removeChild(broken);
  23.  
  24. var pagesel = document.querySelector(".pages select");
  25. if (pagesel)
  26. {
  27. var href = document.querySelector(".pages a").href;
  28. var qs = href.split("?")[1];
  29. href = href.split("?")[0] + "?" + buildQueryString(parseQueryString(qs));
  30.  
  31. var pagecount = pagesel.querySelectorAll("option").length;
  32. var curpage = parseInt(pagesel.querySelector("option[selected]").value, 10);
  33. b = document.createElement("b");
  34.  
  35. var a = document.createElement("a");
  36. a.className = "pagenumber";
  37.  
  38. if (curpage > 1)
  39. {
  40. a.href = href + "&pagenumber=1";
  41. a.innerHTML = "« First";
  42. b.appendChild(a.cloneNode(true));
  43. b.appendChild(document.createTextNode(" "));
  44. a.href = href + "&pagenumber=" + (curpage - 1);
  45. a.innerHTML = "‹ Prev";
  46. b.appendChild(a.cloneNode(true));
  47. }
  48.  
  49. for (i = curpage - 4; i < curpage + 5; i++)
  50. {
  51. if (i < 1 || i > pagecount) { continue; }
  52. b.appendChild(document.createTextNode(" "));
  53. if (i == curpage)
  54. {
  55. var s = document.createElement("span");
  56. s.className = "curpage";
  57. s.innerHTML = i;
  58. b.appendChild(s);
  59. continue;
  60. }
  61.  
  62. a.href = href + "&pagenumber=" + i;
  63. a.innerHTML = i;
  64. b.appendChild(a.cloneNode(true));
  65. }
  66.  
  67. if (curpage < pagecount)
  68. {
  69. b.appendChild(document.createTextNode(" "));
  70. a.href = href + "&pagenumber=" + (curpage + 1);
  71. a.innerHTML = "Next ›";
  72. b.appendChild(a.cloneNode(true));
  73. b.appendChild(document.createTextNode(" "));
  74. a.href = href + "&pagenumber=" + pagecount;
  75. a.innerHTML = "Last »";
  76. b.appendChild(a.cloneNode(true));
  77. }
  78.  
  79. if (keep_dropdown)
  80. {
  81. b.appendChild(pagesel);
  82. }
  83.  
  84. var pagenavs = document.getElementsByClassName("pages");
  85. for (i = 0; i < pagenavs.length; i++)
  86. {
  87. pagenavs[i].innerHTML = "";
  88. pagenavs[i].appendChild(document.createTextNode("Pages ("+pagecount+"): "));
  89. pagenavs[i].appendChild(i == pagenavs.length - 1 ? b : b.cloneNode(true));
  90. }
  91.  
  92. if (keep_dropdown)
  93. {
  94. pagesel = document.querySelectorAll(".pages select");
  95. pagesel[0].onchange = function () {
  96. pagesel[1].value = this.value;
  97. var e = document.createEvent("HTMLEvents");
  98. e.initEvent('change', true, true);
  99. pagesel[1].dispatchEvent(e);
  100. };
  101. }
  102. }
  103. }
  104. else
  105. {
  106. var pages = document.querySelectorAll(".pages a, .pages span");
  107. for (i = 0; i < pages.length; i++)
  108. {
  109. if (pages[i].innerHTML.match(/«/))
  110. {
  111. pages[i].innerHTML = '« First';
  112. }
  113.  
  114. if (pages[i].innerHTML.match(/‹/))
  115. {
  116. pages[i].innerHTML = '‹ Prev';
  117. }
  118.  
  119. if (pages[i].innerHTML.match(/›/))
  120. {
  121. pages[i].innerHTML = 'Next ›';
  122. }
  123.  
  124. if (pages[i].innerHTML.match(/»/))
  125. {
  126. pages[i].innerHTML = 'Last »';
  127. }
  128.  
  129. if (pages[i].tagName.toLowerCase() == "span")
  130. {
  131. pages[i].style.fontSize = "12px";
  132. pages[i].style.padding = "2px 0 1px";
  133. pages[i].style.margin = "4px 2px";
  134. }
  135. }
  136. }
  137.  
  138. if (old_breadcrumbs)
  139. {
  140. var bc = document.querySelectorAll(".breadcrumbs > span.mainbodytextlarge");
  141. for (i = 0; i < bc.length; i++)
  142. {
  143. if (bc[i].childNodes[0].tagName.toLowerCase() == "b")
  144. {
  145. bc[i].parentNode.insertBefore(bc[i].childNodes[0], bc[i]);
  146. bc[i].parentNode.removeChild(bc[i]);
  147. continue;
  148. }
  149. else if (bc[i].childNodes[0].childNodes.length > 1)
  150. {
  151. b = document.createElement("b");
  152.  
  153. var c = bc[i].querySelectorAll(".up span a");
  154. for (j = 0; j < c.length; j++)
  155. {
  156. b.appendChild(c[j]);
  157. b.appendChild(document.createTextNode(" > "));
  158. }
  159.  
  160. var bclast = bc[i].querySelector(".bclast");
  161. if (bclast) b.appendChild(bclast.cloneNode(true));
  162.  
  163. while (bc[i].childNodes.length > 0)
  164. {
  165. bc[i].removeChild(bc[i].childNodes[0]);
  166. }
  167.  
  168. bc[i].appendChild(b);
  169. }
  170. }
  171. }
  172.  
  173. var forum_jump = document.querySelector(".forum_jump");
  174. if (tweak_forum_jump && forum_jump)
  175. {
  176. forum_jump.style.textAlign = "right";
  177. var select = forum_jump.querySelector("select[name='forumid']");
  178. select.style.fontSize = '12px';
  179. select.querySelector("option[value='26']").innerHTML = '-- FYAD';
  180. select.querySelector("option[value='188']").innerHTML = '-- Questions, Comments, Suggestions?';
  181. forum_jump.querySelector("input[type='submit']").style.fontSize = '12px';
  182. }
  183.  
  184. if (old_style)
  185. {
  186. var head = document.querySelector("head");
  187.  
  188. var sa_css = "";
  189. sa_css += ".newthread #content table.standard tr td:first-child, .newreply #content table.standard tr td:first-child, .priv_sendprivmsg #content table.standard tr td:first-child, .editpost #content table.standard tr td:first-child, .threads_editthread #content table.standard tr td:first-child { max-width: 180px; min-width: 180px; width: 180px; }";
  190. sa_css += "td.star div { width: 16px; height: 16px; cursor: pointer; background: transparent url(http://fi.somethingawful.com/images/stars/bookmark-star-grey.png) no-repeat center center; }";
  191. sa_css += "td.star.bm0 div, tr.category0 td.star div { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAgtJREFUeNqkU01LG1EUPW8+pGRqI0PUxiYqYqWbuvGDblWULqTdSSkFF25CkVbwDygUxIXQdlM37nSjKyW7oq4lsYguaqstKm1tTBwbbQZNJvN8dzJpM2AKxYHDXM4957z7LjOMcw4/20KZp9t9r1zVTPP7kMo5GbKDerBqmUB1OV3ZABHx/NVkLQhU/1eAODESag52nl+oIFBN3L8CZIFhgajAYQ433w0O6dj+yB1QTRz1XM2w6wGjJeos/rKjq/51T68GTVNxZjLs7QPGUSFdrwEaG4BKH0cmk8Py+wxiqwcjBm9/oxSO/7IRX9Mx8LRKNDkSSQ47/3fMZArY+QTUVgM9vSria78dD9BeuEIKT2KSGZubGE8gXA9YF3kcH1seEEc90pCWPH+uwBijoICO6Zl7bY/6ff5K7Hy2Pcu62yLBTJ9he30paiAyROcKr+1McAubpDYqkFzY/5oVpY1fJ5YHxFGPNKR1PVCKJwjCspAI1IUUpE8tyKqFutvOovHjZ15wYgeid3DyIEDaok8pHdPGjXBNtQw9IEZuUrDxIePwD/s0522kZOwJTanHE8CRk2gnZPy2m4aG6Xnio7uRgVCzH+Gw4mg8H13pz+TDWKuNx6My1o1DvJ0V1HdXdyeIF8/yaNMlLE6ZGNss/kyegFO0Vjg5NAxgirvmXF51eebyWU/AdZ5LAQYAvwPuZrGdCy0AAAAASUVORK5CYII=); }";
  192. sa_css += "td.star.bm1 div, tr.category1 td.star div { background-image: url(http://fi.somethingawful.com/images/stars/bookmark-star-red.png); }";
  193. sa_css += "td.star.bm2 div, tr.category2 td.star div { background-image: url(http://fi.somethingawful.com/images/stars/bookmark-star-yellow.png); }";
  194. sa_css += "div.threadrate { margin-top: -2px; padding-left: 0px; color: #fff; line-height: 20px; }";
  195. sa_css += "div.threadrate ul.rating_buttons { display: inline-block; vertical-align: middle; background: #555 url(http://fi.somethingawful.com/ui/rating-bg.png) no-repeat center center; width: 104px; height: 20px; margin: 0; padding: 1px; }";
  196. sa_css += "div.threadrate ul.rating_buttons li { cursor: pointer; color: #000; display: inline-block; list-style: none; margin-left: 1px; width: 18px; height: 18px; border: 1px solid #ddd; line-height: 18px; text-align: center; text-shadow: none; }";
  197. sa_css += "div.threadrate ul.rating_buttons li:hover { background-color: #fff; background-color: rgba(255, 255, 255, 0.2); border-color: #fff; font-weight: bold; }";
  198. sa_css += "div.threadrate ul.rating_buttons li:first-child { margin-left: 0; } #button_bookmark { cursor: pointer; }";
  199. sa_css += "#filter .toggle_tags::before { content: '▶ '; } #filter .toggle_tags { cursor: pointer; } #filter .thread_tags { display: none; padding: 4px 1px; }";
  200. sa_css += "#filter.open .toggle_tags::before { content: '▼ '; } #filter.open .thread_tags { display: block; } .postbuttons { text-align: center; }";
  201. sa_css += ".bbc-spoiler.reveal, .bbc-spoiler.reveal li, .bbc-spoiler.stay, .bbc-spoiler.stay li { color: white; }";
  202. sa_css += ".bbc-spoiler img { visibility: hidden; } .bbc-spoiler.reveal img, .bbc-spoiler.stay img { visibility: visible; }";
  203. sa_css += "#buddylist dl { padding: 4px 10px 14px 10px; margin: 0; line-height: 18px; text-decoration: none; }";
  204. sa_css += "#buddylist dd { height: 24px; line-height: 24px; margin: 0; padding-left: 20px; }";
  205. sa_css += "#buddylist dl.offline dd { background: left no-repeat url(http://fi.somethingawful.com/images/off.gif); }";
  206. sa_css += "#buddylist dl.online dd { background: left no-repeat url(http://fi.somethingawful.com/images/on.gif); }";
  207. sa_css += "div.standard { width: auto; } div.breadcrumbs a:hover { color: #C60; } #thread td.postbody img { vertical-align: middle; }";
  208.  
  209. var sa_style = document.createElement("style");
  210. sa_style.setAttribute("type", "text/css");
  211. sa_style.innerHTML = sa_css;
  212. head.appendChild(sa_style);
  213.  
  214. head.removeChild(document.querySelector("head > link[href*='/css/forums.css']"));
  215. }
  216. else
  217. {
  218. var mpbars = document.querySelectorAll("#mp_bar");
  219. if (mpbars && mpbars.length > 0)
  220. {
  221. for (i = 0; i < mpbars.length; i++)
  222. {
  223. mpbars[i].style.visibility = "visible";
  224. }
  225. }
  226. }
  227.  
  228. var si = document.querySelectorAll(".bbc-spoiler > img");
  229. if (si && si.length > 0)
  230. {
  231. for (i = 0; i < si.length; i++)
  232. {
  233. si[i].onclick = function () {
  234. this.parentNode.click();
  235. };
  236. }
  237. }
  238.  
  239. var icons = document.querySelectorAll("td.icon");
  240. if (icons.length > 0)
  241. {
  242. var img, iconid, forumid = parseQueryString(location.href.split("?")[1]).forumid;
  243. for (i = 0; i < icons.length; i++)
  244. {
  245. img = icons[i].querySelector("img");
  246. iconid = img.src.split("#")[1];
  247. if (iconid)
  248. {
  249. a = document.createElement("a");
  250. a.href = location.protocol + "//" + location.hostname + location.pathname + "?forumid=" + forumid + "&posticon=" + iconid;
  251. a.appendChild(img);
  252. icons[i].appendChild(a);
  253. }
  254. }
  255. }
  256.  
  257. if (false && location.hash && location.hash != '#')
  258. {
  259. var scrollto = document.querySelector(location.hash);
  260. if (scrollto)
  261. {
  262. var images = document.querySelector("#thread img");
  263. var image_count = images.length;
  264. for (i = 0; i < image_count; i++)
  265. {
  266. images[i].addEventListener("load", function () {
  267. --image_count;
  268. if (image_count == 0)
  269. {
  270. scrollto.scrollIntoView();
  271. }
  272. });
  273. }
  274. }
  275. }
  276. })(document);
  277.  
  278. function parseQueryString()
  279. {
  280. var query = {}, qstr = location.search.substr(1, location.search.length).split("&");
  281. for (i = 0; i < qstr.length; i++)
  282. {
  283. part = qstr[i].split("=");
  284. query[part[0]] = part[1];
  285. }
  286. delete query.pagenumber;
  287. return query;
  288. }
  289.  
  290. function buildQueryString(query)
  291. {
  292. var i, qstr = [];
  293. for (i in query)
  294. {
  295. qstr.push(i+"="+query[i]);
  296. }
  297. return qstr.join("&");
  298. }
Add Comment
Please, Sign In to add comment