bring back (debloated) version of unexpanded combined mode
This commit is contained in:
parent
1702ecf7ea
commit
5aa9c60494
|
@ -496,7 +496,8 @@ class Feeds extends Handler_Protected {
|
||||||
|
|
||||||
$content_encoded = htmlspecialchars($line["content"]);
|
$content_encoded = htmlspecialchars($line["content"]);
|
||||||
|
|
||||||
$tmp_content = "<div class=\"cdm expanded $hlc_suffix $class\"
|
$expanded_class = get_pref("CDM_EXPANDED") ? "expanded" : "expandable";
|
||||||
|
$tmp_content = "<div class=\"cdm $expanded_class $hlc_suffix $class\"
|
||||||
id=\"RROW-$id\" data-content=\"$content_encoded\" data-article-id='$id' data-orig-feed-id='$feed_id' $mouseover_attrs>";
|
id=\"RROW-$id\" data-content=\"$content_encoded\" data-article-id='$id' data-orig-feed-id='$feed_id' $mouseover_attrs>";
|
||||||
|
|
||||||
$tmp_content .= "<div class=\"header\">";
|
$tmp_content .= "<div class=\"header\">";
|
||||||
|
@ -534,6 +535,10 @@ class Feeds extends Handler_Protected {
|
||||||
|
|
||||||
$tmp_content .= $labels_str;
|
$tmp_content .= $labels_str;
|
||||||
|
|
||||||
|
$tmp_content .= "<span class='collapse'>
|
||||||
|
<img src=\"images/collapse.png\" onclick=\"return cdmCollapseActive(event)\"
|
||||||
|
title=\"".__("Collapse article")."\"/></span>";
|
||||||
|
|
||||||
$tmp_content .= "</span>";
|
$tmp_content .= "</span>";
|
||||||
|
|
||||||
if (!$vfeed_group_enabled) {
|
if (!$vfeed_group_enabled) {
|
||||||
|
|
79
css/cdm.less
79
css/cdm.less
|
@ -103,6 +103,10 @@
|
||||||
margin-top : 4px;
|
margin-top : 4px;
|
||||||
margin-bottom : 4px;
|
margin-bottom : 4px;
|
||||||
|
|
||||||
|
.collapse {
|
||||||
|
display : none;
|
||||||
|
}
|
||||||
|
|
||||||
.footer {
|
.footer {
|
||||||
border: 0px solid #ddd;
|
border: 0px solid #ddd;
|
||||||
border-bottom-width: 1px;
|
border-bottom-width: 1px;
|
||||||
|
@ -327,7 +331,7 @@ div#floatingTitle.Unread a.title {
|
||||||
|
|
||||||
.cdm.high .header {
|
.cdm.high .header {
|
||||||
a.title.high,
|
a.title.high,
|
||||||
.cdmExcerpt,
|
.excerpt,
|
||||||
span.author {
|
span.author {
|
||||||
color : #00aa00;
|
color : #00aa00;
|
||||||
}
|
}
|
||||||
|
@ -335,18 +339,85 @@ div#floatingTitle.Unread a.title {
|
||||||
|
|
||||||
.cdm.Unread.high .header {
|
.cdm.Unread.high .header {
|
||||||
a.title.high,
|
a.title.high,
|
||||||
.cdmExcerpt,
|
.excerpt,
|
||||||
span.author {
|
span.author {
|
||||||
color : #00dd00;
|
color : #00dd00;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.cdm .header a.title.low,
|
.cdm .header a.title.low,
|
||||||
.cdm.low .header .cdmExcerpt,
|
.cdm.low .header .excerpt,
|
||||||
.cdm.Unread .header a.title.low,
|
.cdm.Unread .header a.title.low,
|
||||||
.cdm.Unread.low .header .cdmExcerpt,
|
.cdm.Unread.low .header .excerpt,
|
||||||
.cdm.low .header span.author {
|
.cdm.low .header span.author {
|
||||||
color : #909090;
|
color : #909090;
|
||||||
text-decoration : line-through;
|
text-decoration : line-through;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.cdm.expandable {
|
||||||
|
background-color : #f0f0f0;
|
||||||
|
border: 0px solid #ddd;
|
||||||
|
border-bottom-width: 1px;
|
||||||
|
|
||||||
|
> hr {
|
||||||
|
display : none;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.header span.titleWrap {
|
||||||
|
white-space : nowrap;
|
||||||
|
text-overflow : ellipsis;
|
||||||
|
overflow : hidden;
|
||||||
|
max-width : 500px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.cdm.expandable.Unread {
|
||||||
|
background : white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cdm.expandable.Selected:not(.active) {
|
||||||
|
background : desaturate(@color-accent, 25%);
|
||||||
|
|
||||||
|
a,
|
||||||
|
.header a.title,
|
||||||
|
span {
|
||||||
|
color : white;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.cdm.expandable.active {
|
||||||
|
background : white ! important;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.cdm.expandable.active div.header span.titleWrap {
|
||||||
|
white-space : normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.cdm.expandable div.header a.title {
|
||||||
|
font-weight : 600;
|
||||||
|
color : @default-text;
|
||||||
|
font-size : 14px;
|
||||||
|
transition : color 0.2s, background 0.2s;
|
||||||
|
text-rendering: optimizelegibility;
|
||||||
|
font-family : @fonts-ui-bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.cdm.expandable.Unread div.header a.title {
|
||||||
|
color : black;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.cdm.expandable.active div.header a.title {
|
||||||
|
color: @color-link;
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 600;
|
||||||
|
text-rendering: optimizelegibility;
|
||||||
|
font-family: @fonts-ui-bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.cdm.expandable:not(.active) {
|
||||||
|
cursor : pointer;
|
||||||
|
|
||||||
|
.content, .collapse {
|
||||||
|
display : none;
|
||||||
|
}
|
||||||
|
}
|
File diff suppressed because one or more lines are too long
|
@ -1164,6 +1164,7 @@
|
||||||
"feed_debug_viewfeed" => __("Debug viewfeed()"),
|
"feed_debug_viewfeed" => __("Debug viewfeed()"),
|
||||||
"catchup_all" => __("Mark all feeds as read"),
|
"catchup_all" => __("Mark all feeds as read"),
|
||||||
"cat_toggle_collapse" => __("Un/collapse current category"),
|
"cat_toggle_collapse" => __("Un/collapse current category"),
|
||||||
|
"toggle_cdm_expanded" => __("Toggle auto expand in combined mode"),
|
||||||
"toggle_combined_mode" => __("Toggle combined mode")),
|
"toggle_combined_mode" => __("Toggle combined mode")),
|
||||||
__("Go to") => array(
|
__("Go to") => array(
|
||||||
"goto_all" => __("All articles"),
|
"goto_all" => __("All articles"),
|
||||||
|
@ -1232,6 +1233,7 @@
|
||||||
"f *d" => "feed_debug_update",
|
"f *d" => "feed_debug_update",
|
||||||
"f *g" => "feed_debug_viewfeed",
|
"f *g" => "feed_debug_viewfeed",
|
||||||
"f *c" => "toggle_combined_mode",
|
"f *c" => "toggle_combined_mode",
|
||||||
|
"f c" => "toggle_cdm_expanded",
|
||||||
"*q" => "catchup_all",
|
"*q" => "catchup_all",
|
||||||
"x" => "cat_toggle_collapse",
|
"x" => "cat_toggle_collapse",
|
||||||
// "goto" => array(
|
// "goto" => array(
|
||||||
|
@ -1306,6 +1308,7 @@
|
||||||
$data["num_feeds"] = (int) $num_feeds;
|
$data["num_feeds"] = (int) $num_feeds;
|
||||||
|
|
||||||
$data['last_article_id'] = Article::getLastArticleId();
|
$data['last_article_id'] = Article::getLastArticleId();
|
||||||
|
$data['cdm_expanded'] = get_pref('CDM_EXPANDED');
|
||||||
|
|
||||||
$data['dep_ts'] = calculate_dep_timestamp();
|
$data['dep_ts'] = calculate_dep_timestamp();
|
||||||
$data['reload_on_ts_change'] = !defined('_NO_RELOAD_ON_TS_CHANGE');
|
$data['reload_on_ts_change'] = !defined('_NO_RELOAD_ON_TS_CHANGE');
|
||||||
|
|
18
js/tt-rss.js
18
js/tt-rss.js
|
@ -335,7 +335,11 @@ function init_hotkey_actions() {
|
||||||
scrollArticle(-40);
|
scrollArticle(-40);
|
||||||
};
|
};
|
||||||
hotkey_actions["close_article"] = function() {
|
hotkey_actions["close_article"] = function() {
|
||||||
|
if (isCdmMode()) {
|
||||||
|
cdmCollapseActive();
|
||||||
|
} else {
|
||||||
closeArticlePanel();
|
closeArticlePanel();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
hotkey_actions["email_article"] = function() {
|
hotkey_actions["email_article"] = function() {
|
||||||
if (typeof emailArticle != "undefined") {
|
if (typeof emailArticle != "undefined") {
|
||||||
|
@ -501,6 +505,20 @@ function init_hotkey_actions() {
|
||||||
viewCurrentFeed();
|
viewCurrentFeed();
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
|
hotkey_actions["toggle_cdm_expanded"] = function() {
|
||||||
|
notify_progress("Loading, please wait...");
|
||||||
|
|
||||||
|
const value = getInitParam("cdm_expanded") ? "false" : "true";
|
||||||
|
const query = "?op=rpc&method=setpref&key=CDM_EXPANDED&value=" + value;
|
||||||
|
|
||||||
|
new Ajax.Request("backend.php", {
|
||||||
|
parameters: query,
|
||||||
|
onComplete: function(transport) {
|
||||||
|
setInitParam("cdm_expanded", !getInitParam("cdm_expanded"));
|
||||||
|
viewCurrentFeed();
|
||||||
|
} });
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function init_second_stage() {
|
function init_second_stage() {
|
||||||
|
|
|
@ -535,8 +535,8 @@ function moveToPost(mode, noscroll, noexpand) {
|
||||||
scrollArticle(ctr.offsetHeight/4);
|
scrollArticle(ctr.offsetHeight/4);
|
||||||
|
|
||||||
} else if (next_id) {
|
} else if (next_id) {
|
||||||
cdmScrollToArticleId(next_id, true);
|
|
||||||
setActiveArticleId(next_id);
|
setActiveArticleId(next_id);
|
||||||
|
cdmScrollToArticleId(next_id, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (next_id) {
|
} else if (next_id) {
|
||||||
|
@ -560,8 +560,8 @@ function moveToPost(mode, noscroll, noexpand) {
|
||||||
prev_article.offsetTop < ctr.scrollTop) {
|
prev_article.offsetTop < ctr.scrollTop) {
|
||||||
scrollArticle(-ctr.offsetHeight/4);
|
scrollArticle(-ctr.offsetHeight/4);
|
||||||
} else if (prev_id) {
|
} else if (prev_id) {
|
||||||
cdmScrollToArticleId(prev_id, noscroll);
|
|
||||||
setActiveArticleId(prev_id);
|
setActiveArticleId(prev_id);
|
||||||
|
cdmScrollToArticleId(prev_id, noscroll);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (prev_id) {
|
} else if (prev_id) {
|
||||||
|
@ -1162,8 +1162,8 @@ function unpackVisibleHeadlines() {
|
||||||
PluginHost.run(PluginHost.HOOK_ARTICLE_RENDERED_CDM, row);
|
PluginHost.run(PluginHost.HOOK_ARTICLE_RENDERED_CDM, row);
|
||||||
|
|
||||||
// i wonder if this is a good idea?
|
// i wonder if this is a good idea?
|
||||||
if (!getActiveArticleId() && !row.hasClassName("Unread"))
|
//if (!getActiveArticleId() && !row.hasClassName("Unread"))
|
||||||
setActiveArticleId(row.getAttribute("data-article-id"));
|
// setActiveArticleId(row.getAttribute("data-article-id"));
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
break;
|
break;
|
||||||
|
@ -1184,7 +1184,7 @@ function headlines_scroll_handler(e) {
|
||||||
unpackVisibleHeadlines();
|
unpackVisibleHeadlines();
|
||||||
|
|
||||||
// set topmost child in the buffer as active
|
// set topmost child in the buffer as active
|
||||||
if (isCdmMode() && getInitParam("cdm_auto_catchup") == 1) {
|
if (isCdmMode() && getInitParam("cdm_expanded") && getInitParam("cdm_auto_catchup") == 1) {
|
||||||
|
|
||||||
const rows = $$("#headlines-frame > div[id*=RROW]");
|
const rows = $$("#headlines-frame > div[id*=RROW]");
|
||||||
|
|
||||||
|
@ -1400,12 +1400,16 @@ function show_labels_in_headlines(transport) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function cdmClicked(event, id, in_body) {
|
function cdmClicked(event, id, in_body) {
|
||||||
if (event.ctrlKey && !in_body || !in_body) {
|
|
||||||
|
if (!in_body && (event.ctrlKey || id == getActiveArticleId() || getInitParam("cdm_expanded"))) {
|
||||||
openArticleInNewWindow(id);
|
openArticleInNewWindow(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
setActiveArticleId(id);
|
setActiveArticleId(id);
|
||||||
|
|
||||||
|
if (!getInitParam("cdm_expanded"))
|
||||||
|
cdmScrollToArticleId(id);
|
||||||
|
|
||||||
//var shift_key = event.shiftKey;
|
//var shift_key = event.shiftKey;
|
||||||
|
|
||||||
/* if (!event.ctrlKey && !event.metaKey) {
|
/* if (!event.ctrlKey && !event.metaKey) {
|
||||||
|
@ -1563,6 +1567,25 @@ function headlineActionsChange(elem) {
|
||||||
elem.attr('value', 'false');
|
elem.attr('value', 'false');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function cdmCollapseActive(event) {
|
||||||
|
const row = $("RROW-" + getActiveArticleId());
|
||||||
|
|
||||||
|
if (row) {
|
||||||
|
row.removeClassName("active");
|
||||||
|
const cb = dijit.getEnclosingWidget(row.select(".rchk")[0]);
|
||||||
|
|
||||||
|
if (cb && !row.hasClassName("Selected"))
|
||||||
|
cb.attr("checked", false);
|
||||||
|
|
||||||
|
setActiveArticleId(0);
|
||||||
|
|
||||||
|
if (event)
|
||||||
|
event.stopPropagation();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function closeArticlePanel() {
|
function closeArticlePanel() {
|
||||||
if (dijit.byId("content-insert"))
|
if (dijit.byId("content-insert"))
|
||||||
dijit.byId("headlines-wrap-inner").removeChild(
|
dijit.byId("headlines-wrap-inner").removeChild(
|
||||||
|
@ -1880,7 +1903,7 @@ function scrollToRowId(id) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateFloatingTitle(unread_only) {
|
function updateFloatingTitle(unread_only) {
|
||||||
if (!isCdmMode()) return;
|
if (!isCdmMode() || !getInitParam("cdm_expanded")) return;
|
||||||
|
|
||||||
const hf = $("headlines-frame");
|
const hf = $("headlines-frame");
|
||||||
const elems = $$("#headlines-frame > div[id*=RROW]");
|
const elems = $$("#headlines-frame > div[id*=RROW]");
|
||||||
|
|
Loading…
Reference in New Issue