WykopSeen

Add Seen button to hide seen wykops

当前为 2015-01-04 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name WykopSeen
  3. // @namespace http://www.wykop.pl/
  4. // @require http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
  5. // @version 0.3
  6. // @description Add Seen button to hide seen wykops
  7. // @author axem.pl
  8. // @match http://www.wykop.pl/
  9. // @match http://www.wykop.pl/wykopalisko/*
  10. // @grant GM_getValue
  11. // @grant GM_setValue
  12. // @grant GM_deleteValue
  13. // ==/UserScript==
  14.  
  15. var jq = this.$ = this.jQuery = jQuery.noConflict(true);
  16.  
  17. function eachLi() {
  18. var self = jq(this);
  19. var parent = self.parent();
  20. var btn = jq('<button class=\'seen-btn\'></button>');
  21. var seenWykopClass = 'seen';
  22. var href = self.find('h2 a').attr('href');
  23. function getSeenBtnText() {
  24. if (self.hasClass(seenWykopClass)) {
  25. return 'UNSEE';
  26. } else {
  27. return 'SEEN';
  28. }
  29. }
  30. function btnOnClick() {
  31. self.toggleClass(seenWykopClass);
  32. btn.text(getSeenBtnText());
  33. if (self.hasClass(seenWykopClass)) {
  34. GM_setValue(href, 1);
  35. parent.append(self);
  36. } else {
  37. GM_deleteValue(href);
  38. parent.prepend(self);
  39. }
  40. }
  41. if (GM_getValue(href)) {
  42. self.addClass(seenWykopClass);
  43. parent.append(self);
  44. }
  45. btn.text(getSeenBtnText());
  46. self.children('div').append(btn);
  47. btn.on("click", btnOnClick);
  48. }
  49. function cssRules() {
  50. var rules = [
  51. 'li.seen { background: lightgray }',
  52. 'li.seen * { color: gray !important }',
  53. 'li.seen .diggbox { display: none }',
  54. 'li.seen .media-content { display: none }',
  55. 'li.seen .fix-tagline { display: none }',
  56. 'li.seen .description { display: none }',
  57. 'li.seen .elements { display: none }',
  58. 'li.seen .article { min-height: 0 }',
  59. '.seen-btn { position: absolute; top: 5px; right: 5px; z-index: 9999 }'
  60. ];
  61. return rules.join('\n');
  62. }
  63. function exec() {
  64. jq(document.body).append(jq('<style type=\'text/css\'></style>').html(cssRules()));
  65. var wykops = jq('#itemsStream li');
  66. for (var i = 0, iLen = wykops.length; i < iLen; ++i) {
  67. var x = wykops[i];
  68. eachLi.call(x);
  69. }
  70. jq('#itemsStream li').each(eachLi);
  71. }
  72. exec();