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

📄 cmstemplatenavigation.java

📁 cms是开源的框架
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
            }

            if (url.startsWith("/")) {
                // internal link
                url = link(url);
            }
            homeLabel = homeLabel.toUpperCase();

            result.append("<a class=\"");
            result.append(styleLink);
            result.append("\" href=\"");
            result.append(url);
            result.append("\" title=\"");
            result.append(homeLabel);
            result.append("\" target=\"");
            result.append(target);
            result.append("\">");
            result.append(homeLabel);
            result.append("</a>\n");
            firstItem = false;
        } else if (showHeadNavImages()) {
            // create a table to allow vertical alignment of images
            result.append("<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr>");
        }

        int count = -1;
        String showItemProperty;

        // check if head navigation has to be created manually from config file
        boolean manualHeadConfig = isHeadNavManual();

        List navElements = new ArrayList();
        if (manualHeadConfig) {
            // manual configuration, get List of nav items from config file
            navElements = getHeadNavItemsFromConfig(0, "0");
        } else {
            // automatic, get folder navigation
            navElements = getNavigation().getNavigationForFolder(getHeadNavFolder());
        }
        for (int i = 0; i < navElements.size(); i++) {
            CmsJspNavElement nav = (CmsJspNavElement)navElements.get(i);
            String link = nav.getResourceName();
            if (link.startsWith("/")) {
                link = link(link);
            }
            showItemProperty = getHeadNavItemDefaultStringValue();
            if (getCmsObject().existsResource(nav.getResourceName())) {
                showItemProperty = property(
                    PROPERTY_HEADNAV_USE,
                    nav.getResourceName(),
                    getHeadNavItemDefaultStringValue());
            } else if (LOG.isWarnEnabled()) {
                LOG.warn(Messages.get().getBundle().key(
                    Messages.LOG_NAVIGATION_CONFIG_ERR_2,
                    nav.getResourceName(),
                    getRequestContext().getUri()));
            }
            boolean showItem = Boolean.valueOf(showItemProperty).booleanValue();
            if (manualHeadConfig || (nav.isFolderLink() && showItem)) {
                // create an entry for every folder
                count++;
                String navText = CmsEncoder.escapeXml(nav.getNavText().toUpperCase());
                String target = nav.getInfo();
                if (CmsStringUtil.isEmpty(target)) {
                    target = "_self";
                }
                if (showHeadNavImages()) {
                    // build row with images
                    result.append("<td style= \"vertical-align: middle\">");
                    result.append("<a");
                    if (showMenus()) {
                        result.append(" onmouseover=\"buttonMouseover(event, 'menu");
                        result.append(count);
                        result.append("');\"");
                        if (getHeadNavMenuClick()) {
                            // only show menus on mouse click
                            result.append(" onclick=\"return buttonClick(event, 'menu");
                            result.append(count);
                            result.append("');\"");
                        }
                    }
                    result.append(" title=\"");
                    result.append(navText);
                    result.append("\" href=\"");
                    result.append(link);
                    result.append("\" target=\"");
                    result.append(target);
                    result.append("\">");
                    result.append("<img src=\"");
                    result.append(link(nav.getNavImage()));
                    result.append("\" border=\"0\" alt=\"");
                    result.append(navText);
                    result.append("\">");
                    result.append("</a></td>\n");
                } else {
                    // build row with text links
                    if (!firstItem) {
                        result.append("<span class=\"");
                        result.append(styleSeparator);
                        result.append("\">|</span>\n");
                    }
                    result.append("<a");
                    if (showMenus()) {
                        result.append(" onmouseover=\"buttonMouseover(event, 'menu");
                        result.append(count);
                        result.append("');\"");
                        if (getHeadNavMenuClick()) {
                            // only show menus on mouse click
                            result.append(" onclick=\"return buttonClick(event, 'menu");
                            result.append(count);
                            result.append("');\"");
                        }
                    }
                    if (getHeadNavMarkCurrent() && getRequestContext().getUri().startsWith(nav.getResourceName())) {
                        // mark currently active top folder with bold font
                        result.append(" style=\"font-weight: bold;\"");
                    }
                    result.append(" class=\"");
                    result.append(styleLink);
                    result.append("\" title=\"");
                    result.append(navText);
                    result.append("\" href=\"");
                    result.append(link);
                    result.append("\" target=\"");
                    result.append(target);
                    result.append("\">");
                    result.append(navText);
                    result.append("</a>\n");
                }
                firstItem = false;
            }
        }

        if (showHeadNavImages()) {
            // close table
            result.append("</tr></table>");
        }

        result.append("\t<!-- End Topnavigation -->\n");
        result.append("</div>\n");
        return result.toString();
    }

    /**
     * Returns the html for the head navigation menus.<p>
     * 
     * This method only creates the menu entries, be sure to
     * build the head row calling the menus, too.<p>
     * 
     * @param styleClass the CSS class name of the &lt;div&gt; nodes
     * @return the html for the head navigation menus
     */
    public String buildNavigationHeadMenus(String styleClass) {

        boolean cacheNavEnabled = !getRequestContext().currentProject().isOnlineProject();
        String cacheKey = null;
        if (cacheNavEnabled) {
            // create unique cache key with: site, head nav folder, area folder, menu depth, show submenus flag
            StringBuffer key = new StringBuffer(8);
            key.append(getRequestContext().getSiteRoot());
            key.append("_");
            key.append(getHeadNavFolder().hashCode());
            key.append("_");
            key.append(getStartFolder().hashCode());
            key.append("_");
            key.append(getMenuDepth());
            key.append("_");
            key.append(showMenus());
            key.append("_");
            key.append(showAccessibleVersion());
            key.append("_");
            key.append(getLocale());
            if (isHeadNavManual()) {
                // for manual head nav configuration, append config path to cache key
                key.append("_");
                key.append(getConfigPath().hashCode());
            }
            cacheKey = key.toString();
            String cachedNav = CmsTemplateParts.getInstance().getPart(cacheKey);
            if (CmsStringUtil.isNotEmpty(cachedNav)) {
                // found previously cached navigation menu structure, return it
                return cachedNav;
            }
        }

        StringBuffer result = new StringBuffer(4096);

        if (showMenus()) {
            // only create navigation if the template is configured to show it

            // check if head navigation has to be created manually from config file
            boolean manualHeadConfig = isHeadNavManual();

            List navElements = new ArrayList();
            if (manualHeadConfig) {
                // manual configuration, get List of nav items from config file
                navElements = getHeadNavItemsFromConfig(0, "0");
            } else {
                // automatic, get folder navigation
                navElements = getNavigation().getNavigationForFolder(getHeadNavFolder());
            }

            int count = -1;
            String showItemProperty;
            for (int i = 0; i < navElements.size(); i++) {
                CmsJspNavElement foldernav = (CmsJspNavElement)navElements.get(i);
                showItemProperty = getHeadNavItemDefaultStringValue();
                if (getCmsObject().existsResource(foldernav.getResourceName())) {
                    showItemProperty = property(
                        PROPERTY_HEADNAV_USE,
                        foldernav.getResourceName(),
                        getHeadNavItemDefaultStringValue());
                } else if (LOG.isWarnEnabled()) {
                    LOG.warn(Messages.get().getBundle().key(
                        Messages.LOG_NAVIGATION_CONFIG_ERR_2,
                        foldernav.getResourceName(),
                        getRequestContext().getUri()));
                }
                boolean showItem = Boolean.valueOf(showItemProperty).booleanValue();
                if (manualHeadConfig || (foldernav.isFolderLink() && showItem)) {
                    // create a menu entry for every found folder
                    count++;
                    String subfolder = foldernav.getResourceName();

                    List subNav = new ArrayList();
                    String menuIndexes = null;
                    if (manualHeadConfig) {
                        menuIndexes = String.valueOf(i);
                        subNav = getHeadNavItemsFromConfig(1, menuIndexes);
                    } else {
                        // get all navigation elements of the sub folder
                        subNav = getNavigation().getNavigationForFolder(subfolder);
                    }
                    result.append(getMenuNavigation(subNav, styleClass, "menu" + count, 1, menuIndexes));
                }
            }

            if (cacheNavEnabled) {
                // cache the generated navigation submenu output
                CmsTemplateParts.getInstance().addPart(cacheKey, result.toString());
            }
        }
        return result.toString();
    }

    /**
     * Returns the html for the left navigation tree.<p>
     * 
     * @return the html for the left navigation tree
     */
    public String buildNavigationLeft() {

        StringBuffer result = new StringBuffer(2048);
        if (showNavLeftTree()) {
            // create navigation tree
            result.append("<!-- Start navigation left -->\n");
            if (!showAccessibleVersion()) {
                result.append("\t<div style=\"line-height: 1px; font-size: 1px; display: block; height: 4px;\">&nbsp;</div>\n");
            }
            // get start and end level of the displayed tree
            int startLevel = 1;
            if (showNavLeftSelected()) {
                // follow selection in head navigation
                startLevel = CmsResource.getPathLevel(getHeadNavFolder());
            } else {
                // create default navigation
                startLevel = CmsResource.getPathLevel(getStartFolder());
            }
            int endLevel = startLevel + 2;

            // get requested uri
            String uri = getRequestContext().getUri();

            // get the navigation tree list
            List navElements = getNavigation().getNavigationTreeForFolder(
                getRequestContext().getUri(),
                startLevel,
                endLevel);
            int oldLevel = -1;
            for (int i = 0; i < navElements.size(); i++) {
                CmsJspNavElement nav = (CmsJspNavElement)navElements.get(i);
                // flag to determine if nav element is shown
                boolean showElement = true;

                // get resource name of navelement
                String resName = nav.getResourceName();

                // compute current level from 1 to 3
                int level = nav.getNavTreeLevel() - (startLevel - 1);

                // check if current navelement is active
                String styleClass = "navleft";
                if (uri.equals(resName) || (nav.isFolderLink() && isDefaultFile(resName, uri))) {
                    styleClass += "active";
                }

                // check if current element is shown when left navigation follows head menu
                if (showNavLeftSelected()) {
                    if (level <= 1 && !uri.startsWith(resName)) {
                        // do not show element, does not belong to selected area
                        showElement = false;
                    }
                }

                if (showElement) {
                    // element is shown
                    if (oldLevel != -1) {
                        // manage level transitions
                        if (level == oldLevel) {
                            // same level, close only previous list item
                            result.append("</li>\n");
                        } else if (level < oldLevel) {
                            // lower level transition, determine delta
                            int delta = oldLevel - level;
                            boolean itemClosed = false;
                            for (int k = 0; k < delta; k++) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -