mirror of
https://github.com/FreshRSS/FreshRSS.git
synced 2026-04-04 22:53:27 -04:00
@@ -8,6 +8,7 @@
|
||||
* Experimental support for PostgreSQL [#1195](https://github.com/FreshRSS/FreshRSS/pull/1195)
|
||||
* New client supporting FreshRSS on Linux: FeedReader 2.0+ [#1252](https://github.com/FreshRSS/FreshRSS/issues/1252)
|
||||
* Features
|
||||
* Rework the “mark as read during scroll” option, enabled by default for new users [#1258](https://github.com/FreshRSS/FreshRSS/issues/1258), [#1309](https://github.com/FreshRSS/FreshRSS/pull/1309)
|
||||
* Better control of number of entries per page or RSS feed [#1249](https://github.com/FreshRSS/FreshRSS/issues/1249)
|
||||
* Since X hours: `https://freshrss.example/i/?a=rss&hours=3`
|
||||
* Explicit number: `https://freshrss.example/i/?a=rss&nb=10`
|
||||
|
||||
@@ -35,7 +35,7 @@ return array (
|
||||
'mark_when' => array (
|
||||
'article' => true,
|
||||
'site' => true,
|
||||
'scroll' => false,
|
||||
'scroll' => true,
|
||||
'reception' => false,
|
||||
),
|
||||
'theme' => 'Origine',
|
||||
|
||||
@@ -116,21 +116,19 @@ function incUnreadsFeed(article, feed_id, nb) {
|
||||
|
||||
var pending_entries = {};
|
||||
function mark_read(active, only_not_read) {
|
||||
if (active.length === 0 ||
|
||||
if (active.length === 0 || active.attr('id') == '' ||
|
||||
(only_not_read === true && !active.hasClass("not_read"))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var url = active.find("a.read").attr("href");
|
||||
if (url === undefined) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (pending_entries[active.attr('id')]) {
|
||||
return false;
|
||||
}
|
||||
pending_entries[active.attr('id')] = true;
|
||||
|
||||
var url = '.?c=entry&a=read&id=' + active.attr('id').replace(/^flux_/, '') +
|
||||
(active.hasClass('not_read') ? '' : '&is_read=0');
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: url,
|
||||
@@ -150,10 +148,11 @@ function mark_read(active, only_not_read) {
|
||||
}
|
||||
$r.find('.icon').replaceWith(data.icon);
|
||||
|
||||
var feed_url = active.find(".website>a").attr("href"),
|
||||
feed_id = feed_url.substr(feed_url.lastIndexOf('f_'));
|
||||
|
||||
incUnreadsFeed(active, feed_id, inc);
|
||||
var feed_url = active.find(".website>a").attr("href");
|
||||
if (feed_url) {
|
||||
var feed_id = feed_url.substr(feed_url.lastIndexOf('f_'));
|
||||
incUnreadsFeed(active, feed_id, inc);
|
||||
}
|
||||
faviconNbUnread();
|
||||
|
||||
delete pending_entries[active.attr('id')];
|
||||
@@ -451,14 +450,9 @@ function auto_share(key) {
|
||||
}
|
||||
|
||||
function inMarkViewport(flux, box_to_follow) {
|
||||
var top = flux.offset().top;
|
||||
var height = flux.height(),
|
||||
begin = top + 3 * height / 4,
|
||||
bot = Math.min(begin + 75, top + height),
|
||||
windowTop = box_to_follow.scrollTop(),
|
||||
windowBot = windowTop + box_to_follow.height() / 2;
|
||||
|
||||
return (windowBot >= begin && bot >= windowBot);
|
||||
var bottom = flux.offset().top + flux.height(),
|
||||
windowTop = box_to_follow.scrollTop();
|
||||
return bottom < windowTop + 40;
|
||||
}
|
||||
|
||||
function init_posts() {
|
||||
@@ -470,8 +464,9 @@ function init_posts() {
|
||||
if (context.auto_mark_scroll) {
|
||||
box_to_follow.scroll(function () {
|
||||
$('.not_read:visible').each(function () {
|
||||
if ($(this).children(".flux_content").is(':visible') && inMarkViewport($(this), box_to_follow)) {
|
||||
mark_read($(this), true);
|
||||
var $this = $(this);
|
||||
if (inMarkViewport($this, box_to_follow)) {
|
||||
mark_read($this, true);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user