bring back (debloated) version of unexpanded combined mode

This commit is contained in:
Andrew Dolgov 2018-12-01 01:03:01 +03:00
parent 1702ecf7ea
commit 5aa9c60494
6 changed files with 134 additions and 14 deletions

View File

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

View File

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

View File

@ -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');

View File

@ -335,7 +335,11 @@ function init_hotkey_actions() {
scrollArticle(-40); scrollArticle(-40);
}; };
hotkey_actions["close_article"] = function() { hotkey_actions["close_article"] = function() {
closeArticlePanel(); if (isCdmMode()) {
cdmCollapseActive();
} else {
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() {

View File

@ -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]");