diff options
-rw-r--r-- | backend.php | 45 | ||||
-rw-r--r-- | functions.php | 27 | ||||
-rw-r--r-- | tt-rss.css | 5 | ||||
-rw-r--r-- | tt-rss.js | 10 | ||||
-rw-r--r-- | ttrss_schema.sql | 1 | ||||
-rw-r--r-- | updated.png | bin | 0 -> 244 bytes |
6 files changed, 64 insertions, 24 deletions
diff --git a/backend.php b/backend.php index 5fe962c35..d7e2b157f 100644 --- a/backend.php +++ b/backend.php @@ -70,7 +70,7 @@ $id = $_GET["id"]; - $result = pg_query("UPDATE ttrss_entries SET unread = false WHERE id = '$id'"); + $result = pg_query("UPDATE ttrss_entries SET unread = false,last_read = NOW() WHERE id = '$id'"); $result = pg_query("SELECT title,link,content FROM ttrss_entries WHERE id = '$id'"); @@ -120,7 +120,7 @@ if ($ext == "MarkAllRead") { - pg_query("UPDATE ttrss_entries SET unread = false + pg_query("UPDATE ttrss_entries SET unread = false,last_read = NOW() WHERE feed_id = '$feed'"); } @@ -137,7 +137,7 @@ print "<tr><td class=\"search\" colspan=\"2\"> Search: <input onchange=\"javascript:search($feed,this);\"></td></tr>"; - print "<tr><td colspan=\"2\" class=\"title\">" . $line["title"] . "</td></tr>"; + print "<tr><td colspan=\"3\" class=\"title\">" . $line["title"] . "</td></tr>"; if ($ext == "SEARCH") { $search = $_GET["search"]; @@ -145,8 +145,13 @@ OR content LIKE '%$search%') AND"; } - $result = pg_query("SELECT id,title,updated,unread,feed_id FROM - ttrss_entries WHERE + $result = pg_query("SELECT + id,title,updated,unread,feed_id, + EXTRACT(EPOCH FROM last_read) AS last_read_ts, + EXTRACT(EPOCH FROM updated) AS updated_ts + FROM + ttrss_entries + WHERE $search_query_part feed_id = '$feed' ORDER BY updated DESC LIMIT ".HEADLINES_PER_PAGE." OFFSET $skip"); @@ -156,12 +161,25 @@ $class = ($lnum % 2) ? "even" : "odd"; + if ($line["last_read_ts"] < $line["updated_ts"] && $line["unread"] == "f") { + $update_pic = "<img src=\"updated.png\" alt=\"Updated\">"; + } else { + $update_pic = " "; + } + if ($line["unread"] == "t") $class .= "Unread"; - $content_link = "<a href=\"javascript:view(".$line["id"].",".$line["feed_id"].");\">".$line["title"]."</a>"; - - print "<tr class='$class' id='RROW-".$line["id"]."'>"; + $id = $line["id"]; + $feed_id = $line["feed_id"]; + + $content_link = "<a href=\"javascript:view($id,$feed_id);\">" . + $line["title"] . "</a>"; + + print "<tr class='$class' id='RROW-$id'>"; + + print "<td id='FUPDPIC-$id' valign='center' class='headlineUpdateMark'>$update_pic</td>"; + print "<td class='headlineUpdated'>".$line["updated"]."</td>"; print "<td class='headlineTitle'>$content_link</td>"; @@ -175,7 +193,7 @@ } - print "<tr><td colspan=\"2\" class=\"headlineToolbar\">"; + print "<tr><td colspan=\"3\" class=\"headlineToolbar\">"; $next_skip = $skip + HEADLINES_PER_PAGE; $prev_skip = $skip - HEADLINES_PER_PAGE; @@ -187,9 +205,9 @@ print "<a class=\"button\" href=\"javascript:viewfeed($feed, $next_skip);\">Next Page</a>"; print " "; -// print "<a class=\"button\" -// href=\"javascript:viewfeed($feed, $skip, '');\">Refresh</a>"; -// print " "; + print "<a class=\"button\" + href=\"javascript:viewfeed($feed, $skip, '');\">Refresh Page</a>"; + print " "; print "<a class=\"button\" href=\"javascript:viewfeed($feed, 0, 'ForceUpdate');\">Update</a>"; print " Mark as read: "; @@ -233,7 +251,8 @@ if ($subop == "read") { $ids = split(",", $_GET["ids"]); foreach ($ids as $id) { - pg_query("UPDATE ttrss_entries SET unread = false WHERE feed_id = '$id'"); + pg_query("UPDATE ttrss_entries + SET unread = false,last_read = NOW() WHERE feed_id = '$id'"); } print "Marked selected feeds as unread."; diff --git a/functions.php b/functions.php index 0d28016fa..d89e6bc83 100644 --- a/functions.php +++ b/functions.php @@ -53,11 +53,13 @@ $rss_2_date = $item['pubdate']; $rss_1_date = $item['dc']['date']; $atom_date = $item['issued']; - + if ($atom_date != "") $entry_timestamp = parse_w3cdtf($atom_date); if ($rss_1_date != "") $entry_timestamp = parse_w3cdtf($rss_1_date); if ($rss_2_date != "") $entry_timestamp = strtotime($rss_2_date); - if ($entry_timestamp == "") $entry_timestamp = time(); + if ($entry_timestamp == "") $entry_timestamp = 0; + + if (!$entry_timestamp) continue; $entry_title = $item["title"]; $entry_link = $item["link"]; @@ -75,7 +77,8 @@ $result = pg_query($link, " SELECT - id,unread,md5_hash + id,unread,md5_hash, + EXTRACT(EPOCH FROM updated) as updated_timestamp FROM ttrss_entries WHERE @@ -99,7 +102,8 @@ } else { $entry_id = pg_fetch_result($result, 0, "id"); - $entry_timestamp = strftime("%Y/%m/%d %H:%M:%S", $entry_timestamp); + $updated_timestamp = pg_fetch_result($result, 0, "updated_timestamp"); + $entry_timestamp_fmt = strftime("%Y/%m/%d %H:%M:%S", $entry_timestamp); $unread = pg_fetch_result($result, 0, "unread"); $md5_hash = pg_fetch_result($result, 0, "md5_hash"); @@ -107,15 +111,20 @@ if ($md5_hash != $content_md5 && CONTENT_CHECK_MD5) $unread = "true"; - if ($unread || !CONTENT_CHECK_MD5) { - $updated_query_part = "updated = '$entry_timestamp',"; - } - +// if ($unread || !CONTENT_CHECK_MD5) { +// $updated_query_part = "updated = '$entry_timestamp',"; +// } + +// if ($updated_timestamp > $entry_timestamp) { +// $unread = "true"; +// print "$updated_timestamp : $entry_timestamp<br>"; +// } + $query = "UPDATE ttrss_entries SET title ='$entry_title', link = '$entry_link', - $updated_query_part + updated = '$entry_timestamp_fmt', content = '$entry_content', md5_hash = '$content_md5', unread = '$unread' diff --git a/tt-rss.css b/tt-rss.css index 63a2fc26c..a225056bd 100644 --- a/tt-rss.css +++ b/tt-rss.css @@ -263,3 +263,8 @@ a.buttonWarn:hover { text-decoration : none; color : black; } + +td.headlineUpdateMark { + width : 25px; + text-align : center; +} @@ -121,12 +121,18 @@ function view(id,feed_id) { var feedr = document.getElementById("FEEDR-" + feed_id); feedr.className = feedr.className.replace("Unread", ""); } - + total_unread--; - update_title(); + update_title(); } + var upd_img_pic = document.getElementById("FUPDPIC-" + id); + + if (upd_img_pic) { + upd_img_pic.innerHTML = ""; + } + document.getElementById('content').innerHTML='Loading, please wait...'; xmlhttp.open("GET", "backend.php?op=view&id=" + param_escape(id), true); diff --git a/ttrss_schema.sql b/ttrss_schema.sql index d9cc38b9e..20237ce7e 100644 --- a/ttrss_schema.sql +++ b/ttrss_schema.sql @@ -33,5 +33,6 @@ create table ttrss_entries (id serial not null primary key, link varchar(300) not null unique, md5_hash varchar(200) not null unique, content text not null, + last_read timestamp, unread boolean default true); diff --git a/updated.png b/updated.png Binary files differnew file mode 100644 index 000000000..1cff4c659 --- /dev/null +++ b/updated.png |