implement special counter display when viewing by published, similar to marked

This commit is contained in:
Andrew Dolgov 2025-07-30 19:24:53 +03:00
parent 8b07dc8453
commit bc312b1205
No known key found for this signature in database
GPG Key ID: 1A56B4FA25D4AF2A
14 changed files with 274 additions and 82 deletions

View File

@ -35,6 +35,7 @@ class Counters {
static private function get_cat_children(int $cat_id, int $owner_uid): array { static private function get_cat_children(int $cat_id, int $owner_uid): array {
$unread = 0; $unread = 0;
$marked = 0; $marked = 0;
$published = 0;
$cats = ORM::for_table('ttrss_feed_categories') $cats = ORM::for_table('ttrss_feed_categories')
->where('owner_uid', $owner_uid) ->where('owner_uid', $owner_uid)
@ -42,13 +43,14 @@ class Counters {
->find_many(); ->find_many();
foreach ($cats as $cat) { foreach ($cats as $cat) {
list ($tmp_unread, $tmp_marked) = self::get_cat_children($cat->id, $owner_uid); list ($tmp_unread, $tmp_marked, $tmp_published) = self::get_cat_children($cat->id, $owner_uid);
$unread += $tmp_unread + Feeds::_get_cat_unread($cat->id, $owner_uid); $unread += $tmp_unread + Feeds::_get_cat_unread($cat->id, $owner_uid);
$marked += $tmp_marked + Feeds::_get_cat_marked($cat->id, $owner_uid); $marked += $tmp_marked + Feeds::_get_cat_marked($cat->id, $owner_uid);
$published += $tmp_published + Feeds::_get_cat_published($cat->id, $owner_uid);
} }
return [$unread, $marked]; return [$unread, $marked, $published];
} }
/** /**
@ -99,6 +101,7 @@ class Counters {
$sth = $pdo->prepare("SELECT fc.id, $sth = $pdo->prepare("SELECT fc.id,
SUM(CASE WHEN unread THEN 1 ELSE 0 END) AS count, SUM(CASE WHEN unread THEN 1 ELSE 0 END) AS count,
SUM(CASE WHEN marked THEN 1 ELSE 0 END) AS count_marked, SUM(CASE WHEN marked THEN 1 ELSE 0 END) AS count_marked,
SUM(CASE WHEN published THEN 1 ELSE 0 END) AS count_published,
(SELECT COUNT(id) FROM ttrss_feed_categories fcc (SELECT COUNT(id) FROM ttrss_feed_categories fcc
WHERE fcc.parent_cat = fc.id) AS num_children WHERE fcc.parent_cat = fc.id) AS num_children
FROM ttrss_feed_categories fc FROM ttrss_feed_categories fc
@ -110,6 +113,7 @@ class Counters {
SELECT 0, SELECT 0,
SUM(CASE WHEN unread THEN 1 ELSE 0 END) AS count, SUM(CASE WHEN unread THEN 1 ELSE 0 END) AS count,
SUM(CASE WHEN marked THEN 1 ELSE 0 END) AS count_marked, SUM(CASE WHEN marked THEN 1 ELSE 0 END) AS count_marked,
SUM(CASE WHEN published THEN 1 ELSE 0 END) AS count_published,
0 0
FROM ttrss_feeds f, ttrss_user_entries ue FROM ttrss_feeds f, ttrss_user_entries ue
WHERE f.cat_id IS NULL AND WHERE f.cat_id IS NULL AND
@ -121,16 +125,18 @@ class Counters {
while ($line = $sth->fetch()) { while ($line = $sth->fetch()) {
if ($line["num_children"] > 0) { if ($line["num_children"] > 0) {
list ($child_counter, $child_marked_counter) = self::get_cat_children($line["id"], $_SESSION["uid"]); list ($child_counter, $child_marked_counter, $child_published_counter) = self::get_cat_children($line["id"], $_SESSION["uid"]);
} else { } else {
$child_counter = 0; $child_counter = 0;
$child_marked_counter = 0; $child_marked_counter = 0;
$child_published_counter = 0;
} }
$cv = [ $cv = [
"id" => (int)$line["id"], "id" => (int)$line["id"],
"kind" => "cat", "kind" => "cat",
"markedcounter" => (int) $line["count_marked"] + $child_marked_counter, "markedcounter" => (int) $line["count_marked"] + $child_marked_counter,
"publishedcounter" => (int) $line["count_published"] + $child_published_counter,
"counter" => (int) $line["count"] + $child_counter "counter" => (int) $line["count"] + $child_counter
]; ];
@ -173,6 +179,7 @@ class Counters {
'updated' => TimeHelper::make_local_datetime($feed->last_updated), 'updated' => TimeHelper::make_local_datetime($feed->last_updated),
'counter' => (int) $feed->count, 'counter' => (int) $feed->count,
'markedcounter' => (int) $feed->count_marked, 'markedcounter' => (int) $feed->count_marked,
'publishedcounter' => (int) $feed->count_published,
'ts' => Feeds::_has_icon($feed->id) ? (int) filemtime(Feeds::_get_icon_file($feed->id)) : 0, 'ts' => Feeds::_has_icon($feed->id) ? (int) filemtime(Feeds::_get_icon_file($feed->id)) : 0,
]; ];
} }
@ -228,6 +235,9 @@ class Counters {
if ($feed_id == Feeds::FEED_STARRED) if ($feed_id == Feeds::FEED_STARRED)
$cv["markedcounter"] = $auxctr; $cv["markedcounter"] = $auxctr;
if ($feed_id == Feeds::FEED_PUBLISHED)
$cv["publishedcounter"] = $auxctr;
array_push($ret, $cv); array_push($ret, $cv);
} }
@ -270,6 +280,7 @@ class Counters {
caption, caption,
SUM(CASE WHEN u1.unread = true THEN 1 ELSE 0 END) AS count_unread, SUM(CASE WHEN u1.unread = true THEN 1 ELSE 0 END) AS count_unread,
SUM(CASE WHEN u1.marked = true THEN 1 ELSE 0 END) AS count_marked, SUM(CASE WHEN u1.marked = true THEN 1 ELSE 0 END) AS count_marked,
SUM(CASE WHEN u1.published = true THEN 1 ELSE 0 END) AS count_published,
COUNT(u1.unread) AS total COUNT(u1.unread) AS total
FROM ttrss_labels2 LEFT JOIN ttrss_user_labels2 ON FROM ttrss_labels2 LEFT JOIN ttrss_user_labels2 ON
(ttrss_labels2.id = label_id) (ttrss_labels2.id = label_id)
@ -282,6 +293,7 @@ class Counters {
caption, caption,
SUM(CASE WHEN u1.unread = true THEN 1 ELSE 0 END) AS count_unread, SUM(CASE WHEN u1.unread = true THEN 1 ELSE 0 END) AS count_unread,
SUM(CASE WHEN u1.marked = true THEN 1 ELSE 0 END) AS count_marked, SUM(CASE WHEN u1.marked = true THEN 1 ELSE 0 END) AS count_marked,
SUM(CASE WHEN u1.published = true THEN 1 ELSE 0 END) AS count_published,
COUNT(u1.unread) AS total COUNT(u1.unread) AS total
FROM ttrss_labels2 LEFT JOIN ttrss_user_labels2 ON FROM ttrss_labels2 LEFT JOIN ttrss_user_labels2 ON
(ttrss_labels2.id = label_id) (ttrss_labels2.id = label_id)
@ -300,6 +312,7 @@ class Counters {
"counter" => (int) $line["count_unread"], "counter" => (int) $line["count_unread"],
"auxcounter" => (int) $line["total"], "auxcounter" => (int) $line["total"],
"markedcounter" => (int) $line["count_marked"], "markedcounter" => (int) $line["count_marked"],
"publishedcounter" => (int) $line["count_published"],
"description" => $line["caption"] "description" => $line["caption"]
]; ];

View File

@ -1248,6 +1248,31 @@ class Feeds extends Handler_Protected {
return 0; return 0;
} }
// only real cats
static function _get_cat_published(int $cat, int $owner_uid = 0): int {
if (!$owner_uid) $owner_uid = $_SESSION["uid"];
$pdo = Db::pdo();
if ($cat >= 0) {
$sth = $pdo->prepare("SELECT SUM(CASE WHEN published THEN 1 ELSE 0 END) AS marked
FROM ttrss_user_entries
WHERE feed_id IN (SELECT id FROM ttrss_feeds
WHERE (cat_id = :cat OR (:cat IS NULL AND cat_id IS NULL))
AND owner_uid = :uid)
AND owner_uid = :uid");
$sth->execute(["cat" => $cat ? $cat : null, "uid" => $owner_uid]);
if ($row = $sth->fetch()) {
return (int) $row["marked"];
}
}
return 0;
}
static function _get_cat_unread(int $cat, int $owner_uid = 0): int { static function _get_cat_unread(int $cat, int $owner_uid = 0): int {
if (!$owner_uid) $owner_uid = $_SESSION["uid"]; if (!$owner_uid) $owner_uid = $_SESSION["uid"];

View File

@ -173,6 +173,9 @@ define(["dojo/_base/declare", "dojo/dom-construct", "dojo/_base/array", "dojo/co
tnode.markedCounterNode = dojo.create('span', { className: 'counterNode marked', innerHTML: args.item.markedcounter }); tnode.markedCounterNode = dojo.create('span', { className: 'counterNode marked', innerHTML: args.item.markedcounter });
domConstruct.place(tnode.markedCounterNode, tnode.rowNode, 'first'); domConstruct.place(tnode.markedCounterNode, tnode.rowNode, 'first');
tnode.publishedCounterNode = dojo.create('span', { className: 'counterNode published', innerHTML: args.item.publishedcounter });
domConstruct.place(tnode.publishedCounterNode, tnode.rowNode, 'first');
tnode.auxCounterNode = dojo.create('span', { className: 'counterNode aux', innerHTML: args.item.auxcounter }); tnode.auxCounterNode = dojo.create('span', { className: 'counterNode aux', innerHTML: args.item.auxcounter });
domConstruct.place(tnode.auxCounterNode, tnode.rowNode, 'first'); domConstruct.place(tnode.auxCounterNode, tnode.rowNode, 'first');
@ -188,7 +191,7 @@ define(["dojo/_base/declare", "dojo/dom-construct", "dojo/_base/array", "dojo/co
updateCounter: function (item) { updateCounter: function (item) {
const tree = this; const tree = this;
//console.log("updateCounter: " + item.id[0] + " " + item.unread + " " + tree); // console.log("updateCounter: " + item.id[0] + " U: " + item.unread + " P: " + item.publishedcounter + " M: " + item.markedcounter);
let treeNode = tree._itemNodesMap[item.id]; let treeNode = tree._itemNodesMap[item.id];
@ -198,6 +201,7 @@ define(["dojo/_base/declare", "dojo/dom-construct", "dojo/_base/array", "dojo/co
treeNode.unreadCounterNode.innerHTML = item.unread; treeNode.unreadCounterNode.innerHTML = item.unread;
treeNode.auxCounterNode.innerHTML = item.auxcounter; treeNode.auxCounterNode.innerHTML = item.auxcounter;
treeNode.markedCounterNode.innerHTML = item.markedcounter; treeNode.markedCounterNode.innerHTML = item.markedcounter;
treeNode.publishedCounterNode.innerHTML = item.publishedcounter;
} }
}, },
getTooltip: function (item) { getTooltip: function (item) {
@ -224,6 +228,7 @@ define(["dojo/_base/declare", "dojo/dom-construct", "dojo/_base/array", "dojo/co
if (item.unread > 0) rc += " Unread"; if (item.unread > 0) rc += " Unread";
if (item.auxcounter > 0) rc += " Has_Aux"; if (item.auxcounter > 0) rc += " Has_Aux";
if (item.markedcounter > 0) rc += " Has_Marked"; if (item.markedcounter > 0) rc += " Has_Marked";
if (item.publishedcounter > 0) rc += " Has_Published";
if (item.updates_disabled > 0) rc += " UpdatesDisabled"; if (item.updates_disabled > 0) rc += " UpdatesDisabled";
if (item.bare_id >= App.LABEL_BASE_INDEX && item.bare_id < 0 && !is_cat || item.bare_id == Feeds.FEED_ARCHIVED && !is_cat) rc += " Special"; if (item.bare_id >= App.LABEL_BASE_INDEX && item.bare_id < 0 && !is_cat || item.bare_id == Feeds.FEED_ARCHIVED && !is_cat) rc += " Special";
if (item.bare_id == Feeds.CATEGORY_SPECIAL && is_cat) rc += " AlwaysVisible"; if (item.bare_id == Feeds.CATEGORY_SPECIAL && is_cat) rc += " AlwaysVisible";

View File

@ -105,6 +105,7 @@ const Feeds = {
this.setUnread(id, (kind == "cat"), ctr); this.setUnread(id, (kind == "cat"), ctr);
this.setValue(id, (kind == "cat"), 'auxcounter', parseInt(elems[l].auxcounter)); this.setValue(id, (kind == "cat"), 'auxcounter', parseInt(elems[l].auxcounter));
this.setValue(id, (kind == "cat"), 'markedcounter', parseInt(elems[l].markedcounter)); this.setValue(id, (kind == "cat"), 'markedcounter', parseInt(elems[l].markedcounter));
this.setValue(id, (kind == "cat"), 'publishedcounter', parseInt(elems[l].publishedcounter));
if (kind != "cat") { if (kind != "cat") {
this.setValue(id, false, 'error', error); this.setValue(id, false, 'error', error);

View File

@ -561,14 +561,19 @@ body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNod
flex-shrink: 0; flex-shrink: 0;
} }
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.aux, body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.aux,
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.marked { body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.marked,
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.published {
background: #f5f5f5; background: #f5f5f5;
color: #6f6f6f; color: #6f6f6f;
border-color: #dcdcdc; border-color: #dcdcdc;
} }
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.marked { body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.marked {
border-color: #257aa7; border-color: #257aa7;
background: #ffffff; background: white;
}
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.published {
border-color: #b13000;
background: white;
} }
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow[data-feed-id="-3"][data-is-cat="false"] .counterNode.unread { body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow[data-feed-id="-3"][data-is-cat="false"] .counterNode.unread {
background-color: #3ea447; background-color: #3ea447;
@ -958,22 +963,34 @@ body.ttrss_main[view-mode="marked"] #feeds-holder #feedTree .dijitTreeRow.Has_Ma
body.ttrss_main[view-mode="marked"] #feeds-holder #feedTree .dijitTreeRow.Has_Marked .counterNode.marked { body.ttrss_main[view-mode="marked"] #feeds-holder #feedTree .dijitTreeRow.Has_Marked .counterNode.marked {
display: inline-block; display: inline-block;
} }
body.ttrss_main[view-mode="published"] #feeds-holder #feedTree .dijitTreeRow.Has_Published .dijitTreeLabel {
color: #b13000;
}
body.ttrss_main[view-mode="published"] #feeds-holder #feedTree .dijitTreeRow.Has_Published .counterNode.published {
display: inline-block;
}
body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Special):not(.Has_Marked) { body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Special):not(.Has_Marked) {
display: none; display: none;
} }
body.ttrss_main[view-mode="published"][hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Special):not(.Has_Published) {
display: none;
}
body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Has_Marked) { body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Has_Marked) {
display: none; display: none;
} }
body.ttrss_main:not([view-mode="marked"]) #feeds-holder #feedTree .dijitTreeRow.Unread .counterNode.unread { body.ttrss_main[view-mode="published"][hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Has_Published) {
display: inline-block;
}
body.ttrss_main:not([view-mode="marked"]) #feeds-holder #feedTree .dijitTreeRow.Has_Aux:not(.Unread) .counterNode.aux {
display: inline-block;
}
body.ttrss_main:not([view-mode="marked"])[hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.Unread):not(.AlwaysVisible):not(.Special) {
display: none; display: none;
} }
body.ttrss_main:not([view-mode="marked"])[hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.Unread):not(.AlwaysVisible) { body.ttrss_main:not([view-mode="marked"]):not([view-mode="published"]) #feeds-holder #feedTree .dijitTreeRow.Unread .counterNode.unread {
display: inline-block;
}
body.ttrss_main:not([view-mode="marked"]):not([view-mode="published"]) #feeds-holder #feedTree .dijitTreeRow.Has_Aux:not(.Unread) .counterNode.aux {
display: inline-block;
}
body.ttrss_main:not([view-mode="marked"]):not([view-mode="published"])[hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.Unread):not(.AlwaysVisible):not(.Special) {
display: none;
}
body.ttrss_main:not([view-mode="marked"]):not([view-mode="published"])[hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.Unread):not(.AlwaysVisible) {
display: none; display: none;
} }
body.ttrss_main { body.ttrss_main {

View File

@ -561,14 +561,19 @@ body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNod
flex-shrink: 0; flex-shrink: 0;
} }
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.aux, body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.aux,
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.marked { body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.marked,
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.published {
background: #222; background: #222;
color: #e6e6e6; color: #e6e6e6;
border-color: #080808; border-color: #080808;
} }
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.marked { body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.marked {
border-color: #b87d2c; border-color: #b87d2c;
background: #ffffff; background: #333;
}
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.published {
border-color: #db8c6f;
background: #333;
} }
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow[data-feed-id="-3"][data-is-cat="false"] .counterNode.unread { body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow[data-feed-id="-3"][data-is-cat="false"] .counterNode.unread {
background-color: #3ea447; background-color: #3ea447;
@ -958,22 +963,34 @@ body.ttrss_main[view-mode="marked"] #feeds-holder #feedTree .dijitTreeRow.Has_Ma
body.ttrss_main[view-mode="marked"] #feeds-holder #feedTree .dijitTreeRow.Has_Marked .counterNode.marked { body.ttrss_main[view-mode="marked"] #feeds-holder #feedTree .dijitTreeRow.Has_Marked .counterNode.marked {
display: inline-block; display: inline-block;
} }
body.ttrss_main[view-mode="published"] #feeds-holder #feedTree .dijitTreeRow.Has_Published .dijitTreeLabel {
color: #db8c6f;
}
body.ttrss_main[view-mode="published"] #feeds-holder #feedTree .dijitTreeRow.Has_Published .counterNode.published {
display: inline-block;
}
body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Special):not(.Has_Marked) { body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Special):not(.Has_Marked) {
display: none; display: none;
} }
body.ttrss_main[view-mode="published"][hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Special):not(.Has_Published) {
display: none;
}
body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Has_Marked) { body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Has_Marked) {
display: none; display: none;
} }
body.ttrss_main:not([view-mode="marked"]) #feeds-holder #feedTree .dijitTreeRow.Unread .counterNode.unread { body.ttrss_main[view-mode="published"][hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Has_Published) {
display: inline-block;
}
body.ttrss_main:not([view-mode="marked"]) #feeds-holder #feedTree .dijitTreeRow.Has_Aux:not(.Unread) .counterNode.aux {
display: inline-block;
}
body.ttrss_main:not([view-mode="marked"])[hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.Unread):not(.AlwaysVisible):not(.Special) {
display: none; display: none;
} }
body.ttrss_main:not([view-mode="marked"])[hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.Unread):not(.AlwaysVisible) { body.ttrss_main:not([view-mode="marked"]):not([view-mode="published"]) #feeds-holder #feedTree .dijitTreeRow.Unread .counterNode.unread {
display: inline-block;
}
body.ttrss_main:not([view-mode="marked"]):not([view-mode="published"]) #feeds-holder #feedTree .dijitTreeRow.Has_Aux:not(.Unread) .counterNode.aux {
display: inline-block;
}
body.ttrss_main:not([view-mode="marked"]):not([view-mode="published"])[hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.Unread):not(.AlwaysVisible):not(.Special) {
display: none;
}
body.ttrss_main:not([view-mode="marked"]):not([view-mode="published"])[hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.Unread):not(.AlwaysVisible) {
display: none; display: none;
} }
body.ttrss_main { body.ttrss_main {
@ -2169,7 +2186,8 @@ body.flat.ttrss_main #feeds-holder {
box-shadow: inset -1px 0px 2px -1px #666; box-shadow: inset -1px 0px 2px -1px #666;
} }
body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRow .counterNode.aux, body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRow .counterNode.aux,
body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRow .counterNode.marked { body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRow .counterNode.marked,
body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRow .counterNode.published {
background: #222; background: #222;
color: #ccc; color: #ccc;
border-color: #333; border-color: #333;
@ -2177,6 +2195,9 @@ body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRow .counterNode.marked {
body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRow .counterNode.marked { body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRow .counterNode.marked {
border-color: #b87d2c; border-color: #b87d2c;
} }
body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRow .counterNode.published {
border-color: #db8c6f;
}
body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRow .dijitTreeRowSelected { body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRow .dijitTreeRowSelected {
background: #333; background: #333;
border-color: #333 transparent; border-color: #333 transparent;

View File

@ -561,14 +561,19 @@ body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNod
flex-shrink: 0; flex-shrink: 0;
} }
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.aux, body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.aux,
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.marked { body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.marked,
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.published {
background: #f5f5f5; background: #f5f5f5;
color: #1a1a1a; color: #1a1a1a;
border-color: #dcdcdc; border-color: #dcdcdc;
} }
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.marked { body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.marked {
border-color: #257aa7; border-color: #257aa7;
background: #ffffff; background: white;
}
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.published {
border-color: #b13000;
background: white;
} }
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow[data-feed-id="-3"][data-is-cat="false"] .counterNode.unread { body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow[data-feed-id="-3"][data-is-cat="false"] .counterNode.unread {
background-color: #3ea447; background-color: #3ea447;
@ -958,22 +963,34 @@ body.ttrss_main[view-mode="marked"] #feeds-holder #feedTree .dijitTreeRow.Has_Ma
body.ttrss_main[view-mode="marked"] #feeds-holder #feedTree .dijitTreeRow.Has_Marked .counterNode.marked { body.ttrss_main[view-mode="marked"] #feeds-holder #feedTree .dijitTreeRow.Has_Marked .counterNode.marked {
display: inline-block; display: inline-block;
} }
body.ttrss_main[view-mode="published"] #feeds-holder #feedTree .dijitTreeRow.Has_Published .dijitTreeLabel {
color: #b13000;
}
body.ttrss_main[view-mode="published"] #feeds-holder #feedTree .dijitTreeRow.Has_Published .counterNode.published {
display: inline-block;
}
body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Special):not(.Has_Marked) { body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Special):not(.Has_Marked) {
display: none; display: none;
} }
body.ttrss_main[view-mode="published"][hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Special):not(.Has_Published) {
display: none;
}
body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Has_Marked) { body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Has_Marked) {
display: none; display: none;
} }
body.ttrss_main:not([view-mode="marked"]) #feeds-holder #feedTree .dijitTreeRow.Unread .counterNode.unread { body.ttrss_main[view-mode="published"][hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Has_Published) {
display: inline-block;
}
body.ttrss_main:not([view-mode="marked"]) #feeds-holder #feedTree .dijitTreeRow.Has_Aux:not(.Unread) .counterNode.aux {
display: inline-block;
}
body.ttrss_main:not([view-mode="marked"])[hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.Unread):not(.AlwaysVisible):not(.Special) {
display: none; display: none;
} }
body.ttrss_main:not([view-mode="marked"])[hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.Unread):not(.AlwaysVisible) { body.ttrss_main:not([view-mode="marked"]):not([view-mode="published"]) #feeds-holder #feedTree .dijitTreeRow.Unread .counterNode.unread {
display: inline-block;
}
body.ttrss_main:not([view-mode="marked"]):not([view-mode="published"]) #feeds-holder #feedTree .dijitTreeRow.Has_Aux:not(.Unread) .counterNode.aux {
display: inline-block;
}
body.ttrss_main:not([view-mode="marked"]):not([view-mode="published"])[hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.Unread):not(.AlwaysVisible):not(.Special) {
display: none;
}
body.ttrss_main:not([view-mode="marked"]):not([view-mode="published"])[hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.Unread):not(.AlwaysVisible) {
display: none; display: none;
} }
body.ttrss_main { body.ttrss_main {

View File

@ -561,14 +561,19 @@ body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNod
flex-shrink: 0; flex-shrink: 0;
} }
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.aux, body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.aux,
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.marked { body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.marked,
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.published {
background: #f5f5f5; background: #f5f5f5;
color: #6f6f6f; color: #6f6f6f;
border-color: #dcdcdc; border-color: #dcdcdc;
} }
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.marked { body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.marked {
border-color: #257aa7; border-color: #257aa7;
background: #ffffff; background: white;
}
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.published {
border-color: #b13000;
background: white;
} }
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow[data-feed-id="-3"][data-is-cat="false"] .counterNode.unread { body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow[data-feed-id="-3"][data-is-cat="false"] .counterNode.unread {
background-color: #3ea447; background-color: #3ea447;
@ -958,22 +963,34 @@ body.ttrss_main[view-mode="marked"] #feeds-holder #feedTree .dijitTreeRow.Has_Ma
body.ttrss_main[view-mode="marked"] #feeds-holder #feedTree .dijitTreeRow.Has_Marked .counterNode.marked { body.ttrss_main[view-mode="marked"] #feeds-holder #feedTree .dijitTreeRow.Has_Marked .counterNode.marked {
display: inline-block; display: inline-block;
} }
body.ttrss_main[view-mode="published"] #feeds-holder #feedTree .dijitTreeRow.Has_Published .dijitTreeLabel {
color: #b13000;
}
body.ttrss_main[view-mode="published"] #feeds-holder #feedTree .dijitTreeRow.Has_Published .counterNode.published {
display: inline-block;
}
body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Special):not(.Has_Marked) { body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Special):not(.Has_Marked) {
display: none; display: none;
} }
body.ttrss_main[view-mode="published"][hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Special):not(.Has_Published) {
display: none;
}
body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Has_Marked) { body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Has_Marked) {
display: none; display: none;
} }
body.ttrss_main:not([view-mode="marked"]) #feeds-holder #feedTree .dijitTreeRow.Unread .counterNode.unread { body.ttrss_main[view-mode="published"][hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Has_Published) {
display: inline-block;
}
body.ttrss_main:not([view-mode="marked"]) #feeds-holder #feedTree .dijitTreeRow.Has_Aux:not(.Unread) .counterNode.aux {
display: inline-block;
}
body.ttrss_main:not([view-mode="marked"])[hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.Unread):not(.AlwaysVisible):not(.Special) {
display: none; display: none;
} }
body.ttrss_main:not([view-mode="marked"])[hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.Unread):not(.AlwaysVisible) { body.ttrss_main:not([view-mode="marked"]):not([view-mode="published"]) #feeds-holder #feedTree .dijitTreeRow.Unread .counterNode.unread {
display: inline-block;
}
body.ttrss_main:not([view-mode="marked"]):not([view-mode="published"]) #feeds-holder #feedTree .dijitTreeRow.Has_Aux:not(.Unread) .counterNode.aux {
display: inline-block;
}
body.ttrss_main:not([view-mode="marked"]):not([view-mode="published"])[hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.Unread):not(.AlwaysVisible):not(.Special) {
display: none;
}
body.ttrss_main:not([view-mode="marked"]):not([view-mode="published"])[hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.Unread):not(.AlwaysVisible) {
display: none; display: none;
} }
body.ttrss_main { body.ttrss_main {

View File

@ -8,6 +8,7 @@
@color-published: lighten(#ff5718, 10%); @color-published: lighten(#ff5718, 10%);
@color-marked: #ffc069; @color-marked: #ffc069;
@color-accent-marked : @color-accent; @color-accent-marked : @color-accent;
@color-accent-published : darken(@color-published, 30%);
@color-panel-bg: #f5f5f5; @color-panel-bg: #f5f5f5;
@color-checked: #69C671; @color-checked: #69C671;
@border-default : #ddd; @border-default : #ddd;

View File

@ -646,7 +646,7 @@ body.ttrss_main {
height : 14px; height : 14px;
flex-shrink : 0; flex-shrink : 0;
&.aux, &.marked { &.aux, &.marked, &.published {
background : @color-panel-bg; background : @color-panel-bg;
color : lighten(@default-text, 10%); color : lighten(@default-text, 10%);
border-color : darken(@color-panel-bg, 10%); border-color : darken(@color-panel-bg, 10%);
@ -654,7 +654,12 @@ body.ttrss_main {
&.marked { &.marked {
border-color : @color-accent-marked; border-color : @color-accent-marked;
background : lighten(@color-accent-marked, 60%); background : @default-bg;
}
&.published {
border-color : @color-accent-published;
background : @default-bg;
} }
} }
@ -1141,18 +1146,36 @@ body.ttrss_main[view-mode="marked"] #feeds-holder #feedTree {
} }
} }
body.ttrss_main[view-mode="published"] #feeds-holder #feedTree {
.dijitTreeRow.Has_Published .dijitTreeLabel {
color : @color-accent-published;
}
.dijitTreeRow.Has_Published .counterNode.published {
display : inline-block;
}
}
body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree
.dijitTreeRow:not(.AlwaysVisible):not(.Special):not(.Has_Marked) { .dijitTreeRow:not(.AlwaysVisible):not(.Special):not(.Has_Marked) {
display : none; display : none;
} }
body.ttrss_main[view-mode="published"][hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree
.dijitTreeRow:not(.AlwaysVisible):not(.Special):not(.Has_Published) {
display : none;
}
body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree
.dijitTreeRow:not(.AlwaysVisible):not(.Has_Marked) { .dijitTreeRow:not(.AlwaysVisible):not(.Has_Marked) {
display : none; display : none;
} }
body.ttrss_main[view-mode="published"][hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree
.dijitTreeRow:not(.AlwaysVisible):not(.Has_Published) {
display : none;
}
body.ttrss_main:not([view-mode="marked"]) #feeds-holder #feedTree { body.ttrss_main:not([view-mode="marked"]):not([view-mode="published"]) #feeds-holder #feedTree {
.dijitTreeRow.Unread .counterNode.unread { .dijitTreeRow.Unread .counterNode.unread {
display : inline-block; display : inline-block;
} }
@ -1161,12 +1184,12 @@ body.ttrss_main:not([view-mode="marked"]) #feeds-holder #feedTree {
} }
} }
body.ttrss_main:not([view-mode="marked"])[hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree body.ttrss_main:not([view-mode="marked"]):not([view-mode="published"])[hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree
.dijitTreeRow:not(.Unread):not(.AlwaysVisible):not(.Special) { .dijitTreeRow:not(.Unread):not(.AlwaysVisible):not(.Special) {
display : none; display : none;
} }
body.ttrss_main:not([view-mode="marked"])[hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree body.ttrss_main:not([view-mode="marked"]):not([view-mode="published"])[hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree
.dijitTreeRow:not(.Unread):not(.AlwaysVisible) { .dijitTreeRow:not(.Unread):not(.AlwaysVisible) {
display : none; display : none;
} }

View File

@ -562,14 +562,19 @@ body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNod
flex-shrink: 0; flex-shrink: 0;
} }
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.aux, body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.aux,
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.marked { body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.marked,
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.published {
background: #222; background: #222;
color: #e6e6e6; color: #e6e6e6;
border-color: #080808; border-color: #080808;
} }
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.marked { body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.marked {
border-color: #b87d2c; border-color: #b87d2c;
background: #ffffff; background: #333;
}
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.published {
border-color: #db8c6f;
background: #333;
} }
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow[data-feed-id="-3"][data-is-cat="false"] .counterNode.unread { body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow[data-feed-id="-3"][data-is-cat="false"] .counterNode.unread {
background-color: #3ea447; background-color: #3ea447;
@ -959,22 +964,34 @@ body.ttrss_main[view-mode="marked"] #feeds-holder #feedTree .dijitTreeRow.Has_Ma
body.ttrss_main[view-mode="marked"] #feeds-holder #feedTree .dijitTreeRow.Has_Marked .counterNode.marked { body.ttrss_main[view-mode="marked"] #feeds-holder #feedTree .dijitTreeRow.Has_Marked .counterNode.marked {
display: inline-block; display: inline-block;
} }
body.ttrss_main[view-mode="published"] #feeds-holder #feedTree .dijitTreeRow.Has_Published .dijitTreeLabel {
color: #db8c6f;
}
body.ttrss_main[view-mode="published"] #feeds-holder #feedTree .dijitTreeRow.Has_Published .counterNode.published {
display: inline-block;
}
body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Special):not(.Has_Marked) { body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Special):not(.Has_Marked) {
display: none; display: none;
} }
body.ttrss_main[view-mode="published"][hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Special):not(.Has_Published) {
display: none;
}
body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Has_Marked) { body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Has_Marked) {
display: none; display: none;
} }
body.ttrss_main:not([view-mode="marked"]) #feeds-holder #feedTree .dijitTreeRow.Unread .counterNode.unread { body.ttrss_main[view-mode="published"][hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Has_Published) {
display: inline-block;
}
body.ttrss_main:not([view-mode="marked"]) #feeds-holder #feedTree .dijitTreeRow.Has_Aux:not(.Unread) .counterNode.aux {
display: inline-block;
}
body.ttrss_main:not([view-mode="marked"])[hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.Unread):not(.AlwaysVisible):not(.Special) {
display: none; display: none;
} }
body.ttrss_main:not([view-mode="marked"])[hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.Unread):not(.AlwaysVisible) { body.ttrss_main:not([view-mode="marked"]):not([view-mode="published"]) #feeds-holder #feedTree .dijitTreeRow.Unread .counterNode.unread {
display: inline-block;
}
body.ttrss_main:not([view-mode="marked"]):not([view-mode="published"]) #feeds-holder #feedTree .dijitTreeRow.Has_Aux:not(.Unread) .counterNode.aux {
display: inline-block;
}
body.ttrss_main:not([view-mode="marked"]):not([view-mode="published"])[hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.Unread):not(.AlwaysVisible):not(.Special) {
display: none;
}
body.ttrss_main:not([view-mode="marked"]):not([view-mode="published"])[hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.Unread):not(.AlwaysVisible) {
display: none; display: none;
} }
body.ttrss_main { body.ttrss_main {
@ -2170,7 +2187,8 @@ body.flat.ttrss_main #feeds-holder {
box-shadow: inset -1px 0px 2px -1px #666; box-shadow: inset -1px 0px 2px -1px #666;
} }
body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRow .counterNode.aux, body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRow .counterNode.aux,
body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRow .counterNode.marked { body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRow .counterNode.marked,
body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRow .counterNode.published {
background: #222; background: #222;
color: #ccc; color: #ccc;
border-color: #333; border-color: #333;
@ -2178,6 +2196,9 @@ body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRow .counterNode.marked {
body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRow .counterNode.marked { body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRow .counterNode.marked {
border-color: #b87d2c; border-color: #b87d2c;
} }
body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRow .counterNode.published {
border-color: #db8c6f;
}
body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRow .dijitTreeRowSelected { body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRow .dijitTreeRowSelected {
background: #333; background: #333;
border-color: #333 transparent; border-color: #333 transparent;

View File

@ -4,6 +4,9 @@
@import "../lib/flat-ttrss/flat_combined_dark.css"; @import "../lib/flat-ttrss/flat_combined_dark.css";
@color-accent: #b87d2c; @color-accent: #b87d2c;
@color-accent-marked: @color-accent;
@color-accent-published: desaturate(@color-published, 40%);
@color-panel-bg : #222; @color-panel-bg : #222;
@default-text: #ccc; @default-text: #ccc;
@default-fg: @default-text; @default-fg: @default-text;
@ -64,14 +67,21 @@ body.flat.ttrss_main {
#feedTree { #feedTree {
.dijitTreeRow { .dijitTreeRow {
.counterNode.aux, .counterNode.marked {
background: @color-panel-bg;
color: @default-text;
border-color: @default-bg;
}
.counterNode.marked { .counterNode {
border-color : @color-accent-marked; &.aux, &.marked, &.published {
background: @color-panel-bg;
color: @default-text;
border-color: @default-bg;
}
&.marked {
border-color : @color-accent-marked;
}
&.published {
border-color : @color-accent-published;
}
} }
.dijitTreeRowSelected { .dijitTreeRowSelected {

View File

@ -562,14 +562,19 @@ body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNod
flex-shrink: 0; flex-shrink: 0;
} }
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.aux, body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.aux,
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.marked { body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.marked,
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.published {
background: #222; background: #222;
color: #e6e6e6; color: #e6e6e6;
border-color: #080808; border-color: #080808;
} }
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.marked { body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.marked {
border-color: #257aa7; border-color: #257aa7;
background: #ffffff; background: #333;
}
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow .counterNode.published {
border-color: #db8c6f;
background: #333;
} }
body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow[data-feed-id="-3"][data-is-cat="false"] .counterNode.unread { body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow[data-feed-id="-3"][data-is-cat="false"] .counterNode.unread {
background-color: #3ea447; background-color: #3ea447;
@ -959,22 +964,34 @@ body.ttrss_main[view-mode="marked"] #feeds-holder #feedTree .dijitTreeRow.Has_Ma
body.ttrss_main[view-mode="marked"] #feeds-holder #feedTree .dijitTreeRow.Has_Marked .counterNode.marked { body.ttrss_main[view-mode="marked"] #feeds-holder #feedTree .dijitTreeRow.Has_Marked .counterNode.marked {
display: inline-block; display: inline-block;
} }
body.ttrss_main[view-mode="published"] #feeds-holder #feedTree .dijitTreeRow.Has_Published .dijitTreeLabel {
color: #db8c6f;
}
body.ttrss_main[view-mode="published"] #feeds-holder #feedTree .dijitTreeRow.Has_Published .counterNode.published {
display: inline-block;
}
body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Special):not(.Has_Marked) { body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Special):not(.Has_Marked) {
display: none; display: none;
} }
body.ttrss_main[view-mode="published"][hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Special):not(.Has_Published) {
display: none;
}
body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Has_Marked) { body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Has_Marked) {
display: none; display: none;
} }
body.ttrss_main:not([view-mode="marked"]) #feeds-holder #feedTree .dijitTreeRow.Unread .counterNode.unread { body.ttrss_main[view-mode="published"][hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.AlwaysVisible):not(.Has_Published) {
display: inline-block;
}
body.ttrss_main:not([view-mode="marked"]) #feeds-holder #feedTree .dijitTreeRow.Has_Aux:not(.Unread) .counterNode.aux {
display: inline-block;
}
body.ttrss_main:not([view-mode="marked"])[hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.Unread):not(.AlwaysVisible):not(.Special) {
display: none; display: none;
} }
body.ttrss_main:not([view-mode="marked"])[hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.Unread):not(.AlwaysVisible) { body.ttrss_main:not([view-mode="marked"]):not([view-mode="published"]) #feeds-holder #feedTree .dijitTreeRow.Unread .counterNode.unread {
display: inline-block;
}
body.ttrss_main:not([view-mode="marked"]):not([view-mode="published"]) #feeds-holder #feedTree .dijitTreeRow.Has_Aux:not(.Unread) .counterNode.aux {
display: inline-block;
}
body.ttrss_main:not([view-mode="marked"]):not([view-mode="published"])[hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.Unread):not(.AlwaysVisible):not(.Special) {
display: none;
}
body.ttrss_main:not([view-mode="marked"]):not([view-mode="published"])[hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.Unread):not(.AlwaysVisible) {
display: none; display: none;
} }
body.ttrss_main { body.ttrss_main {
@ -2170,7 +2187,8 @@ body.flat.ttrss_main #feeds-holder {
box-shadow: inset -1px 0px 2px -1px #666; box-shadow: inset -1px 0px 2px -1px #666;
} }
body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRow .counterNode.aux, body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRow .counterNode.aux,
body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRow .counterNode.marked { body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRow .counterNode.marked,
body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRow .counterNode.published {
background: #222; background: #222;
color: #ccc; color: #ccc;
border-color: #333; border-color: #333;
@ -2178,6 +2196,9 @@ body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRow .counterNode.marked {
body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRow .counterNode.marked { body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRow .counterNode.marked {
border-color: #257aa7; border-color: #257aa7;
} }
body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRow .counterNode.published {
border-color: #db8c6f;
}
body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRow .dijitTreeRowSelected { body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRow .dijitTreeRowSelected {
background: #333; background: #333;
border-color: #333 transparent; border-color: #333 transparent;

View File

@ -1,10 +1,10 @@
#!/bin/sh #!/bin/sh
export PHP_IMAGE=registry.fakecake.org/infra/php8.3-alpine3.20 export PHP_IMAGE=registry.fakecake.org/infra/php8.4-alpine3.22
docker run --rm -v $(pwd):/app -v /tmp/phpstan:/tmp/phpstan \ docker run --rm -v $(pwd):/app -v /tmp/phpstan:/tmp/phpstan \
--workdir /app ${PHP_IMAGE} \ --workdir /app ${PHP_IMAGE} \
php83 -d memory_limit=-1 ./vendor/bin/phpstan --memory-limit=2G --error-format=raw analyze . php84 -d memory_limit=-1 ./vendor/bin/phpstan --memory-limit=2G --error-format=raw analyze .
echo All done, RC=$?. echo All done, RC=$?.
@ -15,7 +15,7 @@ while true; do
docker run --rm -v $(pwd):/app -v /tmp/phpstan:/tmp/phpstan \ docker run --rm -v $(pwd):/app -v /tmp/phpstan:/tmp/phpstan \
--workdir /app ${PHP_IMAGE} \ --workdir /app ${PHP_IMAGE} \
php83 -d memory_limit=-1 ./vendor/bin/phpstan --memory-limit=2G --error-format=raw analyze . php84 -d memory_limit=-1 ./vendor/bin/phpstan --memory-limit=2G --error-format=raw analyze .
echo All done, RC=$?. echo All done, RC=$?.
) )