summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2013-04-05 22:42:59 -0700
committerAndrew Dolgov <[email protected]>2013-04-05 22:42:59 -0700
commitef74a05ea2080b715e79459c45787cb4118bed33 (patch)
tree34d927c713ebacdf7304c97b53bf14e660fc5f5e
parentcc36ff0148ba595ba8694c5cbd141d4a3a188ba8 (diff)
parent8b35d171729f59a27b001cb16cef7de1e1c46fd0 (diff)
Merge pull request #134 from sunjayc99/master
Added functionality for navigation without opening articles and toggling expansion of headlines
-rw-r--r--include/functions.php3
-rw-r--r--js/tt-rss.js16
-rw-r--r--js/viewfeed.js56
3 files changed, 61 insertions, 14 deletions
diff --git a/include/functions.php b/include/functions.php
index dc67b028a..d328ea19d 100644
--- a/include/functions.php
+++ b/include/functions.php
@@ -1912,6 +1912,8 @@
"prev_article" => __("Open previous article"),
"next_article_noscroll" => __("Open next article (don't scroll long articles)"),
"prev_article_noscroll" => __("Open previous article (don't scroll long articles)"),
+ "next_article_noexpand" => __("Move to next article (don't expand or mark read)"),
+ "prev_article_noexpand" => __("Move to previous article (don't expand or mark read)"),
"search_dialog" => __("Show search dialog")),
__("Article") => array(
"toggle_mark" => __("Toggle starred"),
@@ -1928,6 +1930,7 @@
"select_article_cursor" => __("Select article under cursor"),
"email_article" => __("Email article"),
"close_article" => __("Close/collapse article"),
+ "toggle_expand" => __("Toggle article expansion (combined mode)"),
"toggle_widescreen" => __("Toggle widescreen mode"),
"toggle_embed_original" => __("Toggle embed original")),
__("Article selection") => array(
diff --git a/js/tt-rss.js b/js/tt-rss.js
index 51257a693..8c5a65749 100644
--- a/js/tt-rss.js
+++ b/js/tt-rss.js
@@ -282,6 +282,12 @@ function init() {
hotkey_actions["prev_article_noscroll"] = function() {
moveToPost('prev', true);
};
+ hotkey_actions["next_article_noexpand"] = function() {
+ moveToPost('next', true, true);
+ };
+ hotkey_actions["prev_article_noexpand"] = function() {
+ moveToPost('prev', true, true);
+ };
hotkey_actions["collapse_article"] = function() {
var id = getActiveArticleId();
var elem = $("CICD-"+id);
@@ -292,6 +298,16 @@ function init() {
cdmExpandArticle(id);
}
};
+ hotkey_actions["toggle_expand"] = function() {
+ var id = getActiveArticleId();
+ var elem = $("CICD-"+id);
+ if(elem.visible()) {
+ cdmUnexpandArticle(null, id);
+ }
+ else {
+ cdmExpandArticle(id);
+ }
+ };
hotkey_actions["search_dialog"] = function() {
search();
};
diff --git a/js/viewfeed.js b/js/viewfeed.js
index 76f9bbaee..db1a4bf94 100644
--- a/js/viewfeed.js
+++ b/js/viewfeed.js
@@ -241,7 +241,7 @@ function render_article(article) {
}
}
-function showArticleInHeadlines(id) {
+function showArticleInHeadlines(id, noexpand) {
try {
selectArticles("none");
@@ -252,7 +252,8 @@ function showArticleInHeadlines(id) {
var article_is_unread = crow.hasClassName("Unread");
- crow.removeClassName("Unread");
+ if (!noexpand)
+ crow.removeClassName("Unread");
crow.addClassName("active");
selectArticles('none');
@@ -268,7 +269,7 @@ function showArticleInHeadlines(id) {
markHeadline(id);
- if (article_is_unread)
+ if (article_is_unread && !noexpand)
_force_scheduled_update = true;
} catch (e) {
@@ -336,7 +337,7 @@ function article_callback2(transport, id) {
}
}
-function view(id) {
+function view(id, activefeed, noexpand) {
try {
var oldrow = $("RROW-" + getActiveArticleId());
if (oldrow) oldrow.removeClassName("active");
@@ -344,6 +345,11 @@ function view(id) {
var crow = $("RROW-" + id);
if (!crow) return;
+ if (noexpand) {
+ setActiveArticleId(id);
+ showArticleInHeadlines(id, noexpand);
+ return;
+ }
console.log("loading article: " + id);
@@ -499,7 +505,7 @@ function togglePub(id, client_only, no_effects, note) {
}
}
-function moveToPost(mode, noscroll) {
+function moveToPost(mode, noscroll, noexpand) {
try {
@@ -546,13 +552,13 @@ function moveToPost(mode, noscroll) {
scrollArticle(ctr.offsetHeight/4);
} else if (next_id) {
- cdmExpandArticle(next_id);
+ cdmExpandArticle(next_id, noexpand);
cdmScrollToArticleId(next_id, true);
}
} else if (next_id) {
correctHeadlinesOffset(next_id);
- view(next_id, getActiveFeedId());
+ view(next_id, getActiveFeedId(), noexpand);
}
}
}
@@ -570,7 +576,7 @@ function moveToPost(mode, noscroll) {
if (!noscroll && article.offsetTop < ctr.scrollTop) {
scrollArticle(-ctr.offsetHeight/4);
} else {
- cdmExpandArticle(prev_id);
+ cdmExpandArticle(prev_id, noexpand);
cdmScrollToArticleId(prev_id, true);
}
} else {
@@ -579,17 +585,17 @@ function moveToPost(mode, noscroll) {
scrollArticle(-ctr.offsetHeight/3);
} else if (!noscroll && prev_article &&
prev_article.offsetTop < ctr.scrollTop) {
- cdmExpandArticle(prev_id);
+ cdmExpandArticle(prev_id, noexpand);
scrollArticle(-ctr.offsetHeight/4);
} else if (prev_id) {
- cdmExpandArticle(prev_id);
+ cdmExpandArticle(prev_id, noexpand);
cdmScrollToArticleId(prev_id, noscroll);
}
}
} else if (prev_id) {
correctHeadlinesOffset(prev_id);
- view(prev_id, getActiveFeedId());
+ view(prev_id, getActiveFeedId(), noexpand);
}
}
}
@@ -1375,7 +1381,28 @@ function cdmCollapseArticle(event, id) {
}
}
-function cdmExpandArticle(id) {
+function cdmUnexpandArticle(event, id) {
+ try {
+ var row = $("RROW-" + id);
+ var elem = $("CICD-" + id);
+
+ if (elem && row) {
+ var collapse = $$("div#RROW-" + id +
+ " span[class='collapseBtn']")[0];
+
+ Element.hide(elem);
+ Element.show("CEXC-" + id);
+ Element.hide(collapse);
+
+ if (event) Event.stop(event);
+ }
+
+ } catch (e) {
+ exception_error("cdmUnexpandArticle", e);
+ }
+}
+
+function cdmExpandArticle(id, noexpand) {
try {
console.log("cdmExpandArticle " + id);
@@ -1412,7 +1439,7 @@ function cdmExpandArticle(id) {
var cencw = $("CENCW-" + id);
- if (!Element.visible(elem)) {
+ if (!Element.visible(elem) && !noexpand) {
if (cencw) {
cencw.innerHTML = htmlspecialchars_decode(cencw.innerHTML);
cencw.setAttribute('id', '');
@@ -1429,7 +1456,8 @@ function cdmExpandArticle(id) {
if (old_offset > new_offset)
$("headlines-frame").scrollTop -= (old_offset-new_offset);
- toggleUnread(id, 0, true);
+ if (!noexpand)
+ toggleUnread(id, 0, true);
toggleSelected(id);
$("RROW-" + id).addClassName("active");