📄 cmshelpsearchresultview.java
字号:
result.append("<span class=\"searchExcerpt\">\n");
result.append(entry.getExcerpt()).append('\n');
result.append("</span>\n");
result.append("</div>\n");
}
} finally {
m_jsp.getRequestContext().setCurrentProject(m_offlineProject);
}
result.append("</p>\n");
// search page links below results
if (search.getPreviousUrl() != null || search.getNextUrl() != null) {
result.append("<p>");
if (search.getPreviousUrl() != null) {
result.append("<a href=\"");
result.append(getSearchPageLink(m_jsp.link(new StringBuffer(search.getPreviousUrl()).append('&').append(
CmsLocaleManager.PARAMETER_LOCALE).append("=").append(m_jsp.getRequestContext().getLocale()).toString())));
result.append("\">");
result.append(messages.key(org.opencms.search.Messages.GUI_HELP_BUTTON_BACK_0));
result.append(" <<</a> \n");
}
Map pageLinks = search.getPageLinks();
Iterator i = pageLinks.keySet().iterator();
while (i.hasNext()) {
int pageNumber = ((Integer)i.next()).intValue();
result.append(" ");
if (pageNumber != search.getSearchPage()) {
result.append("<a href=\"").append(
getSearchPageLink(m_jsp.link(new StringBuffer(
(String)pageLinks.get(new Integer(pageNumber))).append('&').append(
CmsLocaleManager.PARAMETER_LOCALE).append("=").append(
m_jsp.getRequestContext().getLocale()).toString())));
result.append("\" target=\"_self\">").append(pageNumber).append("</a>\n");
} else {
result.append(pageNumber);
}
}
if (search.getNextUrl() != null) {
result.append(" <a href=\"");
result.append(getSearchPageLink(new StringBuffer(m_jsp.link(search.getNextUrl())).append('&').append(
CmsLocaleManager.PARAMETER_LOCALE).append("=").append(m_jsp.getRequestContext().getLocale()).toString()));
result.append("\">>>");
result.append(messages.key(org.opencms.search.Messages.GUI_HELP_BUTTON_NEXT_0));
result.append("</a>\n");
}
result.append("</p>\n");
}
}
// include the post forms for the page links:
Iterator values = m_formCache.values().iterator();
while (values.hasNext()) {
result.append(values.next());
}
return result.toString();
}
/**
* Returns true if the links to search results shall point to exported content, false else. <p>
* @return true if the links to search results shall point to exported content, false else
*/
public boolean isExportLinks() {
return m_exportLinks;
}
/**
* Set wether the links to search results point to exported content or not. <p>
*
* @param exportLinks The value that decides Set wether the links to search results point to exported content or not.
*/
public void setExportLinks(boolean exportLinks) {
this.m_exportLinks = exportLinks;
}
/**
* Set a proprietary resource uri for the search page. <p>
*
* This is optional but allows to override the standard search result links
* (for next or previous pages) that point to
* <code>getJsp().getRequestContext().getUri()</code> whenever the search
* uri is element of some template and should not be linked directly.<p>
*
* @param uri the proprietary resource uri for the search page
*/
public void setSearchRessourceUrl(String uri) {
this.m_searchRessourceUrl = uri;
}
/**
* Returns the resource uri to the search page with respect to the
* optionally configured value <code>{@link #setSearchRessourceUrl(String)}</code>
* with the request parameters of the given argument.<p>
*
* This is a workaround for Tomcat bug 35775
* (http://issues.apache.org/bugzilla/show_bug.cgi?id=35775). After it has been
* fixed the version 1.1 should be restored (or at least this codepath should be switched back.<p>
*
*
* @param link the suggestion of the search result bean ( a previous, next or page number url)
* @return the resource uri to the search page with respect to the
* optionally configured value <code>{@link #setSearchRessourceUrl(String)}</code>
* with the request parameters of the given argument
*/
private String getSearchPageLink(String link) {
if (m_searchRessourceUrl != null) {
// for the form to generate we need params.
String pageParams = "";
int paramIndex = link.indexOf('?');
if (paramIndex > 0) {
pageParams = link.substring(paramIndex);
}
String formurl = new StringBuffer(m_searchRessourceUrl).append(pageParams).toString();
toPostParameters(formurl);
link = new StringBuffer("javascript:document.forms['").append("form").append(m_formCache.size() - 1).append(
"'].submit()").toString();
}
return link;
}
private void initSearch(CmsSearch search) {
// Collect the objects required to access the OpenCms VFS from the request
CmsObject cmsObject = m_jsp.getCmsObject();
ServletRequest request = m_jsp.getRequest();
search.init(cmsObject);
search.setField(new String[] {"title", "keywords", "description", "content"});
search.setMatchesPerPage(5);
search.setDisplayPages(7);
search.setSearchRoot(new StringBuffer("/system/workplace/locales/").append(
m_jsp.getRequestContext().getLocale()).append("/help/").toString());
String query = request.getParameter("query");
search.setQuery(query);
}
/**
* Generates a html form (named form<n>) with parameters found in
* the given GET request string (appended params with "?value=param&value2=param2).
* >n< is the number of forms that already have been generated.
* This is a content-expensive bugfix for http://issues.apache.org/bugzilla/show_bug.cgi?id=35775
* and should be replaced with the 1.1 revision as soon that bug is fixed.<p>
*
* The forms action will point to the given uri's path info part: All links in the page
* that includes this generated html and that are related to the get request should
* have "src='#'" and "onclick=documents.forms['<getRequestUri>'].submit()". <p>
*
* The generated form lands in the internal <code>Map {@link #m_formCache}</code> as mapping
* from uris to Strings and has to be appended to the output at a valid position. <p>
*
* Warning: Does not work with multiple values mapped to one parameter ("key = value1,value2..").<p>
*
*
*
* @param getRequestUri a request uri with optional query, will be used as name of the form too.
*/
private void toPostParameters(String getRequestUri) {
StringBuffer result;
if (!m_formCache.containsKey(getRequestUri)) {
result = new StringBuffer();
int index = getRequestUri.indexOf('?');
String query = "";
String path = "";
if (index > 0) {
query = getRequestUri.substring(index + 1);
path = getRequestUri.substring(0, index);
result.append("\n<form method=\"post\" name=\"form").append(m_formCache.size()).append("\" action=\"");
result.append(path).append("\">\n");
// "key=value" pairs as tokens:
StringTokenizer entryTokens = new StringTokenizer(query, "&", false);
while (entryTokens.hasMoreTokens()) {
StringTokenizer keyValueToken = new StringTokenizer(entryTokens.nextToken(), "=", false);
if (keyValueToken.countTokens() != 2) {
continue;
}
// Undo the possible already performed url encoding for the given url
String key = CmsEncoder.decode(keyValueToken.nextToken());
String value = CmsEncoder.decode(keyValueToken.nextToken());
result.append(" <input type=\"hidden\" name=\"");
result.append(key).append("\" value=\"");
result.append(value).append("\" />\n");
}
result.append("</form>\n");
m_formCache.put(getRequestUri, result.toString());
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -