summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
Diffstat (limited to 'js')
-rw-r--r--js/FeedTree.js1
-rw-r--r--js/feedlist.js6
-rw-r--r--js/functions.js35
-rw-r--r--js/tt-rss.js18
-rw-r--r--js/viewfeed.js86
5 files changed, 109 insertions, 37 deletions
diff --git a/js/FeedTree.js b/js/FeedTree.js
index b02d8ad7c..2e686c156 100644
--- a/js/FeedTree.js
+++ b/js/FeedTree.js
@@ -165,6 +165,7 @@ dojo.declare("fox.FeedTree", dijit.Tree, {
if (id.match("CAT:")) {
loading = dojo.doc.createElement('img');
loading.className = 'loadingNode';
+ loading.src = 'images/blank_icon.gif';
dojo.place(loading, tnode.labelNode, 'after');
tnode.loadingNode = loading;
}
diff --git a/js/feedlist.js b/js/feedlist.js
index ae4c3a2fb..aaf6c2aa6 100644
--- a/js/feedlist.js
+++ b/js/feedlist.js
@@ -125,11 +125,9 @@ function viewfeed(feed, method, is_cat, offset, background, infscroll_req) {
Form.enable("main_toolbar_form");
- if (!offset) {
- if (!setFeedExpandoIcon(feed, is_cat,
- (is_cat) ? 'images/indicator_tiny.gif' : 'images/indicator_white.gif'))
+ if (!setFeedExpandoIcon(feed, is_cat,
+ (is_cat) ? 'images/indicator_tiny.gif' : 'images/indicator_white.gif'))
notify_progress("Loading, please wait...", true);
- }
}
query += "&cat=" + is_cat;
diff --git a/js/functions.js b/js/functions.js
index 4840bcbe1..a9367da60 100644
--- a/js/functions.js
+++ b/js/functions.js
@@ -201,13 +201,13 @@ function notify_real(msg, no_hide, n_type) {
n.className = "notify";
} else if (n_type == 2) {
n.className = "notifyProgress";
- msg = "<img src='"+getInitParam("sign_progress")+"'> " + msg;
+ msg = "<img src='images/indicator_white.gif'> " + msg;
} else if (n_type == 3) {
n.className = "notifyError";
- msg = "<img src='"+getInitParam("sign_excl")+"'> " + msg;
+ msg = "<img src='images/sign_excl.svg'> " + msg;
} else if (n_type == 4) {
n.className = "notifyInfo";
- msg = "<img src='"+getInitParam("sign_info")+"'> " + msg;
+ msg = "<img src='images/sign_info.svg'> " + msg;
}
// msg = "<img src='images/live_com_loading.gif'> " + msg;
@@ -1216,20 +1216,31 @@ function quickAddFilter() {
var lh = dojo.connect(dialog, "onLoad", function(){
dojo.disconnect(lh);
- var title = $("PTITLE-FULL-" + getActiveArticleId());
+ var query = "op=rpc&method=getlinktitlebyid&id=" + getActiveArticleId();
- if (title || getActiveFeedId() || activeFeedIsCat()) {
- if (title) title = title.innerHTML;
+ new Ajax.Request("backend.php", {
+ parameters: query,
+ onComplete: function(transport) {
+ var reply = JSON.parse(transport.responseText);
- console.log(title + " " + getActiveFeedId());
+ var title = false;
- var feed_id = activeFeedIsCat() ? 'CAT:' + parseInt(getActiveFeedId()) :
- getActiveFeedId();
+ if (reply && reply) title = reply.title;
- var rule = { reg_exp: title, feed_id: feed_id, filter_type: 1 };
+ if (title || getActiveFeedId() || activeFeedIsCat()) {
+
+ console.log(title + " " + getActiveFeedId());
+
+ var feed_id = activeFeedIsCat() ? 'CAT:' + parseInt(getActiveFeedId()) :
+ getActiveFeedId();
+
+ var rule = { reg_exp: title, feed_id: feed_id, filter_type: 1 };
+
+ addFilterRule(null, dojo.toJson(rule));
+ }
+
+ } });
- addFilterRule(null, dojo.toJson(rule));
- }
});
}
diff --git a/js/tt-rss.js b/js/tt-rss.js
index bced92674..eaa1f3daf 100644
--- a/js/tt-rss.js
+++ b/js/tt-rss.js
@@ -181,7 +181,7 @@ function updateTitle() {
var tmp = "Tiny Tiny RSS";
if (global_unread > 0) {
- tmp = tmp + " (" + global_unread + ")";
+ tmp = "(" + global_unread + ") " + tmp;
}
if (window.fluid) {
@@ -446,6 +446,12 @@ function parse_runtime_info(data) {
return;
}
+ if (k == "dep_ts" && parseInt(getInitParam("dep_ts")) > 0) {
+ if (parseInt(getInitParam("dep_ts")) < parseInt(v)) {
+ window.location.reload();
+ }
+ }
+
if (k == "daemon_is_running" && v != 1) {
notify_error("<span onclick=\"javascript:explainError(1)\">Update daemon is not running.</span>", true);
return;
@@ -786,6 +792,14 @@ function hotkey_handler(e) {
case "collapse_sidebar":
collapse_feedlist();
return false;
+ case "toggle_embed_original":
+ if (typeof embedOriginalArticle != "undefined") {
+ if (getActiveArticleId())
+ embedOriginalArticle(getActiveArticleId());
+ } else {
+ alert(__("Please enable embed_original plugin first."));
+ }
+ return false;
case "toggle_widescreen":
if (!isCdmMode()) {
_widescreen_mode = !_widescreen_mode;
@@ -928,6 +942,8 @@ function handle_rpc_json(transport, scheduled_call) {
function switchPanelMode(wide) {
try {
+ if (isCdmMode()) return;
+
article_id = getActiveArticleId();
if (wide) {
diff --git a/js/viewfeed.js b/js/viewfeed.js
index 4c6d90366..ece1f1394 100644
--- a/js/viewfeed.js
+++ b/js/viewfeed.js
@@ -205,6 +205,8 @@ function headlines_callback2(transport, offset, background, infscroll_req) {
_infscroll_request_sent = 0;
+ headlines_scroll_handler($("headlines-frame"));
+
notify("");
} catch (e) {
@@ -541,7 +543,7 @@ function moveToPost(mode, noscroll) {
} else if (next_id) {
cdmExpandArticle(next_id);
- cdmScrollToArticleId(next_id, noscroll);
+ cdmScrollToArticleId(next_id, true);
}
} else if (next_id) {
@@ -560,8 +562,13 @@ function moveToPost(mode, noscroll) {
var ctr = $("headlines-frame");
if (!getInitParam("cdm_expanded")) {
- cdmExpandArticle(prev_id);
- cdmScrollToArticleId(prev_id, true);
+
+ if (!noscroll && article.offsetTop < ctr.scrollTop) {
+ scrollArticle(-ctr.offsetHeight/3);
+ } else {
+ cdmExpandArticle(prev_id);
+ cdmScrollToArticleId(prev_id, true);
+ }
} else {
if (!noscroll && article && article.offsetTop < ctr.scrollTop) {
@@ -972,9 +979,9 @@ function deleteSelection() {
var str;
if (getActiveFeedId() != 0) {
- str = __("Delete %d selected articles in %s?");
+ str = ngettext("Delete %d selected article in %s?", "Delete %d selected articles in %s?" , rows.length);
} else {
- str = __("Delete %d selected articles?");
+ str = ngettext("Delete %d selected article?", "Delete %d selected articles?", rows.length);
}
str = str.replace("%d", rows.length);
@@ -1016,10 +1023,10 @@ function archiveSelection() {
var op;
if (getActiveFeedId() != 0) {
- str = __("Archive %d selected articles in %s?");
+ str = ngettext("Archive %d selected article in %s?", "Archive %d selected articles in %s?", rows.length);
op = "archive";
} else {
- str = __("Move %d archived articles back?");
+ str = ngettext("Move %d archived article back?", "Move %d archived articles back?", rows.length);
op = "unarchive";
}
@@ -1063,7 +1070,7 @@ function catchupSelection() {
var fn = getFeedName(getActiveFeedId(), activeFeedIsCat());
- var str = __("Mark %d selected articles in %s as read?");
+ var str = ngettext("Mark %d selected article in %s as read?", "Mark %d selected articles in %s as read?", rows.length);
str = str.replace("%d", rows.length);
str = str.replace("%s", fn);
@@ -1171,6 +1178,23 @@ function headlines_scroll_handler(e) {
try {
var hsp = $("headlines-spacer");
+ $$("#headlines-frame > div[id*=RROW]").each(
+ function(child) {
+ if (child.offsetTop <= $("headlines-frame").scrollTop +
+ $("headlines-frame").offsetHeight) {
+
+ var cencw = $("CENCW-" + child.id.replace("RROW-", ""));
+
+ if (cencw) {
+ cencw.innerHTML = htmlspecialchars_decode(cencw.innerHTML);
+ cencw.setAttribute('id', '');
+ Element.show(cencw);
+ }
+ }
+ }
+ );
+
+
if (!_infscroll_disable) {
if ((hsp && e.scrollTop + e.offsetHeight >= hsp.offsetTop - hsp.offsetHeight) ||
(e.scrollHeight != 0 &&
@@ -1192,7 +1216,7 @@ function headlines_scroll_handler(e) {
$$("#headlines-frame > div[id*=RROW][class*=Unread]").each(
function(child) {
- if ($("headlines-frame").scrollTop >
+ if (child.hasClassName("Unread") && $("headlines-frame").scrollTop >
(child.offsetTop + child.offsetHeight/2)) {
var id = child.id.replace("RROW-", "");
@@ -1293,7 +1317,7 @@ function catchupRelativeToArticle(below, id) {
if (ids_to_mark.length == 0) {
alert(__("No articles found to mark"));
} else {
- var msg = __("Mark %d article(s) as read?").replace("%d", ids_to_mark.length);
+ var msg = ngettext("Mark %d article as read?", "Mark %d articles as read?", ids_to_mark.length).replace("%d", ids_to_mark.length);
if (getInitParam("confirm_feed_catchup") != 1 || confirm(msg)) {
@@ -1348,9 +1372,10 @@ function cdmCollapseArticle(event, id) {
function cdmExpandArticle(id) {
try {
-
console.log("cdmExpandArticle " + id);
+ if (!$("RROW-" + id)) return false;
+
hideAuxDlg();
var elem = $("CICD-" + getActiveArticleId());
@@ -1369,14 +1394,11 @@ function cdmExpandArticle(id) {
Element.hide(elem);
Element.show("CEXC-" + getActiveArticleId());
Element.hide(collapse);
+ $("RROW-" + getActiveArticleId()).removeClassName("active");
}
setActiveArticleId(id);
- if (!getInitParam("cdm_expanded")) {
- cdmScrollToArticleId(id, true);
- }
-
elem = $("CICD-" + id);
var collapse = $$("div#RROW-" + id +
@@ -1388,19 +1410,19 @@ function cdmExpandArticle(id) {
if (cencw) {
cencw.innerHTML = htmlspecialchars_decode(cencw.innerHTML);
cencw.setAttribute('id', '');
+ Element.show(cencw);
}
Element.show(elem);
Element.hide("CEXC-" + id);
Element.show(collapse);
+ $("RROW-" + id).addClassName("active");
}
- /* var new_offset = $("RROW-" + id).offsetTop;
-
- $("headlines-frame").scrollTop += (new_offset-old_offset);
+ var new_offset = $("RROW-" + id).offsetTop;
- if ($("RROW-" + id).offsetTop != old_offset)
- $("headlines-frame").scrollTop = new_offset; */
+ if (old_offset > new_offset)
+ $("headlines-frame").scrollTop -= (old_offset-new_offset);
toggleUnread(id, 0, true);
toggleSelected(id);
@@ -1806,6 +1828,12 @@ function initHeadlinesMenu() {
openArticleInNewWindow(this.getParent().callerRowId);
}}));
+ menu.addChild(new dijit.MenuItem({
+ label: __("Display article URL"),
+ onClick: function(event) {
+ displayArticleUrl(this.getParent().callerRowId);
+ }}));
+
menu.addChild(new dijit.MenuSeparator());
menu.addChild(new dijit.MenuItem({
@@ -2017,3 +2045,21 @@ function changeScore(id, pic) {
exception_error("changeScore", e);
}
}
+
+function displayArticleUrl(id) {
+ try {
+ var query = "op=rpc&method=getlinktitlebyid&id=" + param_escape(id);
+
+ new Ajax.Request("backend.php", {
+ parameters: query,
+ onComplete: function(transport) {
+ var reply = JSON.parse(transport.responseText);
+
+ if (reply && reply.link) {
+ prompt(__("Article URL:"), reply.link);
+ }
+ } });
+ } catch (e) {
+ exception_error("changeScore", e);
+ }
+}