ffn work block

permanently hide selected works

  1. // ==UserScript==
  2. // @name ffn work block
  3. // @namespace https://greasyfork.org/en/users/36620
  4. // @version 0.1
  5. // @description permanently hide selected works
  6. // @author scriptfairy
  7. // @include http://www.fanfiction.net/*
  8. // @include https://www.fanfiction.net/*
  9. // @require http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js
  10. // @grant GM_setValue
  11. // @grant GM_getValue
  12. // @grant GM_listValues
  13. // @grant GM_deleteValue
  14. // ==/UserScript==
  15.  
  16. (function($) {
  17. function blockThis(work) {
  18. var id = $(work).find('.stitle').attr('href');
  19. GM_setValue(id, id);
  20. GM_setValue('last', id);
  21. }
  22. function blockAll(works) {
  23. var blocked = GM_listValues();
  24. for (j=0;j<works.length;j++) {
  25. var workId = $(works[j]).find('.stitle').attr('href');
  26. if ($.inArray(workId, blocked) != -1) {
  27. $(works[j]).hide();
  28. }
  29. }
  30. }
  31. $(document).ready(function() {
  32. var works = $('div.z-list');
  33. blockAll(works);
  34. $('<style>').text('.workblock a {cursor:pointer;} a.workblock {margin-left: 20px;}').appendTo($('head'));
  35.  
  36. // unblock works
  37. $('#zmenu .xmenu_item:last-child').after('<div class="dropdown xmenu_item workblock"><a class="dropdown-toggle" data-toggle="dropdown">Work Block <b class="caret"></b></a><ul class="dropdown-menu"><li class="clear-last"><a>Unblock last</a></li><li class="clear-all"><a>Unblock all</a></li></ul></div>');
  38. $('.workblock .clear-all').click(function() {
  39. var keys = GM_listValues();
  40. for (k=0;k<keys.length; k++) {
  41. GM_deleteValue(keys[k]);
  42. }
  43. location.reload();
  44. });
  45. $('.workblock .clear-last').click(function() {
  46. var unblockId = GM_getValue('last');
  47. GM_deleteValue('last');
  48. GM_deleteValue(unblockId);
  49. location.reload();
  50. });
  51.  
  52. // block works
  53. for (i=0;i<works.length;i++) {
  54. $(works[i]).find('.z-padtop').before('<a href="javascript:void(0)" class="workblock block">Block</a>');
  55. }
  56. $('.workblock.block').click(function() {
  57. var work = $(this).parents('div.z-list');
  58. blockThis(work);
  59. $(work).hide();
  60. });
  61. });
  62. })(window.jQuery);