Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- modules['nsfwToggle'] = { ///// Must be inserted AFTER the filteReddit module //////
- moduleID: 'nsfwToggle',
- moduleName: 'NSFW Toggle',
- category: 'Filters',
- options: {
- nsfwLabel: {
- type: 'text',
- value: ['NSFW'],
- description: 'Button label to show when in NSFW mode'
- },
- sfwLabel: {
- type: 'text',
- value: ['SFW'],
- description: 'Button label to show when in SFW mode'
- }
- },
- description: 'Adds a toggle button to turn NSFW posts on/off.',
- isEnabled: function() {
- return RESConsole.getModulePrefs(this.moduleID);
- },
- include: Array(/https?:\/\/([a-z]+).reddit.com\/?(?:\??[\w]+=[\w]+&?)*/i),
- exclude: Array(/reddit.com\/r\//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() {
- 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">' + this.options.nsfwLabel.value + '</button> | ';
- parentDiv.parentNode.insertBefore(dv, parentDiv);
- },
- setNSFW: function(nsfwValue, nsfwDisplay) {
- var over18 = document.querySelectorAll('.content .over18'),
- hidden = document.querySelectorAll('.content .hidden');
- document.getElementById('nsfwButton').innerHTML = nsfwValue;
- if (hidden.length > 0) {
- for (var i = 0, lehh = hidden.length; i < lenh; i += 1) {
- hidden[i].setAttribute('style', 'display:none !important');
- }
- }
- 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);
- }
- }
- }
- },
- addListener: function(nsfwLabel, sfwLabel) {
- document.querySelector('#nsfwButton').addEventListener('click', function() {
- if (this.innerHTML == nsfwLabel) {
- modules['nsfwToggle'].setNSFW(sfwLabel, "none");
- } else {
- modules['nsfwToggle'].setNSFW(nsfwLabel, "block");
- }
- });
- },
- go: function() {
- if ((this.isEnabled()) && (this.isMatchURL())) {
- var divs,
- nsfwval,
- nsfwLabel = this.options.nsfwLabel.value,
- sfwLabel = this.options.sfwLabel.value;
- this.createNSFWButton();
- this.addListener(nsfwLabel, sfwLabel);
- 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';
- }
- }
- }
- nsfwVal = document.querySelector('#nsfwButton').innerHTML;
- if ((typeof(nsfwVal) === "undefined") || (nsfwVal === nsfwLabel)) {
- modules['nsfwToggle'].setNSFW(nsfwLabel, "block");
- } else {
- modules['nsfwToggle'].setNSFW(sfwLabel, "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';
- }
- }
- }
- }
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement