⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmshelpsearchresultview.java

📁 一个cms内容管理平台
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                    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(" &lt;&lt;</a>&nbsp;&nbsp;\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("&nbsp;&nbsp;&nbsp;<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("\">&gt;&gt;");
                    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&lt;n&gt;) with parameters found in 
     * the given GET request string (appended params with "?value=param&value2=param2). 
     * &gt;n&lt; 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['&lt;getRequestUri&gt;'].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 + -