infinite scrolling
This commit is contained in:
parent
e4914b6275
commit
ac54143200
26
feedlist.js
26
feedlist.js
|
@ -1,5 +1,7 @@
|
|||
//var xmlhttp = Ajax.getTransport();
|
||||
|
||||
var feed_cur_page = 0;
|
||||
|
||||
function viewCategory(cat) {
|
||||
active_feed_is_cat = true;
|
||||
viewfeed(cat, '', true);
|
||||
|
@ -35,13 +37,35 @@ function viewFeedGoPage(i) {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
function viewNextFeedPage() {
|
||||
try {
|
||||
if (!getActiveFeedId()) return;
|
||||
|
||||
feed_cur_page++;
|
||||
|
||||
viewfeed(getActiveFeedId(), undefined, undefined, undefined,
|
||||
undefined, feed_cur_page);
|
||||
|
||||
} catch (e) {
|
||||
exception_error(e, "viewFeedGoPage");
|
||||
}
|
||||
}
|
||||
|
||||
function viewfeed(feed, subop, is_cat, subop_param, skip_history, offset) {
|
||||
try {
|
||||
|
||||
// if (!offset) page_offset = 0;
|
||||
|
||||
if (offset != undefined) {
|
||||
if (offset > 0) {
|
||||
page_offset = offset;
|
||||
} else {
|
||||
page_offset = 0;
|
||||
feed_cur_page = 0;
|
||||
}
|
||||
|
||||
if (getActiveFeedId() != feed) {
|
||||
feed_cur_page = 0;
|
||||
}
|
||||
|
||||
enableHotkeys();
|
||||
|
|
|
@ -3693,7 +3693,9 @@
|
|||
|
||||
$topmost_article_ids = array();
|
||||
|
||||
if (!$offset) $offset = 0;
|
||||
if (!$offset) {
|
||||
$offset = 0;
|
||||
}
|
||||
|
||||
if ($subop == "undefined") $subop = "";
|
||||
|
||||
|
@ -3777,6 +3779,7 @@
|
|||
|
||||
/// STOP //////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
if (!$offset) {
|
||||
print "<div id=\"headlinesContainer\" $rtl_tag>";
|
||||
|
||||
if (!$result) {
|
||||
|
@ -3788,13 +3791,14 @@
|
|||
$rtl_content, $feed, $cat_view, $search, $match_on, $search_mode,
|
||||
$offset, $limit);
|
||||
|
||||
print "<div id=\"headlinesInnerContainer\">";
|
||||
print "<div id=\"headlinesInnerContainer\" onscroll=\"headlines_scroll_handler()\">";
|
||||
}
|
||||
|
||||
if (db_num_rows($result) > 0) {
|
||||
|
||||
# print "\{$offset}";
|
||||
|
||||
if (!get_pref($link, 'COMBINED_DISPLAY_MODE')) {
|
||||
if (!get_pref($link, 'COMBINED_DISPLAY_MODE') && !$offset) {
|
||||
print "<table class=\"headlinesList\" id=\"headlinesList\"
|
||||
cellspacing=\"0\">";
|
||||
}
|
||||
|
@ -3975,7 +3979,7 @@
|
|||
++$lnum;
|
||||
}
|
||||
|
||||
if (!get_pref($link, 'COMBINED_DISPLAY_MODE')) {
|
||||
if (!get_pref($link, 'COMBINED_DISPLAY_MODE') && !$offset) {
|
||||
print "</table>";
|
||||
}
|
||||
|
||||
|
@ -3984,12 +3988,13 @@
|
|||
|
||||
|
||||
} else {
|
||||
print "<div class='whiteBox'>".__('No articles found.')."</div>";
|
||||
if (!$offset) print "<div class='whiteBox'>".__('No articles found.')."</div>";
|
||||
}
|
||||
|
||||
if (!$offset) {
|
||||
print "</div>";
|
||||
|
||||
print "</div>";
|
||||
}
|
||||
|
||||
return $topmost_article_ids;
|
||||
}
|
||||
|
|
39
viewfeed.js
39
viewfeed.js
|
@ -38,7 +38,10 @@ function headlines_callback() {
|
|||
debug("headlines_callback");
|
||||
var f = document.getElementById("headlines-frame");
|
||||
try {
|
||||
if (feed_cur_page == 0) {
|
||||
debug("resetting headlines scrollTop");
|
||||
f.scrollTop = 0;
|
||||
}
|
||||
} catch (e) { };
|
||||
|
||||
if (xmlhttp.responseXML) {
|
||||
|
@ -47,6 +50,7 @@ function headlines_callback() {
|
|||
var articles = xmlhttp.responseXML.getElementsByTagName("article");
|
||||
var runtime_info = xmlhttp.responseXML.getElementsByTagName("runtime-info");
|
||||
|
||||
if (feed_cur_page == 0) {
|
||||
if (headlines) {
|
||||
f.innerHTML = headlines.firstChild.nodeValue;
|
||||
} else {
|
||||
|
@ -54,6 +58,23 @@ function headlines_callback() {
|
|||
f.innerHTML = "<div class='whiteBox'>" + __('Could not update headlines (missing XML data)') + "</div>";
|
||||
|
||||
}
|
||||
} else {
|
||||
if (headlines) {
|
||||
debug("adding some more headlines...");
|
||||
|
||||
var c = document.getElementById("headlinesList");
|
||||
|
||||
if (!c) {
|
||||
c = document.getElementById("headlinesInnerContainer");
|
||||
}
|
||||
|
||||
c.innerHTML = c.innerHTML + headlines.firstChild.nodeValue;
|
||||
} else {
|
||||
debug("headlines_callback: returned no data");
|
||||
notify_error("Error while trying to load more headlines");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (articles) {
|
||||
for (var i = 0; i < articles.length; i++) {
|
||||
|
@ -103,6 +124,8 @@ function headlines_callback() {
|
|||
try {
|
||||
document.getElementById("headlinesInnerContainer").scrollTop = _tag_cdm_scroll;
|
||||
_tag_cdm_scroll = false;
|
||||
debug("resetting headlinesInner scrollTop");
|
||||
|
||||
} catch (e) { }
|
||||
}
|
||||
|
||||
|
@ -937,3 +960,19 @@ function cdmMouseIn(elem) {
|
|||
function cdmMouseOut(elem) {
|
||||
active_post_id = false;
|
||||
}
|
||||
|
||||
function headlines_scroll_handler() {
|
||||
try {
|
||||
|
||||
var e = document.getElementById("headlinesInnerContainer");
|
||||
|
||||
if (e.scrollTop + e.offsetHeight == e.scrollHeight) {
|
||||
debug("more cowbell!");
|
||||
|
||||
viewNextFeedPage();
|
||||
}
|
||||
|
||||
} catch (e) {
|
||||
exception_error("headlines_scroll_handler", e);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue