PK J4e chrome.manifestoverlay chrome://browser/content/browser.xul chrome://phpbbuserhide/content/browser.xul content phpbbuserhide content/ skin phpbbuserhide classic/1.0 skin/PK }J4X  install.rdf phpBB User Hide phpbbuserhide@thumper.kicks-ass.org 0.5.3 Hides / unhides a user's posts Spewey's Acolytes http://thumper.kicks-ass.org/wordpress/phpbbuserhide chrome://phpbbuserhide/skin/extension.png http://thumper.kicks-ass.org/phpbbuserhide.rdf {ec8030f7-c20a-464f-9b0e-13a3a9e97384} 1.5 1.5.0.* PK x`l5?scontent/browser.xul PK Obl5}c?content/javascript.js// ==UserScript== // @name phpBB User Hide // @include */viewtopic/* // @description Hides/unhides a user's posts // @exclude // ==/UserScript== (function() { // Get stored hidden users from cookie var users = []; var cookieName = "phpUserHide"; for (var i = 0; i < document.cookie.split('; ').length; i++) { var oneCookie = document.cookie.split('; ')[i].split('='); if (oneCookie[0] == cookieName) { users = oneCookie[1].split(', '); break; } } // Cursor functions var curPointer = function(event) { event.target.style.cursor = 'pointer'; event.preventDefault(); }; var curDefault = function(event) { event.target.style.cursor = 'default'; event.preventDefault(); }; // Add or remove a user from the cookie var addRemoveUser = function(event) { // Parse current cookie for(j = 0; j < document.cookie.split('; ').length; j++ ) { var oneCookie = document.cookie.split('; ')[j].split('='); if (oneCookie[0] == cookieName) { users = oneCookie[1].split(', '); break; } } var user = escape(event.target.nextSibling.innerHTML) notFound = true; for (var j = 0; j < users.length; j++) { if (users[j] == user) { users.splice(j, 1); notFound = false; } } if (notFound) users.push(user); if (users.length > 0) { var date = new Date(); var days = 365; date.setTime(date.getTime() + (days*24*60*60*1000)); var expires = '; expires=' + date.toGMTString(); var value = users.join(', '); document.cookie = cookieName + '=' + value + expires + '; path=/'; } else { document.cookie = cookieName + '=;expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/'; } window.alert(unescape(user) + ' has been ' + (notFound ? 'added to' : 'removed from') + ' your shitlist\n' + 'You must refresh the page to view the changes.'); event.preventDefault(); }; // Toggle display of user's post var togglePost = function(event) { var displayState = event.target.getAttribute('displaystate'); if (displayState == 'none') displayState = ''; else displayState = 'none'; event.target.setAttribute('displaystate', displayState); containingRow = event.target.parentNode.parentNode; var innerTags = containingRow.getElementsByTagName('*'); for (var i = 0; i < innerTags.length; i++) { var tagClass = innerTags[i].getAttribute('class'); if (tagClass == 'postbody' || tagClass == 'postsig' || tagClass == 'postdetails' || innerTags[i].tagName == 'TABLE') innerTags[i].style.display = displayState; } event.preventDefault(); }; // Toggle display of user's quote var toggleQuote = function(event) { var displayState = event.target.getAttribute('displaystate'); if (displayState == 'none') displayState = 'table-row'; else displayState = 'none'; event.target.setAttribute('displaystate', displayState); // Jump to parent row var containingRow = event.target.parentNode.parentNode.parentNode.parentNode.nextSibling; // Find containing row while (containingRow.nodeType != 1) containingRow = containingRow.nextSibling; containingRow.style.display = displayState; event.preventDefault(); }; // Find all the usernames in the page var results = document.evaluate("//span[@class='name']/b|//span[@class='name']/strong", document, null, XPathResult.ANY_TYPE, null); var resultNodes = []; var aResult; while (aResult = results.iterateNext()) resultNodes.push(aResult); // Loop through every user post on the page for (var i in resultNodes) { var containingRow = resultNodes[i].parentNode.parentNode.parentNode; // Format whitespace var user = escape(resultNodes[i].innerHTML); // Flag whether the user is in our hide list var notFound = true; for (var j = 0; j < users.length; j++) { if (users[j] == user) { notFound = false; } } // Add relevant event handlers to user's name and a toggler node var toggler = document.createElement('span'); toggler.setAttribute('title', "click to add or remove this user from your shitlist"); toggler.appendChild(document.createTextNode('[X] ')); toggler.style.fontSize = "7pt"; toggler.addEventListener('mouseover', curPointer, true); toggler.addEventListener('mouseout', curDefault, true); toggler.addEventListener('click', addRemoveUser, true); resultNodes[i].parentNode.insertBefore(toggler, resultNodes[i]); // If this user isn't in our hide list, skip to the next user if (notFound) continue; // Find the first element node (td) in the containing row var elem = containingRow.firstChild; while (elem.nodeType != 1) elem = elem.nextSibling; // Create a span to control toggling var span = document.createElement('span'); span.appendChild(document.createTextNode('Toggle Display')); span.appendChild(document.createElement('br')); span.setAttribute('class', 'gensmallbold'); span.style.textDecoration = 'underline'; span.setAttribute('displaystate', 'none'); span.addEventListener('mouseover', curPointer, true); span.addEventListener('mouseout', curDefault, true); span.addEventListener('click', togglePost, true); // Insert the span after the username and before the
elem.insertBefore(span, elem.firstChild.nextSibling.nextSibling); // Insert a
after the username and before the span elem.insertBefore(document.createElement('br'), elem.firstChild.nextSibling.nextSibling); var innerTags = containingRow.getElementsByTagName('*'); for (var i = 0; i < innerTags.length; i++) { var tagClass = innerTags[i].getAttribute('class'); if (tagClass == 'postbody' || tagClass == 'postsig' || tagClass == 'postdetails' || innerTags[i].tagName == 'TABLE') innerTags[i].style.display = 'none'; } } // Find all the usernames quoted in the page var results = document.evaluate("//td[@class='quote']/parent::*/preceding-sibling::*/td/span/b|" + "//td[@class='quote']/parent::*/preceding-sibling::*/td/span/strong", document, null, XPathResult.ANY_TYPE, null); var resultNodes = []; var aResult; while (aResult = results.iterateNext()) resultNodes.push(aResult); // Loop through every user quote on the page for (var i in resultNodes) { var containingRow = resultNodes[i].parentNode.parentNode.parentNode.nextSibling; while (containingRow.nodeType != 1) containingRow = containingRow.nextSibling; // Find username var usermatch = resultNodes[i].innerHTML.match(/(.*) wrote:$/); if (usermatch) var user = escape(usermatch[1]); else continue; // Flag whether the user is in our hide list var notFound = true; for (var j = 0; j < users.length; j++) { if (users[j] == user) { notFound = false; } } // If this user isn't in our hide list, skip to the next user if (notFound) continue; // Create a span to control toggling var span = document.createElement('span'); span.appendChild(document.createElement('br')); span.appendChild(document.createTextNode('Toggle Display')); span.setAttribute('class', 'gensmallbold'); span.style.textDecoration = 'underline'; span.setAttribute('displaystate', 'none'); span.addEventListener('mouseover', curPointer, true); span.addEventListener('mouseout', curDefault, true); span.addEventListener('click', toggleQuote, true); resultNodes[i].appendChild(span); // Hide the quote containingRow.style.display = 'none'; } })();PK #`l5content/PK \I4+T skin/extension.pngPNG  IHDR pCgAMAXGbKGD pHYs  tIME 27C IDATHǥktյood'.((&\BX*EQ)=UZZPZVd(TQRX=M 1!$]g$Ո=Ǻww~rRZtѕu `!Ta?7#︹ _y07^F '^3EDĶmX.&gSuW_\c2ysd;1A0ɸ6Ht&YJ4s1)3dh!F+hsoi,/L-l}~x 0=̚/>Mx=rY:bV-xg׫RߋRiB.!΃MgȎuu |(I/rfhQN֢aEdeEJ4G[&ӷOW\qwMD&hm PT2C cE=ADH͛+jOn2߱XvwL SgٸI Q+¬,"kq}b>'Nֱho[6eÚHt)y1w`%WF ǂeE#W6.8R㾁9|H>i]qrXi*zŏinqym ) I24"·'4F&SXٹ\ǹhnSpG>a;yj\2G*Dלn$1U9p `AF +q}&^?g:ehl۾<^:Fa|D")E0<sng>DLn7̽[VWi$iP?ͯ!̛8fdä6v YW54үWM4!LmZdgE9]ߌ5߻sеWb;.J O5zVr;u5p+8r̞1‚u0{ 5XnfvʟsXλ+rS47;6Kc71L2dǏpchvMgdIchX3xya2i҅-pVFVeqtŴ)YatK$eʌ9tTty0+Vm`w&r?qYg%69U'iK1Eij>=WBca`Zv w1iU&rx;X0l$fO.% 4헴cl*&\G؂(:TJpө.`PWX쪫WovAI M9<ɨܮ28XexI%A՗.0B+P̷kJ  U@vwϽg04EmO[(5]r /:̼{ o弓Æ׷S8YOeXO*;,[qͶ?hKT6`^p2BG Ϲ 'I# 8[_èxJ9z$w0i$wѪj~ -:KKht&C㙳ӕVC>ϕj7F +/Zͯ־?"Kg=]߿2"N)n{cFѠ+(ǢӚt9ˉD0fVnѥDQ<iD:'O8_b(m˱X9| ^~ (Z Vin6zhw"ZKdYĹ}xN;b*Z"1V>ww~0 ?%O8^7{3&3cj9ш/`tVPS'OhX!djMoθ|Zs |њ%p="//>& qV0ÇL%uYwfϼܜ٣wOF뀔tKI<# xy6F^UBNsӳنF҉$%EQFuT8wn`74xkF3mD1ahQ6 ~%zyq53nؙ cQ<)[ۯ'thH(|_܀ksh-ͭ-ԟn`L3fYA&憱Wqm3 Z)坝Uԟk[cȿ &cw A0bxve)A!Lx={v:ci‘(|CV}ucGQ<4 sN '  _,E@P(D"cPVR\n !J6X/7~*1LA+:{ QJa6J*C\IENDB`PK `l5skin/PK J4e  chrome.manifestPK }J4X   install.rdfPK x`l5?s content/browser.xulPK Obl5}c? content/javascript.jsPK #`l5Af)content/PK \I4+T  )skin/extension.pngPK `l5AA4skin/PKd4