gavin19

RES - Subreddit Mute

Oct 8th, 2011
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. modules['subredditMute'] = {
  2.     moduleID: 'subredditMute',
  3.     moduleName: 'Subreddit Mute',
  4.     category: 'Filters',
  5.     options: {
  6.         keywords: {
  7.             type: 'table',
  8.             fields: [{
  9.                 name: 'keyword',
  10.                 type: 'text'
  11.             }],
  12.             value: [],
  13.             description: 'Type in subreddit names to include in the filter.'
  14.         }
  15.     },
  16.     description: 'Mute specified subreddits',
  17.     isEnabled: function() {
  18.         return RESConsole.getModulePrefs(this.moduleID);
  19.     },
  20.     include: Array(/https?:\/\/([a-z]+).reddit.com\/?(?:\??[\w]+=[\w]+&?)*/i),
  21.     exclude: Array(/https?:\/\/([a-z]+).reddit.com\/[-\w\.\/]+\/comments\/[-\w\.]+/i, /https?:\/\/([a-z]+).reddit.com\/user\/[-\w\.]+/i, /https?:\/\/([a-z]+).reddit.com\/message\/[-\w\.]+/i, /https?:\/\/([a-z]+).reddit.com\/[-\w\.\/]*\/submit\/?/i, /https?:\/\/([a-z]+).reddit.com\/submit\/?/i),
  22.     isMatchURL: function() {
  23.         return RESUtils.isMatchURL(this.moduleID);
  24.     },
  25.     muteSubreddits: function(ele, state) {
  26.         var subredditname, re, subs = this.options.keywords.value;
  27.         for (var i = 0, lene = ele.length; i < lene; i += 1) {
  28.             if (ele[i]) {
  29.                 subredditName = ele[i].querySelector('.subreddit').innerHTML;
  30.                 re = new RegExp(subredditName, 'i');
  31.                 for (var w = 0, lens = subs.length; w < lens; w += 1) {
  32.                     if (subs[w].toString().toLowerCase().match(re)) {
  33.                         if (state == "checked") {
  34.                             ele[i].style.display = "none";
  35.                             break;
  36.                         }
  37.                         else {
  38.                             ele[i].style.display = "block";
  39.                         }
  40.                     }
  41.                 }
  42.             }
  43.         }
  44.     },
  45.     createMuteButton: function() {
  46.         var parentDiv = document.querySelectorAll('div.sidebox.submit div.morelink')[0];
  47.         var dv = document.createElement("div");
  48.         dv.setAttribute("id", "subMuteDiv");
  49.         dv.innerHTML = "<p><input type='checkbox' checked='true' id='subredditMute'> Subreddit Mute ON/OFF</p><br/>";
  50.         parentDiv.parentNode.insertBefore(dv, parentDiv);
  51.     },
  52.     go: function() {
  53.         if ((this.isEnabled()) && (this.isMatchURL())) {
  54.             var ele = document.querySelectorAll('.thing');
  55.             document.body.addEventListener('DOMNodeInserted', function(event) {
  56.                 if ((event.target.tagName == 'DIV') && (event.target.getAttribute('id') && event.target.getAttribute('id').indexOf('siteTable') != -1)) {
  57.                     var ele = event.target.querySelectorAll('.thing');
  58.                     if (document.querySelector('#subredditMute').checked === true) {
  59.                         modules['subredditMute'].muteSubreddits(ele, "checked");
  60.                     }
  61.                 }
  62.             }, false);
  63.             this.createMuteButton();
  64.             this.muteSubreddits(ele, "checked");
  65.             var muteBtn = document.querySelector('#subredditMute');
  66.             muteBtn.addEventListener('click', function() {
  67.                 if (muteBtn.checked == false) {
  68.                     ele = document.querySelectorAll('.thing');
  69.                     modules['subredditMute'].muteSubreddits(ele, "unchecked");
  70.                 }
  71.                 else {
  72.                     ele = document.querySelectorAll('.thing');
  73.                     modules['subredditMute'].muteSubreddits(ele, "checked");
  74.                 }
  75.             });
  76.         }
  77.     }
  78. };
Add Comment
Please, Sign In to add comment