$subop = $_GET["subop"];
+ if ($subop == "mark") {
+ $mark = $_GET["mark"];
+ $id = pg_escape_string($_GET["id"]);
+
+ if ($mark == "1") {
+ $mark = "true";
+ } else {
+ $mark = "false";
+ }
+
+ $result = pg_query("UPDATE ttrss_entries SET marked = $mark
+ WHERE id = '$id'");
+ }
+
if ($subop == "updateFeed") {
- $feed_id = $_GET["feed"];
+ $feed_id = pg_escape_string($_GET["feed"]);
$result = pg_query($link,
"SELECT feed_url FROM ttrss_feeds WHERE id = '$feed_id'");
$result = pg_query("UPDATE ttrss_entries SET unread = false,last_read = NOW() WHERE id = '$id'");
+ $addheader = $_GET["addheader"];
+
$result = pg_query("SELECT title,link,content,feed_id,comments,
(SELECT icon_url FROM ttrss_feeds WHERE id = feed_id) as icon_url
FROM ttrss_entries
WHERE id = '$id'");
+ if ($addheader) {
+ print "<html><head>
+ <title>Tiny Tiny RSS : Article $id</title>
+ <link rel=\"stylesheet\" href=\"tt-rss.css\" type=\"text/css\">
+ <script type=\"text/javascript\" src=\"functions.js\"></script>
+ <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">
+ </head><body>";
+ }
+
if ($result) {
$line = pg_fetch_assoc($result);
<td> </td></tr>";
if ($line["comments"] && $line["comments"] != $line["link"]) {
-// print "<tr class=\"titleInner\"><td align=\"right\"><b>Comments:</b></td>
-// <td><a href=\"".$line["comments"]."\">".$line["comments"]."</a></td>
-// <td> </td> </tr>";
-
$comments_prompt = "(<a href=\"".$line["comments"]."\">Comments</a>)";
}
print "<tr class=\"titleBottom\"><td align=\"right\"><b>Link:</b></td>
<td><a href=\"".$line["link"]."\">".$line["link"]."</a> $comments_prompt</td>
- <td> </td></tr>";
+ <td> </td></tr>";
print "<tr><td valign=\"top\" class=\"post\"
- colspan=\"2\">" . $line["content"] . "</td>
+ colspan=\"2\" width=\"100%\">" . $line["content"] . "</td>
<td valign=\"top\">$feed_icon</td>
</tr>";
print "</table>";
}
+
+ if ($addheader) {
+ print "</body></html>";
+ }
}
if ($op == "viewfeed") {
$feed = $_GET["feed"];
$skip = $_GET["skip"];
$subop = $_GET["subop"];
+ $view_mode = $_GET["view"];
+ $addheader = $_GET["addheader"];
+ $limit = $_GET["limit"];
if (!$skip) $skip = 0;
if ($subop == "undefined") $subop = "";
+ if ($addheader) {
+ print "<html><head>
+ <title>Tiny Tiny RSS : Feed $feed</title>
+ <link rel=\"stylesheet\" href=\"tt-rss.css\" type=\"text/css\">
+ <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">
+ <script type=\"text/javascript\" src=\"functions.js\"></script>
+ <script type=\"text/javascript\" src=\"viewfeed.js\"></script>
+ </head><body>";
+ }
+
// FIXME: check for null value here
$result = pg_query("SELECT *,SUBSTRING(last_updated,1,16) as last_updated,
$line = pg_fetch_assoc($result);
- if ($subop == "ForceUpdate" ||
- (!$subop && $line["update_timeout"] > MIN_UPDATE_TIME)) {
-
- update_rss_feed($link, $line["feed_url"], $feed);
+ if ($subop == "ForceUpdate" ||
+ (!$subop && $line["update_timeout"] > MIN_UPDATE_TIME)) {
+ update_rss_feed($link, $line["feed_url"], $feed);
+
} else {
if ($subop == "MarkAllRead") {
$feed_last_updated = "Updated: " . $line["last_updated"];
- print "<tr><td class=\"search\" colspan=\"3\">
- Search: <input id=\"searchbox\"
- onblur=\"javascript:enableHotkeys()\" onfocus=\"javascript:disableHotkeys()\"
- onchange=\"javascript:search($feed);\">
- <a class=\"button\" href=\"javascript:resetSearch()\">Reset</a>
- </td></tr>";
- print "<tr>
- <td colspan=\"3\" class=\"title\">" . $line["title"] . "</td></tr>";
-
$search = $_GET["search"];
- if (search) {
+ if ($search) {
$search_query_part = "(upper(title) LIKE upper('%$search%')
OR content LIKE '%$search%') AND";
+ } else {
+ $search_query_part = "";
+ }
+
+ $view_query_part = "";
+
+ if ($view_mode == "Starred") {
+ $view_query_part = " marked = true AND ";
+ }
+
+ if ($view_mode == "Unread") {
+ $view_query_part = " unread = true AND ";
}
$result = pg_query("SELECT count(id) AS total_entries
$total_entries = pg_fetch_result($result, 0, "total_entries");
+ $result = pg_query("SELECT count(id) AS unread_entries
+ FROM ttrss_entries WHERE
+ $search_query_part
+ unread = true AND
+ feed_id = '$feed'");
+
+ $unread_entries = pg_fetch_result($result, 0, "unread_entries");
+
+/* if ($limit < $unread_entries)
+ $limit = $unread_entries;
+
+ if ($limit != "All") {
+ $limit_query_part = "LIMIT " . $limit;
+ } */
+
$result = pg_query("SELECT
- id,title,updated,unread,feed_id,
+ id,title,updated,unread,feed_id,marked,link,
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");
+ $view_query_part
+ feed_id = '$feed' ORDER BY updated DESC
+ $limit_query_part");
$lnum = 0;
$id = $line["id"];
$feed_id = $line["feed_id"];
- $content_link = "<a href=\"javascript:view($id,$feed_id);\">" .
+ if ($line["marked"] == "t") {
+ $marked_pic = "<img id=\"FMARKPIC-$id\" src=\"images/mark_set.png\"
+ alt=\"Reset mark\" onclick='javascript:toggleMark($id, false)'>";
+ } else {
+ $marked_pic = "<img id=\"FMARKPIC-$id\" src=\"images/mark_unset.png\"
+ alt=\"Set mark\" onclick='javascript:toggleMark($id, true)'>";
+ }
+
+ $content_link = "<a id=\"FTITLE-$id\" href=\"javascript:view($id,$feed_id);\">" .
$line["title"] . "</a>";
- print "<tr class='$class' id='RROW-$id'>";
+ print "<tr class='$class' id='RROW-$id'";
+ // onclick=\"javascript:view($id,$feed_id)\">
+
+ print "<td id='FUPDPIC-$id' valign='center'
+ class='headlineUpdateMark'>$update_pic</td>";
- print "<td id='FUPDPIC-$id' valign='center' class='headlineUpdateMark'>$update_pic</td>";
+ print "<td valign='center'
+ class='headlineUpdateMark'>$marked_pic</td>";
print "<td class='headlineUpdated'>
<a href=\"javascript:view($id,$feed_id);\">".$line["updated"]."</a></td>";
print "<td class='headlineTitle'>$content_link</td>";
+ print "<td class=\"invisible\" id=\"FLINK-$id\">".$line["link"]."</td>";
+
print "</tr>";
++$lnum;
++$lnum;
print "<tr><td> </td></tr>";
}
-
- // start unholy navbar block
-
- print "<tr><td colspan=\"3\" class=\"headlineToolbar\">";
-
- $next_skip = $skip + HEADLINES_PER_PAGE;
- $prev_skip = $skip - HEADLINES_PER_PAGE;
-
- print "Navigate: ";
-
- if ($prev_skip >= 0) {
- print "<a class=\"button\"
- href=\"javascript:viewfeed($feed, $prev_skip);\">Previous Page</a>";
- } else {
- print "<a class=\"disabledButton\">Previous Page</a>";
- }
- print " ";
-
- if ($next_skip < $total_entries) {
- print "<a class=\"button\"
- href=\"javascript:viewfeed($feed, $next_skip);\">Next Page</a>";
- } else {
- print "<a class=\"disabledButton\">Next Page</a>";
- }
- print " Feed: ";
-
- print "<a class=\"button\"
- href=\"javascript:viewfeed($feed, 0, 'ForceUpdate');\">Update</a>";
-
- print " Mark as read: ";
-
- if ($num_unread > 0) {
- print "<a class=\"button\" id=\"btnCatchupPage\"
- href=\"javascript:catchupPage($feed);\">This Page</a>";
- print " ";
- } else {
- print "<a class=\"disabledButton\">This Page</a>";
- print " ";
- }
-
- print "<a class=\"button\"
- href=\"javascript:viewfeed($feed, $skip, 'MarkAllRead');\">All Posts</a>";
-
- print "</td></tr>";
-
- // end unholy navbar block
print "</table>";
$total = pg_fetch_result($result, 0, "total");
$unread = pg_fetch_result($result, 0, "unread");
- print "<div class=\"invisible\" id=\"FACTIVE\">$feed</div>";
- print "<div class=\"invisible\" id=\"FTOTAL\">$total</div>";
- print "<div class=\"invisible\" id=\"FUNREAD\">$unread</div>";
+ // update unread/total counters and status for active feed in the feedlist
+ // kludge, because iframe doesn't seem to support onload()
+
+ print "<script type=\"text/javascript\">
+ document.onkeydown = hotkey_handler;
+
+ var feedr = parent.document.getElementById(\"FEEDR-\" + $feed);
+ var feedt = parent.document.getElementById(\"FEEDT-\" + $feed);
+ var feedu = parent.document.getElementById(\"FEEDU-\" + $feed);
+
+ feedt.innerHTML = \"$total\";
+ feedu.innerHTML = \"$unread\";
+
+ if ($unread > 0 && !feedr.className.match(\"Unread\")) {
+ feedr.className = feedr.className + \"Unread\";
+ } else if ($unread <= 0) {
+ feedr.className = feedr.className.replace(\"Unread\", \"\");
+ }
+
+ //p_notify('');
+ </script>";
+
+ if ($addheader) {
+ print "</body></html>";
+ }
}
print "<table class=\"prefAddFeed\"><tr>
<td><input id=\"fadd_regexp\"></td>
<td>";
- print_select("fadd_match", "", $filter_types);
+ print_select("fadd_match", "Title", $filter_types);
print"</td><td colspan=\"4\" align=\"right\">
<a class=\"button\" href=\"javascript:addFilter()\">Add filter</a></td></tr>