var cids_requested = [];
var loaded_article_ids = [];
var _last_headlines_update = 0;
+var _headlines_scroll_offset = 0;
+var current_first_id = 0;
+
+var _catchup_request_sent = false;
var has_storage = 'sessionStorage' in window && window['sessionStorage'] !== null;
return;
}
- if (feed_id != getActiveFeedId() || is_cat != activeFeedIsCat())
+ if (feed_id != -7 && (feed_id != getActiveFeedId() || is_cat != activeFeedIsCat()))
return;
/* dijit.getEnclosingWidget(
$("headlines-frame").scrollTop = 0;
$("floatingTitle").style.visibility = "hidden";
- $("floatingTitle").setAttribute("rowid", 0);
+ $("floatingTitle").setAttribute("data-article-id", 0);
$("floatingTitle").innerHTML = "";
}
} catch (e) { };
_infscroll_disable = 0;
}
+ current_first_id = reply['headlines']['first_id'];
var counters = reply['counters'];
var articles = reply['articles'];
//var runtime_info = reply['runtime-info'];
if (infscroll_req == false) {
loaded_article_ids = [];
- dijit.byId("headlines-frame").attr('content',
- reply['headlines']['content']);
-
- //dijit.byId("headlines-toolbar").attr('content',
- // reply['headlines']['toolbar']);
-
dojo.html.set($("headlines-toolbar"),
reply['headlines']['toolbar'],
{parseContent: true});
- $$("#headlines-frame > div[id*=RROW]").each(function(row) {
- if (loaded_article_ids.indexOf(row.id) != -1) {
- row.parentNode.removeChild(row);
- } else {
+ /*dojo.html.set($("headlines-frame"),
+ reply['headlines']['content'],
+ {parseContent: true});
+
+ $$("#headlines-frame div[id*='RROW']").each(function(row) {
+ loaded_article_ids.push(row.id);
+ });*/
+
+ $("headlines-frame").innerHTML = '';
+
+ var tmp = new Element("div");
+ tmp.innerHTML = reply['headlines']['content'];
+ dojo.parser.parse(tmp);
+
+ while (tmp.hasChildNodes()) {
+ var row = tmp.removeChild(tmp.firstChild);
+
+ if (loaded_article_ids.indexOf(row.id) == -1 || row.hasClassName("cdmFeedTitle")) {
+ dijit.byId("headlines-frame").domNode.appendChild(row);
+
loaded_article_ids.push(row.id);
}
- });
+ }
var hsp = $("headlines-spacer");
if (!hsp) hsp = new Element("DIV", {"id": "headlines-spacer"});
var c = dijit.byId("headlines-frame");
var ids = getSelectedArticleIds2();
- var new_elems = [];
-
- $("headlines-tmp").innerHTML = reply['headlines']['content'];
var hsp = $("headlines-spacer");
if (hsp)
c.domNode.removeChild(hsp);
- $$("#headlines-tmp > div").each(function(row) {
- if (row.className == 'cdmFeedTitle') {
- row.style.display = 'none';
- c.domNode.appendChild(row);
- new_elems.push(row);
- } else if (loaded_article_ids.indexOf(row.id) == -1) {
- row.style.display = 'none';
- c.domNode.appendChild(row);
- new_elems.push(row);
+ var tmp = new Element("div");
+ tmp.innerHTML = reply['headlines']['content'];
+ dojo.parser.parse(tmp);
+
+ var new_rows = [];
+
+ while (tmp.hasChildNodes()) {
+ var row = tmp.removeChild(tmp.firstChild);
+
+ if (loaded_article_ids.indexOf(row.id) == -1 || row.hasClassName("cdmFeedTitle")) {
+ dijit.byId("headlines-frame").domNode.appendChild(row);
+
loaded_article_ids.push(row.id);
- } else {
- row.parentNode.removeChild(row);
+ new_rows.push(row);
}
- });
+ }
if (!hsp) hsp = new Element("DIV", {"id": "headlines-spacer"});
+ c.domNode.appendChild(hsp);
-// if (getInitParam("cdm_auto_catchup") == 1) {
- c.domNode.appendChild(hsp);
-// }
-
- console.log("added " + new_elems.size() + " headlines");
-
- if (new_elems.size() == 0)
- _infscroll_disable = true;
+ if (headlines_count < 30) _infscroll_disable = true;
console.log("restore selected ids: " + ids);
markHeadline(ids[i]);
}
- initHeadlinesMenu();
-
- new_elems.each(function(child) {
- dojo.parser.parse(child);
+ initHeadlinesMenu(new_rows);
- if (!Element.visible(child))
- new Effect.Appear(child, { duration : 0.5 });
- });
+ if (_infscroll_disable) {
+ hsp.innerHTML = "<a href='#' onclick='openNextUnreadFeed()'>" +
+ __("Click to open next unread feed.") + "</a>";
+ }
} else {
console.log("no new headlines received");
+ var first_id_changed = reply['headlines']['first_id_changed'];
+ console.log("first id changed:" + first_id_changed);
+
var hsp = $("headlines-spacer");
- if (hsp) hsp.innerHTML = "<a href='#' onclick='openNextUnreadFeed()'>" +
- __("Click to open next unread feed.") + "</a>";
+ if (hsp) {
+ if (first_id_changed) {
+ hsp.innerHTML = "<a href='#' onclick='viewCurrentFeed()'>" +
+ __("New articles found, reload feed to continue.") + "</a>";
+ } else {
+ hsp.innerHTML = "<a href='#' onclick='openNextUnreadFeed()'>" +
+ __("Click to open next unread feed.") + "</a>";
+ }
+
+ }
+
}
}
function render_article(article) {
try {
+ cleanup_memory("content-insert");
+
dijit.byId("headlines-wrap-inner").addChild(
dijit.byId("content-insert"));
c.domNode.scrollTop = 0;
} catch (e) { };
- PluginHost.run(PluginHost.HOOK_ARTICLE_RENDERED, article);
-
c.attr('content', article);
+ PluginHost.run(PluginHost.HOOK_ARTICLE_RENDERED, c.domNode);
correctHeadlinesOffset(getActiveArticleId());
function showArticleInHeadlines(id, noexpand) {
try {
- selectArticles("none");
-
- var crow = $("RROW-" + id);
-
- if (!crow) return;
-
- var article_is_unread = crow.hasClassName("Unread");
+ var row = $("RROW-" + id);
+ if (!row) return;
if (!noexpand)
- crow.removeClassName("Unread");
- crow.addClassName("active");
-
- selectArticles('none');
+ row.removeClassName("Unread");
- var view_mode = false;
+ row.addClassName("active");
- try {
- view_mode = document.forms['main_toolbar_form'].view_mode;
- view_mode = view_mode[view_mode.selectedIndex].value;
- } catch (e) {
- //
- }
+ selectArticles('none');
markHeadline(id);
- if (article_is_unread && !noexpand)
- _force_scheduled_update = true;
-
} catch (e) {
exception_error("showArticleInHeadlines", e);
}
var unread_in_buffer = $$("#headlines-frame > div[id*=RROW][class*=Unread]").length
request_counters(unread_in_buffer == 0);
- //headlines_scroll_handler($("headlines-frame"));
-
-/* try {
- if (!_infscroll_disable &&
- $$("#headlines-frame > div[id*=RROW]").last().hasClassName("Selected")) {
-
- loadMoreHeadlines();
- }
- } catch (e) {
- console.warn(e);
- } */
-
notify("");
} catch (e) {
exception_error("article_callback2", e, transport);
// if we don't need to request any relative ids, we might as well skip
// the server roundtrip altogether
if (cids_to_request.length == 0) {
-
-/* try {
- if (!_infscroll_disable &&
- $$("#headlines-frame > div[id*=RROW]").last().hasClassName("Selected")) {
-
- loadMoreHeadlines();
- }
- } catch (e) {
- console.warn(e);
- } */
-
- //headlines_scroll_handler($("headlines-frame"));
-
return;
}
}
var ft = $("floatingTitle");
- if (ft && ft.getAttribute("rowid") == "RROW-" + id) {
+ if (ft && ft.getAttribute("data-article-id") == id) {
var fte = ft.getElementsByClassName("markedPic");
for (var i = 0; i < fte.length; i++)
var ft = $("floatingTitle");
- if (ft && ft.getAttribute("rowid") == "RROW-" + id) {
+ if (ft && ft.getAttribute("data-article-id") == id) {
var fte = ft.getElementsByClassName("pubPic");
for (var i = 0; i < fte.length; i++)
try {
- var rows = getVisibleArticleIds();
+ var rows = getLoadedArticleIds();
var prev_id = false;
var next_id = false;
}
}
+ console.log("cur: " + getActiveArticleId() + " next: " + next_id);
+
if (mode == "next") {
if (next_id || getActiveArticleId()) {
if (isCdmMode()) {
}
}
-function toggleUnread_afh(effect) {
- try {
-
- var elem = effect.element;
- elem.style.backgroundColor = "";
-
- } catch (e) {
- exception_error("toggleUnread_afh", e);
- }
-}
-
function toggleUnread(id, cmode, effect) {
try {
var row = $("RROW-" + id);
if (row) {
+ var tmpClassName = row.className;
+
if (cmode == undefined || cmode == 2) {
if (row.hasClassName("Unread")) {
row.removeClassName("Unread");
// notify_progress("Loading, please wait...");
- new Ajax.Request("backend.php", {
- parameters: query,
- onComplete: function(transport) {
- handle_rpc_json(transport);
- } });
+ if (tmpClassName != row.className) {
+ new Ajax.Request("backend.php", {
+ parameters: query,
+ onComplete: function (transport) {
+ handle_rpc_json(transport);
+ }
+ });
+ }
}
$$("#headlines-frame > div[id*=RROW][class*=Selected]").each(
function(child) {
- rv.push(child.id.replace("RROW-", ""));
+ rv.push(child.getAttribute("data-article-id"));
});
return rv;
var children = $$("#headlines-frame > div[id*=RROW-]");
children.each(function(child) {
- rv.push(child.id.replace("RROW-", ""));
- });
+ if (Element.visible(child)) {
+ rv.push(child.getAttribute("data-article-id"));
+ }
+ });
return rv;
var children = $$(query);
children.each(function(child) {
- var id = child.id.replace("RROW-", "");
+ var id = child.getAttribute("data-article-id");
var cb = dijit.getEnclosingWidget(
child.getElementsByClassName("rchk")[0]);
}});
}
},
- href: query,
+ href: query
});
var tmph = dojo.connect(dialog, 'onLoad', function() {
- dojo.disconnect(tmph);
+ dojo.disconnect(tmph);
new Ajax.Autocompleter('tags_str', 'tags_choices',
"backend.php?op=article&method=completeTags",
}
function setActiveArticleId(id) {
+ console.log("setActiveArticleId:" + id);
+
_active_article_id = id;
PluginHost.run(PluginHost.HOOK_ARTICLE_SET_ACTIVE, _active_article_id);
}
if (child.offsetTop <= $("headlines-frame").scrollTop +
$("headlines-frame").offsetHeight) {
- var cencw = $("CENCW-" + child.id.replace("RROW-", ""));
+ var cencw = $("CENCW-" + child.getAttribute("data-article-id"));
if (cencw) {
- PluginHost.run(PluginHost.HOOK_ARTICLE_RENDERED_CDM, child);
-
cencw.innerHTML = htmlspecialchars_decode(cencw.innerHTML);
cencw.setAttribute('id', '');
+
+ PluginHost.run(PluginHost.HOOK_ARTICLE_RENDERED_CDM, child);
+
Element.show(cencw);
}
}
function headlines_scroll_handler(e) {
try {
+
+ // rate-limit in case of smooth scrolling and similar abominations
+ if (Math.max(e.scrollTop, _headlines_scroll_offset) - Math.min(e.scrollTop, _headlines_scroll_offset) < 25) {
+ return;
+ }
+
+ _headlines_scroll_offset = e.scrollTop;
+
var hsp = $("headlines-spacer");
unpackVisibleHeadlines();
if (isCdmMode() && getInitParam("cdm_auto_catchup") == 1 &&
getSelectedArticleIds2().length <= 1 &&
getInitParam("cdm_expanded")) {
+
var rows = $$("#headlines-frame > div[id*=RROW]");
for (var i = 0; i < rows.length; i++) {
if ($("headlines-frame").scrollTop <= child.offsetTop &&
child.offsetTop - $("headlines-frame").scrollTop < 100 &&
- child.id.replace("RROW-", "") != _active_article_id) {
+ child.getAttribute("data-article-id") != _active_article_id) {
if (_active_article_id) {
var row = $("RROW-" + _active_article_id);
if (row) row.removeClassName("active");
}
- _active_article_id = child.id.replace("RROW-", "");
+ _active_article_id = child.getAttribute("data-article-id");
showArticleInHeadlines(_active_article_id, true);
updateSelectedPrompt();
break;
}
if (!_infscroll_disable) {
- if ((hsp && e.scrollTop + e.offsetHeight >= hsp.offsetTop - hsp.offsetHeight) ||
- (e.scrollHeight != 0 &&
- ((e.scrollTop + e.offsetHeight) / e.scrollHeight >= 0.7))) {
+ if (hsp && hsp.offsetTop - 250 <= e.scrollTop + e.offsetHeight) {
- if (hsp)
- hsp.innerHTML = "<span class='loading'><img src='images/indicator_tiny.gif'> " +
- __("Loading, please wait...") + "</span>";
+ hsp.innerHTML = "<span class='loading'><img src='images/indicator_tiny.gif'> " +
+ __("Loading, please wait...") + "</span>";
loadMoreHeadlines();
return;
}
- } else {
- if (hsp)
- if (_infscroll_disable)
- hsp.innerHTML = "<a href='#' onclick='openNextUnreadFeed()'>" +
- __("Click to open next unread feed.") + "</a>";
- else
- hsp.innerHTML = "";
}
if (isCdmMode()) {
updateFloatingTitle();
}
+ catchupCurrentBatchIfNeeded();
+
if (getInitParam("cdm_auto_catchup") == 1) {
// let's get DOM some time to settle down
if (child.hasClassName("Unread") && $("headlines-frame").scrollTop >
(child.offsetTop + child.offsetHeight/2)) {
- var id = child.id.replace("RROW-", "");
+ var id = child.getAttribute("data-article-id")
if (catchup_id_batch.indexOf(id) == -1)
catchup_id_batch.push(id);
});
- if (catchup_id_batch.length > 0) {
- window.clearTimeout(catchup_timeout_id);
-
- if (!_infscroll_request_sent) {
- catchup_timeout_id = window.setTimeout('catchupBatchedArticles()',
- 500);
- }
- }
-
if (_infscroll_disable) {
var child = $$("#headlines-frame div[id*=RROW]").last();
try {
var is_cat = activeFeedIsCat();
var nuf = getNextUnreadFeed(getActiveFeedId(), is_cat);
- if (nuf) viewfeed(nuf, '', is_cat);
+ if (nuf) viewfeed({feed: nuf, is_cat: is_cat});
} catch (e) {
exception_error("openNextUnreadFeed", e);
}
function catchupBatchedArticles() {
try {
- if (catchup_id_batch.length > 0 && !_infscroll_request_sent) {
+ if (catchup_id_batch.length > 0 && !_infscroll_request_sent && !_catchup_request_sent) {
+
+ console.log("catchupBatchedArticles: working");
// make a copy of the array
var batch = catchup_id_batch.slice();
console.log(query);
+ _catchup_request_sent = true;
+
new Ajax.Request("backend.php", {
parameters: query,
onComplete: function(transport) {
handle_rpc_json(transport);
+ _catchup_request_sent = false;
+
reply = JSON.parse(transport.responseText);
var batch = reply.ids;
return;
}
- var visible_ids = getVisibleArticleIds();
+ var visible_ids = getLoadedArticleIds();
var ids_to_mark = new Array();
scrollToRowId(row.id);
$("floatingTitle").style.visibility = "hidden";
- $("floatingTitle").setAttribute("rowid", false);
+ $("floatingTitle").setAttribute("data-article-id", 0);
}
} catch (e) {
if (old_offset > new_offset)
$("headlines-frame").scrollTop -= (old_offset-new_offset);
- if (!noexpand)
- toggleUnread(id, 0, true);
+ if (!noexpand) {
+ if (catchup_id_batch.indexOf(id) == -1)
+ catchup_id_batch.push(id);
+
+ catchupCurrentBatchIfNeeded();
+ }
+
toggleSelected(id);
$("RROW-" + id).addClassName("active");
}
}
-function dismissArticle(id) {
- try {
- var elem = $("RROW-" + id);
-
- if (!elem) return;
-
- toggleUnread(id, 0, true);
-
- new Effect.Fade(elem, {duration : 0.5});
-
- // Remove the content, too
- var elem_content = $("CICD-" + id);
- if (elem_content) {
- Element.remove(elem_content);
- }
-
- if (id == getActiveArticleId()) {
- setActiveArticleId(0);
- }
-
- } catch (e) {
- exception_error("dismissArticle", e);
- }
-}
-
-function dismissSelectedArticles() {
- try {
-
- var ids = getVisibleArticleIds();
- var tmp = [];
- var sel = [];
-
- for (var i = 0; i < ids.length; i++) {
- var elem = $("RROW-" + ids[i]);
-
- if (elem.className && elem.hasClassName("Selected") &&
- ids[i] != getActiveArticleId()) {
- new Effect.Fade(elem, {duration : 0.5});
- sel.push(ids[i]);
-
- // Remove the content, too
- var elem_content = $("CICD-" + ids[i]);
- if (elem_content) {
- Element.remove(elem_content);
- }
- } else {
- tmp.push(ids[i]);
- }
- }
-
- if (sel.length > 0)
- selectionToggleUnread(false);
-
-
- } catch (e) {
- exception_error("dismissSelectedArticles", e);
- }
-}
-
-function dismissReadArticles() {
- try {
-
- var ids = getVisibleArticleIds();
- var tmp = [];
-
- for (var i = 0; i < ids.length; i++) {
- var elem = $("RROW-" + ids[i]);
-
- if (elem.className && !elem.hasClassName("Unread") &&
- !elem.hasClassName("Selected")) {
-
- new Effect.Fade(elem, {duration : 0.5});
-
- // Remove the content, too
- var elem_content = $("CICD-" + ids[i]);
- if (elem_content) {
- Element.remove(elem_content);
- }
- } else {
- tmp.push(ids[i]);
- }
- }
-
- } catch (e) {
- exception_error("dismissReadArticles", e);
- }
-}
-
-function getVisibleArticleIds() {
- var ids = [];
-
- try {
-
- getLoadedArticleIds().each(function(id) {
- var elem = $("RROW-" + id);
- if (elem && Element.visible(elem))
- ids.push(id);
- });
-
- } catch (e) {
- exception_error("getVisibleArticleIds", e);
- }
-
- return ids;
-}
-
function cdmClicked(event, id) {
try {
//var shift_key = event.shiftKey;
- if (!event.ctrlKey) {
+ if (!event.ctrlKey && !event.metaKey) {
if (!getInitParam("cdm_expanded")) {
return cdmExpandArticle(id);
if (event.which == 2) {
view(id);
return true;
- } else if (event.ctrlKey) {
+ } else if (event.ctrlKey || event.metaKey) {
toggleSelected(id, true);
toggleUnread(id, 0, false);
openArticleInNewWindow(id);
}
}
-function getFirstVisibleHeadlineId() {
- var rows = getVisibleArticleIds();
- return rows[0];
-
-}
-
-function getLastVisibleHeadlineId() {
- var rows = getVisibleArticleIds();
- return rows[rows.length-1];
-}
-
function openArticleInNewWindow(id) {
toggleUnread(id, 0, false);
window.open("backend.php?op=article&method=redirect&id=" + id);
if (!limit) limit = 6; //3
- var ids = getVisibleArticleIds();
+ var ids = getLoadedArticleIds();
for (var i = 0; i < ids.length; i++) {
if (ids[i] == id) {
function initFloatingMenu() {
try {
- if (dijit.byId("floatingMenu"))
- dijit.byId("floatingMenu").destroyRecursive();
+ if (!dijit.byId("floatingMenu")) {
var menu = new dijit.Menu({
id: "floatingMenu",
targetNodeIds: ["floatingTitle"]
});
- var id = $("floatingTitle").getAttribute("rowid").replace("RROW-", "");
+ var tmph = dojo.connect(menu, '_openMyself', function (event) {
+ var callerNode = event.target, match = null, tries = 0;
+
+ while (match == null && callerNode && tries <= 3) {
+ match = callerNode.getAttribute("data-article-id");
+ callerNode = callerNode.parentNode;
+ ++tries;
+ }
+
+ if (match) this.callerRowId = match;
+
+ });
- headlinesMenuCommon(menu, id);
+ headlinesMenuCommon(menu);
menu.startup();
+ }
+
} catch (e) {
exception_error("initFloatingMenu", e);
}
}
-function headlinesMenuCommon(menu, base_id) {
+function headlinesMenuCommon(menu) {
try {
menu.addChild(new dijit.MenuItem({
label: __("Open original article"),
onClick: function(event) {
- openArticleInNewWindow(base_id ? base_id : this.getParent().callerRowId);
+ openArticleInNewWindow(this.getParent().callerRowId);
}}));
menu.addChild(new dijit.MenuItem({
label: __("Display article URL"),
onClick: function(event) {
- displayArticleUrl(base_id ? base_id : this.getParent().callerRowId);
+ displayArticleUrl(this.getParent().callerRowId);
}}));
menu.addChild(new dijit.MenuSeparator());
onClick: function(event) {
var ids = getSelectedArticleIds2();
// cast to string
- var id = (base_id ? base_id : this.getParent().callerRowId) + "";
+ var id = (this.getParent().callerRowId) + "";
ids = ids.size() != 0 && ids.indexOf(id) != -1 ? ids : [id];
selectionToggleUnread(undefined, false, true, ids);
onClick: function(event) {
var ids = getSelectedArticleIds2();
// cast to string
- var id = (base_id ? base_id : this.getParent().callerRowId) + "";
+ var id = (this.getParent().callerRowId) + "";
ids = ids.size() != 0 && ids.indexOf(id) != -1 ? ids : [id];
selectionToggleMarked(undefined, false, true, ids);
onClick: function(event) {
var ids = getSelectedArticleIds2();
// cast to string
- var id = (base_id ? base_id : this.getParent().callerRowId) + "";
+ var id = (this.getParent().callerRowId) + "";
ids = ids.size() != 0 && ids.indexOf(id) != -1 ? ids : [id];
selectionTogglePublished(undefined, false, true, ids);
menu.addChild(new dijit.MenuItem({
label: __("Mark above as read"),
onClick: function(event) {
- catchupRelativeToArticle(0, base_id ? base_id : this.getParent().callerRowId);
+ catchupRelativeToArticle(0, this.getParent().callerRowId);
}}));
menu.addChild(new dijit.MenuItem({
label: __("Mark below as read"),
onClick: function(event) {
- catchupRelativeToArticle(1, base_id ? base_id : this.getParent().callerRowId);
+ catchupRelativeToArticle(1, this.getParent().callerRowId);
}}));
onClick: function(event) {
var ids = getSelectedArticleIds2();
// cast to string
- var id = (base_id ? base_id : this.getParent().ownerMenu.callerRowId) + "";
+ var id = (this.getParent().ownerMenu.callerRowId) + "";
ids = ids.size() != 0 && ids.indexOf(id) != -1 ? ids : [id];
onClick: function(event) {
var ids = getSelectedArticleIds2();
// cast to string
- var id = (base_id ? base_id : this.getParent().ownerMenu.callerRowId) + "";
+ var id = (this.getParent().ownerMenu.callerRowId) + "";
ids = ids.size() != 0 && ids.indexOf(id) != -1 ? ids : [id];
menu.addChild(new dijit.PopupMenuItem({
label: __("Assign label"),
- popup: labelAddMenu,
+ popup: labelAddMenu
}));
menu.addChild(new dijit.PopupMenuItem({
label: __("Remove label"),
- popup: labelDelMenu,
+ popup: labelDelMenu
}));
}
}
}
-function initHeadlinesMenu() {
+function initHeadlinesMenu(append_rows) {
try {
- if (dijit.byId("headlinesMenu"))
- dijit.byId("headlinesMenu").destroyRecursive();
+ if (!append_rows) {
- var ids = [];
+ if (dijit.byId("headlinesMenu"))
+ dijit.byId("headlinesMenu").destroyRecursive();
- if (!isCdmMode()) {
- nodes = $$("#headlines-frame > div[id*=RROW]");
- } else {
- nodes = $$("#headlines-frame span[id*=RTITLE]");
- }
+ var ids = [];
- nodes.each(function(node) {
- ids.push(node.id);
- });
+ if (!isCdmMode()) {
+ nodes = $$("#headlines-frame > div[id*=RROW]");
+ } else {
+ nodes = $$("#headlines-frame span[id*=RTITLE]");
+ }
- var menu = new dijit.Menu({
- id: "headlinesMenu",
- targetNodeIds: ids,
- });
+ nodes.each(function (node) {
+ ids.push(node.id);
+ });
- var tmph = dojo.connect(menu, '_openMyself', function (event) {
- var callerNode = event.target, match = null, tries = 0;
+ var menu = new dijit.Menu({
+ id: "headlinesMenu",
+ targetNodeIds: ids
+ });
- while (match == null && callerNode && tries <= 3) {
- match = callerNode.id.match("^[A-Z]+[-]([0-9]+)$");
- callerNode = callerNode.parentNode;
- ++tries;
- }
+ var tmph = dojo.connect(menu, '_openMyself', function (event) {
+ var callerNode = event.target, match = null, tries = 0;
- if (match) this.callerRowId = parseInt(match[1]);
+ while (match == null && callerNode && tries <= 3) {
- });
+ match = callerNode.getAttribute("data-article-id")
+ callerNode = callerNode.parentNode;
+ ++tries;
+ }
- headlinesMenuCommon(menu, false);
+ if (match) this.callerRowId = match;
- menu.startup();
+ });
- /* vgroup feed title menu */
+ headlinesMenuCommon(menu);
- var nodes = $$("#headlines-frame > div[class='cdmFeedTitle']");
- var ids = [];
+ menu.startup();
- nodes.each(function(node) {
- ids.push(node.id);
- });
+ } else {
+ var menu = dijit.byId("headlinesMenu");
- if (ids.length > 0) {
- if (dijit.byId("headlinesFeedTitleMenu"))
- dijit.byId("headlinesFeedTitleMenu").destroyRecursive();
+ append_rows.each(function (row) {
+ if (!row.hasClassName("cdmFeedTitle")) {
+ menu.bindDomNode(row);
+ }
+ });
+ }
- var menu = new dijit.Menu({
- id: "headlinesFeedTitleMenu",
- targetNodeIds: ids,
+ /* vgroup feed title menu */
+
+ if (!append_rows) {
+
+ var nodes = $$("#headlines-frame > div[class='cdmFeedTitle']");
+ var ids = [];
+
+ nodes.each(function(node) {
+ ids.push(node.id);
});
- var tmph = dojo.connect(menu, '_openMyself', function (event) {
- var callerNode = event.target, match = null, tries = 0;
+ if (ids.length > 0) {
+ if (dijit.byId("headlinesFeedTitleMenu"))
+ dijit.byId("headlinesFeedTitleMenu").destroyRecursive();
- while (match == null && callerNode && tries <= 3) {
- console.log(callerNode.id);
+ var menu = new dijit.Menu({
+ id: "headlinesFeedTitleMenu",
+ targetNodeIds: ids
+ });
- match = callerNode.id.match("^[A-Z]+[-]([0-9]+)$");
- callerNode = callerNode.parentNode;
- ++tries;
+ var tmph = dojo.connect(menu, '_openMyself', function (event) {
+ var callerNode = event.target, match = null, tries = 0;
- console.log(match[1]);
- }
+ while (match == null && callerNode && tries <= 3) {
+ match = callerNode.getAttribute("data-feed-id")
+ callerNode = callerNode.parentNode;
+ ++tries;
+ }
- if (match) this.callerRowId = parseInt(match[1]);
+ if (match) this.callerRowId = match;
- });
+ });
- menu.addChild(new dijit.MenuItem({
- label: __("Select articles in group"),
- onClick: function(event) {
- selectArticles("all",
- "#headlines-frame > div[id*=RROW]"+
- "[orig-feed-id='"+menu.callerRowId+"']");
+ menu.addChild(new dijit.MenuItem({
+ label: __("Select articles in group"),
+ onClick: function (event) {
+ selectArticles("all",
+ "#headlines-frame > div[id*=RROW]" +
+ "[data-orig-feed-id='" + menu.callerRowId + "']");
- }}));
+ }
+ }));
- menu.addChild(new dijit.MenuItem({
- label: __("Mark group as read"),
- onClick: function(event) {
- selectArticles("none");
- selectArticles("all",
- "#headlines-frame > div[id*=RROW]"+
- "[orig-feed-id='"+menu.callerRowId+"']");
+ menu.addChild(new dijit.MenuItem({
+ label: __("Mark group as read"),
+ onClick: function (event) {
+ selectArticles("none");
+ selectArticles("all",
+ "#headlines-frame > div[id*=RROW]" +
+ "[data-orig-feed-id='" + menu.callerRowId + "']");
- catchupSelection();
- }}));
+ catchupSelection();
+ }
+ }));
+ menu.addChild(new dijit.MenuItem({
+ label: __("Mark feed as read"),
+ onClick: function (event) {
+ catchupFeedInGroup(menu.callerRowId);
+ }
+ }));
- menu.addChild(new dijit.MenuItem({
- label: __("Mark feed as read"),
- onClick: function(event) {
- catchupFeedInGroup(menu.callerRowId);
- }}));
+ menu.addChild(new dijit.MenuItem({
+ label: __("Edit feed"),
+ onClick: function (event) {
+ editFeed(menu.callerRowId);
+ }
+ }));
- menu.startup();
+ menu.startup();
+ }
+ } else {
+ var menu = dijit.byId("headlinesFeedTitleMenu");
+ console.log(append_rows);
+
+ append_rows.each(function (row) {
+ if (row.hasClassName("cdmFeedTitle")) {
+ menu.bindDomNode(row);
+ }
+ });
}
} catch (e) {
}
}
-function openSelectedAttachment(elem) {
- try {
- var url = elem[elem.selectedIndex].value;
-
- if (url) {
- window.open(url);
- elem.selectedIndex = 0;
- }
-
- } catch (e) {
- exception_error("openSelectedAttachment", e);
- }
-}
-
function scrollToRowId(id) {
try {
var row = $(id);
var header = child.getElementsByClassName("cdmHeader")[0];
- if (unread_only || child.id != $("floatingTitle").getAttribute("rowid")) {
- if (child.id != $("floatingTitle").getAttribute("rowid")) {
- $("floatingTitle").setAttribute("rowid", child.id);
+ if (unread_only || child.getAttribute("data-article-id") != $("floatingTitle").getAttribute("data-article-id")) {
+ if (child.getAttribute("data-article-id") != $("floatingTitle").getAttribute("data-article-id")) {
+
+ $("floatingTitle").setAttribute("data-article-id", child.getAttribute("data-article-id"));
$("floatingTitle").innerHTML = header.innerHTML;
$("floatingTitle").firstChild.innerHTML = "<img class='anchor markedPic' src='images/page_white_go.png' onclick=\"scrollToRowId('"+child.id+"')\">" + $("floatingTitle").firstChild.innerHTML;
exception_error("updateFloatingTitle", e);
}
}
+
+function catchupCurrentBatchIfNeeded() {
+ if (catchup_id_batch.length > 0) {
+ window.clearTimeout(catchup_timeout_id);
+ catchup_timeout_id = window.setTimeout(catchupBatchedArticles, 1000);
+
+ if (catchup_id_batch.length >= 10) {
+ catchupBatchedArticles();
+ }
+ }
+}
+
+function cdmFooterClick(event) {
+ event.stopPropagation();
+}
\ No newline at end of file