diff options
author | Andrew Dolgov <[email protected]> | 2005-08-21 16:01:18 +0100 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2005-08-21 16:01:18 +0100 |
commit | a1a8a2be02600413edd36374f239e936f8fbff3c (patch) | |
tree | 377112e3088f9b75f4b8e0e6818fcd9397e254a4 | |
parent | d76a3b036c8863ae023686f08e36b11dc9e8ce2e (diff) |
functionality updates
-rw-r--r-- | backend.php | 258 | ||||
-rw-r--r-- | config.php-dist | 2 | ||||
-rw-r--r-- | header.png | bin | 0 -> 292 bytes | |||
-rw-r--r-- | tt-rss.css | 9 | ||||
-rw-r--r-- | tt-rss.js | 43 | ||||
-rw-r--r-- | tt-rss.php | 6 |
6 files changed, 196 insertions, 122 deletions
diff --git a/backend.php b/backend.php index 5eb64d102..198252dc6 100644 --- a/backend.php +++ b/backend.php @@ -20,12 +20,12 @@ WHERE feed_id = ttrss_feeds.id AND unread = true) as unread FROM ttrss_feeds ORDER BY title"); - print "<ul>"; + print "<table width=\"100%\">"; $lnum = 0; while ($line = pg_fetch_assoc($result)) { - + $feed = $line["title"]; $feed_id = $line["id"]; @@ -35,14 +35,21 @@ $class = ($lnum % 2) ? "even" : "odd"; // if ($lnum == 2 || $lnum == 0) $feed = "<b>$feed</b>"; - - $feed = "<a href=\"javascript:viewfeed($feed_id, 0);\">$feed ($unread/$total)</a>"; - - print "<li class=\"$class\">$feed</li>"; + + if ($unread > 0) $class .= "Unread"; + + print "<tr class=\"$class\" id=\"FEEDR-$feed_id\">"; + + $feed = "<a href=\"javascript:viewfeed($feed_id, 0);\">$feed</a>"; + print "<td id=\"FEEDN-$feed_id\">$feed</td>"; + print "<td id=\"FEEDU-$feed_id\">$unread</td>"; + print "<td id=\"FEEDT-$feed_id\">$total</td>"; + + print "</tr>"; ++$lnum; } - print "</ul>"; + print "</table>"; } @@ -50,6 +57,8 @@ $id = $_GET["id"]; + $result = pg_query("UPDATE ttrss_entries SET unread = false WHERE id = '$id'"); + $result = pg_query("SELECT title,link,content FROM ttrss_entries WHERE id = '$id'"); @@ -72,9 +81,10 @@ if ($op == "viewfeed") { $feed = $_GET["feed"]; -// $feed = 0; // for speed - $skip = $_GET["skip"]; + $ext = $_GET["ext"]; + + if ($ext == "undefined") $ext = ""; $result = pg_query("SELECT * FROM ttrss_feeds WHERE id = '$feed'"); @@ -82,129 +92,159 @@ $line = pg_fetch_assoc($result); - $rss = fetch_rss($line["feed_url"]); - - if ($rss) { - - foreach ($rss->items as $item) { - - $entry_guid = $item["id"]; - - if (!$entry_guid) $entry_guid = $item["guid"]; - if (!$entry_guid) $entry_guid = $item["link"]; - - $entry_timestamp = $item["pubdate"]; - if (!$entry_timestamp) $entry_timestamp = $item["modified"]; - if (!$entry_timestamp) $entry_timestamp = $item["updated"]; - - $entry_timestamp = strtotime($entry_timestamp); + if (!$ext) { - $entry_title = $item["title"]; - $entry_link = $item["link"]; - - $entry_content = $item["description"]; - if (!$entry_content) $entry_content = $item["content"]; - - $entry_content = pg_escape_string($entry_content); - $entry_title = pg_escape_string($entry_title); - - $content_md5 = md5($entry_content); + $rss = fetch_rss($line["feed_url"]); + + if ($rss) { + + foreach ($rss->items as $item) { + + $entry_guid = $item["id"]; + + if (!$entry_guid) $entry_guid = $item["guid"]; + if (!$entry_guid) $entry_guid = $item["link"]; + + $entry_timestamp = $item["pubdate"]; + if (!$entry_timestamp) $entry_timestamp = $item["modified"]; + if (!$entry_timestamp) $entry_timestamp = $item["updated"]; + + $entry_timestamp = strtotime($entry_timestamp); + + $entry_title = $item["title"]; + $entry_link = $item["link"]; + + $entry_content = $item["description"]; + if (!$entry_content) $entry_content = $item["content"]; + + $entry_content = pg_escape_string($entry_content); + $entry_title = pg_escape_string($entry_title); + + $content_md5 = md5($entry_content); + + $result = pg_query(" + SELECT + id,unread,md5_hash + FROM + ttrss_entries + WHERE + guid = '$entry_guid' OR md5_hash = '$content_md5'"); + + if (pg_num_rows($result) == 0) { + + $entry_timestamp = strftime("%Y/%m/%d %H:%M:%S", $entry_timestamp); + + $query = "INSERT INTO ttrss_entries + (title, guid, link, updated, content, feed_id, md5_hash) + VALUES + ('$entry_title', '$entry_guid', '$entry_link', + '$entry_timestamp', '$entry_content', '$feed', + '$content_md5')"; + + pg_query($query); + + } else { + + $entry_id = pg_fetch_result($result, 0, "id"); + $entry_timestamp = 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"); + + if ($md5_hash != $content_md5) + $unread = "false"; + + $query = "UPDATE ttrss_entries + SET + title ='$entry_title', + link = '$entry_link', + updated = '$entry_timestamp', + content = '$entry_content', + md5_hash = '$content_md5', + unread = '$unread' + WHERE + id = '$entry_id'"; + + $result = pg_query($query); + + // print "$entry_guid - $entry_timestamp - $entry_title - + // $entry_link - $entry_id<br>"; + + } + + } + + } - $result = pg_query(" - SELECT - id,unread,md5_hash - FROM - ttrss_entries - WHERE - guid = '$entry_guid' OR md5_hash = '$content_md5'"); - - if (pg_num_rows($result) == 0) { + } else { - $entry_timestamp = strftime("%Y/%m/%d %H:%M:%S", $entry_timestamp); + if ($ext == "MarkAllRead") { - $query = "INSERT INTO ttrss_entries - (title, guid, link, updated, content, feed_id, md5_hash) - VALUES - ('$entry_title', '$entry_guid', '$entry_link', - '$entry_timestamp', '$entry_content', '$feed', - '$content_md5')"; + pg_query("UPDATE ttrss_entries SET unread = false + WHERE feed_id = '$feed'"); + } - pg_query($query); + } + } - } else { + print "<table class=\"headlines\" width=\"100%\">"; + print "<tr><td colspan=\"2\" class=\"title\">" . $line["title"] . "</td></tr>"; - $entry_id = pg_fetch_result($result, 0, "id"); - $entry_timestamp = strftime("%Y/%m/%d %H:%M:%S", $entry_timestamp); + $result = pg_query("SELECT id,title,updated,unread,feed_id FROM + ttrss_entries WHERE + feed_id = '$feed' ORDER BY updated LIMIT ".HEADLINES_PER_PAGE." OFFSET $skip"); - $unread = pg_fetch_result($result, 0, "unread"); - $md5_hash = pg_fetch_result($result, 0, "md5_hash"); - - if ($md5_hash != $content_md5) - $unread = "false"; - - $query = "UPDATE ttrss_entries - SET - title ='$entry_title', - link = '$entry_link', - updated = '$entry_timestamp', - content = '$entry_content', - md5_hash = '$content_md5', - unread = '$unread' - WHERE - id = '$entry_id'"; + $lnum = 0; - $result = pg_query($query); + while ($line = pg_fetch_assoc($result)) { -// print "$entry_guid - $entry_timestamp - $entry_title - -// $entry_link - $entry_id<br>"; + $class = ($lnum % 2) ? "even" : "odd"; - } + if ($line["unread"] == "t") + $class .= "Unread"; - } + $content_link = "<a href=\"javascript:view(".$line["id"].",".$line["feed_id"].");\">".$line["title"]."</a>"; - print "<table class=\"headlines\" width=\"100%\">"; - print "<tr><td colspan=\"2\" class=\"title\">" . $rss->channel["title"] . "</td></tr>"; - - $result = pg_query("SELECT id,title,updated,unread FROM ttrss_entries WHERE - feed_id = '$feed' ORDER BY updated LIMIT 10 OFFSET $skip"); - - $lnum = 0; + print "<tr class='$class' id='RROW-".$line["id"]."'>"; + print "<td class='headlineUpdated'>".$line["updated"]."</td>"; + print "<td class='headlineTitle'>$content_link</td>"; - while ($line = pg_fetch_assoc($result)) { + print "</tr>"; - $class = ($lnum % 2) ? "even" : "odd"; - - if ($line["unread"] == "t") - $class .= "Unread"; + ++$lnum; + } - $content_link = "<a href=\"javascript:view(".$line["id"].");\">".$line["title"]."</a>"; - - print "<tr class='$class' id='RROW-".$line["id"]."'>"; - print "<td class='headlineUpdated'>".$line["updated"]."</td>"; - print "<td class='headlineTitle'>$content_link</td>"; + print "<tr><td colspan=\"2\" class=\"headlineToolbar\">"; - print "</tr>"; + $next_skip = $skip + HEADLINES_PER_PAGE; + $prev_skip = $skip - HEADLINES_PER_PAGE; - ++$lnum; - } + print "<a class=\"button\" + href=\"javascript:viewfeed($feed, $prev_skip);\">Previous Page</a>"; + print " "; + print "<a class=\"button\" + href=\"javascript:viewfeed($feed, $next_skip);\">Next Page</a>"; + print " "; + + print "<a class=\"button\" + href=\"javascript:viewfeed($feed, 0, 'MarkAllRead');\">Mark all as read</a>"; - print "<tr><td colspan=\"2\" class=\"headlineToolbar\">"; + print "</td></tr>"; + print "</table>"; - $next_skip = $skip + 10; - $prev_skip = $skip - 10; + $result = pg_query("SELECT id, (SELECT count(id) FROM ttrss_entries + WHERE feed_id = ttrss_feeds.id) AS total, + (SELECT count(id) FROM ttrss_entries + WHERE feed_id = ttrss_feeds.id AND unread = true) as unread + FROM ttrss_feeds WHERE id = '$feed'"); - print "<a class=\"button\" - href=\"javascript:viewfeed($feed, $prev_skip);\">Previous Page</a>"; - print " "; - print "<a class=\"button\" - href=\"javascript:viewfeed($feed, $next_skip);\">Next Page</a>"; + $total = pg_fetch_result($result, 0, "total"); + $unread = pg_fetch_result($result, 0, "unread"); - print "</td></tr>"; - print "</table>"; + print "<div class=\"invisible\" id=\"FACTIVE\">$feed</div>"; + print "<div class=\"invisible\" id=\"FTOTAL\">$total</div>"; + print "<div class=\"invisible\" id=\"FUNREAD\">$unread</div>"; - } - - } } diff --git a/config.php-dist b/config.php-dist index 61c4acf47..99319da6e 100644 --- a/config.php-dist +++ b/config.php-dist @@ -1,4 +1,6 @@ <? define(DB_CONN, "host=localhost dbname=fox user=fox password=XXXXXXXXXXX"); + define('MAGPIE_CACHE_DIR', '/var/tmp/magpie-ttrss-cache'); + define(HEADLINES_PER_PAGE, 15); ?> diff --git a/header.png b/header.png Binary files differnew file mode 100644 index 000000000..7ccdf79b2 --- /dev/null +++ b/header.png diff --git a/tt-rss.css b/tt-rss.css index 5903e77c3..13c3b66aa 100644 --- a/tt-rss.css +++ b/tt-rss.css @@ -62,7 +62,10 @@ table.main td.toolbar { table.main td.header { font-size : 18pt; - background : #f0f0f0; + background-color : #f0f0f0; + background-image : url("header.png"); + background-position : top left; + background-repeat : repeat-x; height : 50px; padding-left : 80px; padding-top : 30px; @@ -127,3 +130,7 @@ ul { padding : 0px; border : 1px solid #f0f0f0; } + +.invisible { + display : none; +} @@ -50,7 +50,6 @@ function feedlist_callback() { var container = document.getElementById('feeds'); if (xmlhttp.readyState == 4) { container.innerHTML=xmlhttp.responseText; - } else { } } @@ -58,7 +57,28 @@ function viewfeed_callback() { var container = document.getElementById('headlines'); if (xmlhttp.readyState == 4) { container.innerHTML = xmlhttp.responseText; - } else { + + var factive = document.getElementById("FACTIVE"); + var funread = document.getElementById("FUNREAD"); + var ftotal = document.getElementById("FTOTAL"); + + if (ftotal && factive && funread) { + var feed_id = factive.innerHTML; + + var feedr = document.getElementById("FEEDR-" + feed_id); + var feedt = document.getElementById("FEEDT-" + feed_id); + var feedu = document.getElementById("FEEDU-" + feed_id); + + feedt.innerHTML = ftotal.innerHTML; + feedu.innerHTML = funread.innerHTML; + + if (feedu.innerHTML > 0 && !feedr.className.match("Unread")) { + feedr.className = feedr.className + "Unread"; + } else if (feedu.innerHTML <= 0) { + feedr.className = feedr.className.replace("Unread", ""); + } + + } } } @@ -66,7 +86,6 @@ function view_callback() { var container = document.getElementById('content'); if (xmlhttp.readyState == 4) { container.innerHTML=xmlhttp.responseText; - } else { } } @@ -79,28 +98,34 @@ function update_feed_list() { } -function viewfeed(feed, skip) { +function viewfeed(feed, skip, ext) { notify("view-feed: " + feed); document.getElementById('headlines').innerHTML='Loading headlines, please wait...'; + document.getElementById('content').innerHTML=' '; xmlhttp.open("GET", "backend.php?op=viewfeed&feed=" + param_escape(feed) + - "&skip=" + skip, true); + "&skip=" + param_escape(skip) + "&ext=" + param_escape(ext) , true); xmlhttp.onreadystatechange=viewfeed_callback; xmlhttp.send(null); } -function view(id) { +function view(id,feed_id) { var crow = document.getElementById("RROW-" + id); - if (crow) { + if (crow.className.match("Unread")) { + var umark = document.getElementById("FEEDU-" + feed_id); + umark.innerHTML = umark.innerHTML - 1; crow.className = crow.className.replace("Unread", ""); - } - notify(crow.className); + if (umark.innerHTML == "0") { + var feedr = document.getElementById("FEEDR-" + feed_id); + feedr.className = feedr.className.replace("Unread", ""); + } + } document.getElementById('content').innerHTML='Loading, please wait...'; diff --git a/tt-rss.php b/tt-rss.php index cba57923d..a43f567f6 100644 --- a/tt-rss.php +++ b/tt-rss.php @@ -17,7 +17,7 @@ <tr> <td class="toolbar" valign="middle" colspan="2"> <a class="button">Preferences</a> - <a class="button" href="javascript:reload()">Refresh</a> + <a class="button" href="javascript:refresh()">Refresh</a> </td> </tr> <tr> @@ -25,11 +25,11 @@ Here be feeds </td> <td id="headlines" class="headlines" valign="top"> - Here be headlines + Please select the feed. </td> </tr> <td class="content" id="content" valign="top"> - Here be content + </td> </tr> <tr> |