aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2016-10-14 17:54:34 +0200
committerGravatar GitHub <noreply@github.com> 2016-10-14 17:54:34 +0200
commit1013c7d2e2d8a2331b47859e918f4e6ac45aef63 (patch)
treea82d2a1c07b1d1ec4ba2210f49217d6b348adcad
parentf41362a594ffaad726e0621c6eed8e62ae9b634c (diff)
parent6d7ebaeb3b75969fbf44a8f36dbb5e9993f0c623 (diff)
Merge pull request #1309 from Alkarex/scroll-as-read
Scroll as read
-rw-r--r--CHANGELOG.md1
-rw-r--r--data/users/_/config.default.php2
-rw-r--r--p/scripts/main.js35
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);
}
});
});