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

📄 cmsxmlnav.java

📁 OpenCms 是一个J2EE的产品
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
        // tagcontent determines the folder starting from root folder.
        // if tagcontent is null, then the navigation of root folder must be showed.
        if (!tagcontent.equals("")) {
            try {
                if (tagcontent.indexOf(",")!=-1) {
                    level=Integer.parseInt(tagcontent.substring(0, tagcontent.indexOf(",")));
                    exact=tagcontent.substring(tagcontent.indexOf(",")+1).toLowerCase();
                } else {
                    level=Integer.parseInt(tagcontent);
                }
            } catch (NumberFormatException e) {
                level=1;
                exact=tagcontent.toLowerCase();
                if (!exact.equals("true")) {
                    exact="false";
                }
            }
        }
        String currentFolder=extractFolder(cms, level, exact);
        if (currentFolder.equals(""))
            return "".getBytes();
        String rootFolder=CmsXmlTemplateLoader.getRequest(cms.getRequestContext()).getServletUrl() + currentFolder;
        return rootFolder.getBytes();
    }
    /**
     * gets the navigation of current folder.<p>
     *
     * @param cms CmsObject Object for accessing system resources
     * @param tagcontent Unused in this special case of a user method. Can be ignored
     * @param doc Reference to the A_CmsXmlContent object of the initiating XLM document
     * @param userObject Hashtable with parameters
     * @return byte[] with the content of this subelement
     * @throws CmsException if something goes wrong
     */
    public Object getNavCurrent(CmsObject cms, String tagcontent, A_CmsXmlContent doc, Object userObject)
            throws CmsException {
        // template file
        CmsXmlTemplateFile template=(CmsXmlTemplateFile)doc;
        // check whether there exist entry datablock
        if (!template.hasData("naventry")) {
            return "".getBytes();
        }
        String currentFolder=CmsResource.getFolderPath(cms.getRequestContext().getUri());
        int level=extractLevel(cms, currentFolder)+1;
        String exact="false";
        // tagcontent determines the folder starting from root folder.
        // if tagcontent is null, then the navigation of root folder must be showed.
        if (!tagcontent.equals("")) {
            try {
                if (tagcontent.indexOf(",")!=-1) {
                    level=Integer.parseInt(tagcontent.substring(0, tagcontent.indexOf(",")));
                    exact=tagcontent.substring(tagcontent.indexOf(",")+1).toLowerCase();
                } else {
                    level=Integer.parseInt(tagcontent);
                }
            } catch (NumberFormatException e) {
                level=extractLevel(cms, currentFolder)+1;
                exact=tagcontent.toLowerCase();
                if (!exact.equals("true")) {
                    exact="false";
                }
            }
        }
        // get the folder of level
        currentFolder="/";
        StringTokenizer st = new StringTokenizer(CmsResource.getFolderPath(cms.getRequestContext().getUri()), "/");
        int count=st.countTokens()+1;
        if (exact.equals("true") && level!=count) {
            return "".getBytes();
        }
        while (st.hasMoreTokens()) {
            if (level>1) {
                currentFolder=currentFolder+st.nextToken()+"/";
                level--;
            } else {
                break;
            }
        }
        // register this folder for changes
        Vector vfsDeps = new Vector();
        vfsDeps.add(cms.readFolder(currentFolder));
        registerVariantDeps(cms, doc.getAbsoluteFilename(), null, null,
                        (Hashtable)userObject, vfsDeps, null, null);
        // get all resources in current folder
        List resources=cms.getSubFolders(currentFolder);
        List allFile=cms.getFilesInFolder(currentFolder);
        ((ArrayList)resources).ensureCapacity(resources.size() + allFile.size());
        Iterator e = allFile.iterator();
        while (e.hasNext()) {
            resources.add(e.next());
        }
        // if there is not exist current datablock then take the entry datablock
        if (!template.hasData("navcurrent")) {
            template.setData("navcurrent", template.getData("naventry"));
        }
        return buildNav(cms, doc, userObject, resources).getBytes();
    }
    /**
     * gets the navigation of files and folders,
     * by folders it is showed closed, if the folder is clicked then it is opened.<p>
     *
     * @param cms CmsObject Object for accessing system resources
     * @param tagcontent used in this special case of a user method. Can't be ignored
     * @param doc Reference to the A_CmsXmlContent object of the initiating XLM document
     * @param userObject Hashtable with parameters
     * @return byte[] with the content of this subelement
     * @throws CmsException if something goes wrong
     */
    public Object getNavFold(CmsObject cms, String tagcontent, A_CmsXmlContent doc, Object userObject)
            throws CmsException {
        // template file
        CmsXmlTemplateFile template=(CmsXmlTemplateFile)doc;
        // check whether there exist entry datablock
        if (!template.hasData("naventry")) {
            return "".getBytes();
        }
        int level=1;
        int[] count={0};
        String exact="false";
        // if level is zero or null or negative then all folders recursive must
        // be showed starting from root folder unless all folders stating from
        // specified level of parent folder.
        if (!tagcontent.equals("")) {
            try {
                if (tagcontent.indexOf(",")!=-1) {
                    level=Integer.parseInt(tagcontent.substring(0, tagcontent.indexOf(",")));
                    exact=tagcontent.substring(tagcontent.indexOf(",")+1).toLowerCase();
                } else {
                    level=Integer.parseInt(tagcontent);
                }
            } catch (NumberFormatException e) {
                level=1;
                exact=tagcontent.toLowerCase();
                if (!exact.equals("true")) {
                    exact="false";
                }
            }
        }
        // extract the folder
        String folder=extractFolder(cms, level, exact);
        if (folder.equals(""))
            return "".getBytes();
        //}
        // get uri, current folder, servletpath
        String requestedUri = cms.getRequestContext().getUri();
        String currentFolder=CmsResource.getFolderPath(cms.getRequestContext().getUri());
        String servletPath = CmsXmlTemplateLoader.getRequest(cms.getRequestContext()).getServletUrl();
        // register this folder for changes
        Vector vfsDeps = new Vector();
        vfsDeps.add(cms.readFolder(folder));
        registerVariantDeps(cms, doc.getAbsoluteFilename(), null, null,
                        (Hashtable)userObject, vfsDeps, null, null);
        // get all resources
        List resources=cms.getSubFolders(folder);
        List allFile=cms.getFilesInFolder(folder);
        ((ArrayList)resources).ensureCapacity(resources.size() + allFile.size());
        Iterator e = allFile.iterator();
        while (e.hasNext()) {
            resources.add(e.next());
        }

        String result="";
        // check wheather xml data blocks are defined.
        if (!template.hasData("navcurrent")) {
            template.setData("navcurrent", template.getData("naventry"));
        }
        if (!template.hasData("navstart")) {
            template.setData("navstart", "");
        }
        if (!template.hasData("navend")) {
            template.setData("navend", "");
        }
        result=buildNavFold(cms, template, userObject, resources, requestedUri, currentFolder, servletPath, level, count);

        return result.getBytes();
    }
    /**
     * gets the navigation of specified level of parent folder.<p>
     *
     * @param cms CmsObject Object for accessing system resources
     * @param tagcontent used in this special case of a user method. Can't be ignored
     * @param doc Reference to the A_CmsXmlContent object of the initiating XLM document
     * @param userObject Hashtable with parameters
     * @return byte[] with the content of this subelement
     * @throws CmsException if something goes wrong
     */
    public Object getNavParent(CmsObject cms, String tagcontent, A_CmsXmlContent doc, Object userObject)
            throws CmsException {

        // template file
        CmsXmlTemplateFile template=(CmsXmlTemplateFile)doc;
        // check whether there exist entry datablock
        if (!template.hasData("naventry")) {
            return "".getBytes();
        }
        int level=1;
        String exact="";
        // tagcontent determines the folder starting from parent folder.
        // if tagcontent is null, zero or negative, then the navigation of current
        // folder must be showed.
        if (!tagcontent.equals("")) {
            try {
                if (tagcontent.indexOf(",")!=-1) {
                    level=Integer.parseInt(tagcontent.substring(0, tagcontent.indexOf(",")));
                    exact=tagcontent.substring(tagcontent.indexOf(",")+1).toLowerCase();
                } else {
                    level=Integer.parseInt(tagcontent);
                }
            } catch (NumberFormatException e) {
                level=1;
                exact=tagcontent.toLowerCase();
                if (!exact.equals("true")) {
                    exact="false";
                }
            }
        }
        // level is converted to negative number, so I can use the method
        // "extractFolder" for positive and negative numbers. Negative number
        // determines the parent folder level starting from current folder and
        // positive number determines the level starting ftom root folder.
        String currentFolder=extractFolder(cms, ((-1)*level), exact);
        if (currentFolder.equals(""))
            return "".getBytes();
        // register this folder for changes
        Vector vfsDeps = new Vector();
        vfsDeps.add(cms.readFolder(currentFolder));
        registerVariantDeps(cms, doc.getAbsoluteFilename(), null, null,
                        (Hashtable)userObject, vfsDeps, null, null);
        List resources=cms.getSubFolders(currentFolder);
        List allFile=cms.getFilesInFolder(currentFolder);

        ((ArrayList)resources).ensureCapacity(resources.size() + allFile.size());
        Iterator e = allFile.iterator();
        while (e.hasNext()) {
            resources.add(e.next());
        }
        // if there is not exist current datablock then take the entry datablock
        if (!template.hasData("navcurrent")) {
            template.setData("navcurrent", template.getData("naventry"));
        }
        return buildNav(cms, doc, userObject, resources).getBytes();
    }

    /**
     * gets the navigation of root folder or parent folder starting from root folder.<p>
     *
     * @param cms CmsObject Object for accessing system resources
     * @param tagcontent Unused in this special case of a user method. Can be ignored
     * @param doc Reference to the A_CmsXmlContent object of the initiating XLM document
     * @param userObject Hashtable with parameters
     * @return byte[] with the content of this subelement
     * @throws CmsException if something goes wrong
     */
    public Object getNavRoot(CmsObject cms, String tagcontent, A_CmsXmlContent doc, Object userObject)
            throws CmsException {

        // template file
        CmsXmlTemplateFile template=(CmsXmlTemplateFile)doc;
        // check whether there exist entry datablock
        if (!template.hasData("naventry")) {
            return "".getBytes();
        }
        int level=1;
        String exact="false";
        // tagcontent determines the folder starting from root folder.
        // if tagcontent is null, then the navigation of root folder must be showed.
        if (!tagcontent.equals("")) {
            try {
                if (tagcontent.indexOf(",")!=-1) {
                    level=Integer.parseInt(tagcontent.substring(0, tagcontent.indexOf(",")));
                    exact=tagcontent.substring(tagcontent.indexOf(",")+1).toLowerCase();
                } else {
                    level=Integer.parseInt(tagcontent);
                }
            } catch (NumberFormatException e) {
                level=1;

⌨️ 快捷键说明

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