InoReader Starred Articles Sticky Note

Shows a new block which contains the last starred items in the selected feed

  1. // ==UserScript==
  2. // @name InoReader Starred Articles Sticky Note
  3. // @description Shows a new block which contains the last starred items in the selected feed
  4. // @namespace http://www.inoreader.com/
  5. // @version 0.12
  6. // @copyright Zoltan Wacha
  7. // @include http://www.inoreader.com/*
  8. // @include https://www.inoreader.com/*
  9. // @require http://code.jquery.com/jquery-latest.js
  10. // @grant GM_addStyle
  11. // @grant GM_setValue
  12. // @grant GM_getValue
  13. // ==/UserScript==
  14.  
  15. GM_addStyle ( " \
  16. #z_starred_list{ \
  17. margin: 8px; \
  18. padding: 12px; \
  19. background-color: #fffef7; \
  20. font-size: 12px; \
  21. }\
  22. .z_starred_list_item{ \
  23. padding: 4px; \
  24. background-color: #fffef7; \
  25. cursor: pointer; \
  26. }\
  27. .z_starred_list_item:hover{ \
  28. text-decoration: underline; \
  29. }\
  30. " );
  31.  
  32. document.getElementById('reader_pane').addEventListener('DOMNodeInserted', gmMain, false);
  33.  
  34. function gmMain() {
  35. if(GM_getValue("backLink") == null)
  36. {
  37. if($('#reader_pane').length > 0 && ($('#reader_pane #next_articles').length > 0 || $('#reader_pane #no_more_div').length > 0 || $('#reader_pane .reader_pane_message').length > 0) && !$('#reader_pane #z_starred_list').length > 0)
  38. {
  39. var str = location.href;
  40. var res = str.split("/");
  41.  
  42. if(res[res.length-2] == 'feed')
  43. {
  44. if($('#reader_pane #no_more_div').length > 0)
  45. {
  46. $('<div id="z_starred_list"></div>').insertBefore('#reader_pane #no_more_div');
  47. }
  48. else
  49. {
  50. $('<div id="z_starred_list"></div>').prependTo('#reader_pane');
  51. }
  52.  
  53. $.ajax({
  54. url: 'https://www.inoreader.com/reader/atom/feed/'+res[res.length-1]+'?it=user/-/state/com.google/starred&output=json&getEncodedArticleIds=1&AppId=1000001306&AppKey=1JOdmPhjRI_un9p1o5sm7lM6qyar2QS8',
  55. async: true,
  56. cache: false,
  57. dataType: "json"
  58. })
  59. .fail(function() {
  60.  
  61. })
  62. .done(function( data ) {
  63. if(data['items'].length > 0)
  64. {
  65. $('<strong>Starred articles here:</strong>').prependTo('#reader_pane #z_starred_list');
  66. $.each(data['items'], function (index, value) {
  67. var outputText = $('<textarea />').html(value['title']).text();
  68. $('<div/>', {
  69. class: 'z_starred_list_item',
  70. text: outputText,
  71. onclick: 'window.open(\'http://www.inoreader.com/article/'+value['encodedId']+'\');'
  72. }).appendTo('#z_starred_list');
  73. });
  74. var x = document.getElementById('z_starred_list');
  75. x.addEventListener('click', setBackLink, false);
  76. }
  77. else
  78. {
  79. $('<strong>No starred articles here.</strong>').prependTo('#reader_pane #z_starred_list');
  80. }
  81. });
  82. }
  83. }
  84. }
  85. else if(!$('#reader_pane #z_starred_list').length > 0)
  86. {
  87. $('<div id="z_starred_list"></div>').insertBefore('#reader_pane #no_more_div');
  88. $('<div/>', {
  89. class: 'z_starred_list_item',
  90. text: '<< Back to the feed',
  91. onclick: 'javascript:window.location.href = \'' + GM_getValue("backLink") + '\''
  92. }).appendTo('#reader_pane #z_starred_list');
  93. GM_setValue("backLink", null);
  94. }
  95. }
  96.  
  97. function setBackLink() {
  98. GM_setValue("backLink", location.href);
  99. }