Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- modules['sfwFilter'] = {
- moduleID: 'sfwFilter',
- moduleName: 'SFW Filter',
- category: 'Filters',
- options: {
- //
- },
- description: 'Adds a toggle button to turn SFW posts on/off.',
- isEnabled: function() {
- return RESConsole.getModulePrefs(this.moduleID);
- },
- include: Array(/https?:\/\/([a-z]+).reddit.com\/?(?:\??[\w]+=[\w]+&?)*/i),
- exclude: Array(
- /\/Dashboard\//i,
- /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),
- isMatchURL: function() {
- return RESUtils.isMatchURL(this.moduleID);
- },
- createNSFWButton: function(nsfwState) {
- var parentDiv = document.querySelector('div#header-bottom-right ul.flat-list');
- var dv = document.createElement("span");
- dv.setAttribute("id", "nsfwSpan");
- dv.innerHTML = '<button type="button" style="border:0px !important;padding:0px !important;font-size:10px !important" id="nsfwButton">' + nsfwState + '</button> | ';
- parentDiv.parentNode.insertBefore(dv, parentDiv);
- },
- setNSFW: function(nsfwState, nsfwDisplay) {
- var over18 = document.querySelectorAll('.thing:not(.over18)');
- document.getElementById('nsfwButton').innerHTML = nsfwState
- if (over18.length > 0) {
- for (var x = 0, leno = over18.length; x < leno; x += 1) {
- if (!(over18[x].className.match(/_filtered/i))) {
- over18[x].setAttribute('style', 'display:' + nsfwDisplay);
- }
- }
- }
- RESStorage.setItem('RESoptions.sfwFilter.state', nsfwState);
- },
- addListener: function(thisOff, thisOn) {
- document.querySelector('#nsfwButton').addEventListener('click', function() {
- if (this.innerHTML == 'OFF') {
- modules['sfwFilter'].setNSFW(thisOn, "none");
- } else {
- modules['sfwFilter'].setNSFW(thisOff, "block");
- }
- });
- },
- go: function() {
- if ((this.isEnabled()) && (this.isMatchURL())) {
- var divs,
- nsfwState,
- thisOn = 'ON',
- thisOff = 'OFF';
- RESStorage.getItem('RESoptions.sfwFilter.state') != null ? nsfwState = RESStorage.getItem('RESoptions.sfwFilter.state') : nsfwState = 'OFF';
- console.log(nsfwState);
- this.createNSFWButton(nsfwState);
- this.addListener(thisOff, thisOn);
- document.body.addEventListener('DOMNodeInserted', function(event) {
- if ((event.target.tagName == 'DIV') && (event.target.getAttribute('id') && event.target.getAttribute('id').indexOf('siteTable') != -1)) {
- divs = event.target.querySelectorAll('.content .thing');
- for (var i = 0, lend = divs.length; i < lend; i += 1) {
- if (divs[i].getAttribute('style')) {
- if ((divs[i].getAttribute('style').match(/none/i)) && (!(divs[i].className.match(/_filtered/i)))) {
- divs[i].className += '_filtered';
- }
- }
- }
- nsfwState = document.querySelector('#nsfwButton').innerHTML;
- if ((nsfwState === 'ON')) {
- modules['sfwFilter'].setNSFW(thisOff, "block");
- } else {
- modules['sfwFilter'].setNSFW(thisOn, "none");
- }
- }
- }, true);
- divs = document.querySelectorAll('.content .thing');
- for (var i = 0, lend = divs.length; i < lend; i += 1) {
- if (divs[i].getAttribute('style')) {
- if ((divs[i].getAttribute('style').match(/none/i)) && (!(divs[i].className.match(/_filtered/i)))) {
- divs[i].className += '_filtered';
- }
- }
- }
- if(nsfwState==='ON') {
- modules['sfwFilter'].setNSFW(thisOn, "none");
- }
- }
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement