diff options
author | Jean-Baptiste Queru <jbq@google.com> | 2009-11-12 18:45:53 -0800 |
---|---|---|
committer | Jean-Baptiste Queru <jbq@google.com> | 2009-11-13 13:53:39 -0800 |
commit | 9db3d07b9620b4269ab33f78604a36327e536ce1 (patch) | |
tree | 41e294f34b9695187af098cd42167489fb0c8fb0 /docs/html/search.jd | |
parent | 6c63ee4fc4acae4bbbbd2a49e0a68206221f0de0 (diff) | |
download | frameworks_base-9db3d07b9620b4269ab33f78604a36327e536ce1.zip frameworks_base-9db3d07b9620b4269ab33f78604a36327e536ce1.tar.gz frameworks_base-9db3d07b9620b4269ab33f78604a36327e536ce1.tar.bz2 |
eclair snapshot
Diffstat (limited to 'docs/html/search.jd')
-rw-r--r-- | docs/html/search.jd | 231 |
1 files changed, 138 insertions, 93 deletions
diff --git a/docs/html/search.jd b/docs/html/search.jd index defba30..d0e7478 100644 --- a/docs/html/search.jd +++ b/docs/html/search.jd @@ -1,99 +1,144 @@ page.title=Search Results
@jd:body
-<script src="http://www.google.com/jsapi" type="text/javascript"></script>
-<script src="{@docRoot}assets/jquery-history.js" type="text/javascript"></script>
-<script type="text/javascript">
- google.load('search', '1');
-
- function OnLoad() {
- document.getElementById("search_autocomplete").style.color = "#000";
-
- // create search control
- searchControl = new google.search.SearchControl();
-
- // use our existing search form and use tabs when multiple searchers are used
- drawOptions = new google.search.DrawOptions();
- drawOptions.setDrawMode(google.search.SearchControl.DRAW_MODE_TABBED);
- drawOptions.setInput(document.getElementById("search_autocomplete"));
-
- // configure search result options
- searchOptions = new google.search.SearcherOptions();
- searchOptions.setExpandMode(GSearchControl.EXPAND_MODE_OPEN);
-
- // configure each of the searchers, for each tab
- devSiteSearcher = new google.search.WebSearch();
- devSiteSearcher.setUserDefinedLabel("All Developers Site");
- devSiteSearcher.setSiteRestriction("http://developer.android.com/");
-
- devGuideSearcher = new google.search.WebSearch();
- devGuideSearcher.setUserDefinedLabel("Dev Guide");
- devGuideSearcher.setSiteRestriction("http://developer.android.com/guide/");
-
- referenceSearcher = new google.search.WebSearch();
- referenceSearcher.setUserDefinedLabel("Reference");
- referenceSearcher.setSiteRestriction("http://developer.android.com/reference/");
-
- blogSearcher = new google.search.WebSearch();
- blogSearcher.setUserDefinedLabel("Blog");
- blogSearcher.setSiteRestriction("http://android-developers.blogspot.com");
-
- groupsSearcher = new google.search.WebSearch();
- groupsSearcher.setUserDefinedLabel("Developer Groups");
- groupsSearcher.setSiteRestriction("001283715400630100512:ggqrtvkztwm");
-
- sourceSiteSearcher = new google.search.WebSearch();
- sourceSiteSearcher.setUserDefinedLabel("Android Source");
- sourceSiteSearcher.setSiteRestriction("http://source.android.com");
-
- homeSiteSearcher = new google.search.WebSearch();
- homeSiteSearcher.setUserDefinedLabel("Android Home");
- homeSiteSearcher.setSiteRestriction("http://www.android.com");
-
- // add each searcher to the search control
- searchControl.addSearcher(devSiteSearcher, searchOptions);
- searchControl.addSearcher(devGuideSearcher, searchOptions);
- searchControl.addSearcher(referenceSearcher, searchOptions);
- searchControl.addSearcher(groupsSearcher, searchOptions);
- searchControl.addSearcher(sourceSiteSearcher, searchOptions);
- searchControl.addSearcher(blogSearcher, searchOptions);
-
- // configure result options
- searchControl.setResultSetSize(google.search.Search.LARGE_RESULTSET);
- searchControl.setLinkTarget(google.search.Search.LINK_TARGET_SELF);
- searchControl.setTimeoutInterval(google.search.SearchControl.TIMEOUT_LONG);
- searchControl.setNoResultsString(google.search.SearchControl.NO_RESULTS_DEFAULT_STRING);
-
- // upon ajax search, refresh the url and search title
- searchControl.setSearchStartingCallback(this, function(control, searcher, query) {
- $("#searchTitle").html("search results for <em>" + query + "</em>");
- $.history.add('q=' + query); // add the current query to the browser history
- });
-
- // draw the search results box
- searchControl.draw(document.getElementById("leftSearchControl"), drawOptions);
-
- // execute a search upon page load, from url hash query
- if (location.href.indexOf("#q=") != -1) {
- url = location.href.split("#q=");
- searchControl.execute(decodeURI(url[1]));
- }
- document.getElementById("search_autocomplete").focus();
- }
-
- google.setOnLoadCallback(OnLoad, true);
-
- // when an event on the browser history occurs (back, forward, load) perform a search
- $(window).history(function(e, hash) {
- hashParts = hash.split('=');
- searchControl.execute(decodeURI(hashParts[1]));
- $("#searchTitle").html("search results for <em>" + decodeURI(hashParts[1]) + "</em>");
- });
-
- // forcefully regain key-up event control (previously jacked by search api)
- $("#search_autocomplete").keyup(function(event) {
- return search_changed(event, false, '/');
- });
+<script src="http://www.google.com/jsapi" type="text/javascript"></script> +<script src="/assets/jquery-history.js" type="text/javascript"></script>
+<script type="text/javascript"> + var tabIndex = 0; + + google.load('search', '1'); + + function OnLoad() { + document.getElementById("search_autocomplete").style.color = "#000"; + + // create search control + searchControl = new google.search.SearchControl(); + + // use our existing search form and use tabs when multiple searchers are used + drawOptions = new google.search.DrawOptions(); + drawOptions.setDrawMode(google.search.SearchControl.DRAW_MODE_TABBED); + drawOptions.setInput(document.getElementById("search_autocomplete")); + + // configure search result options + searchOptions = new google.search.SearcherOptions(); + searchOptions.setExpandMode(GSearchControl.EXPAND_MODE_OPEN); + + // configure each of the searchers, for each tab + devSiteSearcher = new google.search.WebSearch(); + devSiteSearcher.setUserDefinedLabel("All Developers Site"); + devSiteSearcher.setSiteRestriction("http://developer.android.com/"); + + devGuideSearcher = new google.search.WebSearch(); + devGuideSearcher.setUserDefinedLabel("Dev Guide"); + devGuideSearcher.setSiteRestriction("http://developer.android.com/guide/"); + + referenceSearcher = new google.search.WebSearch(); + referenceSearcher.setUserDefinedLabel("Reference"); + referenceSearcher.setSiteRestriction("http://developer.android.com/reference/"); + + blogSearcher = new google.search.WebSearch(); + blogSearcher.setUserDefinedLabel("Blog"); + blogSearcher.setSiteRestriction("http://android-developers.blogspot.com"); + + groupsSearcher = new google.search.WebSearch(); + groupsSearcher.setUserDefinedLabel("Developer Groups"); + groupsSearcher.setSiteRestriction("001283715400630100512:ggqrtvkztwm"); + + sourceSiteSearcher = new google.search.WebSearch(); + sourceSiteSearcher.setUserDefinedLabel("Android Source"); + sourceSiteSearcher.setSiteRestriction("http://source.android.com"); + + homeSiteSearcher = new google.search.WebSearch(); + homeSiteSearcher.setUserDefinedLabel("Android Home"); + homeSiteSearcher.setSiteRestriction("http://www.android.com"); + + // add each searcher to the search control + searchControl.addSearcher(devSiteSearcher, searchOptions); + searchControl.addSearcher(devGuideSearcher, searchOptions); + searchControl.addSearcher(referenceSearcher, searchOptions); + searchControl.addSearcher(groupsSearcher, searchOptions); + searchControl.addSearcher(sourceSiteSearcher, searchOptions); + searchControl.addSearcher(blogSearcher, searchOptions); + + // configure result options + searchControl.setResultSetSize(google.search.Search.LARGE_RESULTSET); + searchControl.setLinkTarget(google.search.Search.LINK_TARGET_SELF); + searchControl.setTimeoutInterval(google.search.SearchControl.TIMEOUT_LONG); + searchControl.setNoResultsString(google.search.SearchControl.NO_RESULTS_DEFAULT_STRING); + + // upon ajax search, refresh the url and search title + searchControl.setSearchStartingCallback(this, function(control, searcher, query) { + // save the tab index from the hash + tabIndex = location.hash.split("&t=")[1]; + + $("#searchTitle").html("search results for <em>" + escapeHTML(query) + "</em>"); + $.history.add('q=' + query + '&t=' + tabIndex); + openTab(); + }); + + // draw the search results box + searchControl.draw(document.getElementById("leftSearchControl"), drawOptions); + + // get query and execute the search + if (location.hash.indexOf("&t=") != -1) { + searchControl.execute(decodeURI(getQuery(location.hash))); + } + + document.getElementById("search_autocomplete").focus(); + addTabListeners(); + } + // End of OnLoad + + + google.setOnLoadCallback(OnLoad, true); + + // when an event on the browser history occurs (back, forward, load) perform a search + $(window).history(function(e, hash) { + var query = decodeURI(getQuery(hash)); + searchControl.execute(query); + + $("#searchTitle").html("search results for <em>" + escapeHTML(query) + "</em>"); + }); + + // forcefully regain key-up event control (previously jacked by search api) + $("#search_autocomplete").keyup(function(event) { + return search_changed(event, false, '/'); + }); + + // open a tab, specified by its array position + function openTab() { + tabIndex = location.hash.split("&t=")[1]; + + // show the appropriate tab + var tabHeaders = $(".gsc-tabHeader"); + $(tabHeaders[tabIndex]).click(); + } + + // add event listeners to each tab so we can track the browser history + function addTabListeners() { + var tabHeaders = $(".gsc-tabHeader"); + for (var i = 0; i < tabHeaders.length; i++) { + $(tabHeaders[i]).attr("id",i).click(function() { + var tabHeaders = $(".gsc-tabHeader"); + var tabIndex = $(this).attr("id");
+ $.history.add('q=' + getQuery(location.hash) + '&t=' + tabIndex); // update the hash with the new tab + }); + } + } + + function getQuery(hash) {
+ var hashParts = hash.split('&t='); + var queryParts = hashParts[0].split('='); + return queryParts[1]; + } + + /* returns the given string with all HTML brackets converted to entities + TODO: move this to the site's JS library */ + function escapeHTML(string) { + return string.replace(/</g,"<") + .replace(/>/g,">"); + } + </script>
<div id="mainBodyFixed" style="width:auto; margin:20px">
|