improved search interface

This commit is contained in:
Andrew Dolgov 2005-08-25 14:27:12 +01:00
parent c3a8d71ad4
commit c374a3feca
2 changed files with 46 additions and 16 deletions

View File

@ -245,14 +245,15 @@
$feed_last_updated = "Updated: " . $line["last_updated"]; $feed_last_updated = "Updated: " . $line["last_updated"];
print "<tr><td class=\"search\" colspan=\"3\"> print "<tr><td class=\"search\" colspan=\"3\">
Search: <input onchange=\"javascript:search($feed,this);\"> Search: <input id=\"searchbox\" onchange=\"javascript:search($feed);\">
<a class=\"button\" href=\"javascript:viewfeed($feed,0)\">Reset</a> <a class=\"button\" href=\"javascript:resetSearch()\">Reset</a>
</td></tr>"; </td></tr>";
print "<tr> print "<tr>
<td colspan=\"3\" class=\"title\">" . $line["title"] . "</td></tr>"; <td colspan=\"3\" class=\"title\">" . $line["title"] . "</td></tr>";
if ($subop == "search") { $search = $_GET["search"];
$search = $_GET["search"];
if (search) {
$search_query_part = "(upper(title) LIKE upper('%$search%') $search_query_part = "(upper(title) LIKE upper('%$search%')
OR content LIKE '%$search%') AND"; OR content LIKE '%$search%') AND";
} }

View File

@ -19,6 +19,8 @@ var total_feed_entries = false;
var _viewfeed_autoselect_first = false; var _viewfeed_autoselect_first = false;
var _viewfeed_autoselect_last = false; var _viewfeed_autoselect_last = false;
var search_query = "";
/*@cc_on @*/ /*@cc_on @*/
/*@if (@_jscript_version >= 5) /*@if (@_jscript_version >= 5)
// JScript gives us Conditional compilation, we can cope with old IE versions. // JScript gives us Conditional compilation, we can cope with old IE versions.
@ -103,6 +105,10 @@ function viewfeed_callback() {
} }
var searchbox = document.getElementById("searchbox");
searchbox.value = search_query;
notify(""); notify("");
} }
@ -238,8 +244,18 @@ function catchupAllFeeds() {
function viewfeed(feed, skip, subop) { function viewfeed(feed, skip, subop) {
// document.getElementById('headlines').innerHTML='Loading headlines, please wait...'; var searchbox = document.getElementById("searchbox");
// document.getElementById('content').innerHTML='&nbsp;';
if (searchbox) {
search_query = searchbox.value;
} else {
search_query = "";
}
/* if (active_feed_id == feed && subop != "ForceUpdate") {
notify("This feed is currently selected.");
return;
} */
if (skip < 0 || skip > total_feed_entries) { if (skip < 0 || skip > total_feed_entries) {
return; return;
@ -254,8 +270,14 @@ function viewfeed(feed, skip, subop) {
active_post_id = false; active_post_id = false;
active_offset = skip; active_offset = skip;
xmlhttp.open("GET", "backend.php?op=viewfeed&feed=" + param_escape(feed) + var query = "backend.php?op=viewfeed&feed=" + param_escape(feed) +
"&skip=" + param_escape(skip) + "&subop=" + param_escape(subop) , true); "&skip=" + param_escape(skip) + "&subop=" + param_escape(subop);
if (search_query != "") {
query = query + "&search=" + param_escape(search_query);
}
xmlhttp.open("GET", query, true);
xmlhttp.onreadystatechange=viewfeed_callback; xmlhttp.onreadystatechange=viewfeed_callback;
xmlhttp.send(null); xmlhttp.send(null);
@ -326,22 +348,29 @@ function timeout() {
} }
function search(feed, sender) { function resetSearch() {
document.getElementById("searchbox").value = "";
viewfeed(active_feed_id, 0, "");
}
if (xmlhttp.readyState != 4 && xmlhttp.readyState != 0) { function search(feed) {
printLockingError();
return
}
notify("Search: " + feed + ", " + sender.value) // if (xmlhttp.readyState != 4 && xmlhttp.readyState != 0) {
// printLockingError();
// return
// }
document.getElementById('headlines').innerHTML='Loading headlines, please wait...'; // notify("Search: " + feed + ", " + sender.value)
/* document.getElementById('headlines').innerHTML='Loading headlines, please wait...';
document.getElementById('content').innerHTML='&nbsp;'; document.getElementById('content').innerHTML='&nbsp;';
xmlhttp.open("GET", "backend.php?op=viewfeed&feed=" + param_escape(feed) + xmlhttp.open("GET", "backend.php?op=viewfeed&feed=" + param_escape(feed) +
"&search=" + param_escape(sender.value) + "&subop=search", true); "&search=" + param_escape(sender.value) + "&subop=search", true);
xmlhttp.onreadystatechange=viewfeed_callback; xmlhttp.onreadystatechange=viewfeed_callback;
xmlhttp.send(null); xmlhttp.send(null); */
viewfeed(feed, 0, "");
} }