initial work on big feed browser

This commit is contained in:
Andrew Dolgov 2005-12-30 06:17:23 +01:00
parent 88d9259a4e
commit c6232e4333
4 changed files with 155 additions and 2 deletions

View File

@ -2015,7 +2015,7 @@
<input type=\"submit\" class=\"button\"
onclick=\"javascript:addFeed()\" value=\"Add feed\">
&nbsp;
(<a href='javascript:browseFeeds()'>Browse feeds</a>)
(<a href='javascript:browseFeeds()'>Top 50</a>)
</td><td align='right'>
<input id=\"feed_search\" size=\"20\"
onchange=\"javascript:updateFeedList()\"
@ -3928,6 +3928,88 @@
onclick=\"closeInfoBox()\" value=\"Close this window\"></div>";
}
if ($op == "pref-feed-browser") {
$subop = $_REQUEST["subop"];
if ($subop == "details") {
$id = db_escape_string($_GET["id"]);
print "-- nasty details about feed $id --";
return;
}
print "<div class=\"warning\">Under construction</div>";
print "<h1>Feed browser</h1>";
$result = db_query($link, "SELECT feed_url,count(id) AS subscribers
FROM ttrss_feeds
WHERE auth_login = '' AND auth_pass = '' AND private = false
GROUP BY feed_url ORDER BY subscribers DESC LIMIT 50");
print "<ul class='nomarks' id='browseFeedList'>";
$feedctr = 0;
while ($line = db_fetch_assoc($result)) {
$feed_url = $line["feed_url"];
$subscribers = $line["subscribers"];
$sub_result = db_query($link, "SELECT id
FROM ttrss_feeds WHERE feed_url = '$feed_url' AND owner_uid =" .
$_SESSION["uid"]);
if (db_num_rows($sub_result) > 0) {
continue; // already subscribed
}
$det_result = db_query($link, "SELECT site_url,title,id
FROM ttrss_feeds WHERE feed_url = '$feed_url' LIMIT 1");
$details = db_fetch_assoc($det_result);
$icon_file = ICONS_DIR . "/" . $details["id"] . ".ico";
if (file_exists($icon_file) && filesize($icon_file) > 0) {
$feed_icon = "<img class=\"tinyFeedIcon\" src=\"" . ICONS_URL .
"/".$details["id"].".ico\">";
} else {
$feed_icon = "<img class=\"tinyFeedIcon\" src=\"images/blank_icon.gif\">";
}
$check_box = "<input onclick='toggleSelectListRow(this)' class='feedBrowseCB'
type=\"checkbox\" id=\"FBCHK-" . $details["id"] . "\">";
$class = ($feedctr % 2) ? "even" : "odd";
print "<li class='$class' id=\"FBROW-".$details["id"]."\">$check_box".
"$feed_icon ";
print "<a href=\"javascript:browserExpand('".$details["id"]."')\">" .
$details["title"] ."</a>&nbsp;" .
"<span class='subscribers'>($subscribers)</span>";
print "<div class=\"browserDetails\" id=\"BRDET-" . $details["id"] . "\">";
print "</div>";
print "</li>";
++$feedctr;
}
if ($feedctr == 0) {
print "<li>No feeds found to subscribe.</li>";
}
print "</ul>";
print "<input type='submit' class='button' onclick=\"feedBrowserSubscribe()\"
value=\"Subscribe\">";
print "</div>";
}
db_close($link);
?>

View File

@ -5,8 +5,8 @@ var active_feed_cat = false;
var active_filter = false;
var active_label = false;
var active_user = false;
var active_tab = false;
var feed_to_expand = false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
@ -27,6 +27,19 @@ if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
function expand_feed_callback() {
if (xmlhttp.readyState == 4) {
try {
var container = document.getElementById("BRDET-" + feed_to_expand);
container.innerHTML=xmlhttp.responseText;
container.style.display = "block";
p_notify("");
} catch (e) {
exception_error("expand_feed_callback", e);
}
}
}
function feedlist_callback() {
if (xmlhttp.readyState == 4) {
try {
@ -96,6 +109,14 @@ function labellist_callback() {
}
}
function feed_browser_callback() {
var container = document.getElementById('prefContent');
if (xmlhttp.readyState == 4) {
container.innerHTML=xmlhttp.responseText;
p_notify("");
}
}
function userlist_callback() {
var container = document.getElementById('prefContent');
if (xmlhttp.readyState == 4) {
@ -1202,6 +1223,8 @@ function selectTab(id) {
updatePrefsList();
} else if (id == "userConfig") {
updateUsersList();
} else if (id == "feedBrowser") {
updateBigFeedBrowser();
}
var tab = document.getElementById(active_tab + "Tab");
@ -1334,3 +1357,37 @@ function feedBrowserSubscribe() {
exception_error("feedBrowserSubscribe", e);
}
}
function updateBigFeedBrowser() {
if (!xmlhttp_ready(xmlhttp)) {
printLockingError();
return
}
p_notify("Loading, please wait...");
xmlhttp.open("GET", "backend.php?op=pref-feed-browser", true);
xmlhttp.onreadystatechange=feed_browser_callback;
xmlhttp.send(null);
}
function browserExpand(id) {
try {
/* if (feed_to_expand && feed_to_expand != id) {
var d = document.getElementById("BRDET-" + feed_to_expand);
d.style.display = "none";
} */
feed_to_expand = id;
xmlhttp.open("GET", "backend.php?op=pref-feed-browser&subop=details&id="
+ param_escape(id), true);
xmlhttp.onreadystatechange=expand_feed_callback;
xmlhttp.send(null);
} catch (e) {
exception_error("browserExpand", e);
}
}

View File

@ -87,6 +87,8 @@
onclick="selectTab('genConfig')">
<input id="feedConfigTab" class="prefsTab" type="submit" value="Feed Configuration"
onclick="selectTab('feedConfig')">
<input id="feedBrowserTab" class="prefsTab" type="submit" value="Feed Browser"
onclick="selectTab('feedBrowser')">
<input id="filterConfigTab" class="prefsTab" type="submit" value="Content Filtering"
onclick="selectTab('filterConfig')">
<? if (GLOBAL_ENABLE_LABELS && get_pref($link, 'ENABLE_LABELS')) { ?>

View File

@ -940,6 +940,18 @@ span.subscribers {
color : #808080;
}
div.subscribers {
color : #808080;
font-size : x-small;
float : right;
}
input.feedBrowseCB {
margin-right : 1em;
}
div.browserDetails {
margin : 5px 5px 5px 5px;
display : none;
padding : 5px;
}