support opening articles in new tab, misc fixes

This commit is contained in:
Andrew Dolgov 2010-11-16 14:43:43 +03:00
parent 07bb58c721
commit 6f3976c9a3
7 changed files with 140 additions and 47 deletions

View 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);
}
}

View 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() {

View file

@ -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')."\"

View 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 {

View file

@ -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())

View file

@ -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>

View 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 (!getInitParam("cdm_expanded")) {
return cdmExpandArticle(id);
} else {
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";
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"));
}