]> git.wh0rd.org - tt-rss.git/blobdiff - js/viewfeed.js
set error report url to https
[tt-rss.git] / js / viewfeed.js
index 007728a1004ca64c319e5f5e60d440b3b846b54c..d8b49c601949de88cf35a13725064e9695e65f82 100755 (executable)
@@ -1226,21 +1226,21 @@ function unpackVisibleHeadlines() {
        try {
                if (!isCdmMode() || !getInitParam("cdm_expanded")) return;
 
-               $$("#headlines-frame > div[id*=RROW]").each(
+               $$("#headlines-frame span.cencw[id]").each(
                        function(child) {
-                               if (child.offsetTop <= $("headlines-frame").scrollTop +
+                               var row = $("RROW-" + child.id.replace("CENCW-", ""));
+
+                               if (row && row.offsetTop <= $("headlines-frame").scrollTop +
                                        $("headlines-frame").offsetHeight) {
 
-                                       var cencw = $("CENCW-" + child.getAttribute("data-article-id"));
+                                       //console.log("unpacking: " + child.id);
 
-                                       if (cencw) {
-                                               cencw.innerHTML = htmlspecialchars_decode(cencw.innerHTML);
-                                               cencw.setAttribute('id', '');
+                                       child.innerHTML = htmlspecialchars_decode(child.innerHTML);
+                                       child.removeAttribute('id');
 
-                                               PluginHost.run(PluginHost.HOOK_ARTICLE_RENDERED_CDM, child);
+                                       PluginHost.run(PluginHost.HOOK_ARTICLE_RENDERED_CDM, row);
 
-                                               Element.show(cencw);
-                                       }
+                                       Element.show(child);
                                }
                        }
                );
@@ -1480,8 +1480,7 @@ function cdmCollapseArticle(event, id, unmark) {
                var elem = $("CICD-" + id);
 
                if (elem && row) {
-                       var collapse = $$("div#RROW-" + id +
-                               " span[class='collapseBtn']")[0];
+                       var collapse = row.select("span[class='collapseBtn']")[0];
 
                        Element.hide(elem);
                        Element.show("CEXC-" + id);
@@ -1519,7 +1518,9 @@ function cdmExpandArticle(id, noexpand) {
        try {
                console.log("cdmExpandArticle " + id);
 
-               if (!$("RROW-" + id)) return false;
+               var row = $("RROW-" + id);
+
+               if (!row) return false;
 
                var oldrow = $("RROW-" + getActiveArticleId());
 
@@ -1530,11 +1531,10 @@ function cdmExpandArticle(id, noexpand) {
 
                selectArticles("none");
 
-               var old_offset = $("RROW-" + id).offsetTop;
+               var old_offset = row.offsetTop;
 
                if (getActiveArticleId() && elem && !getInitParam("cdm_expanded")) {
-                       var collapse = $$("div#RROW-" + getActiveArticleId() +
-                               " span[class='collapseBtn']")[0];
+                       var collapse = oldrow.select("span[class='collapseBtn']")[0];
 
                        Element.hide(elem);
                        Element.show("CEXC-" + getActiveArticleId());
@@ -1547,8 +1547,7 @@ function cdmExpandArticle(id, noexpand) {
 
                elem = $("CICD-" + id);
 
-               var collapse = $$("div#RROW-" + id +
-                               " span[class='collapseBtn']")[0];
+               var collapse = row.select("span[class='collapseBtn']")[0];
 
                var cencw = $("CENCW-" + id);
 
@@ -1564,7 +1563,7 @@ function cdmExpandArticle(id, noexpand) {
                        Element.show(collapse);
                }
 
-               var new_offset = $("RROW-" + id).offsetTop;
+               var new_offset = row.offsetTop;
 
                if (old_offset > new_offset)
                        $("headlines-frame").scrollTop -= (old_offset-new_offset);
@@ -1577,7 +1576,7 @@ function cdmExpandArticle(id, noexpand) {
                }
 
                toggleSelected(id);
-               $("RROW-" + id).addClassName("active");
+               row.addClassName("active");
 
                PluginHost.run(PluginHost.HOOK_ARTICLE_EXPANDED, id);
 
@@ -1717,7 +1716,10 @@ function hlClicked(event, id) {
 
 function openArticleInNewWindow(id) {
        toggleUnread(id, 0, false);
-       window.open("backend.php?op=article&method=redirect&id=" + id);
+
+       var w = window.open("");
+       w.opener = null;
+       w.location = "backend.php?op=article&method=redirect&id=" + id;
 }
 
 function isCdmMode() {
@@ -1980,60 +1982,41 @@ function headlinesMenuCommon(menu) {
 
 function initHeadlinesMenu() {
        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 (!dijit.byId("headlinesMenu")) {
 
-               var menu = new dijit.Menu({
-                       id: "headlinesMenu",
-                       targetNodeIds: ids
-               });
+                       var menu = new dijit.Menu({
+                               id: "headlinesMenu",
+                               targetNodeIds: ["headlines-frame"],
+                               selector: ".hlMenuAttach"
+                       });
 
-               var tmph = dojo.connect(menu, '_openMyself', function (event) {
-                       var callerNode = event.target, match = null, tries = 0;
+                       var tmph = dojo.connect(menu, '_openMyself', function (event) {
+                               var callerNode = event.target, match = null, tries = 0;
 
-                       while (match == null && callerNode && tries <= 3) {
+                               while (match == null && callerNode && tries <= 3) {
 
-                               match = callerNode.getAttribute("data-article-id")
-                               callerNode = callerNode.parentNode;
-                               ++tries;
-                       }
+                                       match = callerNode.getAttribute("data-article-id")
+                                       callerNode = callerNode.parentNode;
+                                       ++tries;
+                               }
 
-                       if (match) this.callerRowId = match;
+                               if (match) this.callerRowId = match;
 
-               });
+                       });
 
-               headlinesMenuCommon(menu);
+                       headlinesMenuCommon(menu);
 
-               menu.startup();
+                       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();
+               if (!dijit.byId("headlinesFeedTitleMenu")) {
 
                        var menu = new dijit.Menu({
                                id: "headlinesFeedTitleMenu",
-                               targetNodeIds: ids
+                               targetNodeIds: ["headlines-frame"],
+                               selector: "div.cdmFeedTitle"
                        });
 
                        var tmph = dojo.connect(menu, '_openMyself', function (event) {
@@ -2051,39 +2034,41 @@ function initHeadlinesMenu() {
 
                        menu.addChild(new dijit.MenuItem({
                                label: __("Select articles in group"),
-                               onClick: function(event) {
+                               onClick: function (event) {
                                        selectArticles("all",
-                                               "#headlines-frame > div[id*=RROW]"+
-                                               "[data-orig-feed-id='"+menu.callerRowId+"']");
+                                               "#headlines-frame > div[id*=RROW]" +
+                                               "[data-orig-feed-id='" + menu.callerRowId + "']");
 
-                               }}));
+                               }
+                       }));
 
                        menu.addChild(new dijit.MenuItem({
                                label: __("Mark group as read"),
-                               onClick: function(event) {
+                               onClick: function (event) {
                                        selectArticles("none");
                                        selectArticles("all",
-                                               "#headlines-frame > div[id*=RROW]"+
-                                               "[data-orig-feed-id='"+menu.callerRowId+"']");
+                                               "#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) {
+                               onClick: function (event) {
                                        catchupFeedInGroup(menu.callerRowId);
-                               }}));
+                               }
+                       }));
 
                        menu.addChild(new dijit.MenuItem({
                                label: __("Edit feed"),
-                               onClick: function(event) {
+                               onClick: function (event) {
                                        editFeed(menu.callerRowId);
-                               }}));
+                               }
+                       }));
 
                        menu.startup();
-
                }
 
        } catch (e) {