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

📄 cmsxmlnav.java

📁 java 编写的程序
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
            // determines the parent folder level starting from current folder and
            // positive number determines the level starting ftom root folder.
            currentFolder=extractFolder(cms,((-1)*level));
        }
        // 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);
        Vector resources=cms.getSubFolders(currentFolder);
        Vector allFile=cms.getFilesInFolder(currentFolder);

        resources.ensureCapacity(resources.size() + allFile.size());
        Enumeration e = allFile.elements();
        while (e.hasMoreElements()) {
            resources.addElement(e.nextElement());
        }
        // 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.
     *
     * @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 userObj Hashtable with parameters.
     * @return byte[] with the content of this subelement.
     * @exception CmsException
     */
    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=0;
        // 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 {
                level=Integer.parseInt(tagcontent);
            } catch(NumberFormatException e) {
                throw new CmsException(e.getMessage());
            }
        }
        String currentFolder="";
        if (level<=0) {
            currentFolder=cms.rootFolder().getAbsolutePath();
        } else {
            currentFolder=extractFolder(cms,level);
        }
        // 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, it means all files and folders.
        Vector resources=cms.getSubFolders(currentFolder);
        Vector allFile=cms.getFilesInFolder(currentFolder);
        resources.ensureCapacity(resources.size() + allFile.size());
        Enumeration e = allFile.elements();
        while (e.hasMoreElements()) {
            resources.addElement(e.nextElement());
        }
        // 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 folders recursive.
     *
     * @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 userObj Hashtable with parameters.
     * @return byte[] with the content of this subelement.
     * @exception CmsException
     */
    public Object getNavTree(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=0;
        int depth=0;
        int[] count={0};
        // if there is not any depth then it must not be tested in a if condition
        boolean depthIsNull=true;
        // 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 {
                // comma shows that there is two parameters: level,depth
                // otherwise there is one parameter: level
                if (tagcontent.indexOf(",")!=-1) {
                    level=Integer.parseInt(tagcontent.substring(0,tagcontent.indexOf(",")));
                    depth=Integer.parseInt(tagcontent.substring(tagcontent.indexOf(",")+1));
                } else {
                    level=Integer.parseInt(tagcontent);
                }
            } catch(NumberFormatException e) {
                throw new CmsException(e.getMessage());
            }
        }
        // if level is not entered or it is less than zero then folder is the root folder
        // otherwise the folder must be extracted accordeing to the entered level.
        String folder="";
        if (level<=0) {
            folder=cms.rootFolder().getAbsolutePath();
        } else {
            folder=extractFolder(cms,level);
        }
        if (depth>0) {
            depthIsNull=false;
        }
        // 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 folders in specified folder
        Vector resources=cms.getSubFolders(folder);
        // get all files in specified folder
        Vector allFile=cms.getFilesInFolder(folder);
        // get a vector of all files und folders
        resources.ensureCapacity(resources.size() + allFile.size());
        Enumeration e = allFile.elements();
        while (e.hasMoreElements()) {
            resources.addElement(e.nextElement());
        }
        // get the uri,servletpath and current folder
        String requestedUri = cms.getRequestContext().getUri();
        String currentFolder=cms.getRequestContext().currentFolder().getAbsolutePath();
        String servletPath = cms.getRequestContext().getRequest().getServletUrl();

        String result="";
        // check whether xml data blocks are defined.
        // The main datablock is entry, it must be defined, the others will get
        // the same datablock if they don't exist.
        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=buildNavTree(cms,template,userObject,resources,requestedUri,currentFolder,servletPath,level,depth,depthIsNull,count);

        return result.getBytes();
    }

    /**
     * gets a specified property of current folder.
     *
     * @param cms A_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 userObj Hashtable with parameters.
     * @return byte[] with the content of this subelement.
     * @exception CmsException
     */
    public Object getPropertyCurrent(CmsObject cms, String tagcontent, A_CmsXmlContent doc, Object userObject)
        throws CmsException {
        String property="";
        // tagcontent must contain the property definition name.
        if (!tagcontent.equals("")) {
            String currentFolder=cms.getRequestContext().currentFolder().getAbsolutePath();
            property=cms.readProperty(currentFolder, tagcontent);
            property=(property!=null?property:"");
            // 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);
        }
        return (property.getBytes());
    }


    /**
     * gets a specified property of specified folder starting from current folder.
     *
     * @param cms A_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 userObj Hashtable with parameters.
     * @return byte[] with the content of this subelement.
     * @exception CmsException
     */
    public Object getPropertyParent(CmsObject cms, String tagcontent, A_CmsXmlContent doc, Object userObject)
        throws CmsException {
        int level=0;
        String property="";
        // tagcontent determines the parent folder starting from current folder and
        // the property definition name sparated by a comma.
        if (!tagcontent.equals("")) {
            try {
                level=Integer.parseInt(tagcontent.substring(0,tagcontent.indexOf(",")));
            } catch(NumberFormatException e) {
                throw new CmsException(e.getMessage());
            }
            String currentFolder="";
            if (level<=0) {
                currentFolder=cms.getRequestContext().currentFolder().getAbsolutePath();
            } else {
                // 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.
                currentFolder=extractFolder(cms,((-1)*level));
            }
            property=cms.readProperty(currentFolder, tagcontent.substring(tagcontent.indexOf(",")+1));
            property=(property!=null?property:"");
            // 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);
        }
        return (property.getBytes());
    }

    /**
     * gets a specified property of specified folder starting from root.
     *
     * @param cms A_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 userObj Hashtable with parameters.
     * @return byte[] with the content of this subelement.
     * @exception CmsException
     */
    public Object getPropertyRoot(CmsObject cms, String tagcontent, A_CmsXmlContent doc, Object userObject)
        throws CmsException {
        int level=0;
        String property="";
        // tagcontent determines the folder starting from root folder and
        // the property definition name sparated by a comma.
        if (!tagcontent.equals("")) {
            try {
                level=Integer.parseInt(tagcontent.substring(0,tagcontent.indexOf(",")));
            } catch(NumberFormatException e) {
                throw new CmsException(e.getMessage());
            }
            String currentFolder="";
            if (level<=0) {
                currentFolder=currentFolder=cms.rootFolder().getAbsolutePath();
            } else {
                currentFolder=extractFolder(cms,level);
            }
            property=cms.readProperty(currentFolder, tagcontent.substring(tagcontent.indexOf(",")+1));
            property=(property!=null?property:"");
            // 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);
        }
        return (property.getBytes());
    }


    /**
     * gets a specified property of uri.
     *
     * @param cms A_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 userObj Hashtable with parameters.
     * @return byte[] with the content of this subelement.
     * @exception CmsException
     */
    public Object getPropertyUri(CmsObject cms, String tagcontent, A_CmsXmlContent doc, Object userObject)
        throws CmsException {
        String property="";
        String requestedUri = cms.getRequestContext().getUri();
        property=cms.readProperty(requestedUri, tagcontent);
        property=(property!=null?property:"");
        // register this folder for changes
        Vector vfsDeps = new Vector();
        vfsDeps.add(cms.readFileHeader(requestedUri));
        registerVariantDeps(cms, doc.getAbsoluteFilename(), null, null,
                        (Hashtable)userObject, vfsDeps, null, null);
        return (property.getBytes());
    }

    /**
     * gets the caching information from the current template class.
     *
     * @param cms CmsObject Object for accessing system resources
     * @param templateFile Filename of the template file
     * @param elementName Element name of this template in our parent template.
     * @param parameters Hashtable with all template class parameters.
     * @param templateSelector template section that should be processed.
     * @return <EM>true</EM> if this class may stream it's results, <EM>false</EM> otherwise.
     */
    public CmsCacheDirectives getCacheDirectives(CmsObject cms, String templateFile, String elementName, Hashtable parameters, String templateSelector) {

        // First build our own cache directives.
        CmsCacheDirectives result = new CmsCacheDirectives(true);
        result.setCacheUri(true);
        // we don't need the renewAfterPublish function becource we use the new dependencies feature.
        result.noAutoRenewAfterPublish();
        return result;
    }
}

⌨️ 快捷键说明

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