]> git.wh0rd.org Git - tt-rss.git/commitdiff
support opening articles in new tab, misc fixes
authorAndrew Dolgov <fox@madoka.volgo-balt.ru>
Tue, 16 Nov 2010 11:43:43 +0000 (14:43 +0300)
committerAndrew Dolgov <fox@madoka.volgo-balt.ru>
Tue, 16 Nov 2010 11:43:43 +0000 (14:43 +0300)
feedlist.js
functions.js
functions.php
tt-rss.css
tt-rss.js
tt-rss.php
viewfeed.js

index 4171c633daa0998346203d8d0b252c39a1e2ef72..bfcb943ab04d51f3d9473466ad9b5550951b4826 100644 (file)
@@ -793,7 +793,6 @@ function setFeedUnread(feed, is_cat, unread) {
 function setFeedValue(feed, is_cat, key, value) {
        try {
                if (!value) value = '';
-               if (!treeModel) return;
 
                if (is_cat) 
                        treeItem = treeModel.store._itemsByIdentity['CAT:' + feed];
@@ -804,7 +803,8 @@ function setFeedValue(feed, is_cat, key, value) {
                        treeModel.store.setValue(treeItem, key, value);
 
        } catch (e) {
-               exception_error("setFeedValue", e);
+               console.log(e);
+               //exception_error("setFeedValue", e);
        }
 }
 
index 362fc9888cc04bfa6c8dd67dc76b84e4bf363cbb..7e826ab3e7583fd886cbcbbeabd4b2a818e0e4f3 100644 (file)
@@ -394,8 +394,9 @@ function closeInfoBox(cleanup) {
 
                var dialog = dialogs.pop();
 
-               if (dialog)
-                       dialog.hide();
+               if (dialog) {
+                       dialog.destroy();
+               }
 
        } catch (e) {
                //exception_error("closeInfoBox", e);
@@ -408,6 +409,9 @@ function displayDlg(id, param, callback) {
 
        notify_progress("Loading, please wait...", true);
 
+       while (dialogs.length > 0)
+               closeInfoBox();
+
        var query = "?op=dlg&id=" +
                param_escape(id) + "&param=" + param_escape(param);
 
@@ -465,10 +469,12 @@ function infobox_callback2(transport) {
                        style: "width: 600px",
                        onCancel: function() {
                                dialogs.remove(this);
+                               this.destroy();
                                return true;
                        },
                        onExecute: function() {
                                dialogs.remove(this);
+                               this.destroy();
                                return true;
                        },
                        onClose: function() {
index 63f440999594c6099f29e4f4862128042403fdc9..08d3edfcf83f5c4e0deeec05579d4fd8464248e6 100644 (file)
                                        </head><body>";
                        }
 
+                       print "<div id=\"PTITLE-$id\" style=\"display : none\">" . 
+                               truncate_string(strip_tags($line['title']), 15) . "</div>";
 
-                       print "<div class=\"postReply\">";
+                       print "<div class=\"postReply\" id=\"POST-$id\">";
                        print "<div class=\"postHeader\">";
 
                        $entry_author = $line["author"];
                                print "<img src=\"".theme_image($link, 'images/art-zoom.png')."\" 
                                                class='tagsPic' style=\"cursor : pointer\"
                                                onclick=\"zoomToArticle($id)\"
-                                               alt='Zoom' title='".__('Show article summary in new window')."'>";
+                                               alt='Zoom' title='".__('Open article in new tab')."'>";
 
                                $note_escaped = htmlspecialchars($line['note'], ENT_QUOTES);
 
                                                alt='Zoom' title='".__('Forward by email')."'>";
                                }
 
+                               print "<img src=\"".theme_image($link, 'images/digest_checkbox.png')."\" 
+                                               class='tagsPic' style=\"cursor : pointer\"
+                                               onclick=\"closeArticlePanel()\"
+                                               alt='Zoom' title='".__('Close this panel')."'>";
+
                        } else {
                                $tags_str = strip_tags($tags_str);
                                print "<span id=\"ATSTR-$id\">$tags_str</span>";
                                                onmouseout='postMouseOut($id)'";
 
                                        print "<div class=\"$class\" 
-                                               id=\"RROW-$id\"                                         
+                                               id=\"RROW-$id\" onclick=\"return cdmClicked(event, $id);\"
+       
                                                $mouseover_attrs'>";
 
                                        print "<div class=\"cdmHeader\">";
                                        print "$published_pic";
 
                                        print "<span id=\"RTITLE-$id\" 
-                                               onclick=\"return cdmExpandArticle($id)\"
+                                               onclick=\"return false;\"
                                                class=\"titleWrap$hlc_suffix\">
                                                <a class=\"title\"
                                                target=\"_blank\" href=\"".$line["link"]."\">".$line["title"]."</a>
                                                $excerpt_hidden = "style=\"display : none\"";
 
                                        print "<span $excerpt_hidden
-                                               onclick=\"return cdmExpandArticle($id)\"
                                                id=\"CEXC-$id\" class=\"cdmExcerpt\"> - $content_preview</span>";
 
                                        print "</div>";
 
                                        print "<div class=\"cdmContent\" $content_hidden
-                                               onclick=\"return cdmClicked(event, $id);\"
                                                id=\"CICD-$id\">";
 
                                        print "<div class=\"cdmContentInner\">";
                                                onclick=\"zoomToArticle($id)\"
                                                style=\"cursor : pointer\"
                                                alt='Zoom' 
-                                               title='".__('Show article summary in new window')."'>";
+                                               title='".__('Open article in new tab')."'>";
 
                                        if (DIGEST_ENABLE) {
                                                print "<img src=\"".theme_image($link, 'images/art-email.png')."\" 
index 8a662aa660b1cdbfc9a14402f63bfac65bf577d1..5c9b1f14b77e03867869bed53b711fc67c38c52e 100644 (file)
@@ -539,7 +539,7 @@ td.selectPrompt {
 }
 
 div#headlines-toolbar {
-       border-width : 1px 0px 1px 1px;
+       border-width : 1px 0px 1px 0px;
        background-color : #ecf4ff;
        border-color : #88b0f0 #88b0f0 #ecf4ff #88b0f0;
        font-size : 11px;
@@ -1447,6 +1447,7 @@ div.fatalError textarea {
 #headlines-frame {
        padding : 0px;
        border-color : #88b0f0;
+       border-left-width : 0px;
        border-right-width : 0px;
        margin-top : 0px;
        border-top-width : 0px;
@@ -1460,8 +1461,19 @@ div.fatalError textarea {
        font-size : 12px;
 }
 
-#toolbar {
+#content-tabs {
+       margin : 0px;
        padding : 0px;
+       border-width : 0px;
+}
+
+#content-tabs .dijitTab {
+       margin-top : 0px;
+       padding-top : 0px;
+}
+
+#toolbar {
+       padding : 5px 0px 0px 5px;
        margin : 0px;
        border-width : 0px;
        white-space: nowrap;
@@ -1485,6 +1497,7 @@ div.fatalError textarea {
        border-color : #88b0f0;
        border-bottom-width : 0px;
        border-right-width : 0px;
+       border-left-width : 0px;
 }
 
 .dijitTreeLabel.Unread {
index f2c0694a0a704b152ea45da46bc65ef1e7b90979..bf963d6ea4ec5c657c4d5e40ca4d0fa2d7721a86 100644 (file)
--- a/tt-rss.js
+++ b/tt-rss.js
@@ -281,6 +281,7 @@ function init() {
                Form.disable("main_toolbar_form");
 
                dojo.require("dijit.layout.BorderContainer");
+               dojo.require("dijit.layout.TabContainer");
                dojo.require("dijit.layout.ContentPane");
                dojo.require("dijit.Dialog");
                dojo.require("dijit.form.Button");
@@ -290,9 +291,8 @@ function init() {
                dojo.require("dojo.parser");
 
                dojo.addOnLoad(function() {
-
                        updateFeedList();
-
+                       closeArticlePanel();
                });
 
                if (!genericSanityCheck()) 
index 6d7155df796f5c54f7b7ff04cc65023aea2745d2..98e68af4b05caf656e0baec8571096c6ad524465 100644 (file)
        <div id="feedTree"></div>
 </div>
 
-<div dojoType="dijit.layout.BorderContainer" region="center" id="content-wrap">
+<div dojoType="dijit.layout.TabContainer" region="center" id="content-tabs">
+<div dojoType="dijit.layout.BorderContainer" region="center" id="content-wrap"
+       title="News">
 
 <div id="toolbar" dojoType="dijit.layout.ContentPane" region="top">
 
 
        </div>
 </div>
+</div>
 
 <!-- <div id="footer" dojoType="dijit.layout.ContentPane" region="bottom">
        <a href="http://tt-rss.org/">Tiny Tiny RSS</a>
index b90ce65525e25870e5772381e9a4df1d3e8e3222..2b0b815066ecd18423baa538bb89ce5b4a90b418 100644 (file)
@@ -207,6 +207,9 @@ function render_article(article) {
                        f.scrollTop = 0;
                } catch (e) { };
 
+               dijit.byId("headlines-wrap-inner").addChild(
+                               dijit.byId("content-insert"));
+
                var fi = $("content-insert");
 
                try {
@@ -582,14 +585,14 @@ function moveToPost(mode) {
        }
 }
 
-function toggleSelected(id) {
+function toggleSelected(id, force_on) {
        try {
        
                var cb = $("RCHK-" + id);
                var row = $("RROW-" + id);
 
                if (row) {
-                       if (row.hasClassName('Selected')) {
+                       if (row.hasClassName('Selected') && !force_on) {
                                row.removeClassName('Selected');
                                if (cb) cb.checked = false;
                        } else {
@@ -1091,7 +1094,7 @@ function editTagsSave() {
 
        query = "?op=rpc&subop=setArticleTags&" + query;
 
-       //console.log(query);
+       console.log(query);
 
        new Ajax.Request("backend.php", {
                parameters: query,
@@ -1715,9 +1718,56 @@ function getArticleUnderPointer() {
 
 function zoomToArticle(id) {
        try {
-               var w = window.open("backend.php?op=view&mode=zoom&id=" + param_escape(id), 
+               /* var w = window.open("backend.php?op=view&mode=zoom&id=" + param_escape(id), 
                        "ttrss_zoom_" + id,
-                       "status=0,toolbar=0,location=0,width=450,height=300,scrollbars=1,menubar=0");
+                       "status=0,toolbar=0,location=0,width=450,height=300,scrollbars=1,menubar=0"); */
+
+               var cached_article = cache_find(id);
+
+               if (cached_article) {
+                       
+                       var article_pane = new dijit.layout.ContentPane({ 
+                               title: __("Loading...") , content: cached_article, 
+                               style: 'padding : 0px;',
+                               closable: true });
+       
+                       dijit.byId("content-tabs").addChild(article_pane);
+                       dijit.byId("content-tabs").selectChild(article_pane);
+
+                       if ($("PTITLE-" + id))
+                               article_pane.attr('title', $("PTITLE-" + id).innerHTML);
+
+               } else {
+
+                       var query = "?op=rpc&subop=getArticles&ids=" + param_escape(id);
+       
+                       notify_progress("Loading, please wait...", true);
+       
+                       new Ajax.Request("backend.php", {
+                               parameters: query,
+                               onComplete: function(transport) { 
+                                       notify('');
+       
+                                       if (transport.responseXML) {
+                                               closeArticlePanel();
+       
+                                               var article = transport.responseXML.getElementsByTagName("article")[0];
+                                               var content = article.firstChild.nodeValue;
+       
+                                               var article_pane = new dijit.layout.ContentPane({ 
+                                                       title: "article-" + id , content: content, 
+                                                       style: 'padding : 0px;',
+                                                       closable: true });
+       
+                                               dijit.byId("content-tabs").addChild(article_pane);
+                                               dijit.byId("content-tabs").selectChild(article_pane);
+
+                                               if ($("PTITLE-" + id))
+                                                       article_pane.attr('title', $("PTITLE-" + id).innerHTML);
+                                       }
+       
+                               } });
+                       }
 
        } catch (e) {
                exception_error("zoomToArticle", e);
@@ -1971,36 +2021,43 @@ function cdmClicked(event, id) {
                hideAuxDlg();
 
                if (!event.ctrlKey) {
-                       selectArticles("none");
-                       toggleSelected(id);
-
-                       var elem = $("RROW-" + id);
-
-                       if (elem)
-                               elem.removeClassName("Unread");
-
-                       var upd_img_pic = $("FUPDPIC-" + id);
 
-                       if (upd_img_pic && (upd_img_pic.src.match("updated.png") || 
-                                       upd_img_pic.src.match("fresh_sign.png"))) {
+                       if (!getInitParam("cdm_expanded")) {
+                               return cdmExpandArticle(id);
+                       } else {
 
-                               upd_img_pic.src = "images/blank_icon.gif";
+                               selectArticles("none");
+                               toggleSelected(id);
+       
+                               var elem = $("RROW-" + id);
+       
+                               if (elem)
+                                       elem.removeClassName("Unread");
+       
+                               var upd_img_pic = $("FUPDPIC-" + id);
+       
+                               if (upd_img_pic && (upd_img_pic.src.match("updated.png") || 
+                                               upd_img_pic.src.match("fresh_sign.png"))) {
+       
+                                       upd_img_pic.src = "images/blank_icon.gif";
+                               }
+       
+                               active_post_id = id;
+       
+                               var query = "?op=rpc&subop=catchupSelected" +
+                                       "&cmode=0&ids=" + param_escape(id);
+       
+                               new Ajax.Request("backend.php", {
+                                       parameters: query,
+                                       onComplete: function(transport) { 
+                                               handle_rpc_reply(transport); 
+                                       } });
                        }
 
-                       active_post_id = id;
-
-                       var query = "?op=rpc&subop=catchupSelected" +
-                               "&cmode=0&ids=" + param_escape(id);
-
-                       new Ajax.Request("backend.php", {
-                               parameters: query,
-                               onComplete: function(transport) { 
-                                       handle_rpc_reply(transport); 
-                               } });
-
-                       return true;
                } else {
-                       toggleSelected(id);
+                       toggleSelected(id, true);
+                       toggleUnread(id, 0, false);
+                       zoomToArticle(id);
                }
 
        } catch (e) {
@@ -2017,7 +2074,9 @@ function hlClicked(event, id) {
                        view(id);
                        return true;
                } else {
-                       toggleSelected(id);
+                       toggleSelected(id, true);
+                       toggleUnread(id, 0, false);
+                       zoomToArticle(id);
                        return false;
                }
 
@@ -2172,3 +2231,9 @@ function headlineActionsChange(elem) {
                exception_error("headlineActionsChange", e);
        }
 }
+
+function closeArticlePanel() {
+       if (dijit.byId("content-insert"))
+               dijit.byId("headlines-wrap-inner").removeChild(
+                       dijit.byId("content-insert"));
+}