summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--feedlist.js4
-rw-r--r--functions.js10
-rw-r--r--functions.php20
-rw-r--r--tt-rss.css17
-rw-r--r--tt-rss.js4
-rw-r--r--tt-rss.php5
-rw-r--r--viewfeed.js127
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) + "&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() {
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 {
diff --git a/tt-rss.js b/tt-rss.js
index f2c0694a0..bf963d6ea 100644
--- 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())
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"));
+}