Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- modules['nsfwFilter'] = {
- moduleID: 'nsfwFilter',
- moduleName: 'NSFW Filter',
- category: 'Filters',
- options: {
- invertFilter: {
- type: 'boolean',
- value: false,
- description: 'Turning this option on inverts the NSFW filter to show ONLY NSFW posts.'
- }
- },
- description: 'Adds a toggle button to turn NSFW or 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, invertState, nsfwDisplay) {
- if(invertState===true){
- var over18 = $('.thing:not(.over18)').not('.RESFiltered');
- } else {var over18 = $('.thing.over18').not('.RESFiltered');;
- }
- document.getElementById('nsfwButton').innerHTML = nsfwState
- if (over18.length > 0) {
- for (var x = 0, leno = over18.length; x < leno; x += 1) {
- over18[x].setAttribute('style', 'display:' + nsfwDisplay);
- }
- }
- RESStorage.setItem('RESoptions.nsfwFilter.state', nsfwState);
- },
- addListener: function(thisOff, thisOn, invertState) {
- document.querySelector('#nsfwButton').addEventListener('click', function() {
- if (this.innerHTML == 'OFF') {
- modules['nsfwFilter'].setNSFW(thisOn, invertState, "none");
- } else {
- modules['nsfwFilter'].setNSFW(thisOff, invertState, "block");
- }
- });
- },
- go: function() {
- if ((this.isEnabled()) && (this.isMatchURL())) {
- var divs,
- nsfwState,
- invertState,
- thisOn = 'ON',
- thisOff = 'OFF';
- RESStorage.getItem('RESoptions.nsfwFilter.state') != null ? nsfwState = RESStorage.getItem('RESoptions.nsfwFilter.state') : nsfwState = 'OFF';
- invertState = this.options.invertFilter.value || false;
- this.createNSFWButton(nsfwState);
- this.addListener(thisOff, thisOn, invertState);
- document.body.addEventListener('DOMNodeInserted', function(event) {
- if ((event.target.tagName == 'DIV') && (event.target.getAttribute('id') && event.target.getAttribute('id').indexOf('siteTable') != -1)) {
- nsfwState = document.querySelector('#nsfwButton').innerHTML;
- if(nsfwState==='ON' && invertState===true) {
- modules['nsfwFilter'].setNSFW(thisOn, invertState, "none");
- } else if(nsfwState==='ON' && invertState===false) {
- modules['nsfwFilter'].setNSFW(thisOn, invertState, "none");
- }
- }
- }, true);
- if(nsfwState==='ON' && invertState===true) {
- modules['nsfwFilter'].setNSFW(thisOn, invertState, "none");
- } else if(nsfwState==='ON' && invertState===false) {
- modules['nsfwFilter'].setNSFW(thisOn, invertState, "none");
- }
- }
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement