mobile.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. var backend = "backend.php";
  2. function toggleMarked(id, elem) {
  3. var toggled = false;
  4. if (elem.getAttribute("toggled") == "true") {
  5. toggled = 1;
  6. } else {
  7. toggled = 0;
  8. }
  9. var query = "?op=toggleMarked&id=" + id + "&mark=" + toggled;
  10. new Ajax.Request(backend, {
  11. parameters: query,
  12. onComplete: function (transport) {
  13. //
  14. } });
  15. }
  16. function togglePublished(id, elem) {
  17. var toggled = false;
  18. if (elem.getAttribute("toggled") == "true") {
  19. toggled = 1;
  20. } else {
  21. toggled = 0;
  22. }
  23. var query = "?op=togglePublished&id=" + id + "&pub=" + toggled;
  24. new Ajax.Request(backend, {
  25. parameters: query,
  26. onComplete: function (transport) {
  27. //
  28. } });
  29. }
  30. function toggleUnread(id, elem) {
  31. var toggled = false;
  32. if (elem.getAttribute("toggled") == "true") {
  33. toggled = 1;
  34. } else {
  35. toggled = 0;
  36. }
  37. var query = "?op=toggleUnread&id=" + id + "&unread=" + toggled;
  38. new Ajax.Request(backend, {
  39. parameters: query,
  40. onComplete: function (transport) {
  41. //
  42. } });
  43. }
  44. function setPref(elem) {
  45. var toggled = false;
  46. var id = elem.id;
  47. if (elem.getAttribute("toggled") == "true") {
  48. toggled = 1;
  49. } else {
  50. toggled = 0;
  51. }
  52. var query = "?op=setPref&id=" + id + "&to=" + toggled;
  53. new Ajax.Request(backend, {
  54. parameters: query,
  55. onComplete: function (transport) {
  56. //
  57. } });
  58. }
  59. // Go directly to another item in the same feed
  60. function goToSibling(article_id, feed_id, link, step) {
  61. var links = linksInFeed(feed_id);
  62. for (var i=0 ; i<links.length ; i++) {
  63. var re = new RegExp(".*article\\.php\\?id="+article_id+"&.*");
  64. if (!re.test(links[i].href)) continue;
  65. // here, we've found the current article
  66. var index = i + step;
  67. if (index < 0) {
  68. markAsRead(feed_id);
  69. iui.showPage($("feed-"+feed_id), true);
  70. return false;
  71. }
  72. if (index >= links.length) {
  73. showRestOfFeed(feed_id);
  74. return false;
  75. }
  76. console.log(links[index]);
  77. var match = links[index].href.match(/.*article\.php\?(.*)/);
  78. var qs = match[1];
  79. var backwards = false;
  80. if (step < 0) backwards = true;
  81. link.setAttribute("selected", "progress");
  82. function unselect() { link.removeAttribute("selected"); }
  83. iui.showPageByHref("article.php?"+qs, null, null, null, unselect, backwards);
  84. return false;
  85. }
  86. return false;
  87. }
  88. function goPrev(article_id, feed_id, link) {
  89. return goToSibling(article_id, feed_id, link, -1);
  90. }
  91. function goNext(article_id, feed_id, link) {
  92. return goToSibling(article_id, feed_id, link, 1);
  93. }
  94. // Get all the links in the feed. The all_links variable includes the "get more article" link
  95. function linksInFeed(feed_id, all_links) {
  96. var feed_content = $("feed-"+feed_id);
  97. var links_raw = feed_content.getElementsByTagName("a");
  98. if (all_links) return links_raw;
  99. var links = [];
  100. // filter the array to remove the "get more articles" link
  101. // and the "search" link (which is always first)
  102. for (var i=1 ; i<links_raw.length ; i++) {
  103. if (links_raw[i].href.match(/.*article\.php\?id=.*/)) {
  104. links.push(links_raw[i]);
  105. }
  106. }
  107. return links;
  108. }
  109. // Adds the "read" class to all read links in the feed
  110. function markAsRead(feed_id) {
  111. var links = linksInFeed(feed_id);
  112. for (var j=0 ; j<links.length ; j++) {
  113. var match = links[j].href.match(/.*article\.php\?id=(\d+)&.*/);
  114. if ($("article-"+match[1])) {
  115. links[j].className = "read";
  116. }
  117. }
  118. }
  119. // Go the the articles list and expand the "get more articles" link
  120. function showRestOfFeed(feed_id) {
  121. var links_raw = linksInFeed(feed_id, true);
  122. var lastlink = links_raw[links_raw.length - 1];
  123. if (lastlink.target == "_replace") {
  124. // It's a "get more articles" link
  125. iui.showPage($("feed-"+feed_id), true);
  126. // Mark old items a "read"
  127. markAsRead(feed_id);
  128. // Simulate click on the "get more articles" link
  129. lastlink.setAttribute("selected", "progress");
  130. function unselect() { lastlink.removeAttribute("selected"); }
  131. setTimeout(window.scrollTo, 0, 0, 1000);
  132. iui.showPageByHref(lastlink.href, null, null, lastlink, unselect);
  133. } else {
  134. iui.showPage($("home"), true);
  135. }
  136. }