offline: support label counters

This commit is contained in:
Andrew Dolgov 2009-02-06 12:06:42 +03:00
parent c2726c9615
commit 88a66534a1

View file

@ -117,19 +117,9 @@ function viewfeed_offline(feed_id, subop, is_cat, subop_param, skip_history, off
var tmp = "";
rs = db.execute("SELECT title FROM feeds WHERE id = ?", [feed_id]);
var feed_title = get_local_feed_title(feed_id);
if (rs.isValidRow() || feed_id == -1 || feed_id == -4) {
feed_title = rs.field(0);
if (feed_id == -1) {
feed_title = __("Starred articles");
}
if (feed_id == -4) {
feed_title = __("All articles");
}
if (feed_title) {
if (offset == 0) {
tmp += "<div id=\"headlinesContainer\">";
@ -211,6 +201,10 @@ function viewfeed_offline(feed_id, subop, is_cat, subop_param, skip_history, off
strategy_qpart = "marked = 1";
} else if (feed_id == -4) {
strategy_qpart = "1";
} else if (feed_id < -10) {
var label_id = -11 - feed_id;
strategy_qpart = "label_id = " + label_id;
}
if (offset > 0) {
@ -220,7 +214,8 @@ function viewfeed_offline(feed_id, subop, is_cat, subop_param, skip_history, off
}
var query = "SELECT *,feeds.title AS feed_title "+
"FROM articles,feeds WHERE " +
"FROM articles,feeds LEFT JOIN article_labels "+
"ON (article_labels.id = articles.id) WHERE " +
"feed_id = feeds.id AND " +
strategy_qpart +
" AND " + mode_qpart +
@ -833,6 +828,17 @@ function update_local_feedlist_counters() {
set_feedlist_counter(-4, get_local_feed_unread(-4));
set_feedlist_counter(-1, get_local_feed_unread(-1));
var rs = db.execute("SELECT id FROM labels");
while (rs.isValidRow()) {
var id = -11 - rs.field(0);
var ctr = get_local_feed_unread(id);
set_feedlist_counter(id, ctr, false);
rs.next();
}
rs.close();
hideOrShowFeeds(getInitParam("hide_read_feeds") == 1);
global_unread = get_local_feed_unread(-4);
@ -851,8 +857,12 @@ function get_local_feed_unread(id) {
rs = db.execute("SELECT SUM(unread) FROM articles");
} else if (id == -1) {
rs = db.execute("SELECT SUM(unread) FROM articles WHERE marked = 1");
} else {
} else if (id > 0) {
rs = db.execute("SELECT SUM(unread) FROM articles WHERE feed_id = ?", [id]);
} else if (id < -10) {
var label_id = -11 - id;
rs = db.execute("SELECT SUM(unread) FROM articles,article_labels "+
"WHERE article_labels.id = articles.id AND label_id = ?", [label_id]);
}
var a = false;
@ -1081,3 +1091,40 @@ function label_local_add_article(id, label_id) {
exception_error("label_local_add_article", e);
}
}
function get_local_feed_title(id) {
try {
var feed_title = "Unknown feed: " + id;
if (id > 0) {
var rs = db.execute("SELECT title FROM feeds WHERE id = ?", [id]);
if (rs.isValidRow()) {
feed_title = rs.field(0);
}
rs.close();
} else if (id == -1) {
feed_title = __("Starred articles");
} else if (id == -4) {
feed_title = __("All articles");
} else if (id < -10) {
var label_id = -11 - id;
var rs = db.execute("SELECT caption FROM labels WHERE id = ?", [label_id]);
if (rs.isValidRow()) {
feed_title = rs.field(0);
}
rs.close();
}
return feed_title;
} catch (e) {
exception_error("get_local_feed_title", e);
}
}