summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2017-01-22 19:20:23 +0300
committerAndrew Dolgov <[email protected]>2017-01-22 19:20:23 +0300
commite1f7b05b52904210e00ee452294e55564fcd956b (patch)
treeeabe538865461bcb7428402b6927b5b905d7420a /js
parentb1a80693b1f6697ece2f861f20ec7e8dae22ef21 (diff)
reuse menu objects while appending headline rows
Diffstat (limited to 'js')
-rwxr-xr-xjs/viewfeed.js182
1 files changed, 106 insertions, 76 deletions
diff --git a/js/viewfeed.js b/js/viewfeed.js
index 007728a10..2f91af12d 100755
--- a/js/viewfeed.js
+++ b/js/viewfeed.js
@@ -150,6 +150,8 @@ function headlines_callback2(transport, offset, background, infscroll_req) {
tmp.innerHTML = reply['headlines']['content'];
dojo.parser.parse(tmp);
+ var new_rows = [];
+
while (tmp.hasChildNodes()) {
var row = tmp.removeChild(tmp.firstChild);
@@ -157,6 +159,7 @@ function headlines_callback2(transport, offset, background, infscroll_req) {
dijit.byId("headlines-frame").domNode.appendChild(row);
loaded_article_ids.push(row.id);
+ new_rows.push(row);
}
}
@@ -171,7 +174,7 @@ function headlines_callback2(transport, offset, background, infscroll_req) {
markHeadline(ids[i]);
}
- initHeadlinesMenu();
+ initHeadlinesMenu(new_rows);
if (_infscroll_disable) {
hsp.innerHTML = "<a href='#' onclick='openNextUnreadFeed()'>" +
@@ -1978,61 +1981,27 @@ function headlinesMenuCommon(menu) {
}
}
-function initHeadlinesMenu() {
+function initHeadlinesMenu(append_rows) {
try {
- if (dijit.byId("headlinesMenu"))
- dijit.byId("headlinesMenu").destroyRecursive();
-
- var ids = [];
-
- if (!isCdmMode()) {
- nodes = $$("#headlines-frame > div[id*=RROW]");
- } else {
- nodes = $$("#headlines-frame span[id*=RTITLE]");
- }
-
- nodes.each(function(node) {
- ids.push(node.id);
- });
+ if (!append_rows) {
- var menu = new dijit.Menu({
- id: "headlinesMenu",
- targetNodeIds: ids
- });
-
- var tmph = dojo.connect(menu, '_openMyself', function (event) {
- var callerNode = event.target, match = null, tries = 0;
+ if (dijit.byId("headlinesMenu"))
+ dijit.byId("headlinesMenu").destroyRecursive();
- while (match == null && callerNode && tries <= 3) {
+ var ids = [];
- match = callerNode.getAttribute("data-article-id")
- callerNode = callerNode.parentNode;
- ++tries;
+ if (!isCdmMode()) {
+ nodes = $$("#headlines-frame > div[id*=RROW]");
+ } else {
+ nodes = $$("#headlines-frame span[id*=RTITLE]");
}
- if (match) this.callerRowId = match;
-
- });
-
- headlinesMenuCommon(menu);
-
- menu.startup();
-
- /* vgroup feed title menu */
-
- var nodes = $$("#headlines-frame > div[class='cdmFeedTitle']");
- var ids = [];
-
- nodes.each(function(node) {
- ids.push(node.id);
- });
-
- if (ids.length > 0) {
- if (dijit.byId("headlinesFeedTitleMenu"))
- dijit.byId("headlinesFeedTitleMenu").destroyRecursive();
+ nodes.each(function (node) {
+ ids.push(node.id);
+ });
var menu = new dijit.Menu({
- id: "headlinesFeedTitleMenu",
+ id: "headlinesMenu",
targetNodeIds: ids
});
@@ -2040,7 +2009,8 @@ function initHeadlinesMenu() {
var callerNode = event.target, match = null, tries = 0;
while (match == null && callerNode && tries <= 3) {
- match = callerNode.getAttribute("data-feed-id")
+
+ match = callerNode.getAttribute("data-article-id")
callerNode = callerNode.parentNode;
++tries;
}
@@ -2049,41 +2019,101 @@ function initHeadlinesMenu() {
});
- 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+"']");
+ headlinesMenuCommon(menu);
- }}));
+ menu.startup();
- 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+"']");
+ } else {
+ var menu = dijit.byId("headlinesMenu");
- catchupSelection();
- }}));
+ append_rows.each(function (row) {
+ if (!row.hasClassName("cdmFeedTitle")) {
+ menu.bindDomNode(row);
+ }
+ });
+ }
+ /* vgroup feed title menu */
- menu.addChild(new dijit.MenuItem({
- label: __("Mark feed as read"),
- onClick: function(event) {
- catchupFeedInGroup(menu.callerRowId);
- }}));
+ if (!append_rows) {
- menu.addChild(new dijit.MenuItem({
- label: __("Edit feed"),
- onClick: function(event) {
- editFeed(menu.callerRowId);
- }}));
+ var nodes = $$("#headlines-frame > div[class='cdmFeedTitle']");
+ var ids = [];
- menu.startup();
+ nodes.each(function(node) {
+ ids.push(node.id);
+ });
+
+ if (ids.length > 0) {
+ if (dijit.byId("headlinesFeedTitleMenu"))
+ dijit.byId("headlinesFeedTitleMenu").destroyRecursive();
+
+ var menu = new dijit.Menu({
+ id: "headlinesFeedTitleMenu",
+ targetNodeIds: ids
+ });
+
+ 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-feed-id")
+ callerNode = callerNode.parentNode;
+ ++tries;
+ }
+
+ 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]" +
+ "[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]" +
+ "[data-orig-feed-id='" + menu.callerRowId + "']");
+
+ catchupSelection();
+ }
+ }));
+
+ 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();
+ }
+ } else {
+ var menu = dijit.byId("headlinesFeedTitleMenu");
+
+ console.log(append_rows);
+
+ append_rows.each(function (row) {
+ if (row.hasClassName("cdmFeedTitle")) {
+ menu.bindDomNode(row);
+ }
+ });
}
} catch (e) {