提交 2a7deb85 编写于 作者: K kohsuke

bug fix


git-svn-id: https://hudson.dev.java.net/svn/hudson/trunk/hudson/main@4063 71c3de6d-444a-0410-be80-ed276b4c234a
上级 e0063c29
......@@ -364,7 +364,7 @@ public class Functions {
for( int i=list.size()-1; i>=0; i-- ) {
Ancestor anc = (Ancestor) list.get(i);
if(anc.getObject() instanceof SearchableModelObject)
return anc.getUrl()+"/search";
return anc.getUrl()+"/search/";
}
return null;
}
......
......@@ -8,6 +8,7 @@ import java.io.IOException;
import hudson.search.SearchableModelObject;
import hudson.search.SearchIndex;
import hudson.search.Search;
/**
* {@link ModelObject} with some convenience methods.
......@@ -34,6 +35,10 @@ public abstract class AbstractModelObject implements SearchableModelObject {
return SearchIndex.EMPTY;
}
public Search getSearch() {
return new Search();
}
/**
* Default implementation that returns the display name.
*/
......
package hudson.search;
import hudson.util.EditDistance;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.StringTokenizer;
import java.util.Collections;
import java.io.IOException;
import hudson.util.EditDistance;
import org.kohsuke.stapler.StaplerRequest;
import org.kohsuke.stapler.QueryParameter;
import org.kohsuke.stapler.StaplerResponse;
import org.kohsuke.stapler.Ancestor;
/**
* Web-bound object that serves QuickSilver-like search requests.
*
* @author Kohsuke Kawaguchi
*/
public class Search {
public void doIndex(StaplerRequest req, StaplerResponse rsp) throws IOException {
for (Ancestor a : req.getAncestors()) {
if (a.getObject() instanceof SearchableModelObject) {
SearchableModelObject smo = (SearchableModelObject) a.getObject();
SearchIndex index = smo.getSearchIndex();
String query = req.getParameter("q");
SuggestedItem target = find(index, query);
if(target!=null) {
// found
rsp.sendRedirect2(target.getUrl());
}
}
}
// TODO: go to suggestion page
throw new UnsupportedOperationException();
}
//public static List<SearchItem> find(SearchIndex index, String tokenList) {
// List<SearchItem> result = new ArrayList<SearchItem>();
// StringTokenizer tokens = new StringTokenizer(tokenList);
......@@ -45,8 +72,11 @@ public class Search {
}
public static SuggestedItem find(SearchIndex index, String tokenList) {
List<SuggestedItem> r = find(Mode.FIND, index, tokenList);
/**
* Performs a search and returns the match, or null if no match was found.
*/
public static SuggestedItem find(SearchIndex index, String query) {
List<SuggestedItem> r = find(Mode.FIND, index, query);
if(r.isEmpty()) return null;
else return r.get(0);
}
......
......@@ -14,4 +14,8 @@ import hudson.model.ModelObject;
* @author Kohsuke Kawaguchi
*/
public interface SearchableModelObject extends ModelObject, SearchItem {
/**
* This binds {@link Search} object to the URL hierarchy.
*/
Search getSearch();
}
......@@ -36,7 +36,7 @@ public class SuggestedItem {
}
public String getUrl() {
StringBuilder buf = new StringBuilder("$contextRoot");
StringBuilder buf = new StringBuilder();
getUrl(buf);
return buf.toString();
}
......@@ -50,7 +50,7 @@ public class SuggestedItem {
buf.setLength(0);
buf.append(f);
} else {
if(buf.charAt(buf.length()-1)!='/')
if(buf.length()==0 || buf.charAt(buf.length()-1)!='/')
buf.append('/');
buf.append(f);
}
......
......@@ -53,7 +53,7 @@
<a href="${rootURL}/"><img src="${rootURL}/images/title.png" alt="title" /></a>
</td><td style="vertical-align: middle; text-align: right; padding-right: 1em;">
<j:if test="${h.searchFeature}">
<form action="${h.searchURL}">
<form action="${h.searchURL}" method="get">
<div id="searchform">
<input name="q" size="12" value="" id="search-box"/>
</div>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册