Monday, November 08, 2010 at 12:04 AM.
system.verbs.builtins.mainResponder.search.server.searchPage
on searchPage (altColor="", flShowSiteNames=true, flFeedback=false) { <<Changes: <<8/3/02; 2:37:48 AM by JES <<Created. Generalized search page for mainResponder. Based on workspace.sampleSearch. Original change notes below. <<01/31/00; 1:40:00 PM by PBS <<Added the closing </form> tag, so the Edit this Page button will work. <<01/27/00; 1:40:08 PM by PBS <<This is a safe macro which displays a search page. You can specify an alternate altColor by supplying the third parameter. You can turn off display of site names by supplying the flShowSiteNames parameter and setting it to false. bundle { //deal with defaults if altColor == "" { altColor = "gainsboro"}}; local (pta = html.getPageTableAddress ()); //get the address of the current page table local (indexName = "Index.root"); //change this if you want to use a different index local (adrFilterCallback); if defined (pta^.responderAttributes.adrSearchFilterCallback) { adrFilterCallback = pta^.responderAttributes.adrSearchFilterCallback}; local (flRunSearch = false); //will be true if a search should be run local (actionUrl); //the action URL for the form bundle { //get the action URL actionUrl = pta^.uri; if defined (pta^.pathArgs) { //there may also be a $xxx component if pta^.pathArgs != "" { if not (actionUrl endsWith "$") { actionUrl = actionUrl + "$"}; actionUrl = actionUrl + pta^.pathArgs}}}; local (htmlText); //htmlText will contain the HTML that will be returned on add (s) { //subroutine for adding a string to htmlText htmlText = htmlText + s}; local (queryString = "", displayQueryString = ""); bundle { //get the query string and display query string local (argTable); new (tableType, @argTable); if defined (pta^.searchArgs) and pta^.searchArgs != "" { flRunSearch = true; webserver.parseArgs (pta^.searchArgs, @argTable); //parse the search args into a local table if defined (argTable.q) { //q is the element which contains the query string from the browser queryString = string.trimWhiteSpace (argTable.q); //trim it up local (adrIsoTable); if system.environment.isMac { adrIsoTable = @html.data.iso8859.mac}; if system.environment.isWindows { adrIsoTable = @html.data.iso8859.win}; displayQueryString = string.iso8859Encode (queryString, adrIsoTable); //encode characters as HTML entities <<Various additional filterings are necessary to get this to show up correctly in the input field. displayQueryString = string.replaceAll (displayQueryString, "\"", """); displayQueryString = string.replaceAll (displayQueryString, "<", "<"); displayQueryString = string.replaceAll (displayQueryString, ">", ">"); displayQueryString = string.replaceAll (displayQueryString, "+", " ")}}}; on addSearchForm () { //build the search form -- you might want to customize the display of this add ("<form method=\"get\" action=\"" + actionUrl + "\">\r"); //it's a GET method form add ("Search for: \r"); add ("<input type=\"text\" name=\"q\" size=\"30\" value=\"" + displayQueryString + "\"> "); add ("<input type=\"submit\" value=\"Search\"><p>\r"); add ("</form>")}; //PBS 01/31/00: close the form. addSearchForm (); if flRunSearch { //display the search results if a search should be run add (mainResponder.search.server.htmlSearch (pta, actionUrl, flShowSiteNames, altColor, flFeedback, indexName, adrFilterCallback))}; <<Make sure this page is totally secure -- no macros may be run. htmlText = manilaSuite.unTaint (htmlText); htmltext = string.replaceAll (htmltext, "<%", "<%"); return (htmlText)} //return the text of the page
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.