var cids_requested = [];
var loaded_article_ids = [];
+var _last_headlines_update = 0;
var has_storage = 'sessionStorage' in window && window['sessionStorage'] !== null;
return;
}
- setActiveFeedId(feed_id, is_cat);
+ if (feed_id != getActiveFeedId() || is_cat != activeFeedIsCat())
+ return;
/* dijit.getEnclosingWidget(
document.forms["main_toolbar_form"].update).attr('disabled',
initHeadlinesMenu();
new_elems.each(function(child) {
- var cb = dijit.byId(child.id.replace("RROW-", "RCHK-"));
-
- if (!cb) {
- dojo.parser.parse(child);
+ dojo.parser.parse(child);
- if (!Element.visible(child))
- new Effect.Appear(child, { duration : 0.5 });
- } else {
- c.domNode.removeChild(child);
- }
+ if (!Element.visible(child))
+ new Effect.Appear(child, { duration : 0.5 });
});
} else {
}
_infscroll_request_sent = 0;
+ _last_headlines_update = new Date().getTime();
unpackVisibleHeadlines();
+ // if we have some more space in the buffer, why not try to fill it
+
+ if (!_infscroll_disable && $("headlines-spacer") &&
+ $("headlines-spacer").offsetTop < $("headlines-frame").offsetHeight) {
+
+ window.setTimeout(function() {
+ loadMoreHeadlines();
+ }, 250);
+ }
+
notify("");
} catch (e) {
}
}
-function showArticleInHeadlines(id) {
+function showArticleInHeadlines(id, noexpand) {
try {
selectArticles("none");
var article_is_unread = crow.hasClassName("Unread");
- crow.removeClassName("Unread");
+ if (!noexpand)
+ crow.removeClassName("Unread");
crow.addClassName("active");
selectArticles('none');
markHeadline(id);
- if (article_is_unread)
+ if (article_is_unread && !noexpand)
_force_scheduled_update = true;
} catch (e) {
}
}
-function view(id) {
+function view(id, activefeed, noexpand) {
try {
var oldrow = $("RROW-" + getActiveArticleId());
if (oldrow) oldrow.removeClassName("active");
var crow = $("RROW-" + id);
if (!crow) return;
+ if (noexpand) {
+ setActiveArticleId(id);
+ showArticleInHeadlines(id, noexpand);
+ return;
+ }
console.log("loading article: " + id);
}
}
-function moveToPost(mode, noscroll) {
+function moveToPost(mode, noscroll, noexpand) {
try {
scrollArticle(ctr.offsetHeight/4);
} else if (next_id) {
- cdmExpandArticle(next_id);
+ cdmExpandArticle(next_id, noexpand);
cdmScrollToArticleId(next_id, true);
}
} else if (next_id) {
correctHeadlinesOffset(next_id);
- view(next_id, getActiveFeedId());
+ view(next_id, getActiveFeedId(), noexpand);
}
}
}
if (!noscroll && article.offsetTop < ctr.scrollTop) {
scrollArticle(-ctr.offsetHeight/4);
} else {
- cdmExpandArticle(prev_id);
+ cdmExpandArticle(prev_id, noexpand);
cdmScrollToArticleId(prev_id, true);
}
} else {
scrollArticle(-ctr.offsetHeight/3);
} else if (!noscroll && prev_article &&
prev_article.offsetTop < ctr.scrollTop) {
- cdmExpandArticle(prev_id);
+ cdmExpandArticle(prev_id, noexpand);
scrollArticle(-ctr.offsetHeight/4);
} else if (prev_id) {
- cdmExpandArticle(prev_id);
+ cdmExpandArticle(prev_id, noexpand);
cdmScrollToArticleId(prev_id, noscroll);
}
}
} else if (prev_id) {
correctHeadlinesOffset(prev_id);
- view(prev_id, getActiveFeedId());
+ view(prev_id, getActiveFeedId(), noexpand);
}
}
}
function toggleSelected(id, force_on) {
try {
-
- var cb = dijit.byId("RCHK-" + id);
var row = $("RROW-" + id);
if (row) {
+ var cb = dijit.getEnclosingWidget(
+ row.getElementsByClassName("rchk")[0]);
+
if (row.hasClassName('Selected') && !force_on) {
row.removeClassName('Selected');
if (cb) cb.attr("checked", false);
children.each(function(child) {
var id = child.id.replace("RROW-", "");
- var cb = dijit.byId("RCHK-" + id);
+
+ var cb = dijit.getEnclosingWidget(
+ child.getElementsByClassName("rchk")[0]);
if (mode == "all") {
child.addClassName("Selected");
function unpackVisibleHeadlines() {
try {
-
if (!isCdmMode()) return;
$$("#headlines-frame > div[id*=RROW]").each(
}
);
-
} catch (e) {
exception_error("unpackVisibleHeadlines", e);
}
if (getInitParam("cdm_auto_catchup") == 1) {
+ // let's get DOM some time to settle down
+ var ts = new Date().getTime();
+ if (ts - _last_headlines_update < 100) return;
+
$$("#headlines-frame > div[id*=RROW][class*=Unread]").each(
function(child) {
if (child.hasClassName("Unread") && $("headlines-frame").scrollTop >
onComplete: function(transport) {
handle_rpc_json(transport);
+ reply = JSON.parse(transport.responseText);
+ var batch = reply.ids;
+
batch.each(function(id) {
+ console.log(id);
var elem = $("RROW-" + id);
if (elem) elem.removeClassName("Unread");
catchup_id_batch.remove(id);
}
}
-function cdmExpandArticle(id) {
+function cdmUnexpandArticle(event, id) {
+ try {
+ var row = $("RROW-" + id);
+ var elem = $("CICD-" + id);
+
+ if (elem && row) {
+ var collapse = $$("div#RROW-" + id +
+ " span[class='collapseBtn']")[0];
+
+ Element.hide(elem);
+ Element.show("CEXC-" + id);
+ Element.hide(collapse);
+
+ if (event) Event.stop(event);
+ }
+
+ } catch (e) {
+ exception_error("cdmUnexpandArticle", e);
+ }
+}
+
+function cdmExpandArticle(id, noexpand) {
try {
console.log("cdmExpandArticle " + id);
var cencw = $("CENCW-" + id);
- if (!Element.visible(elem)) {
+ if (!Element.visible(elem) && !noexpand) {
if (cencw) {
cencw.innerHTML = htmlspecialchars_decode(cencw.innerHTML);
cencw.setAttribute('id', '');
if (old_offset > new_offset)
$("headlines-frame").scrollTop -= (old_offset-new_offset);
- toggleUnread(id, 0, true);
+ if (!noexpand)
+ toggleUnread(id, 0, true);
toggleSelected(id);
$("RROW-" + id).addClassName("active");
var row = $("RROW-" + id);
if (row) {
- var check = dijit.byId("RCHK-" + id);
+ var check = dijit.getEnclosingWidget(
+ row.getElementsByClassName("rchk")[0]);
if (check) {
check.attr("checked", marked);