Advertisement
gavin19

Sidebar toggle 2

Nov 11th, 2011
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. modules['collapsibleSidebar'] = {
  2.     moduleID: 'collapsibleSidebar',
  3.     moduleName: 'Collapsible Sidebar',
  4.     category: 'UI',
  5.     description: 'Provides a link to hide/show the sidebar.',
  6.     options: {
  7.         collapseByDefault: {
  8.             type: 'boolean',
  9.             value: 'false',
  10.             description: 'Collapse sidebar by default.'
  11.         },
  12.         retainAdframe: {
  13.             type: 'boolean',
  14.             value: 'true',
  15.             description: 'Keep the Reddit sponsored ad frame'
  16.         }
  17.     },
  18.     isEnabled: function() {
  19.         return RESConsole.getModulePrefs(this.moduleID);
  20.     },
  21.     include: Array(/https?:\/\/([a-z]+).reddit.com\/[\?]*/i),
  22.     exclude: Array(/https?:\/\/([a-z]+).reddit.com\/prefs+/i, /https?:\/\/([a-z]+).reddit.com\/message\/[-\w\.]+/i, /https?:\/\/([a-z]+).reddit.com\/[-\w\.\/]*\/submit\/?/i, /https?:\/\/([a-z]+).reddit.com\/submit\/?/i),
  23.     isMatchURL: function() {
  24.         return RESUtils.isMatchURL(this.moduleID);
  25.     },
  26.     go: function() {
  27.         if ((this.isEnabled()) && (this.isMatchURL())) {
  28.             var header = document.querySelector('#header');
  29.             var collapseButton = document.createElement('div');
  30.             collapseButton.setAttribute('id', 'collapseButton');
  31.             collapseButton.setAttribute('class', 'sideVisible');
  32.             collapseButton.setAttribute('style', 'cursor:pointer;position:absolute;bottom:0;right:0;font-size:20px;');
  33.             collapseButton.innerHTML = '▶';
  34.             collapseButton.addEventListener('click', function() {
  35.                 modules['collapsibleSidebar'].toggleSidebar();
  36.             });
  37.             header.appendChild(collapseButton);
  38.             if (this.options.collapseByDefault.value === true) {
  39.                 this.toggleSidebar(true);
  40.             }
  41.         }
  42.     },
  43.     toggleSidebar: function(state, ad) {
  44.         var sideSpcr;
  45.         if ((this.options.retainAdframe.value === true)&&(collapseButton.className.match(/sideVisible/))) {
  46.             document.querySelectorAll('.side .spacer #ad-frame')[0].parentNode.setAttribute('sideadframe','');
  47.         };
  48.         var sidebarButton = document.querySelector('#collapseButton');
  49.         var side = document.querySelector('.side');
  50.  
  51.         if (state || collapseButton.className.match(/sideVisible/)) {
  52.             sidebarButton.innerHTML = '◀';
  53.             sidebarButton.className = 'sideHidden';
  54.             if (this.options.retainAdframe.value === true) {
  55.                 sideSpcr = document.querySelectorAll('.side .spacer:not([sideadframe])');
  56.                 for (var i = 0, len = sideSpcr.length; i < len; i += 1) {
  57.                     sideSpcr[i].style.display = 'none';
  58.                 }
  59.             }
  60.             else {
  61.                 side.style.display = 'none';
  62.             }
  63.         }
  64.         else {
  65.             sidebarButton.innerHTML = '&#x25B6;';
  66.             sidebarButton.className = 'sideVisible';
  67.             sideSpcr = document.querySelectorAll('.side .spacer:not([sideadframe])');
  68.                 for (var i = 0, len = sideSpcr.length; i < len; i += 1) {
  69.                     sideSpcr[i].style.display = 'block';
  70.                 }
  71.         }
  72.     },
  73. };
  74.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement