small digest page improvements

This commit is contained in:
Andrew Dolgov 2010-09-09 19:02:12 +04:00
parent c01f40f4d9
commit b41c254984
5 changed files with 115 additions and 53 deletions

View File

@ -126,6 +126,14 @@ a:hover {
padding : 0px; padding : 0px;
} }
#feeds ul#feeds-content li a {
color : #659a4c;
}
#feeds ul#feeds-content li a:hover {
color : gray;
}
#headlines { #headlines {
padding : 5px; padding : 5px;
font-size : 14px; font-size : 14px;

View File

@ -1,5 +1,19 @@
var last_feeds = []; var last_feeds = [];
function view(feed_id) {
try {
new Ajax.Request("backend.php", {
parameters: "backend.php?op=rpc&subop=digest-init&feed_id=" + feed_id,
onComplete: function(transport) {
digest_update(transport);
} });
} catch (e) {
exception_error("view", e);
}
}
function find_feed(feeds, feed_id) { function find_feed(feeds, feed_id) {
try { try {
for (var i = 0; i < feeds.length; i++) { for (var i = 0; i < feeds.length; i++) {
@ -14,16 +28,40 @@ function find_feed(feeds, feed_id) {
} }
} }
function get_feed_icon(feed) {
try {
if (feed.has_icon)
return 'icons/' + feed.id + '.ico';
if (feed.id == -1)
return 'images/mark_set.png';
if (feed.id == -2)
return 'images/pub_set.png';
if (feed.id == -3)
return 'images/fresh.png';
if (feed.id == -4)
return 'images/tag.png';
if (feed.id < -10)
return 'images/label.png';
} catch (e) {
exception_error("get_feed_icon", e);
}
}
function add_feed_entry(feed) { function add_feed_entry(feed) {
try { try {
var icon_part = ""; var icon_part = "";
if (feed.has_icon) icon_part = "<img src='" + get_feed_icon(feed) + "'/>";
icon_part = "<img alt='zz' src='icons/" + feed.id + ".ico'/>";
var tmp_html = "<li>" + var tmp_html = "<li>" +
icon_part + icon_part +
feed.title + "<a href=\"#\" onclick=\"view("+feed.id+")\">" + feed.title +
"<div class='unread-ctr'>" + feed.unread + "</div>" + "<div class='unread-ctr'>" + feed.unread + "</div>" +
"</li>"; "</li>";
@ -34,9 +72,12 @@ function add_feed_entry(feed) {
} }
} }
function add_latest_entry(article) { function add_latest_entry(article, feed) {
try { try {
//$("latest-content").innerHTML += "bbb";
} catch (e) { } catch (e) {
exception_error("add_latest_entry", e); exception_error("add_latest_entry", e);
} }
@ -55,7 +96,7 @@ function add_headline_entry(article, feed) {
"<a class='title'>" + article.title + "</a>" + "<a class='title'>" + article.title + "</a>" +
"<div class='excerpt'>" + article.excerpt + "</div>" + "<div class='excerpt'>" + article.excerpt + "</div>" +
"<div class='info'><a>" + feed.title + "</a> " + " @ " + "<div class='info'><a>" + feed.title + "</a> " + " @ " +
article.updated + "</div>" + new Date(article.updated * 1000) + "</div>" +
"</li>"; "</li>";
$("headlines-content").innerHTML += tmp_html; $("headlines-content").innerHTML += tmp_html;
@ -75,6 +116,8 @@ function digest_update(transport) {
feeds = eval("(" + feeds.firstChild.nodeValue + ")"); feeds = eval("(" + feeds.firstChild.nodeValue + ")");
$('feeds-content').innerHTML = "";
for (var i = 0; i < feeds.length; i++) { for (var i = 0; i < feeds.length; i++) {
add_feed_entry(feeds[i]); add_feed_entry(feeds[i]);
} }
@ -83,9 +126,13 @@ function digest_update(transport) {
if (headlines) { if (headlines) {
headlines = eval("(" + headlines.firstChild.nodeValue + ")"); headlines = eval("(" + headlines.firstChild.nodeValue + ")");
$('headlines-content').innerHTML = "";
for (var i = 0; i < headlines.length; i++) { for (var i = 0; i < headlines.length; i++) {
add_headline_entry(headlines[i], find_feed(feeds, headlines[i].feed_id)); add_headline_entry(headlines[i], find_feed(feeds, headlines[i].feed_id));
} }
$('headlines-content').innerHTML += "<li><a>More articles...</a></li>";
} }
} catch (e) { } catch (e) {

View File

@ -39,7 +39,6 @@
<script type="text/javascript" src="lib/prototype.js"></script> <script type="text/javascript" src="lib/prototype.js"></script>
<script type="text/javascript" src="lib/scriptaculous/scriptaculous.js?load=effects,dragdrop,controls"></script> <script type="text/javascript" src="lib/scriptaculous/scriptaculous.js?load=effects,dragdrop,controls"></script>
<script type="text/javascript" charset="utf-8" src="localized_js.php?<?php echo $dt_add ?>"></script> <script type="text/javascript" charset="utf-8" src="localized_js.php?<?php echo $dt_add ?>"></script>
<script type="text/javascript" charset="utf-8" src="tt-rss.js?<?php echo $dt_add ?>"></script>
<script type="text/javascript" charset="utf-8" src="functions.js?<?php echo $dt_add ?>"></script> <script type="text/javascript" charset="utf-8" src="functions.js?<?php echo $dt_add ?>"></script>
<script type="text/javascript" src="digest.js"></script> <script type="text/javascript" src="digest.js"></script>

View File

@ -6653,51 +6653,9 @@
} }
function api_get_feeds($link, $cat_id, $unread_only, $limit, $offset) { function api_get_feeds($link, $cat_id, $unread_only, $limit, $offset) {
if ($limit) {
$limit_qpart = "LIMIT $limit OFFSET $offset";
} else {
$limit_qpart = "";
}
if (!$cat_id) {
$result = db_query($link, "SELECT
id, feed_url, cat_id, title, ".
SUBSTRING_FOR_DATE."(last_updated,1,19) AS last_updated
FROM ttrss_feeds WHERE owner_uid = " . $_SESSION["uid"] .
" ORDER BY cat_id, title " . $limit_qpart);
} else {
$result = db_query($link, "SELECT
id, feed_url, cat_id, title, ".
SUBSTRING_FOR_DATE."(last_updated,1,19) AS last_updated
FROM ttrss_feeds WHERE
cat_id = '$cat_id' AND owner_uid = " . $_SESSION["uid"] .
" ORDER BY cat_id, title " . $limit_qpart);
}
$feeds = array(); $feeds = array();
while ($line = db_fetch_assoc($result)) {
$unread = getFeedUnread($link, $line["id"]);
$has_icon = feed_has_icon($line['id']);
if ($unread || !$unread_only) {
$row = array(
"feed_url" => $line["feed_url"],
"title" => $line["title"],
"id" => (int)$line["id"],
"unread" => (int)$unread,
"has_icon" => $has_icon,
"cat_id" => (int)$line["cat_id"],
"last_updated" => strtotime($line["last_updated"])
);
array_push($feeds, $row);
}
}
/* Labels */ /* Labels */
if (!$cat_id || $cat_id == -2) { if (!$cat_id || $cat_id == -2) {
@ -6741,6 +6699,52 @@
} }
} }
/* Real feeds */
if ($limit) {
$limit_qpart = "LIMIT $limit OFFSET $offset";
} else {
$limit_qpart = "";
}
if (!$cat_id) {
$result = db_query($link, "SELECT
id, feed_url, cat_id, title, ".
SUBSTRING_FOR_DATE."(last_updated,1,19) AS last_updated
FROM ttrss_feeds WHERE owner_uid = " . $_SESSION["uid"] .
" ORDER BY cat_id, title " . $limit_qpart);
} else {
$result = db_query($link, "SELECT
id, feed_url, cat_id, title, ".
SUBSTRING_FOR_DATE."(last_updated,1,19) AS last_updated
FROM ttrss_feeds WHERE
cat_id = '$cat_id' AND owner_uid = " . $_SESSION["uid"] .
" ORDER BY cat_id, title " . $limit_qpart);
}
while ($line = db_fetch_assoc($result)) {
$unread = getFeedUnread($link, $line["id"]);
$has_icon = feed_has_icon($line['id']);
if ($unread || !$unread_only) {
$row = array(
"feed_url" => $line["feed_url"],
"title" => $line["title"],
"id" => (int)$line["id"],
"unread" => (int)$unread,
"has_icon" => $has_icon,
"cat_id" => (int)$line["cat_id"],
"last_updated" => strtotime($line["last_updated"])
);
array_push($feeds, $row);
}
}
return $feeds; return $feeds;
} }

View File

@ -979,13 +979,17 @@
} }
if ($subop == "digest-init") { if ($subop == "digest-init") {
$feed_id = db_escape_string($_REQUEST['feed_id']);
if (!$feed_id) $feed_id = -4;
print "<rpc-reply>"; print "<rpc-reply>";
$tmp_feeds = api_get_feeds($link, false, true, false, 0); $tmp_feeds = api_get_feeds($link, false, true, false, 0);
$feeds = array(); $feeds = array();
foreach ($tmp_feeds as $f) { foreach ($tmp_feeds as $f) {
if ($f['id'] > 0) array_push($feeds, $f); if ($f['id'] > 0 || $f['id'] == -4) array_push($feeds, $f);
} }
function feeds_sort_by_unread_rev($a, $b) { function feeds_sort_by_unread_rev($a, $b) {
@ -998,13 +1002,13 @@
return ($a < $b) ? 1 : -1; return ($a < $b) ? 1 : -1;
} }
// uasort($feeds, 'feeds_sort_by_unread_rev'); //uasort($feeds, 'feeds_sort_by_unread_rev');
// $feeds = array_slice($feeds, 0, 10); //$feeds = array_slice($feeds, 0, 10);
print "<feeds><![CDATA[" . json_encode($feeds) . "]]></feeds>"; print "<feeds><![CDATA[" . json_encode($feeds) . "]]></feeds>";
$headlines = api_get_headlines($link, -4, 20, 0, $headlines = api_get_headlines($link, $feed_id, 10, 0,
'', true, true, false, "all_articles", "updated DESC"); '', ($feed_id == -4), true, false, "all_articles", "updated DESC");
//function api_get_headlines($link, $feed_id, $limit, $offset, //function api_get_headlines($link, $feed_id, $limit, $offset,
// $filter, $is_cat, $show_excerpt, $show_content, $view_mode) { // $filter, $is_cat, $show_excerpt, $show_content, $view_mode) {