Monday, November 08, 2010 at 12:04 AM.
system.verbs.builtins.mainResponder.search.server.buildScreenLinks
on buildScreenLinks (adrSearch, adrScreen, adrSearchRequest) {
<<Build links to more screens.
<<Changes:
<<10/1/99; 1:51:31 PM by PBS
<<Support for searching multiple sites.
local (htmlText);
local (i);
on add (s) {
htmlText = htmlText + s};
adrScreen^.totalScreens = ((adrScreen^.totalHits - 1) / adrSearchRequest^.maxHitsPerPage) + 1;
adrScreen^.totalScreens = number (adrScreen^.totalScreens);
local (replacer = "");
if adrSearch^.ignoredList != {} {
if sizeOf (adrSearch^.ignoredList) == 1 {
replacer = replacer + "<font size=1>Ignored common word:"}
else {
replacer = replacer + "<font size=1>Ignored common words:"};
for i = 1 to sizeOf (adrSearch^.ignoredList) {
replacer = replacer + " " + adrSearch^.ignoredList [i];
if i != sizeOf (adrSearch^.ignoredList) {
replacer = replacer + ";"}};
replacer = replacer + "</font><p>\r"};
if adrScreen^.totalScreens == 1 {
adrScreen^.returnText = searchEngine.replaceAll (adrScreen^.returnText, "<<replaceNumHits>>", replacer, true);
return (false)};
if adrScreen^.totalScreens > 1 {
replacer = replacer + "<<start>> to <<end>> of <<totalHits>> total matches found.<p>\r";
replacer = searchEngine.replaceAll (replacer, "<<start>>", adrSearchRequest^.start, true);
replacer = searchEngine.replaceAll (replacer, "<<end>>", adrScreen^.end, true);
replacer = searchEngine.replaceAll (replacer, "<<totalHits>>", adrScreen^.totalHits, true);
adrScreen^.returnText = searchEngine.replaceAll (adrScreen^.returnText, "<<replaceNumHits>>", replacer, true)};
adrScreen^.thisScreen = number (adrSearchRequest^.start / adrSearchRequest^.maxHitsPerPage);
add ("<p>\rMore matches...<p>\r<font size=-1>");
local (site);
if defined (adrSearchRequest^.site) and adrSearchRequest^.site != "" {
local (sitesList = adrSearchRequest^.site); //PBS 10/1/99: support for multiple sites
if typeOf (sitesList) != listType {
sitesList = {sitesList}};
local (i);
for i = 1 to sizeOf (sitesList) {
if i > 1 {
site = site + "&"};
site = site + "site=" + string.replaceAll (sitesList [i], " " ,"+")}};
for i = 0 to adrScreen^.totalScreens - 1 {
if i == adrScreen^.thisScreen {
add (i + 1)}
else {
local (q = string.urlEncode (adrSearchRequest^.searchString));
q = string.replaceAll (q, "%20", "+");
local (url = adrSearchRequest^.fname + "?");
url = url + "m=" + adrSearchRequest^.maxHitsPerPage + "&s=" + ((i * adrSearchRequest^.maxHitsPerPage) + 1);
url = url + "&q=" + q;
if site != "" {
url = url + "&" + site};
add ("<a href=\"" + url + "\">" + (i + 1) + "</a>")};
if i != adrScreen^.totalScreens - 1 {
add (" - ")}};
add ("</font>");
adrScreen^.returnText = adrScreen^.returnText + htmlText;
return (true)}
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.