Added a config option to select how many concurrent refreshes are done on the subscription page

This commit is contained in:
Kordian Bruck 2015-08-02 02:23:21 +02:00
parent 7d905da02e
commit 2c3fd54774
8 changed files with 40 additions and 25 deletions

38
assets/js/all.min.js vendored
View File

@ -1,19 +1,19 @@
var k=function(){var d=[];return{h: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()}},i:function(){var c=Array.prototype.slice.call(document.querySelectorAll("article:not([data-feed-disabled])")),a=setInterval(function(){for(;0<c.length&&5>d.length;){var b=c.shift();d.push(parseInt(b.getAttribute("data-feed-id"),10));k.h(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(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 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(f){if("read"!==f.getAttribute("data-item-status")){if(f.getAttribute("data-hide"))e(f);
else{f.setAttribute("data-item-status","read");var b=f.querySelector("a.mark");a(b);(f=f.querySelector("a.mark"))&&f.setAttribute("data-action","mark-unread")}l--}}function e(a){"mouse"!==m.c&&t.d();a.parentNode.removeChild(a);q--}function n(){-1<window.location.href.indexOf("nothing_to_read=1")&&0<l?window.location.href="?action=unread":0===q&&window.location.reload();var a=document.getElementById("page-counter");a&&(a.textContent=q||"");document.getElementById("nav-counter").textContent=l||"";var b=
document.querySelector("div.page-header h2:first-of-type");if(b)pageHeading=b.firstChild.nodeValue;else if(b=document.querySelector("article.item h1:first-of-type")){document.title=b.textContent;return}switch(document.querySelector("section.page").getAttribute("data-item-page")){case "unread":document.title="Miniflux ("+l+")";break;case "feed-items":document.title="("+q+") "+pageHeading;break;default:document.title=a?pageHeading+" ("+q+")":pageHeading}}function p(a){var e=c(a),h=new XMLHttpRequest;
h.onload=function(){t.b()&&(b(a),n())};h.open("POST","?action=mark-item-read&id="+e,!0);h.send()}function v(f){var b=c(f),h=new XMLHttpRequest;h.onload=function(){if(t.b()){if("unread"!==f.getAttribute("data-item-status")){if(f.getAttribute("data-hide"))e(f);else{f.setAttribute("data-item-status","unread");var b=f.querySelector("a.mark");a(b);(b=f.querySelector("a.mark"))&&b.setAttribute("data-action","mark-read")}l++}n()}};h.open("POST","?action=mark-item-unread&id="+b,!0);h.send()}var u=[],r=!1,
l=function(){var a=document.getElementById("nav-counter");if(a)return counter=parseInt(a.textContent,10)||0}(),q=function(){var a=document.getElementById("page-counter");if(a)return counter=parseInt(a.textContent,10)||0}();return{n:p,p:v,o:function(a){var b=c(a),h=new XMLHttpRequest;h.onload=function(){t.b()&&(e(a),"unread"===a.getAttribute("data-item-status")&&l--,n())};h.open("POST","?action=mark-item-removed&id="+b,!0);h.send()},g:function(b){var w=c(b),h="1"===b.getAttribute("data-item-bookmark")?
"0":"1",d=new XMLHttpRequest;d.onload=function(){var c=document.querySelector("section.page");if(t.b()&&"bookmarks"===c.getAttribute("data-item-page"))e(b),n();else if(b.setAttribute("data-item-bookmark",h),t.b())c=b.querySelector("a.bookmark"),a(c);else if((c=b.querySelector("a.bookmark-icon"))&&c.hasAttribute("data-reverse-title")){var d=c.getAttribute("title");c.setAttribute("title",c.getAttribute("data-reverse-title"));c.setAttribute("data-reverse-title",d)}};d.open("POST","?action=bookmark&id="+
w+"&value="+h,!0);d.send()},A:function(a){var b=a.getAttribute("data-item-status");"read"===b?v(a):"unread"===b&&p(a)},v:function(a){(a=a.querySelector("a.show"))&&d(a)},s:function(a){(a=a.querySelector("a.original"))&&d(a)},e:function(a){var b=document.getElementById("download-item");if(b){b.innerHTML=" "+b.getAttribute("data-before-message");b.className="loading-icon";var e=new XMLHttpRequest;e.onload=function(){var a=JSON.parse(e.responseText);b.className="";if(a.result){var c=document.getElementById("item-content");
c&&(c.innerHTML=a.content);b.innerHTML=b.getAttribute("data-after-message")}else b.innerHTML=b.getAttribute("data-failure-message")};a=c(a);e.open("POST","?action=download-item&id="+a,!0);e.send()}},q:function(a){var c=new XMLHttpRequest;c.onload=function(){for(var a=document.getElementsByTagName("article"),c=0,e=a.length;c<e;c++)b(a[c]);l=this.responseText;n()};c.open("POST","?action=mark-feed-as-read&feed_id="+a,!0);c.send()},B:function(){for(var a=["#current-item h1","#item-content","#listing #current-item h2",
"#listing #current-item .preview"],b=0;b<a.length;b++){var c=document.querySelector(a[b]);c&&(c.dir=""==c.dir?"rtl":"")}},C:function(){return r},a:function(){if(!document.hidden||!r){var a=new XMLHttpRequest;a.onload=function(){var a=0===u.length,b=!1,c=JSON.parse(this.responseText),e;for(e in c.feeds){var d=c.feeds[e];if(!u.hasOwnProperty(e)||d.time>u[e])u[e]=d.time,"unread"===d.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,n())};a.open("POST","?action=latest-feeds-items",!0);a.send()}}}}(),m=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:"",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){m.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.i();break;case "refresh-feed":c&&k.h(c);break;case "mark-read":c&&g.n(c);break;case "mark-unread":c&&g.p(c);break;case "mark-removed":c&&g.o(c);break;case "bookmark":c&&g.g(c);
break;case "download-item":c&&g.e(c);break;case "mark-feed-read":g.q(a.target.getAttribute("data-feed-id"))}}}}},k:function(){document.onkeypress=function(a){if(!d(a))if(m.c="keyboard",c.push(a.key||a.which),"g"===c[0]||103===c[0])switch(c[1]){case void 0:break;case "u":case 117:window.location.href="?action=unread";c=[];break;case "b":case 98:window.location.href="?action=bookmarks";c=[];break;case "h":case 104:window.location.href="?action=history";c=[];break;case "s":case 115:window.location.href=
"?action=feeds";c=[];break;case "p":case 112:window.location.href="?action=config";c=[];break;default:c=[]}else{c=[];var b=document.getElementById("current-item");switch(a.key||a.which){case "d":case 100:b&&g.e(b);break;case "p":case 112:case "k":case 107:t.f();break;case "n":case 110:case "j":case 106:t.d();break;case "v":case 118:b&&g.s(b);break;case "o":case 111:b&&g.v(b);break;case "m":case 109:b&&g.A(b);break;case "f":case 102:b&&g.g(b);break;case "h":case 104:t.t();break;case "l":case 108:t.r();
break;case "r":case 114:k.i();break;case "?":case 63:t.w();break;case "z":case 122:g.B()}}};document.onkeydown=function(a){if(!d(a))switch(m.c="keyboard",a.key||a.which){case "ArrowLeft":case "Left":case 37:t.f();break;case "ArrowRight":case "Right":case 39:t.d()}}},m:function(){document.addEventListener("visibilitychange",function(){!document.hidden&&g.C()&&g.a()})}}}(),t=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;b<e;b++){if("current-item"===
a[b].id){b+1<e&&(a[b].id="item-"+a[b].getAttribute("data-item-id"),a[b+1].id="current-item",d(a[b+1]));break}}else a[0].id="current-item",d(a[0])},f:function(){var a=document.getElementById("previous-item");if(a)a.click();else if(c())if(a=document.getElementsByTagName("article"),document.getElementById("current-item"))for(var b=a.length-1;0<=b;b--){if("current-item"===a[b].id){0<=b-1&&(a[b].id="item-"+a[b].getAttribute("data-item-id"),a[b-1].id="current-item",d(a[b-1]));break}}else a[a.length-1].id=
"current-item",d(a[a.length-1])},w:function(){open("?action=show-help","Help","width=320,height=450,location=no,scrollbars=no,status=no,toolbar=no")},b:c}}();({D:function(){},u:function(){m.k();m.l();m.m();this.j()},j:function(){var d=new XMLHttpRequest;d.onload=function(){var c=JSON.parse(this.responseText);0<c.frontend_updatecheck_interval&&(g.a(),setInterval(function(){g.a()},6E4*c.frontend_updatecheck_interval))};d.open("POST","?action=get-config",!0);d.send(JSON.stringify(["frontend_updatecheck_interval"]))}}).u();
var k=function(){var b=[],d=5;return{j:function(a,c){var d=a.querySelector("span.items-count");if(d){var b=a.getAttribute("data-feed-id"),q=a.querySelector("h2:first-of-type");q.className="loading-icon";var p=new XMLHttpRequest;p.onload=function(){q.className="";a.removeAttribute("data-feed-error");var b=a.querySelector(".feed-last-checked");b&&(b.innerHTML=b.getAttribute("data-after-update"));b=JSON.parse(this.responseText);b.result?d.innerHTML=b.items_count.items_unread+"/"+b.items_count.items_total:
a.setAttribute("data-feed-error","1");c?c(b):f.a()};p.open("POST","?action=refresh-feed&feed_id="+b,!0);p.send()}},l:function(a){var c=Array.prototype.slice.call(document.querySelectorAll("article:not([data-feed-disabled])"));a&&(d=a);console.log(d,a);var h=setInterval(function(){for(;0<c.length&&b.length<d;){var a=c.shift();b.push(parseInt(a.getAttribute("data-feed-id"),10));k.j(a,function(a){a=b.indexOf(a.feed_id);0<=a&&b.splice(a,1);0===c.length&&0===b.length&&(clearInterval(h),f.a())})}},100)}}}(),
f=function(){function b(a){var e=document.createEvent("MouseEvents");e.initEvent("mousedown",!0,!0);a.dispatchEvent(e);e=document.createEvent("MouseEvents");e.initEvent("mouseup",!0,!0);a.dispatchEvent(e);a.click()}function d(a){return item_id=a.getAttribute("data-item-id")}function a(a){if(a&&a.hasAttribute("data-reverse-label")){var e=a.innerHTML;a.innerHTML=a.getAttribute("data-reverse-label");a.setAttribute("data-reverse-label",e)}}function c(g){if("read"!==g.getAttribute("data-item-status")){if(g.getAttribute("data-hide"))h(g);
else{g.setAttribute("data-item-status","read");var e=g.querySelector("a.mark");a(e);(g=g.querySelector("a.mark"))&&g.setAttribute("data-action","mark-unread")}l--}}function h(a){"mouse"!==m.c&&v.f();a.parentNode.removeChild(a);r--}function n(){-1<window.location.href.indexOf("nothing_to_read=1")&&0<l?window.location.href="?action=unread":0===r&&window.location.reload();var a=document.getElementById("page-counter");a&&(a.textContent=r||"");document.getElementById("nav-counter").textContent=l||"";var e=
document.querySelector("div.page-header h2:first-of-type");if(e)pageHeading=e.firstChild.nodeValue;else if(e=document.querySelector("article.item h1:first-of-type")){document.title=e.textContent;return}switch(document.querySelector("section.page").getAttribute("data-item-page")){case "unread":document.title="Miniflux ("+l+")";break;case "feed-items":document.title="("+r+") "+pageHeading;break;default:document.title=a?pageHeading+" ("+r+")":pageHeading}}function q(a){var e=d(a),b=new XMLHttpRequest;
b.onload=function(){v.b()&&(c(a),n())};b.open("POST","?action=mark-item-read&id="+e,!0);b.send()}function p(g){var e=d(g),c=new XMLHttpRequest;c.onload=function(){if(v.b()){if("unread"!==g.getAttribute("data-item-status")){if(g.getAttribute("data-hide"))h(g);else{g.setAttribute("data-item-status","unread");var c=g.querySelector("a.mark");a(c);(c=g.querySelector("a.mark"))&&c.setAttribute("data-action","mark-read")}l++}n()}};c.open("POST","?action=mark-item-unread&id="+e,!0);c.send()}var u=[],t=!1,
l=function(){var a=document.getElementById("nav-counter");if(a)return counter=parseInt(a.textContent,10)||0}(),r=function(){var a=document.getElementById("page-counter");if(a)return counter=parseInt(a.textContent,10)||0}();return{v:q,A:p,w:function(a){var c=d(a),b=new XMLHttpRequest;b.onload=function(){v.b()&&(h(a),"unread"===a.getAttribute("data-item-status")&&l--,n())};b.open("POST","?action=mark-item-removed&id="+c,!0);b.send()},i:function(c){var e=d(c),b="1"===c.getAttribute("data-item-bookmark")?
"0":"1",w=new XMLHttpRequest;w.onload=function(){var e=document.querySelector("section.page");if(v.b()&&"bookmarks"===e.getAttribute("data-item-page"))h(c),n();else if(c.setAttribute("data-item-bookmark",b),v.b())e=c.querySelector("a.bookmark"),a(e);else if((e=c.querySelector("a.bookmark-icon"))&&e.hasAttribute("data-reverse-title")){var d=e.getAttribute("title");e.setAttribute("title",e.getAttribute("data-reverse-title"));e.setAttribute("data-reverse-title",d)}};w.open("POST","?action=bookmark&id="+
e+"&value="+b,!0);w.send()},J:function(a){var c=a.getAttribute("data-item-status");"read"===c?p(a):"unread"===c&&q(a)},H:function(a){(a=a.querySelector("a.show"))&&b(a)},D:function(a){(a=a.querySelector("a.original"))&&b(a)},g:function(a){var c=document.getElementById("download-item");if(c){c.innerHTML=" "+c.getAttribute("data-before-message");c.className="loading-icon";var b=new XMLHttpRequest;b.onload=function(){var a=JSON.parse(b.responseText);c.className="";if(a.result){var d=document.getElementById("item-content");
d&&(d.innerHTML=a.content);c.innerHTML=c.getAttribute("data-after-message")}else c.innerHTML=c.getAttribute("data-failure-message")};a=d(a);b.open("POST","?action=download-item&id="+a,!0);b.send()}},B:function(a){var b=new XMLHttpRequest;b.onload=function(){for(var a=document.getElementsByTagName("article"),b=0,d=a.length;b<d;b++)c(a[b]);l=this.responseText;n()};b.open("POST","?action=mark-feed-as-read&feed_id="+a,!0);b.send()},K:function(){for(var a=["#current-item h1","#item-content","#listing #current-item h2",
"#listing #current-item .preview"],c=0;c<a.length;c++){var b=document.querySelector(a[c]);b&&(b.dir=""==b.dir?"rtl":"")}},L:function(){return t},a:function(){if(!document.hidden||!t){var a=new XMLHttpRequest;a.onload=function(){var a=0===u.length,c=!1,b=JSON.parse(this.responseText),d;for(d in b.feeds){var h=b.feeds[d];if(!u.hasOwnProperty(d)||h.time>u[d])u[d]=h.time,"unread"===h.status&&(c=!0)}document.hidden||b.nbUnread===l&&!t?document.hidden&&!a&&c&&(t=!0,document.title="\u21bb "+document.title):
(t=!1,l=b.nbUnread,n())};a.open("POST","?action=latest-feeds-items",!0);a.send()}}}}(),m=function(){function b(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:"",s: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 c=a.target.getAttribute("data-action");if(c){m.c="mouse";var b;a:{for(element=a.target;element&&element.parentNode;)if(element=element.parentNode,element.tagName&&"article"===element.tagName.toLowerCase()){b=element;break a}b=void 0}switch(c){case "refresh-all":k.l(a.target.getAttribute("data-concurrent-requests"));break;case "refresh-feed":b&&k.j(b);break;case "mark-read":b&&f.v(b);break;case "mark-unread":b&&f.A(b);break;case "mark-removed":b&&
f.w(b);break;case "bookmark":b&&f.i(b);break;case "download-item":b&&f.g(b);break;case "mark-feed-read":f.B(a.target.getAttribute("data-feed-id"))}}}}},o:function(){document.onkeypress=function(a){if(!b(a))if(m.c="keyboard",d.push(a.key||a.which),"g"===d[0]||103===d[0])switch(d[1]){case void 0:break;case "u":case 117:window.location.href="?action=unread";d=[];break;case "b":case 98:window.location.href="?action=bookmarks";d=[];break;case "h":case 104:window.location.href="?action=history";d=[];break;
case "s":case 115:window.location.href="?action=feeds";d=[];break;case "p":case 112:window.location.href="?action=config";d=[];break;default:d=[]}else{d=[];var c=document.getElementById("current-item");switch(a.key||a.which){case "d":case 100:c&&f.g(c);break;case "p":case 112:case "k":case 107:v.h();break;case "n":case 110:case "j":case 106:v.f();break;case "v":case 118:c&&f.D(c);break;case "o":case 111:c&&f.H(c);break;case "m":case 109:c&&f.J(c);break;case "f":case 102:c&&f.i(c);break;case "h":case 104:v.F();
break;case "l":case 108:v.C();break;case "r":case 114:k.l();break;case "?":case 63:v.I();break;case "z":case 122:f.K()}}};document.onkeydown=function(a){if(!b(a))switch(m.c="keyboard",a.key||a.which){case "ArrowLeft":case "Left":case 37:v.h();break;case "ArrowRight":case "Right":case 39:v.f()}}},u:function(){document.addEventListener("visibilitychange",function(){!document.hidden&&f.L()&&f.a()})}}}(),v=function(){function b(a){var c=pageYOffset+document.documentElement.clientHeight;(0>c-(a.offsetTop+
a.offsetHeight)||c-a.offsetTop>document.documentElement.clientHeight)&&window.scrollTo(0,a.offsetTop-10)}function d(){return document.getElementById("listing")?!0:!1}return{C:function(){var a=document.getElementById("next-page");a&&a.click()},F:function(){var a=document.getElementById("previous-page");a&&a.click()},f: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 c=0,h=a.length;c<
h;c++){if("current-item"===a[c].id){c+1<h&&(a[c].id="item-"+a[c].getAttribute("data-item-id"),a[c+1].id="current-item",b(a[c+1]));break}}else a[0].id="current-item",b(a[0])},h:function(){var a=document.getElementById("previous-item");if(a)a.click();else if(d())if(a=document.getElementsByTagName("article"),document.getElementById("current-item"))for(var c=a.length-1;0<=c;c--){if("current-item"===a[c].id){0<=c-1&&(a[c].id="item-"+a[c].getAttribute("data-item-id"),a[c-1].id="current-item",b(a[c-1]));
break}}else a[a.length-1].id="current-item",b(a[a.length-1])},I:function(){open("?action=show-help","Help","width=320,height=450,location=no,scrollbars=no,status=no,toolbar=no")},b:d}}();({M:function(){},G:function(){m.o();m.s();m.u();this.m()},m:function(){var b=new XMLHttpRequest;b.onload=function(){var b=JSON.parse(this.responseText);0<b.frontend_updatecheck_interval&&(f.a(),setInterval(function(){f.a()},6E4*b.frontend_updatecheck_interval))};b.open("POST","?action=get-config",!0);b.send(JSON.stringify(["frontend_updatecheck_interval"]))}}).G();

