render feedlist using local data when in offline mode

This commit is contained in:
Andrew Dolgov 2009-02-03 17:03:35 +03:00
parent fe8f2f0c0d
commit 36f787976f
3 changed files with 63 additions and 5 deletions

View File

@ -32,7 +32,60 @@ function viewCategory(cat) {
function render_offline_feedlist() { function render_offline_feedlist() {
try { try {
// FIXME var tmp = "<ul class=\"feedList\" id=\"feedList\">";
var rs = db.execute("SELECT id,title,has_icon FROM offline_feeds ORDER BY title");
while (rs.isValidRow()) {
var id = rs.field(0);
var title = rs.field(1);
var has_icon = rs.field(2);
var rs_u = db.execute("SELECT SUM(unread) FROM offline_data WHERE feed_id = ?",
[id]);
var unread = 0;
if (rs.isValidRow()) {
unread = rs_u.field(0);
if (!unread) unread = 0;
}
var feed_icon = "";
if (has_icon) {
feed_icon = "<img id='FIMG-"+id+"' src='" + "icons/" + id + ".ico'>";
} else {
feed_icon = "<img id='FIMG-"+id+"' src='images/blank_icon.gif'>";
}
var row_class = "feed";
if (unread > 0) {
row_class += "Unread";
fctr_class = "feedCtrHasUnread";
} else {
fctr_class = "feedCtrNoUnread";
}
var link = "<a title=\"FIXME\" id=\"FEEDL-"+id+"\""+
"href=\"javascript:viewfeed('"+id+"', '', false, '', false, 0);\">"+
title + "</a>";
tmp += "<li id='FEEDR-"+id+"' class="+row_class+">" + feed_icon +
"<span id=\"FEEDN-"+id+"\">" + link + "</span>";
tmp += " <span class='"+fctr_class+"' id=\"FEEDCTR-"+id+"\">" +
"(<span id=\"FEEDU-"+id+"\">"+unread+"</span>)</span>";
tmp += "</li>";
rs.next();
}
tmp += "</ul>";
render_feedlist(tmp);
} catch (e) { } catch (e) {
exception_error("render_offline_feedlist", e); exception_error("render_offline_feedlist", e);
} }

View File

@ -532,7 +532,10 @@
ttrss_feeds WHERE owner_uid = ".$_SESSION["uid"]); ttrss_feeds WHERE owner_uid = ".$_SESSION["uid"]);
while ($line = db_fetch_assoc($result)) { while ($line = db_fetch_assoc($result)) {
print "<feed id=\"".$line["id"]."\"><![CDATA[";
$has_icon = (int) feed_has_icon($line["id"]);
print "<feed has_icon=\"$has_icon\" id=\"".$line["id"]."\"><![CDATA[";
print $line["title"]; print $line["title"];
print "]]></feed>"; print "]]></feed>";
} }

View File

@ -1507,7 +1507,7 @@ function init_gears() {
db.execute("CREATE TABLE IF NOT EXISTS cache (id text, article text, param text, added text)"); db.execute("CREATE TABLE IF NOT EXISTS cache (id text, article text, param text, added text)");
db.execute("CREATE TABLE if not exists offline_feeds (id integer, title text)"); db.execute("CREATE TABLE if not exists offline_feeds (id integer, title text, has_icon integer)");
db.execute("CREATE TABLE if not exists offline_data (id integer, feed_id integer, title text, link text, guid text, updated text, content text, tags text, unread text, marked text)"); db.execute("CREATE TABLE if not exists offline_data (id integer, feed_id integer, title text, link text, guid text, updated text, content text, tags text, unread text, marked text)");
@ -1549,10 +1549,12 @@ function offline_download_parse(stage, transport) {
for (var i = 0; i < feeds.length; i++) { for (var i = 0; i < feeds.length; i++) {
var id = feeds[i].getAttribute("id"); var id = feeds[i].getAttribute("id");
var has_icon = feeds[i].getAttribute("has_icon");
var title = feeds[i].firstChild.nodeValue; var title = feeds[i].firstChild.nodeValue;
db.execute("INSERT INTO offline_feeds (id,title) VALUES (?,?)", db.execute("INSERT INTO offline_feeds (id,title,has_icon)"+
[id, title]); "VALUES (?,?,?)",
[id, title, has_icon]);
} }
window.setTimeout("initiate_offline_download("+(stage+1)+")", 50); window.setTimeout("initiate_offline_download("+(stage+1)+")", 50);