pgb22

(Greasemonkey) Hide Selected Scribd Items - bugged

Feb 7th, 2020
102
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name              Hide Selected Scribd Items
  3. // @namespace       petergblake.gmail.com
  4. // @include         https://www.scribd.com/search?*
  5. // @grant       GM.getValue
  6. // @grant       GM.setValue
  7. // ==/UserScript==
  8. // Based on "Hide Selected Craigslist Listings" by vertigoelectric
  9.  
  10. ShowHideToggle = 1;
  11.  
  12. var $;
  13.  
  14. // Scribd already uses jQuery, so there is no need to add it again
  15. // As of 6/2/2020, the version used is 3.3.1
  16. GM_wait();
  17.  
  18. // Check if jQuery's loaded
  19. function GM_wait() {
  20.     if (typeof unsafeWindow.jQuery == 'undefined') {
  21.         window.setTimeout(GM_wait, 100);
  22.     } else {
  23.         $ = unsafeWindow.jQuery.noConflict(true);
  24.         letsJQuery();
  25.     }
  26. }
  27.  
  28. function letsJQuery() {
  29.     //alert($); // check if the dollar (jquery) function works
  30.     //alert($().jquery); // check jQuery version
  31.    
  32.     // Fetch blocklist and break it into individual IDs
  33.     IDlistArray = String(GM.getValue("scribdIDlist")).split("|");
  34.     IDlistCount = IDlistArray.length - 1;
  35.      
  36.     // Add page-wide controls
  37.     $('span.results_count').append(' <span id="HiddenCount">[Total hidden across Scribd: '+IDlistCount+']</span>');
  38.     $('span.results_count').append('<input type="button" id="UnhideButton" onclick="unhideAll();" value="Unhide All '+IDlistCount+'">');
  39.     $('span.results_count').append('<input type="button" id="ShowHideButton" onclick="ShowHidden();" value="Show Hidden">');
  40.    
  41.     if (IDlistCount < 1) {
  42.         $('#ShowHideButton').attr('disabled','true');
  43.         $('#UnhideButton').attr('disabled','true');
  44.     }
  45.  
  46.     // Add item-level hide/unhide controls
  47.     $('div.controls').append('<div><input title="Hide" type="button" id="hide" onclick="hideListing(this);" value="X"</div>');
  48.   $('div.controls').append('<div><input title="Unhide" type="button" id="unhide" onclick="unhideListing(this);" value="X" style="display:none"</div>');
  49.  
  50.   // Hide each ID on the blocklist
  51.     for (x in IDlistArray)
  52.     {
  53.         if (IDlistArray[x])
  54.         {
  55.             someID = IDlistArray[x];
  56.             $('a[id="'+someID+'"]').parent().parent().css('display','none');
  57.         }
  58.     }
  59.  
  60.     // Hide the item corresponding to a particular "Hide" button
  61. function hideListing(node) {
  62.       setTimeout(function() {
  63.         someID = buttonPressed.parent().parent().getElementsByTagName('a')[0].getAttribute('id');
  64.         itemID = "|"+someID;
  65.         if (!GM.getValue("scribdIDlist")) {
  66.             IDlist = "";
  67.             var checkID = "";
  68.             GM.setValue("scribdIDlist", String(itemID));
  69.         } else {
  70.             IDlist = GM.getValue("scribdIDlist");
  71.             var checkID = IDlist.indexOf(itemID);
  72.             if (checkID == -1) {
  73.                 newIDlist = itemID + GM.getValue("scribdIDlist");
  74.                 GM.setValue("scribdIDlist", String(newIDlist));
  75.             }
  76.         }
  77.        
  78.         // Hide "Hide" button
  79.         buttonPressed.css('display','none');
  80.         // Show corresponding "Unhide" button
  81.         buttonPressed.parent().getElementById('unhide')[0].css('display','initial');
  82.  
  83.         // Hide or fade out this item
  84.         if (ShowHideToggle == 0) {
  85.             $('a[id="'+someID+'"]').parent().parent().css('opacity','0.3');
  86.         } else if (ShowHideToggle == 1) {
  87.             $('a[id="'+someID+'"]').parent().parent().css('display','none');
  88.         }
  89.        
  90.         // Update total hidden
  91.         IDlistArray = String(GM_getValue("scribdIDlist")).split("|");
  92.         IDlistCount = IDlistArray.length - 1;
  93.         $('#HiddenCount').html('[Total hidden across Scribd: '+IDlistCount+']');
  94.        
  95.         // Update page-level controls
  96.         $('#ShowHideButton').removeAttr('disabled');
  97.         $('#UnhideButton').removeAttr('disabled');
  98.       }, 0);
  99. };
  100.  
  101. // Components.utils.exportFunction(hideListing, unsafeWindow, { defineAs: "hideListing" });  
  102.  
  103.     // Unhide the item corresponding to a particular "Unhide" button
  104.     unsafeWindow.unhideListing = function(node) {
  105.       setTimeout(function() {
  106.             someID = buttonPressed.parent().parent().getElementsByTagName('a')[0].getAttribute('id');
  107.             remitemID = "|"+someID;
  108.             IDlist = GM.getValue("scribdIDlist");
  109.             var checkID = IDlist.indexOf(remitemID);
  110.             if (checkID != -1) {
  111.                 newIDlist = IDlist.replace(remitemID,'');
  112.                 GM.setValue("scribdIDlist", String(newIDlist));
  113.             }
  114.  
  115.         // Hide "Unhide" button
  116.         buttonPressed.css('display','none');
  117.         // Unhide corresponding "Hide" button      
  118.         buttonPressed.parent().getElementById('hide')[0].css('display','initial');
  119.  
  120.         // Un-fade this item
  121.         $('a[id="'+someID+'"]').parent().parent().css('display','initial');    
  122.         $('a[id="'+someID+'"]').parent().parent().css('opacity','1');
  123.  
  124.         // Update page-level controls
  125.         IDlistArray = String(GM.getValue("scribdIDlist")).split("|");
  126.         IDlistCount = IDlistArray.length - 1;      
  127.         if (IDlistCount < 1) {
  128.             $('#ShowHideButton').attr('disabled','true');
  129.             $('#UnhideButton').attr('disabled','true');
  130.         }  
  131.        
  132.         // Update total hidden
  133.         $('#HiddenCount').html('[Total hidden across Scribd: '+IDlistCount+']');
  134.       }, 0);
  135.     };
  136.  
  137.     // Unhide everything, which is the same as erasing the blocklist
  138.     unsafeWindow.unhideAll = function() {
  139.       setTimeout(function() {
  140.         GM_deleteValue("scribdIDlist");
  141.         location.reload();
  142.       }, 0);
  143.     };
  144.  
  145.     // Toggle hidden documents between visible but faded and completely hidden
  146.     unsafeWindow.ShowHidden = function() {
  147.       setTimeout(function() {  
  148.         IDlistArray = String(GM.getValue("scribdIDlist")).split("|");
  149.         if (ShowHideToggle == 1) {
  150.             for (x in IDlistArray)
  151.             {
  152.                 if (IDlistArray[x])
  153.                 {
  154.                     $('a[id="'+IDlistArray[x]+'"]').parent().parent().css('display','initial');
  155.                     $('a[id="'+IDlistArray[x]+'"]').parent().parent().css('opacity','0.3');
  156.                 }
  157.             }
  158.             $('#ShowHideButton').attr('value','Hide Again');
  159.             ShowHideToggle = 0;
  160.         } else if (ShowHideToggle == 0) {
  161.             for (x in IDlistArray)
  162.             {
  163.                 if (IDlistArray[x])
  164.                 {
  165.                     $('a[id="'+IDlistArray[x]+'"]').parent().parent().css('display','none');
  166.                 }
  167.             }
  168.             $('#ShowHideButton').attr('value','Show Hidden');
  169.             ShowHideToggle = 1;
  170.         }
  171.                
  172.       }, 0);       
  173.     }
  174. }
RAW Paste Data