View File

@ -64,7 +64,7 @@ Miniflux.Event = (function() {
switch (action) {
case 'refresh-all':
Miniflux.Feed.UpdateAll();
Miniflux.Feed.UpdateAll(e.target.getAttribute("data-concurrent-requests"));
break;
case 'refresh-feed':
currentItem && Miniflux.Feed.Update(currentItem);

View File

@ -45,9 +45,14 @@ Miniflux.Feed = (function() {
request.open("POST", "?action=refresh-feed&feed_id=" + feed_id, true);
request.send();
},
UpdateAll: function() {
UpdateAll: function(num) {
var feeds = Array.prototype.slice.call(document.querySelectorAll("article:not([data-feed-disabled])"));
//Check if a custom ammount of concurrent requests was defined
if(num){
queue_length = num;
}
var interval = setInterval(function() {
while (feeds.length > 0 && queue.length < queue_length) {
var feed = feeds.shift();

View File

@ -122,7 +122,8 @@ Router\get_action('feeds', function() {
'nb_unread_items' => $nb_unread_items,
'nb_failed_feeds' => Model\Feed\count_failed_feeds(),
'menu' => 'feeds',
'title' => t('Subscriptions')
'title' => t('Subscriptions'),
'frontend_concurrent_requests' => Model\Config\get('frontend_concurrent_requests')
)));
});

View File

@ -303,6 +303,7 @@ function validate_modification(array $values)
new Validators\Integer('nocontent', t('Must be an integer')),
new Validators\Integer('favicons', t('Must be an integer')),
new Validators\Integer('original_marks_read', t('Must be an integer')),
new Validators\Integer('frontend_concurrent_requests', t('Must be an integer')),
);
if (ENABLE_AUTO_UPDATE) {

View File

@ -5,7 +5,12 @@ namespace Schema;
use PDO;
use Model\Config;
const VERSION = 40;
const VERSION = 41;
function version_41($pdo)
{
$pdo->exec('INSERT INTO settings ("key", "value") VALUES ("frontend_concurrent_requests", 5)');
}
function version_40($pdo)
{

View File

@ -75,6 +75,9 @@
<?= Helper\form_checkbox('original_marks_read', t('Original link marks article as read'), 1, isset($values['original_marks_read']) && $values['original_marks_read'] == 1) ?><br/>
<?= Helper\form_checkbox('nocontent', t('Do not fetch the content of articles'), 1, isset($values['nocontent']) && $values['nocontent'] == 1) ?><br/>
<?= Helper\form_checkbox('favicons', t('Download favicons'), 1, isset($values['favicons']) && $values['favicons'] == 1) ?><br/>
<?= Helper\form_label(t('Number of feeds to update at once on the subscription page'), 'frontend_concurrent_requests') ?>
<?= Helper\form_number('frontend_concurrent_requests', $values, $errors, array('min="1"')) ?><br/>
</div>
<div class="form-actions">

View File

@ -6,7 +6,7 @@
<li class="active"><a href="?action=feeds"><?= t('feeds') ?></a></li>
<li><a href="?action=import"><?= t('import') ?></a></li>
<li><a href="?action=export"><?= t('export') ?></a></li>
<li><a href="?action=refresh-all" data-action="refresh-all"><?= t('refresh all') ?></a></li>
<li><a href="?action=refresh-all" data-action="refresh-all" data-concurrent-requests="<?=$frontend_concurrent_requests?>"><?= t('refresh all') ?></a></li>
</ul>
</nav>
</div>
@ -73,4 +73,4 @@
<?php endforeach ?>
</section>
<?php endif ?>
<?php endif ?>