var article_cache = new Array();
+var vgroup_last_feed = false;
+var post_under_pointer = false;
+
function catchup_callback() {
if (xmlhttp_rpc.readyState == 4) {
try {
function headlines_callback2(transport, active_feed_id, is_cat, feed_cur_page) {
try {
+ loading_set_progress(100);
+
debug("headlines_callback2 [page=" + feed_cur_page + "]");
clean_feed_selections();
var headlines_unread_obj = transport.responseXML.getElementsByTagName("headlines-unread")[0];
var disable_cache_obj = transport.responseXML.getElementsByTagName("disable-cache")[0];
+ var vgroup_last_feed_obj = transport.responseXML.getElementsByTagName("vgroup-last-feed")[0];
+
var headlines_count = headlines_count_obj.getAttribute("value");
var headlines_unread = headlines_unread_obj.getAttribute("value");
var disable_cache = disable_cache_obj.getAttribute("value") != "0";
+ vgroup_last_feed = vgroup_last_feed_obj.getAttribute("value");
+
if (headlines_count == 0) {
_infscroll_disable = 1;
} else {
debug("headlines_callback: returned no data");
notify_error("Error while trying to load more headlines");
}
-
+
}
if (articles) {
_infscroll_request_sent = 0;
notify("");
+
+ remove_splash();
+
} catch (e) {
exception_error("headlines_callback2", e);
}
active_real_feed_id = feed_id;
active_post_id = id;
- showArticleInHeadlines(id);
+ //showArticleInHeadlines(id);
var reply = transport.responseXML.firstChild.firstChild;
try {
- // check for combined mode
- if (document.getElementById("headlinesList")) {
-
- var rows = getVisibleHeadlineIds();
+ var rows;
+
+ if (isCdmMode()) {
+ rows = cdmGetVisibleArticles();
+ } else {
+ rows = getVisibleHeadlineIds();
+ }
- var prev_id = false;
- var next_id = false;
+ var prev_id = false;
+ var next_id = false;
- if (!document.getElementById('RROW-' + active_post_id)) {
- active_post_id = false;
- }
+ if (!document.getElementById('RROW-' + active_post_id)) {
+ active_post_id = false;
+ }
- if (active_post_id == false) {
- next_id = getFirstVisibleHeadlineId();
- prev_id = getLastVisibleHeadlineId();
- } else {
- for (var i = 0; i < rows.length; i++) {
- if (rows[i] == active_post_id) {
- prev_id = rows[i-1];
- next_id = rows[i+1];
- }
+ if (active_post_id == false) {
+ next_id = getFirstVisibleHeadlineId();
+ prev_id = getLastVisibleHeadlineId();
+ } else {
+ for (var i = 0; i < rows.length; i++) {
+ if (rows[i] == active_post_id) {
+ prev_id = rows[i-1];
+ next_id = rows[i+1];
}
}
+ }
- if (mode == "next") {
- if (next_id) {
+ if (mode == "next") {
+ if (next_id) {
+ if (isCdmMode()) {
+
+ if (!cdmArticleIsActuallyVisible(next_id)) {
+ cdmScrollToArticleId(next_id);
+ }
+ cdmSelectArticles("none");
+ toggleUnread(next_id, 0, true);
+ toggleSelected(next_id);
+
+ } else {
correctHeadlinesOffset(next_id);
view(next_id, getActiveFeedId());
}
}
+ }
- if (mode == "prev") {
- if (prev_id) {
+ if (mode == "prev") {
+ if (prev_id) {
+ if (isCdmMode()) {
+ cdmScrollToArticleId(prev_id);
+ cdmSelectArticles("none");
+ toggleUnread(prev_id, 0, true);
+ toggleSelected(prev_id);
+ } else {
correctHeadlinesOffset(prev_id);
view(prev_id, getActiveFeedId());
}
- }
- } else {
- var rows = cdmGetUnreadArticles();
+ }
+ }
+
+
+/* } else {
+ var rows = cdmGetVisibleArticles();
if (mode == "next") {
cdmScrollToArticleId(rows[i]);
}
//setTimeout("toggleUnread(" + rows[i] + ", undefined, true)", 500);
+ cdmSelectArticles("none");
toggleUnread(rows[i], undefined, true);
+ toggleSelected(rows[i]);
return;
}
cdmScrollToArticleId(rows[i]);
//setTimeout("toggleUnread(" + rows[i] + ", undefined, true)", 500);
+ cdmSelectArticles("none");
toggleUnread(rows[i], undefined, true);
+ cdmSelectArticleById(rows[i]);
break;
}
}
- }
+ }
- }
+ } */
} catch (e) {
- exception_error(e, "moveToPost");
+ exception_error("moveToPost", e);
}
}
function toggleSelected(id) {
try {
+ var cb = document.getElementById("RCHK-" + id);
+
var row = document.getElementById("RROW-" + id);
if (row) {
var nc = row.className;
if (!nc.match("Selected")) {
nc = nc + "Selected";
+ if (cb) {
+ cb.checked = true;
+ }
+
+ // In CDM basically last selected article == active article
+ if (isCdmMode()) active_post_id = id;
} else {
nc = nc.replace("Selected", "");
+ if (cb) {
+ cb.checked = false;
+ }
+
}
row.className = nc;
}
} catch (e) {
- exception_error(e, "toggleSelected");
+ exception_error("toggleSelected", e);
}
}
elem.style.backgroundColor = "";
} catch (e) {
- exception_error(e, "toggleUnread_afh");
+ exception_error("toggleUnread_afh", e);
}
}
var row = document.getElementById("RROW-" + id);
if (row) {
var nc = row.className;
+ var is_selected = row.className.match("Selected");
nc = nc.replace("Unread", "");
nc = nc.replace("Selected", "");
row.className = nc + "Unread";
}
+ // Disable unmarking as selected for the time being (16.05.08) -fox
+ if (is_selected) row.className = row.className + "Selected";
+
if (cmode == undefined) cmode = 2;
var query = "backend.php?op=rpc&subop=catchupSelected&ids=" +
found_tags.selectedIndex = 0;
} catch (e) {
- exception_error(e, "editTagsInsert");
+ exception_error("editTagsInsert", e);
}
}
}
} catch (e) {
- exception_error(e, "cdmArticleIsVisible");
+ exception_error("cdmArticleIsVisible", e);
}
}
}
} catch (e) {
- exception_error(e, "cdmArticleIsVisible");
+ exception_error("cdmArticleIsVisible", e);
}
}
ctr.scrollTop = e.offsetTop;
} catch (e) {
- exception_error(e, "cdmScrollToArticleId");
+ exception_error("cdmScrollToArticleId", e);
}
}
return false;
} catch (e) {
- exception_error(e, "cdmArticleIsVisible");
+ exception_error("cdmArticleIsVisible", e);
}
}
_cdm_wd_timeout = window.setTimeout("cdmWatchdog()", 4000);
} catch (e) {
- exception_error(e, "cdmWatchdog");
+ exception_error("cdmWatchdog", e);
}
}
}
function cache_expire() {
- while (article_cache.length > 20) {
+ while (article_cache.length > 25) {
article_cache.shift();
}
}
return active_post_id;
}
-function cdmMouseIn(elem) {
+function cdmClicked(elem) {
try {
if (elem.id && elem.id.match("RROW-")) {
var id = elem.id.replace("RROW-", "");
active_post_id = id;
+
+ cdmSelectArticles("none");
+ toggleUnread(id, 0, true);
+ toggleSelected(id);
+
}
} catch (e) {
exception_error("cdmMouseIn", e);
+ }
+}
+
+function preload_article_callback(transport) {
+ try {
+ if (transport.responseXML) {
+ var articles = transport.responseXML.getElementsByTagName("article");
+
+ for (var i = 0; i < articles.length; i++) {
+ var id = articles[i].getAttribute("id");
+ if (!cache_check(id)) {
+ cache_inject(id, articles[i].firstChild.nodeValue);
+ debug("preloaded article: " + id);
+ }
+ }
+ }
+ } catch (e) {
+ exception_error("preload_article_callback", e);
}
+}
+
+function preloadArticleUnderPointer(id) {
+ try {
+ if (post_under_pointer == id && !cache_check(id)) {
+
+ debug("trying to preload article " + id);
+
+ var neighbor_ids = getRelativePostIds(id, 1);
+
+ /* only request uncached articles */
+ var cids_to_request = Array();
+
+ for (var i = 0; i < neighbor_ids.length; i++) {
+ if (!cache_check(neighbor_ids[i])) {
+ cids_to_request.push(neighbor_ids[i]);
+ }
+ }
+ debug("additional ids: " + cids_to_request.toString());
+
+ cids_to_request.push(id);
+
+ var query = "backend.php?op=rpc&subop=getArticles&ids=" +
+ cids_to_request.toString();
+ new Ajax.Request(query, {
+ onComplete: function(transport) {
+ preload_article_callback(transport);
+ } });
+ }
+ } catch (e) {
+ exception_error("preloadArticleUnderPointer", e);
+ }
+}
+
+function postMouseIn(id) {
+ try {
+ if (post_under_pointer != id) {
+ post_under_pointer = id;
+ if (!isCdmMode()) {
+ window.setTimeout("preloadArticleUnderPointer(" + id + ")", 250);
+ }
+ }
+
+ } catch (e) {
+ exception_error("postMouseIn", e);
+ }
+}
+
+function postMouseOut(id) {
+ try {
+ post_under_pointer = false;
+ } catch (e) {
+ exception_error("postMouseOut", e);
+ }
+}
+
+function cdmMouseIn(elem) {
+/* try {
+ if (elem.id && elem.id.match("RROW-")) {
+ var id = elem.id.replace("RROW-", "");
+ active_post_id = id;
+ }
+ } catch (e) {
+ exception_error("cdmMouseIn", e);
+ } */
}
function cdmMouseOut(elem) {
- active_post_id = false;
+ //active_post_id = false;
}
function headlines_scroll_handler() {
}
function subtoolbarSearch() {
-
try {
var q = document.getElementById("subtoolbar_search_box");
} catch (e) {
exception_error("subtoolbarSearch", e);
- }
+ }
+}
+function getArticleUnderPointer() {
+ return post_under_pointer;
}