diff options
author | Andrew Dolgov <[email protected]> | 2017-02-13 23:36:58 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2017-02-13 23:36:58 +0300 |
commit | 51614600487bea4f85c78240c6506ff936956f15 (patch) | |
tree | 77d51d5f55fabc9843a8d8ae439170ad81672f00 /js/viewfeed.js | |
parent | 3eec1de3937cd079e1190edad88f1b041f98e2b8 (diff) |
bind headlines menu to a selector to avoid remaking it unnecessarily
Diffstat (limited to 'js/viewfeed.js')
-rwxr-xr-x | js/viewfeed.js | 154 |
1 files changed, 50 insertions, 104 deletions
diff --git a/js/viewfeed.js b/js/viewfeed.js index 15cd2e304..d8b49c601 100755 --- a/js/viewfeed.js +++ b/js/viewfeed.js @@ -150,8 +150,6 @@ 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); @@ -159,16 +157,6 @@ function headlines_callback2(transport, offset, background, infscroll_req) { dijit.byId("headlines-frame").domNode.appendChild(row); loaded_article_ids.push(row.id); - - if (!isCdmMode() || row.hasClassName("cdmFeedTitle")) { - new_rows.push(row); - } else if (isCdmMode()) { - var titleWrap = $$("#" + row.id + " .titleWrap")[0]; - - if (titleWrap) { - new_rows.push(titleWrap); - } - } } } @@ -183,7 +171,7 @@ function headlines_callback2(transport, offset, background, infscroll_req) { markHeadline(ids[i]); } - initHeadlinesMenu(new_rows); + initHeadlinesMenu(); if (_infscroll_disable) { hsp.innerHTML = "<a href='#' onclick='openNextUnreadFeed()'>" + @@ -1992,28 +1980,14 @@ function headlinesMenuCommon(menu) { } } -function initHeadlinesMenu(append_rows) { +function initHeadlinesMenu() { try { - if (!append_rows) { - - 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 (!dijit.byId("headlinesMenu")) { var menu = new dijit.Menu({ id: "headlinesMenu", - targetNodeIds: ids + targetNodeIds: ["headlines-frame"], + selector: ".hlMenuAttach" }); var tmph = dojo.connect(menu, '_openMyself', function (event) { @@ -2033,96 +2007,68 @@ function initHeadlinesMenu(append_rows) { headlinesMenuCommon(menu); menu.startup(); - - } else { - var menu = dijit.byId("headlinesMenu"); - - append_rows.each(function (row) { - if (!row.hasClassName("cdmFeedTitle")) { - menu.bindDomNode(row); - } - }); } /* vgroup feed title menu */ - if (!append_rows) { - - var nodes = $$("#headlines-frame > div[class='cdmFeedTitle']"); - var ids = []; + if (!dijit.byId("headlinesFeedTitleMenu")) { - nodes.each(function(node) { - ids.push(node.id); + var menu = new dijit.Menu({ + id: "headlinesFeedTitleMenu", + targetNodeIds: ["headlines-frame"], + selector: "div.cdmFeedTitle" }); - 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; + 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; + } - 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 + "']"); + if (match) this.callerRowId = match; - } - })); + }); - 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 + "']"); + 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 + "']"); - catchupSelection(); - } - })); + } + })); - menu.addChild(new dijit.MenuItem({ - label: __("Mark feed as read"), - onClick: function (event) { - catchupFeedInGroup(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 + "']"); - menu.addChild(new dijit.MenuItem({ - label: __("Edit feed"), - onClick: function (event) { - editFeed(menu.callerRowId); - } - })); + catchupSelection(); + } + })); - menu.startup(); - } - } else { - var menu = dijit.byId("headlinesFeedTitleMenu"); + menu.addChild(new dijit.MenuItem({ + label: __("Mark feed as read"), + onClick: function (event) { + catchupFeedInGroup(menu.callerRowId); + } + })); - append_rows.each(function (row) { - if (row.hasClassName("cdmFeedTitle")) { - menu.bindDomNode(row); + menu.addChild(new dijit.MenuItem({ + label: __("Edit feed"), + onClick: function (event) { + editFeed(menu.callerRowId); } - }); + })); + + menu.startup(); } } catch (e) { |