diff --git a/mozilla/xpfe/components/search/resources/internetresults.js b/mozilla/xpfe/components/search/resources/internetresults.js index 74fce64e5f7..c2877751fcc 100644 --- a/mozilla/xpfe/components/search/resources/internetresults.js +++ b/mozilla/xpfe/components/search/resources/internetresults.js @@ -1,4 +1,3 @@ - function searchResultsOpenURL(event, node) { if (event.button != 1) @@ -18,12 +17,12 @@ function searchResultsOpenURL(event, node) if (rdf) rdf = rdf.QueryInterface(Components.interfaces.nsIRDFService); if (rdf) { - var fileSys = rdf.GetDataSource("rdf:internetsearch"); - if (fileSys) + var ds = rdf.GetDataSource("rdf:internetsearch"); + if (ds) { var src = rdf.GetResource(url, true); var prop = rdf.GetResource("http://home.netscape.com/NC-rdf#URL", true); - var target = fileSys.GetTarget(src, prop, true); + var target = ds.GetTarget(src, prop, true); if (target) target = target.QueryInterface(Components.interfaces.nsIRDFLiteral); if (target) target = target.Value; if (target) url = target; @@ -35,27 +34,32 @@ function searchResultsOpenURL(event, node) if (url.substring(0, 3) == "NC:") return(false); - dump("Opening URL: " + url + "\n"); - if( top._content ) - { - top._content.location.href = url; - } - return true; + top._content.location.href = url; + + return(true); } function onLoadInternetResults() { - var isupports = Components.classes["component://netscape/rdf/datasource?name=internetsearch"].getService(); - if (!isupports) - return(false); - var internetSearchService = isupports.QueryInterface(Components.interfaces.nsIInternetSearchService); - if (!internetSearchService) - return(false); - internetSearchService.ClearResultSearchSites(); + // clear any previous results on load + var iSearch = Components.classes["component://netscape/rdf/datasource?name=internetsearch"].getService(); + if (iSearch) iSearch = iSearch.QueryInterface(Components.interfaces.nsIInternetSearchService); + if (iSearch) iSearch.ClearResultSearchSites(); - return true; + // the search URI is passed in as a parameter, so get it and them root the results tree + var searchURI = top._content.location.href; + if (searchURI) + { + var offset = searchURI.indexOf("?"); + if (offset > 0) + { + searchURI = searchURI.substr(offset+1); + loadResultsTree(searchURI); + } + } + return(true); } @@ -118,9 +122,12 @@ function doEngineClick( event, aNode ) if ( html ) { var doc = window.frames[0].document; - doc.open("text/html", "replace"); - doc.writeln( html ); - doc.close(); + if (doc) + { + doc.open("text/html", "replace"); + doc.writeln( html ); + doc.close(); + } } else { @@ -193,3 +200,4 @@ function doResultClick(node) } return(true); } + diff --git a/mozilla/xpfe/components/search/resources/search-panel.js b/mozilla/xpfe/components/search/resources/search-panel.js index 38df17aba0d..f9c8091e361 100644 --- a/mozilla/xpfe/components/search/resources/search-panel.js +++ b/mozilla/xpfe/components/search/resources/search-panel.js @@ -17,15 +17,38 @@ * Copyright (C) 1998 Netscape Communications Corporation. All * Rights Reserved. * + * Original Author(s): + * Robert John Churchill + * * Contributor(s): + * Ben Goodger + * Rob Ginda + * Steve Lamm */ +const WMEDIATOR_PROGID = "component://netscape/rdf/datasource?name=window-mediator"; +const ISEARCH_PROGID = "component://netscape/rdf/datasource?name=internetsearch"; +const RDFSERVICE_PROGID = "component://netscape/rdf/rdf-service"; +const BMARKS_PROGID = "component://netscape/browser/bookmarks-service"; + +const nsIBookmarksService = Components.interfaces.nsIBookmarksService; +const nsIWindowMediator = Components.interfaces.nsIWindowMediator; +const nsIRDFService = Components.interfaces.nsIRDFService; +const nsIRDFLiteral = Components.interfaces.nsIRDFLiteral; +const nsIRDFDataSource = Components.interfaces.nsIRDFDataSource; +const nsIRDFRemoteDataSource = Components.interfaces.nsIRDFRemoteDataSource; +const nsIInternetSearchService = Components.interfaces.nsIInternetSearchService; +const nsIPref = Components.interfaces.nsIPref; + +const STRINGBUNDLE_URL = + "chrome://communicator/locale/search/search-panel.properties"; + var rootNode = null; var textArc = null; var modeArc = null; var RDF_observer = new Object; var pref = null; - +var bundle = null; function debug(msg) @@ -40,8 +63,7 @@ function debug(msg) try { pref = Components.classes["component://netscape/preferences"]; - if (pref) pref = pref.getService(); - if (pref) pref = pref.QueryInterface(Components.interfaces.nsIPref); + if (pref) pref = pref.getService(nsIPref); } catch(e) { @@ -86,7 +108,7 @@ RDF_observer = function rememberSearchText(target) { - if (target) target = target.QueryInterface(Components.interfaces.nsIRDFLiteral); + if (target) target = target.QueryInterface(nsIRDFLiteral); if (target) target = target.Value; if (target && (target != "")) { @@ -140,13 +162,12 @@ function updateSearchMode() // 3) initialise the checked state of said engines. function SearchPanelStartup() { - bundle = srGetStrBundle( "chrome://communicator/locale/search/search-panel.properties" ); + bundle = srGetStrBundle( STRINGBUNDLE_URL ); var tree = document.getElementById("Tree"); if (tree) { - var rdf = Components.classes["component://netscape/rdf/rdf-service"].getService(); - if (rdf) rdf = rdf.QueryInterface(Components.interfaces.nsIRDFService); + var rdf = Components.classes[RDFSERVICE_PROGID].getService(nsIRDFService); if (rdf) { rootNode = rdf.GetResource("NC:LastSearchRoot", true); @@ -156,12 +177,11 @@ function SearchPanelStartup() } } - var internetSearch = Components.classes["component://netscape/rdf/datasource?name=internetsearch"].getService(); - if (internetSearch) internetSearch = internetSearch.QueryInterface(Components.interfaces.nsIInternetSearchService); + var internetSearch = Components.classes[ISEARCH_PROGID].getService(nsIInternetSearchService); if (internetSearch) { var catDS = internetSearch.GetCategoryDataSource(); - if (catDS) catDS = catDS.QueryInterface(Components.interfaces.nsIRDFDataSource); + if (catDS) catDS = catDS.QueryInterface(nsIRDFDataSource); if (catDS) { var categoryList = document.getElementById("categoryList"); @@ -210,13 +230,11 @@ function SearchPanelStartup() var categoryPopup = document.getElementById( "categoryPopup" ); if( categoryList && categoryPopup ) { - //set to default value 'Web' - //hack: hardcoded postion in here replace with a function that finds the entry 'the web' - var found = false; for( var i = 0; i < categoryPopup.childNodes.length; i++ ) { - if( ( lastCategoryName == "" && categoryPopup.childNodes[i].getAttribute("data") == "NC:SearchEngineRoot" ) || + if( ( lastCategoryName == "" && + categoryPopup.childNodes[i].getAttribute("data") == "NC:SearchEngineRoot" ) || ( categoryPopup.childNodes[i].getAttribute("id") == lastCategoryName ) ) { categoryList.selectedItem = categoryPopup.childNodes[i]; @@ -265,14 +283,13 @@ function haveSearchResults() var ds = resultsTree.database; if (!ds) return(false); - var rdf = Components.classes["component://netscape/rdf/rdf-service"].getService(); - if (rdf) rdf = rdf.QueryInterface(Components.interfaces.nsIRDFService); + var rdf = Components.classes[RDFSERVICE_PROGID].getService(nsIRDFService); if (rdf) { var source = rdf.GetResource( "NC:LastSearchRoot", true); var childProperty = rdf.GetResource("http://home.netscape.com/NC-rdf#LastText", true); var target = ds.GetTarget(source, childProperty, true); - if (target) target = target.QueryInterface(Components.interfaces.nsIRDFLiteral); + if (target) target = target.QueryInterface(nsIRDFLiteral); if (target) target = target.Value; if (target && target != "") { @@ -309,35 +326,22 @@ function getNumEngines() return(treeChildrenNode.childNodes.length); } - - function chooseCategory( aNode ) { - var category = aNode.getAttribute("id"); - if ((!category) || (category == "")) - { - category="NC:SearchEngineRoot"; - } - else - { - category = "NC:SearchCategory?category=" + category; - } - debug("chooseCategory: '" + category + "'\n"); + var category = !aNode.id ? "NC:SearchEngineRoot" : + "NC:SearchCategory?category=" + aNode.id; - if (pref) pref.SetCharPref( "browser.search.last_search_category", category ); - else debug("Unable to set browser.search.last_search_category pref.\n"); + if (pref) + pref.SetUnicharPref("browser.search.last_search_category", category); - var treeNode = document.getElementById("searchengines"); - if (treeNode) - { - treeNode.setAttribute( "ref", category ); - } - loadEngines( category ); - return(true); + var treeNode = document.getElementById("searchengines"); + if (treeNode) + treeNode.setAttribute("ref", category); + + loadEngines(category); + return(true); } - - // check an engine representation in the engine list function doCheck(aNode) { @@ -360,8 +364,7 @@ function saveEngines() category = "NC:SearchEngineRoot"; } - var rdf = Components.classes["component://netscape/rdf/rdf-service"].getService(); - if (rdf) rdf = rdf.QueryInterface(Components.interfaces.nsIRDFService); + var rdf = Components.classes[RDFSERVICE_PROGID].getService(nsIRDFService); if (rdf) { var localStore = rdf.GetDataSource("rdf:local-store"); @@ -389,7 +392,7 @@ function saveEngines() // save changes; flush out the localstore try { - var flushableStore = localStore.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); + var flushableStore = localStore.QueryInterface(nsIRDFRemoteDataSource); if (flushableStore) flushableStore.Flush(); } catch(ex) @@ -403,32 +406,30 @@ function saveEngines() // initialise the appropriate engine list, and the checked state of the engines function loadEngines( aCategory ) { - var rdf = Components.classes["component://netscape/rdf/rdf-service"].getService(); - if (rdf) rdf = rdf.QueryInterface(Components.interfaces.nsIRDFService); - if (rdf) - { - var localStore = rdf.GetDataSource("rdf:local-store"); - if (localStore) - { - var engineBox = document.getElementById("searchengines"); - if( engineBox ) - { - var numEngines = engineBox.childNodes.length; - var checkedProperty = rdf.GetResource("http://home.netscape.com/NC-rdf#checked", true); - var categorySRC = rdf.GetResource( aCategory, true ); - for (var x = 0; x 0) + { + // in advanced search mode, get selected search engines + // (for the current search category) + var engineBox = document.getElementById("engineKids"); + if (!engineBox) return(false); - if ( checkbox.checked == true || checkbox.checked == "true") - { - var engineURI = checkbox.getAttribute("id"); - if (!engineURI) continue; - engineURIs[engineURIs.length] = engineURI; - foundEngine = true; - } - } - if (foundEngine == false) - { - if( getNumEngines() == 1 ) { - // only one engine in this category, check it - var checkbox = engineBox.firstChild; - engineURIs[engineURIs.length] = checkbox.getAttribute( "id" ); - } - else { - debug("*** multiple search engines present, selecting the netscape search engine\n"); - for( var i = 0; i < engineBox.childNodes.length; i++ ) + for (var x = 0; x - - + + @@ -69,7 +70,8 @@ - + + - - + - + + + + + + + + + + + + + +