diff options
| author | 2016-10-14 17:54:34 +0200 | |
|---|---|---|
| committer | 2016-10-14 17:54:34 +0200 | |
| commit | 1013c7d2e2d8a2331b47859e918f4e6ac45aef63 (patch) | |
| tree | a82d2a1c07b1d1ec4ba2210f49217d6b348adcad | |
| parent | f41362a594ffaad726e0621c6eed8e62ae9b634c (diff) | |
| parent | 6d7ebaeb3b75969fbf44a8f36dbb5e9993f0c623 (diff) | |
Merge pull request #1309 from Alkarex/scroll-as-read
Scroll as read
| -rw-r--r-- | CHANGELOG.md | 1 | ||||
| -rw-r--r-- | data/users/_/config.default.php | 2 | ||||
| -rw-r--r-- | p/scripts/main.js | 35 |
3 files changed, 17 insertions, 21 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 3178e6ae7..4aa5ada8a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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` diff --git a/data/users/_/config.default.php b/data/users/_/config.default.php index 280b13422..f28ef9724 100644 --- a/data/users/_/config.default.php +++ b/data/users/_/config.default.php @@ -35,7 +35,7 @@ return array ( 'mark_when' => array ( 'article' => true, 'site' => true, - 'scroll' => false, + 'scroll' => true, 'reception' => false, ), 'theme' => 'Origine', diff --git a/p/scripts/main.js b/p/scripts/main.js index d42704f7a..b3531e884 100644 --- a/p/scripts/main.js +++ b/p/scripts/main.js @@ -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); } }); }); |
