From 4809f736dc7e784ddc69497f712e186e61310b87 Mon Sep 17 00:00:00 2001 From: Mathias Kresin Date: Thu, 26 Feb 2015 17:33:21 +0100 Subject: [PATCH] implement mark-feed-as-read in javascript --- assets/js/all.min.js | 38 +++++++++++++++++++------------------- assets/js/event.js | 2 +- assets/js/item.js | 10 ++++++++++ controllers/item.php | 9 ++++++++- 4 files changed, 38 insertions(+), 21 deletions(-) diff --git a/assets/js/all.min.js b/assets/js/all.min.js index ce7de56..b1d4c67 100644 --- a/assets/js/all.min.js +++ b/assets/js/all.min.js @@ -1,19 +1,19 @@ -var k=function(){var d=[];return{i:function(c,a){var b=c.querySelector("span.items-count");if(b){var e=c.getAttribute("data-feed-id"),d=c.querySelector("h2:first-of-type");d.className="loading-icon";var p=new XMLHttpRequest;p.onload=function(){d.className="";c.removeAttribute("data-feed-error");var e=c.querySelector(".feed-last-checked");e&&(e.innerHTML=e.getAttribute("data-after-update"));e=JSON.parse(this.responseText);e.result?b.innerHTML=e.items_count.items_unread+"/"+e.items_count.items_total: -c.setAttribute("data-feed-error","1");a?a(e):g.a()};p.open("POST","?action=refresh-feed&feed_id="+e,!0);p.send()}},j:function(){var c=Array.prototype.slice.call(document.querySelectorAll("article:not([data-feed-disabled])")),a=setInterval(function(){for(;0d.length;){var b=c.shift();d.push(parseInt(b.getAttribute("data-feed-id"),10));k.i(b,function(b){b=d.indexOf(b.feed_id);0<=b&&d.splice(b,1);0===c.length&&0===d.length&&(clearInterval(a),g.a())})}},100)}}}(),g=function(){function d(a){var b= -document.createEvent("MouseEvents");b.initEvent("mousedown",!0,!0);a.dispatchEvent(b);b=document.createEvent("MouseEvents");b.initEvent("mouseup",!0,!0);a.dispatchEvent(b);a.click()}function c(a){return item_id=a.getAttribute("data-item-id")}function a(a){if(a&&a.hasAttribute("data-reverse-label")){var b=a.innerHTML;a.innerHTML=a.getAttribute("data-reverse-label");a.setAttribute("data-reverse-label",b)}}function b(a){"mouse"!==n.c&&u.d();a.parentNode.removeChild(a);q--}function e(){-1t[d])t[d]=f.time,"unread"===f.status&&(b=!0)}document.hidden||c.nbUnread===l&&!r?document.hidden&&!a&&b&&(r=!0,document.title="\u21bb "+document.title):(r=!1,l=c.nbUnread,e())};a.open("POST","?action=latest-feeds-items", -!0);a.send()}}}}(),n=function(){function d(a){if(63!==a.keyCode&&63!==a.which&&(a.ctrlKey||a.shiftKey||a.altKey||a.metaKey))return!0;a=a.target||a.srcElement;return"INPUT"===a.tagName||"TEXTAREA"===a.tagName?!0:!1}var c=[];return{c:"",m:function(){document.onclick=function(a){a.target.hasAttribute("data-action")&&"original"!==a.target.className&&a.preventDefault()};document.onmouseup=function(a){if(2!==a.button)if("INPUT"===a.target.nodeName&&"auto-select"===a.target.className)a.target.select();else{var b= -a.target.getAttribute("data-action");if(b){n.c="mouse";var c;a:{for(element=a.target;element&&element.parentNode;)if(element=element.parentNode,element.tagName&&"article"===element.tagName.toLowerCase()){c=element;break a}c=void 0}switch(b){case "refresh-all":k.j();break;case "refresh-feed":c&&k.i(c);break;case "mark-read":c&&g.o(c);break;case "mark-unread":c&&g.q(c);break;case "mark-removed":c&&g.p(c);break;case "bookmark":c&&g.h(c);break;case "download-item":c&&g.e(c);break;case "mark-all-read":g.f("?action=unread"); -break;case "mark-feed-read":g.f("?action=feed-items&feed_id="+a.target.getAttribute("data-feed-id"))}}}}},l:function(){document.onkeypress=function(a){if(!d(a))if(n.c="keyboard",c.push(a.keyCode||a.which),103===c[0])switch(c[1]){case void 0:break;case 117:window.location.href="?action=unread";c=[];break;case 98:window.location.href="?action=bookmarks";c=[];break;case 104:window.location.href="?action=history";c=[];break;case 115:window.location.href="?action=feeds";c=[];break;case 112:window.location.href= -"?action=config";c=[];break;default:c=[]}else{c=[];var b=document.getElementById("current-item");switch(a.keyCode||a.which){case 100:b&&g.e(b);break;case 112:case 107:u.g();break;case 110:case 106:u.d();break;case 118:b&&g.s(b);break;case 111:b&&g.v(b);break;case 109:b&&g.A(b);break;case 102:b&&g.h(b);break;case 104:u.t();break;case 108:u.r();break;case 114:k.j();break;case 63:u.w();break;case 122:g.B()}}};document.onkeydown=function(a){if(!d(a))switch(n.c="keyboard",a.keyCode||a.which){case 37:u.g(); -break;case 39:u.d()}}},n:function(){document.addEventListener("visibilitychange",function(){!document.hidden&&g.C()&&g.a()})}}}(),u=function(){function d(a){var b=pageYOffset+document.documentElement.clientHeight;(0>b-(a.offsetTop+a.offsetHeight)||b-a.offsetTop>document.documentElement.clientHeight)&&window.scrollTo(0,a.offsetTop-10)}function c(){return document.getElementById("listing")?!0:!1}return{r:function(){var a=document.getElementById("next-page");a&&a.click()},t:function(){var a=document.getElementById("previous-page"); -a&&a.click()},d:function(){var a=document.getElementById("next-item");if(a)a.click();else if(c())if(a=document.getElementsByTagName("article"),document.getElementById("current-item"))for(var b=0,e=a.length;be.length;){var b=d.shift();e.push(parseInt(b.getAttribute("data-feed-id"),10));l.h(b,function(b){b=e.indexOf(b.feed_id);0<=b&&e.splice(b,1);0===d.length&&0===e.length&&(clearInterval(a),h.a())})}},100)}}}(),h=function(){function e(f){var a= +document.createEvent("MouseEvents");a.initEvent("mousedown",!0,!0);f.dispatchEvent(a);a=document.createEvent("MouseEvents");a.initEvent("mouseup",!0,!0);f.dispatchEvent(a);f.click()}function d(a){return item_id=a.getAttribute("data-item-id")}function a(a){if(a&&a.hasAttribute("data-reverse-label")){var b=a.innerHTML;a.innerHTML=a.getAttribute("data-reverse-label");a.setAttribute("data-reverse-label",b)}}function b(a){"mouse"!==n.c&&u.d();a.parentNode.removeChild(a);q--}function c(){-1t[e])t[e]=f.time,"unread"===f.status&&(b=!0)}document.hidden|| +d.nbUnread===m&&!r?document.hidden&&!a&&b&&(r=!0,document.title="\u21bb "+document.title):(r=!1,m=d.nbUnread,c())};a.open("POST","?action=latest-feeds-items",!0);a.send()}}}}(),n=function(){function e(a){if(63!==a.keyCode&&63!==a.which&&(a.ctrlKey||a.shiftKey||a.altKey||a.metaKey))return!0;a=a.target||a.srcElement;return"INPUT"===a.tagName||"TEXTAREA"===a.tagName?!0:!1}var d=[];return{c:"",l:function(){document.onclick=function(a){a.target.hasAttribute("data-action")&&"original"!==a.target.className&& +a.preventDefault()};document.onmouseup=function(a){if(2!==a.button)if("INPUT"===a.target.nodeName&&"auto-select"===a.target.className)a.target.select();else{var b=a.target.getAttribute("data-action");if(b){n.c="mouse";var c;a:{for(element=a.target;element&&element.parentNode;)if(element=element.parentNode,element.tagName&&"article"===element.tagName.toLowerCase()){c=element;break a}c=void 0}switch(b){case "refresh-all":l.i();break;case "refresh-feed":c&&l.h(c);break;case "mark-read":c&&h.n(c);break; +case "mark-unread":c&&h.p(c);break;case "mark-removed":c&&h.o(c);break;case "bookmark":c&&h.g(c);break;case "download-item":c&&h.e(c);break;case "mark-all-read":h.r("?action=unread");break;case "mark-feed-read":h.q(a.target.getAttribute("data-feed-id"))}}}}},k:function(){document.onkeypress=function(a){if(!e(a))if(n.c="keyboard",d.push(a.keyCode||a.which),103===d[0])switch(d[1]){case void 0:break;case 117:window.location.href="?action=unread";d=[];break;case 98:window.location.href="?action=bookmarks"; +d=[];break;case 104:window.location.href="?action=history";d=[];break;case 115:window.location.href="?action=feeds";d=[];break;case 112:window.location.href="?action=config";d=[];break;default:d=[]}else{d=[];var b=document.getElementById("current-item");switch(a.keyCode||a.which){case 100:b&&h.e(b);break;case 112:case 107:u.f();break;case 110:case 106:u.d();break;case 118:b&&h.t(b);break;case 111:b&&h.w(b);break;case 109:b&&h.B(b);break;case 102:b&&h.g(b);break;case 104:u.u();break;case 108:u.s(); +break;case 114:l.i();break;case 63:u.A();break;case 122:h.C()}}};document.onkeydown=function(a){if(!e(a))switch(n.c="keyboard",a.keyCode||a.which){case 37:u.f();break;case 39:u.d()}}},m:function(){document.addEventListener("visibilitychange",function(){!document.hidden&&h.D()&&h.a()})}}}(),u=function(){function e(a){var b=pageYOffset+document.documentElement.clientHeight;(0>b-(a.offsetTop+a.offsetHeight)||b-a.offsetTop>document.documentElement.clientHeight)&&window.scrollTo(0,a.offsetTop-10)}function d(){return document.getElementById("listing")? +!0:!1}return{s:function(){var a=document.getElementById("next-page");a&&a.click()},u:function(){var a=document.getElementById("previous-page");a&&a.click()},d:function(){var a=document.getElementById("next-item");if(a)a.click();else if(d())if(a=document.getElementsByTagName("article"),document.getElementById("current-item"))for(var b=0,c=a.length;b