Advertisement
Guest User

Untitled

a guest
Aug 19th, 2022
292
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.63 KB | None | 0 0
  1. // ==UserScript==
  2. // @name Boards - Hotpocket Helper
  3. // @version 6.4
  4. // @author (cyg && fsn) == bffs 5 evr
  5. // @include https://boards.4chan.org/*
  6. // @include https://boards.4channel.org/*
  7. // @exclude https://boards.4chan.org/*/catalog
  8. // @exclude https://boards.4channel.org/*/catalog
  9. // @grant none
  10. // @run-at document-start
  11. // ==/UserScript==
  12.  
  13. (function() {
  14. 'use strict';
  15.  
  16. var CFBS = {};
  17.  
  18. CFBS.refresh = function() {
  19. CFBS.jumperIndex = 0;
  20. CFBS.jumperArray = [];
  21. CFBS.fetchReports();
  22. CFBS.init4chX();
  23. };
  24.  
  25. CFBS.parsePage = function() {
  26. var reported;
  27. for (var i = 0; (reported = CFBS.xhrReports[i]); ++i) {
  28.  
  29. var post = $.id("p" + reported.no);
  30. var info = $.id("pi" + reported.no);
  31. if (!post) continue; //Report isn't on page.
  32. CFBS.jumperArray.push(reported.no);
  33.  
  34. if ($.hasClass(post, "cfbs-parsed")) continue; //We saw this post already
  35. $.addClass(post, "cfbs-parsed");
  36.  
  37. var el = $.el("span");
  38. el.id = `cfbs-reported-${reported.no}`;
  39. el.innerHTML = ` [<font id='cfbs-reported-${reported.no}-txt' style='color:red; font-weight:700;'>Reported</font>]`;
  40. info.insertBefore(el, $.qs("[class='postNum desktop']", info).nextSibling);
  41.  
  42. if (window.Config.useIconButtons) {
  43. var btn = $.el("img");
  44. btn.alt = "CLR";
  45. btn.className = "extButton";
  46. btn.id = `cfbs-reported-button-${reported.no}`;
  47. btn.src = `//s.4cdn.org/image/buttons/${CFBS.style}/report.png`;
  48. btn.setAttribute("data-tip", "Clear this report");
  49. btn.setAttribute("data-id", reported.no);
  50. btn.setAttribute("data-cmd", "cfbs-clear-report");
  51.  
  52. el.parentNode.insertBefore(btn, el.nextSibling);
  53. }
  54. }
  55.  
  56. CFBS.jumperArray.sort(function(a, b) {
  57. return a - b;
  58. });
  59. CFBS.reportsTotal = CFBS.xhrReports.length;
  60. };
  61.  
  62. //Toolbox loaded, add the stuff
  63. CFBS.setupToolbox = function() {
  64. var toolbox = $.id("adminToolbox");
  65. var tmp, h4 = $.el("h4");
  66. toolbox.insertBefore(h4, toolbox.childNodes[2]);
  67.  
  68. var el = $.el("a");
  69. el.href = `http://reports.4chan.org/#/${CFBS.board}`;
  70. el.target = "_blank";
  71. el.setAttribute("data-tip", `Open /${CFBS.board}/ queue`);
  72. el.textContent = `/${CFBS.board}/ Reports`;
  73. h4.appendChild(el);
  74.  
  75. el = $.el("span");
  76. el.textContent = ": ";
  77. tmp = $.el("span");
  78. tmp.setAttribute("data-tip", "Reports in queue");
  79. tmp.id = "cfbs-queue-count";
  80. tmp.textContent = "?";
  81. el.appendChild(tmp);
  82. el.appendChild(document.createTextNode(" ("));
  83. tmp = $.el("a");
  84. tmp.setAttribute("data-cmd", "cfbs-jumper");
  85. tmp.setAttribute("data-tip", "Current report / Reports on page");
  86. tmp.id = "cfbs-jumper-txt";
  87. tmp.textContent = "0 / ?";
  88. el.appendChild(tmp);
  89. el.appendChild(document.createTextNode(")"));
  90. h4.appendChild(el);
  91.  
  92. $.id("cfbs-jumper-txt").style.cursor = "pointer";
  93. };
  94.  
  95. CFBS.updateToolbox = function() {
  96. var scan = setInterval(function() {
  97. if ($.id("cfbs-queue-count") && $.id("cfbs-jumper-txt")) {
  98. clearInterval(scan);
  99. $.id("cfbs-queue-count").textContent = CFBS.reportsTotal;
  100. $.id("cfbs-jumper-txt").textContent = `${CFBS.jumperIndex} / ${CFBS.jumperArray.length}`;
  101. }
  102. }, 10);
  103. };
  104.  
  105. CFBS.updateListeners = function() {
  106. $.on(document, "4chanThreadUpdated", CFBS.refresh);
  107. $.on(document, "4chanATUpdated", CFBS.refresh);
  108. };
  109.  
  110. CFBS.updatePostMenu = function() {
  111. var menu = $.id("post-menu"), repNode, rcNode, aNode;
  112. if (!menu) return;
  113. var pid = menu.firstChild.firstChild.getAttribute("data-id"); //loving every laugh
  114. var post = $.id(`p${pid}`);
  115. var reported = $.hasClass(post, "cfbs-parsed");
  116.  
  117. if (reported) {
  118. //clear report option
  119. repNode = $.el("LI");
  120. $.addClass(repNode, "dd-admin");
  121. aNode = $.el("a");
  122. aNode.setAttribute("data-cmd", "cfbs-clear-report");
  123. aNode.setAttribute("data-id", pid);
  124. aNode.textContent = "Clear report";
  125. repNode.appendChild(aNode);
  126. menu.firstChild.insertBefore(repNode, $.cls("dd-admin")[1]);
  127.  
  128. //report link option
  129. repNode = $.el("LI");
  130. $.addClass(repNode, "dd-admin");
  131. aNode = $.el("a");
  132. aNode.setAttribute("data-cmd", "cfbs-report-link");
  133. aNode.setAttribute("data-id", pid);
  134. aNode.textContent = "Report link";
  135. repNode.appendChild(aNode);
  136. menu.firstChild.insertBefore(repNode, $.cls("dd-admin")[2]);
  137. }
  138.  
  139. if ($.cls("backlink", post).length) {
  140. rcNode = $.el("LI");
  141. $.addClass(rcNode, "dd-admin");
  142. aNode = $.el("a");
  143. aNode.setAttribute("data-cmd", "cfbs-reply-chain");
  144. aNode.setAttribute("data-id", pid);
  145. aNode.textContent = "Reply chain";
  146. rcNode.appendChild(aNode);
  147.  
  148. //if reported post, insert after "Report link"
  149. if (reported) {
  150. menu.firstChild.insertBefore(rcNode, $.cls("dd-admin")[3]);
  151. } else {
  152. menu.firstChild.insertBefore(rcNode, $.cls("dd-admin")[1]);
  153. }
  154. }
  155.  
  156. menu.style.zIndex = "10001";
  157. };
  158.  
  159. CFBS.runReportJumper = function() {
  160. if (CFBS.jumperIndex >= CFBS.jumperArray.length) CFBS.jumperIndex = 0;
  161. var el = $.id(`p${CFBS.jumperArray[CFBS.jumperIndex]}`);
  162. if (el) {
  163. el.scrollIntoView();
  164. window.scrollBy(0, -50); //pad top of page
  165. ++CFBS.jumperIndex;
  166. }
  167. CFBS.updateToolbox();
  168. };
  169.  
  170. CFBS.removeFromJumper = function(no) {
  171. var index = CFBS.jumperArray.indexOf(no);
  172. if (index > -1) {
  173. CFBS.jumperArray.splice(index, 1);
  174. if (CFBS.jumperIndex > 0) CFBS.jumperIndex--;
  175. CFBS.reportsTotal--;
  176. }
  177.  
  178. CFBS.updateToolbox();
  179. };
  180.  
  181. CFBS.openReplyChain = function(pid) {
  182.  
  183. CFBS.replyChainSeen = [];
  184. var bod = document.body;
  185.  
  186. //Panel for posts
  187. var el = $.el("div");
  188. el.id = "settingsMenu";
  189. el.className = "UIPanel";
  190. el.setAttribute("data-cmd", "cfbs-close-replychain");
  191. el.innerHTML = `<div style="overflow-y: scroll;"><div class="extPanel reply" style="width: 98%;"><div class="panelHeader" id="cfbs-panelHeader">Viewing reply chain<span id="cfbs-panelCtrl" class="panelCtrl"></span></div></div></div>`;
  192. bod.appendChild(el);
  193. el.style.overflowY = "scroll";
  194. el.style.zIndex = "10000";
  195.  
  196. //Close panel button
  197. var btn = $.el("img");
  198. btn.src = `//s.4cdn.org/image/buttons/${CFBS.style}/cross.png`;
  199. btn.setAttribute("data-cmd", "cfbs-close-replychain");
  200. btn.setAttribute("data-tip", "Close chain");
  201. btn.className = "pointer";
  202. $.id("cfbs-panelCtrl").appendChild(btn);
  203.  
  204. //Submit deletions button
  205. btn = $.el("img");
  206. btn.src = `//s.4cdn.org/image/buttons/${CFBS.style}/report.png`;
  207. btn.setAttribute("data-cmd", "cfbs-delete-chain");
  208. btn.setAttribute("data-tip", "Delete selected from chain");
  209. btn.className = "pointer";
  210. $.id("cfbs-panelHeader").appendChild(btn);
  211.  
  212. CFBS.addToChain(pid, el.firstChild); //recursive
  213.  
  214. $.on(el, 'mouseover', window.Main.onThreadMouseOver);
  215. $.on(el, 'mouseover', CFBS.replyChainMouseover);
  216. $.on(el, 'mouseout', window.Main.onThreadMouseOut);
  217.  
  218. $.dispatch("CFBSReplyChainDone");
  219. };
  220.  
  221. CFBS.replyChainMouseover = function(el) {
  222. var t = el.target;
  223. if ($.hasClass(t, 'quotelink')) {
  224. var scan = setInterval(function() {
  225. if ($.id("quote-preview")) {
  226. clearInterval(scan);
  227. console.log("running");
  228. $.id("quote-preview").style.zIndex = "9009";//pro
  229. }
  230. }, 10);
  231. }
  232. };
  233.  
  234. CFBS.closeReplyChain = function() {
  235. $.off($.id("settingsMenu"), 'mouseover', window.Main.onThreadMouseOver);
  236. $.off($.id("settingsMenu"), 'mouseover', CFBS.replyChainMouseover);
  237. $.off($.id("settingsMenu"), 'mouseout', window.Main.onThreadMouseOut);
  238. $.id("settingsMenu").parentNode.removeChild($.id("settingsMenu"));
  239. };
  240.  
  241. CFBS.addToChain = function(postID, panel) {
  242. var link, links, post = $.id(`p${postID}`);
  243. var posts = [];
  244.  
  245. if ($.id(`bl_${postID}`)) {
  246. links = $.id(`bl_${postID}`).childNodes;
  247. for (var i = 0; (link = links[i]); ++i) {
  248. link = link.firstChild.innerHTML.replace("&gt;&gt;", "");
  249.  
  250. if (CFBS.replyChainSeen.includes(link)) continue;
  251. posts.push(link);
  252. CFBS.replyChainSeen.push(link);
  253. }
  254. }
  255.  
  256. var clone = post.cloneNode(true);
  257. if (!$.hasClass(clone, "reply")) {
  258. $.addClass(clone, "reply"); //For OPs
  259. }
  260.  
  261. clone.style.display = "block";
  262. clone.style.zIndex = "10000";
  263. if (!$.qs('[class="extControls"]', clone)) { //add buttons here
  264. var cnt = CFBS.buildPostIcons(postID);
  265. $.cls("postInfo desktop", clone)[0].insertBefore(cnt, $.cls("postNum desktop", clone)[0].nextSibling);
  266. }
  267.  
  268. panel.appendChild(clone);
  269.  
  270. for (i = 0; (post = posts[i]); ++i) {
  271. CFBS.addToChain(post, panel);
  272. }
  273. };
  274.  
  275. CFBS.deleteFromChain = function() {
  276. var confirmed = confirm("Delete selected posts?");
  277. if (!confirmed) return;
  278. var marked = $.qsa("input[value='delete']:checked");
  279.  
  280. var post;
  281. for (var i = 0; (post = marked[i]); ++i) {
  282. var id = post.name;
  283. CFBS.deleteChainRequest(id);
  284. }
  285. };
  286.  
  287. CFBS.buildPostIcons = function(postID) {
  288.  
  289. if (CFBS.style == undefined) CFBS = (window.style_group == "ws_style") ? "burichan" : "futaba"; //shrug
  290.  
  291. var html = `<img class="extButton" alt="X" data-cmd="open-delete-prompt" data-id="${postID}" `
  292. + `src="//s.4cdn.org/image/buttons/${CFBS.style}/cross.png" title="Delete">`;
  293.  
  294. if (window.spoilers && ($.id('fT' + postID))) {
  295. html += `<img class="extButton" alt="S" data-cmd="prompt-spoiler" `
  296. + `data-id="${postID}" src="//s.4cdn.org/image/buttons/${CFBS.style}/s.png" title="Toggle Spoiler">`;
  297. }
  298. if (!window.thread_archived) {
  299. var mode = ($.id("adminToolbox").childNodes.length > 4) ? "ban" : "open-banreq-prompt"; //hackerman
  300. html += `<img class="extButton" alt="B" data-cmd="${mode}" `
  301. + `data-id="${postID}" src="//s.4cdn.org/image/buttons/${CFBS.style}/ban.png" title="Ban Request">`;
  302. }
  303. var cnt = document.createElement('div');
  304. cnt.className = 'extControls';
  305. cnt.innerHTML = html;
  306.  
  307. return cnt;
  308. };
  309.  
  310. CFBS.init4chX = function() {
  311. if (!$.hasClass($.tag("html")[0], "fourchan-x")) return;
  312. var post, posts = $.cls("post");
  313. for (var i = 0; (post = posts[i]); ++i) {
  314. if ($.cls("extControls", post).length > 0) continue; //saw this post
  315. var postID = post.id.replace("p","");
  316. var cnt = CFBS.buildPostIcons(postID);
  317. $.id(`pi${postID}`).insertBefore(cnt, $.cls("postNum desktop", $.id(`pi${postID}`))[0].nextSibling);
  318. }
  319.  
  320. if (!$.id("cfbs-j-link")) {
  321. var clone = $.id("j-link").cloneNode(true);
  322. clone.id = "cfbs-j-link";
  323. $.id("board-list").appendChild(clone);
  324. }
  325. };
  326.  
  327. CFBS.deleteChainRequest = function(id) {
  328. var data = {"mode":"usrdel", "pwd":"janitorise"};
  329. data[id] = "delete";
  330. $.xhr("POST", `https://sys.${CFBS.domain}.org/${CFBS.board}/post`, {
  331. onreadystatechange: function() {
  332. if (this.readyState == 4 && this.status == 200) {
  333. CFBS.removeFromJumper(id);
  334. if (/Updating index/.test(this.responseText)) {
  335. var deleted = $.qsa(`[id="p${id}"]`);
  336. for (var k = 0; k < deleted.length; ++k) {
  337. deleted[k].style.opacity = "0.3";
  338. }
  339. } else {
  340. console.log(this.responseText);
  341. $.id("cfbs-panelHeader").innerHTML += "<font style='color:red;font-weight:700'>Error</font>";
  342. }
  343. }
  344. },
  345. onerror: function(e) {
  346. console.log("error deleting post " + id);
  347. $.id("cfbs-panelHeader").innerHTML += "<font style='color:red;font-weight:700'>Error</font>";
  348. console.log(e);
  349.  
  350. }
  351. }, data, true);
  352. };
  353.  
  354. CFBS.fetchReports = function() {
  355. $.xhr("GET", `https://reports.4chan.org/?action=get_reports&board=${CFBS.board}`, {
  356. onreadystatechange: function() {
  357. if (this.status == 200 && this.readyState == 4) {
  358. try {
  359. var dat = JSON.parse(this.responseText);
  360. } catch (e) {
  361. console.log("Error parsing reports");
  362. console.log(e);
  363. }
  364.  
  365. if (dat.status != "success") {
  366. console.log("error parsing reports or you don't have this board.");
  367. return;
  368. }
  369.  
  370. CFBS.updateToolbox();
  371.  
  372. $.on(document, "click", CFBS.onClick);
  373. $.dispatch("CFBSFetchQueueData"); //Should only run once
  374.  
  375. CFBS.xhrReports = dat.data.reports;
  376.  
  377. $.dispatch("CFBSReportsRetrieved");
  378. }
  379. },
  380. onerror: function() {
  381. console.log("error fetching reports or you don't have this board.");
  382. }
  383. }, null, true);
  384. };
  385.  
  386. CFBS.fetchQueueData = function() {
  387. $.off(document, "CFBSFetchQueueData", CFBS.fetchQueueData);
  388. $.xhr("GET", "https://reports.4chan.org/", {
  389. onreadystatechange: function() {
  390. if (this.status == 200 && this.readyState == 4) {
  391. var a = $.el('html'); a.innerHTML = this.responseText; var b = $.tag('body', a);
  392. CFBS.page = b[0].getAttribute('data-tkn'); //cs_grad.png
  393. }
  394. },
  395. onerror: function() {
  396. console.log("error fetching rqd");
  397. }
  398. }, null, true);
  399. };
  400.  
  401. CFBS.clearReport = function(pid) {
  402. var scan = setInterval(function() {
  403. $.id(`cfbs-reported-${pid}-txt`).innerHTML += ".";
  404. if ($.id(`cfbs-reported-${pid}-txt`).innerHTML.length > 4) {
  405. $.id(`cfbs-reported-${pid}-txt`).innerHTML = "";
  406. }
  407. }, 150);
  408.  
  409. $.xhr("POST", `https://reports.4chan.org?action=clear_report`, {
  410. onreadystatechange: function() {
  411. if (this.status == 200 && this.readyState == 4) {
  412. clearInterval(scan);
  413. try {
  414. var res = JSON.parse(this.responseText);
  415. } catch(e) {
  416. console.log("error" + e);
  417. }
  418. if (res.status == "success") {
  419. $.id(`cfbs-reported-${pid}-txt`).innerHTML = "Cleared";
  420. $.id(`cfbs-reported-${pid}-txt`).style.color = "green";
  421. $.id(`cfbs-reported-button-${pid}`).parentNode.removeChild($.id(`cfbs-reported-button-${pid}`));
  422. } else {
  423. $.id(`cfbs-reported-${pid}-txt`).innerHTML = (res.message || "Unknown error");
  424. console.log(this.responseText);
  425. }
  426. }
  427. },
  428. onerror: function() {
  429. clearInterval(scan);
  430. $.id(`cfbs-reported-${pid}-txt`).innerHTML = "Clear failed";
  431. }
  432. }, {
  433. "_tkn": CFBS.page,
  434. "board": CFBS.board,
  435. "no": pid
  436. }, true);
  437. };
  438.  
  439. CFBS.reportLink = function(no) {
  440. var url = `https://reports.4chan.org/?links{"reports":["report-${CFBS.board}-${no}"]}`;
  441. window.open(url);
  442. }
  443.  
  444. CFBS.getStyle = function() { //this looks familiar hmmmm :thinking:
  445. var i, a, link, sheet;
  446.  
  447. for (i = 0;
  448. (a = document.getElementsByTagName("link")[i]); i++) {
  449. if (a.getAttribute("title") == "switch") {
  450. link = a;
  451. } else if (a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && a.href == link.href) {
  452. sheet = a.getAttribute("title");
  453. }
  454. }
  455.  
  456. switch(sheet) {
  457. case "Tomorrow": sheet = "tomorrow"; break;
  458. case "Photon": sheet = "photon"; break;
  459. case "Yotsuba B New": //pass through
  460. case "Burichan New": sheet = "burichan"; break;
  461. case "Yotsuba New": //pass through
  462. case "Futaba New": sheet = "futaba"; break;
  463. default: sheet = (window.style_group == "ws_style") ? "burichan" : "futaba"; break;
  464. }
  465. CFBS.style = sheet;
  466. };
  467.  
  468. CFBS.onClick = function(e) {
  469. var t = e.target;
  470. switch(t.getAttribute("data-cmd")) {
  471. case "post-menu":
  472. CFBS.updatePostMenu();
  473. break;
  474. case "cfbs-clear-report":
  475. CFBS.clearReport(t.getAttribute("data-id"));
  476. CFBS.removeFromJumper(t.getAttribute("data-id"));
  477. break;
  478. case "cfbs-report-link":
  479. CFBS.reportLink(t.getAttribute("data-id"));
  480. break;
  481. case "cfbs-reply-chain":
  482. CFBS.openReplyChain(t.getAttribute("data-id"));
  483. break;
  484. case "cfbs-close-replychain":
  485. CFBS.closeReplyChain();
  486. break;
  487. case "cfbs-delete-chain":
  488. CFBS.deleteFromChain();
  489. break;
  490. case "cfbs-jumper":
  491. CFBS.runReportJumper();
  492. break;
  493. case "open-banreq-prompt":
  494. case "ban":
  495. $.id("banReq").style.zIndex = "10001";
  496. break;
  497. case "delete-post":
  498. case "delete-image":
  499. CFBS.removeFromJumper(t.getAttribute("data-id"));
  500. break;
  501. default: break;
  502. }
  503. };
  504.  
  505. var $={id:function(e){return document.getElementById(e)},cls:function(e,n){return(n||document).getElementsByClassName(e)},byName:function(e){return document.getElementsByName(e)},tag:function(e,n){return(n||document).getElementsByTagName(e)},el:function(e){return document.createElement(e)},qs:function(e,n){return(n||document).querySelector(e)},qsa:function(e,n){return(n||document).querySelectorAll(e)},extend:function(e,n){for(var t in n)e[t]=n[t]},parentByCls:function(e,n){for(var t=$.docEl,o=e;e!==t&&!$.hasClass(e,n);)e=e.parentNode;return o!==e?e:null}};document.documentElement.classList?($.hasClass=function(e,n){return e.classList.contains(n)},$.addClass=function(e,n){e.classList.add(n)},$.removeClass=function(e,n){e.classList.remove(n)}):($.hasClass=function(e,n){return-1!=(" "+e.className+" ").indexOf(" "+n+" ")},$.addClass=function(e,n){e.className=""===e.className?n:e.className+" "+n},$.removeClass=function(e,n){e.className=(" "+e.className+" ").replace(" "+n+" ","")}),$.on=function(e,n,t){e.addEventListener(n,t,!1)},$.off=function(e,n,t){e.removeEventListener(n,t,!1)},$.xhr=function(e,n,t,o,r){var a,u,s;if((u=new XMLHttpRequest).open(e,n,!0),t)for(a in t)u[a]=t[a];if(o)if("string"==typeof o)u.setRequestHeader("Content-type","application/x-www-form-urlencoded");else{for(a in s=new FormData,o)s.append(a,o[a]);o=s}else o=null;return u.withCredentials=r||0,u.send(o),u},$.getItem=function(e){return localStorage.getItem(e)},$.setItem=function(e,n){return localStorage.setItem(e,n)},$.removeItem=function(e){return localStorage.removeItem(e)},$.getCookie=function(e){var n,t,o,r;for(r=e+"=",o=document.cookie.split(";"),n=0;t=o[n];++n){for(;" "==t.charAt(0);)t=t.substring(1,t.length);if(0===t.indexOf(r))return decodeURIComponent(t.substring(r.length,t.length))}return null},$.getToken=function(){return document.body.getAttribute("data-tkn")},$.ago=function(e){var n,t,o,r;return(n=Date.now()/1e3-e)<1?"moments ago":n<60?(0|n)+" seconds ago":n<3600?(t=0|n/60)>1?t+" minutes ago":"one minute ago":n<86400?(o=(t=0|n/3600)>1?t+" hours":"one hour",(r=0|n/60-60*t)>1&&(o+=" and "+r+" minutes"),o+" ago"):(o=(t=0|n/86400)>1?t+" days":"one day",(r=0|n/3600-24*t)>1&&(o+=" and "+r+" hours"),o+" ago")},$.pluralise=function(e,n,t){return 1===e?n||"":t||"s"},$.now=function(){return Math.round((new Date).getTime()/1e3)},$.dispatch=function(e,n){var t=document.createEvent("Event");t.initEvent(e,!1,!1),document.dispatchEvent(t)},$.docEl=document.documentElement;
  506.  
  507. if (/catalog/.test(window.location.href)) {
  508. return; //Don't run on the catalog
  509. }
  510.  
  511. CFBS.board = window.location.href.split("/")[3];
  512. CFBS.domain = (/4channel/.test(window.location.href)) ? "4channel" : "4chan";
  513. CFBS.jumperIndex = 0;
  514. CFBS.jumperArray = [];
  515.  
  516. CFBS.getStyle(); //twice on purpose
  517.  
  518. /*run dispatch for toolbox setup as soon was the admin toolbox loads*/
  519. var scan = setInterval(function() {
  520. if ($.id("adminToolbox")) {
  521. clearInterval(scan);
  522. $.dispatch("CFBSRunToolbox");
  523. }
  524. }, 50);
  525.  
  526. $.on(document, "DOMContentLoaded", function() {
  527. CFBS.fetchReports();
  528. CFBS.getStyle();
  529. });
  530. $.on(document, "CFBSRunToolbox", CFBS.setupToolbox);
  531. $.on(document, "CFBSReportsRetrieved", CFBS.parsePage);
  532. $.on(document, "CFBSFetchQueueData", CFBS.fetchQueueData);
  533. $.on(document, "PostsInserted", CFBS.init4chX);
  534. $.on(document, "ThreadUpdate", CFBS.init4chX);
  535. setTimeout(CFBS.updateListeners, 5000);
  536. setTimeout(CFBS.init4chX, 300);
  537. })();
  538.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement