Advertisement
Guest User

Ukrywaczka do ogłoszeń na Roksie

a guest
Nov 28th, 2015
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name           roksahidden
  3. // @namespace      roksahdn
  4. // @description    filtr ukrywający nieinteresujące nas ogłoszenia z listy ulubionych
  5. // @version        1
  6. // @include        http://*.roksa.pl/*/logowanie*
  7. // ==/UserScript==
  8.  
  9. (function (){
  10.  
  11. var frazyDoUkrycia = [
  12.     'nie, nie, nie',
  13.     'nie!',
  14.     'omijać',
  15.     'leniwa',
  16.     'naciągara',
  17.     'nie polecana',
  18.     'szału ni ma',
  19.     'dupy nie urywa',
  20.     'roksahidden'
  21. ];
  22.  
  23. var tylkoWybraneMiasta = [
  24. ];
  25.  
  26. var cssUkryj = '.roksahidden { display: none; } ';
  27. var cssWyszarz =
  28.     '.roksahidden .favourites_box_content p, .roksahidden .favourites_box_date, .roksahidden .favourites_box_date h4 , .roksahidden .favourites_box_date > span { color:#999; } ' +
  29.     '.roksahidden img { opacity:0.2; filter:alpha(opacity=20); }' +
  30.     '.roksahidden .favourites_box_content h5, .roksahidden .favourites_box_date .favourites_prices span { opacity:0.2; filter:alpha(opacity=20); }';
  31.  
  32. var doDebug = false;
  33.  
  34. //-----------------------------------------------------------
  35.  
  36. function createElem(tag, attr, text) {
  37.     var el = document.createElement(tag);
  38.     if (typeof text != 'undefined')
  39.         el.textContent = text;
  40.     for (k in attr)
  41.         el.setAttribute(k, attr[k]);
  42.     return el;
  43. }
  44.  
  45. function getCssMode()
  46. {
  47.     var mode = parseInt(localStorage.getItem('roksahiddencss_mode'));
  48.     if (mode == null) {
  49.         mode = 1;
  50.     }
  51.     return mode;
  52. }
  53.  
  54. function setCssUi(ev)
  55. {
  56.     event = event || ev;
  57.     setCss(event.target.value);
  58. }
  59.  
  60. function setCss(mode)
  61. {
  62.     if (typeof mode == 'undefined'){
  63.         mode = getCssMode();
  64.     }
  65.     mode = parseInt(mode);
  66.     if (doDebug) console.log('Set CSS: ' + mode);
  67.     var elem = document.getElementById('roksahiddencss');
  68.     if (elem == null){
  69.         var head = document.getElementsByTagName('head')[0];
  70.         elem = createElem('style', { 'type':'text/css', 'id':'roksahiddencss' } );
  71.         head.appendChild(elem);
  72.     }
  73.     var cssContent = '';
  74.     switch(mode){
  75.         case 0:
  76.             cssContent = cssUkryj;
  77.             break;
  78.         case 1:
  79.             cssContent = cssWyszarz;
  80.             break;
  81.     }
  82.     elem.textContent = cssContent;
  83.     if (getCssMode() != mode){
  84.         localStorage.setItem('roksahiddencss_mode',mode);
  85.         if (doDebug) console.log('Save CSS: ' + mode);
  86.     }
  87. }
  88.  
  89. function createSwitcher()
  90. {
  91.     var elem = document.getElementById('roksahiddenswitcher');
  92.     if (elem == null){
  93.         var head = document.getElementById('favourites_content_header');
  94.         if (head == null){
  95.             return;
  96.         }
  97.         elem = createElem('select', {'id':'roksahiddenswitcher', 'style':'margin-left: 0.7em'});
  98.         elem.addEventListener('change', setCssUi);
  99.         var mode = getCssMode();
  100.         var opts = ['Ukryj niechciane', 'Wyszarz niechciane', 'Pokaż wszystkie'];
  101.         for (var i=0; i<opts.length; i++){
  102.             var item = createElem('option', {'value':i}, opts[i]);
  103.             if (i === mode)
  104.                 item.setAttribute('selected', 'selected');
  105.             elem.appendChild(item);
  106.         }
  107.         head.appendChild(elem);
  108.     }
  109. }
  110.  
  111. function doIt(){
  112.     if (!String.prototype.trim) {
  113.         String.prototype.trim = function () {
  114.             return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
  115.         };
  116.     }
  117.     setCss();
  118.     createSwitcher();
  119.     var xp = document.evaluate("//div[@id='user_content']/div", document, null,
  120.         XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
  121.     if (doDebug) console.log('roksafilter, start: ' + xp.snapshotLength);
  122.  
  123.     for (var k=0; k<tylkoWybraneMiasta.length; k++)
  124.         tylkoWybraneMiasta[k] = tylkoWybraneMiasta[k].toLowerCase();
  125.     for (var k=0; k<frazyDoUkrycia.length; k++)
  126.         frazyDoUkrycia[k] = frazyDoUkrycia[k].toLowerCase();
  127.        
  128.     for (var i=0; i<xp.snapshotLength; i++){
  129.         var elem = xp.snapshotItem(i);
  130.         if (doDebug) console.log('przetwarzam ' + elem.getAttribute('id') + ' ' +
  131.             document.evaluate(".//div[@class='favourites_box_date']/a/h4", elem, null,
  132.                 XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.textContent);
  133.         var doHide = false;
  134.         if (tylkoWybraneMiasta.length > 0){
  135.             doHide = true;
  136.             var xp2 = document.evaluate(".//div[@class='favourites_box_date']", elem, null,
  137.                 XPathResult.FIRST_ORDERED_NODE_TYPE, null);
  138.             if (xp2.singleNodeValue != null){
  139.                 var elem2 = xp2.singleNodeValue;
  140.                 var txt = '';
  141.                 for (var l = 0; l < elem2.childNodes.length; ++l)
  142.                     if (elem2.childNodes[l].nodeType === Node.TEXT_NODE)
  143.                         txt += elem2.childNodes[l].textContent + ' ';
  144.                 txt = txt.trim().toLowerCase();
  145.                 if (doDebug) console.log('miasto: ' + txt);
  146.                 for (var k=0; k<tylkoWybraneMiasta.length; k++){
  147.                     if (txt.indexOf(tylkoWybraneMiasta[k]) > -1){
  148.                         doHide = false;
  149.                         break;
  150.                     }
  151.                 }
  152.             }
  153.         }
  154.         if (doHide == false && frazyDoUkrycia.length > 0){
  155.             var xp2 = document.evaluate(".//div[@class='favourites_box_content']/p", elem, null,
  156.                 XPathResult.FIRST_ORDERED_NODE_TYPE, null);
  157.             if (xp2.singleNodeValue != null){
  158.                 var elem2 = xp2.singleNodeValue;
  159.                 var txt = elem2.textContent.trim().toLowerCase();
  160.                 if (doDebug) console.log('opis: ' + txt);
  161.                 for (var k=0; k<frazyDoUkrycia.length; k++){
  162.                     if (txt.indexOf(frazyDoUkrycia[k]) > -1){
  163.                         doHide = true;
  164.                         break;
  165.                     }
  166.                 }
  167.             }
  168.         }
  169.         if (doDebug) console.log(elem.getAttribute('id') + ' --> ' + doHide);
  170.         if (doHide){
  171.             elem.setAttribute('class', elem.getAttribute('class') + ' roksahidden');
  172.         } else {
  173.             //elem.setAttribute('class', elem.getAttribute('class').replace('roksahidden', ''));
  174.         }
  175.     }
  176. }
  177. doIt();
  178. })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement