diff options
-rw-r--r-- | feedlist.js | 4 | ||||
-rw-r--r-- | functions.js | 10 | ||||
-rw-r--r-- | functions.php | 20 | ||||
-rw-r--r-- | tt-rss.css | 17 | ||||
-rw-r--r-- | tt-rss.js | 4 | ||||
-rw-r--r-- | tt-rss.php | 5 | ||||
-rw-r--r-- | viewfeed.js | 127 |
7 files changed, 140 insertions, 47 deletions
diff --git a/feedlist.js b/feedlist.js index 4171c633d..bfcb943ab 100644 --- a/feedlist.js +++ b/feedlist.js @@ -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); } } diff --git a/functions.js b/functions.js index 362fc9888..7e826ab3e 100644 --- a/functions.js +++ b/functions.js @@ -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) + "¶m=" + 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() { diff --git a/functions.php b/functions.php index 63f440999..08d3edfcf 100644 --- a/functions.php +++ b/functions.php @@ -4577,8 +4577,10 @@ </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"]; @@ -4615,7 +4617,7 @@ 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); @@ -4631,6 +4633,11 @@ 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>"; @@ -5083,7 +5090,8 @@ onmouseout='postMouseOut($id)'"; print "<div class=\"$class\" - id=\"RROW-$id\" + id=\"RROW-$id\" onclick=\"return cdmClicked(event, $id);\" + $mouseover_attrs'>"; print "<div class=\"cdmHeader\">"; @@ -5108,7 +5116,7 @@ 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> @@ -5123,13 +5131,11 @@ $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\">"; @@ -5220,7 +5226,7 @@ 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')."\" diff --git a/tt-rss.css b/tt-rss.css index 8a662aa66..5c9b1f14b 100644 --- a/tt-rss.css +++ b/tt-rss.css @@ -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 { @@ -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()) diff --git a/tt-rss.php b/tt-rss.php index 6d7155df7..98e68af4b 100644 --- a/tt-rss.php +++ b/tt-rss.php @@ -126,7 +126,9 @@ <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"> @@ -215,6 +217,7 @@ </div> </div> +</div> <!-- <div id="footer" dojoType="dijit.layout.ContentPane" region="bottom"> <a href="http://tt-rss.org/">Tiny Tiny RSS</a> diff --git a/viewfeed.js b/viewfeed.js index b90ce6552..2b0b81506 100644 --- a/viewfeed.js +++ b/viewfeed.js @@ -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")); +} |