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

📄 cmsfilelist.java

📁 内容管理
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
        }
        else {
            accessFlags.append("-");
        }
        return accessFlags.toString();
    }

    /**
     * Selects the context menue displayed for this entry iin the file list.
     * @param cms The CmsObject.
     * @param res The resource displayed in this entry.
     * @param template The file list template.
     * @return String containing the name of the context menu.
     * @throws Throws CmsException if something goes wrong.
     *
     */

    private String getContextMenue(CmsObject cms, CmsResource res,
            CmsXmlWpTemplateFile template) throws CmsException {
        String contextMenu = null;
        if(res.getState() != C_STATE_DELETED) {

            // test if the resource is in the project or if the online project is displayed
            if((cms.getRequestContext().currentProject().isOnlineProject())
                    || (!res.inProject(cms.getRequestContext().currentProject()))) {
                if(res.isFile()) {
                    contextMenu = C_DEFAULT_CONTEXTMENU;
                }
                else {
                    contextMenu = C_DEFAULT_CONTEXTMENUFOLDER;
                }
            }
            else {

                // get the type of the resource
                I_CmsResourceType type = cms.getResourceType(res.getType());

                // get the context menu
                contextMenu = type.getResourceTypeName();

                // test if this resource is locked
                if(res.isLocked()) {
                    contextMenu += C_CONTEXT_LOCK;

                    // is this resource locked by the current user
                    if(cms.getRequestContext().currentUser().getId() == res.isLockedBy()) {
                        contextMenu += C_CONTEXT_LOCKUSER;
                    }
                }
            }
        }
        else {
            contextMenu = "";
        }
        return contextMenu;
    }

    /**
     * Sets the default preferences for the current user if those values are not available.
     * @return Hashtable with default preferences.
     */

    private int getDefaultPreferences(CmsObject cms) {
        int filelist;
        String explorerSettings = (String)cms.getRequestContext().currentUser().getAdditionalInfo(C_ADDITIONAL_INFO_EXPLORERSETTINGS);
        if(explorerSettings != null) {
            filelist = new Integer(explorerSettings).intValue();
        }
        else {
            filelist = C_FILELIST_NAME + C_FILELIST_TITLE + C_FILELIST_TYPE + C_FILELIST_CHANGED;
        }
        return filelist;
    }

    /**
     * Gets a list of file and folders of a given vector of folders and files.
     * @param cms The CmsObject.
     * @param list Vector of folders and files.
     * @param doc The Template containing the list definitions.
     * @param lang The language defintion template.
     * @param parameters  Hashtable containing all user parameters.
     * @param callingObject The object calling this class.
     * @param config The config file.
     * @param columnsMethod.
     * @return HTML-Code of the file list.
     */

    private Object getFilelist(CmsObject cms, Vector list, A_CmsXmlContent doc,
            CmsXmlLanguageFile lang, Hashtable parameters, I_CmsFileListUsers callingObject,
            CmsXmlWpConfigFile config) throws CmsException {
        StringBuffer output = new StringBuffer();
        String title = null;
        int contextNumber = 0;
        String[] tagList =  {
            C_CONTEXT_LINK, C_CONTEXT_MENU, C_CONTEXT_NUMBER, C_FILELIST_ICON_VALUE,
            C_FILELIST_LINK_VALUE, C_FILELIST_LOCK_VALUE, C_FILELIST_NAME_VALUE,
            C_FILELIST_TITLE_VALUE, C_FILELIST_TYPE_VALUE, C_FILELIST_CHANGED_VALUE,
            C_FILELIST_SIZE_VALUE, C_FILELIST_STATE_VALUE, C_FILELIST_OWNER_VALUE,
            C_FILELIST_GROUP_VALUE, C_FILELIST_ACCESS_VALUE, C_FILELIST_LOCKED_VALUE,
            C_NAME_FILEFOLDER, C_LOCKEDBY, C_FILELIST_CLASS_VALUE
        };
        String servlets = cms.getRequestContext().getRequest().getServletUrl();
        I_CmsSession session = cms.getRequestContext().getSession(true);
        String currentFilelist = (String)session.getValue(C_PARA_FILELIST);
        if((currentFilelist == null) || (currentFilelist.length() == 0)) {
            currentFilelist = "/";
        }

        //get the template
        CmsXmlWpTemplateFile template = (CmsXmlWpTemplateFile)doc;
        Enumeration enum;

        // file and folder object required to create the file list.
        // CmsFile file;
        CmsResource file;
        CmsResource res;

        // show the table head with all required columns.
        // Check which flags in the user preferences are NOT set and delete those columns in
        // the table generating the file list.
        int filelist = getDefaultPreferences(cms);

        // filelist contains a bit pattern indicating which columns have to be shown or hidden.
        // The calling object may now modify this pattern
        filelist = callingObject.modifyDisplayedColumns(cms, filelist);
        template = checkDisplayedColumns(filelist, template, "");
        template = checkDisplayedColumns(filelist, template, C_FILELIST_SUFFIX_VALUE);

        // add the list header to the output.
        output.append(template.getProcessedDataValue(C_LIST_HEAD, callingObject));

        // set all Xml tags somehow so that we can use fastSetXmlData below
        for(int i = 0;i < tagList.length;i++) {
            template.setData(tagList[i], "");
        }

        // go through all folders and files
        enum = list.elements();
        while(enum.hasMoreElements()) {
            res = (CmsResource)enum.nextElement();
            if(checkAccess(cms, res)) {
                template.setData("PREVIOUS", currentFilelist);
                if(res.isFolder()) {

                    // Set output style class according to the project and state of the file.
                    template.setData(C_FILELIST_CLASS_VALUE, getStyle(cms, res));

                    // set the icon
                    template.fastSetXmlData(C_CONTEXT_LINK, res.getAbsolutePath());
                    template.fastSetXmlData(C_CONTEXT_MENU, getContextMenue(cms, res, template));
                    template.fastSetXmlData(C_CONTEXT_NUMBER, new Integer(contextNumber++).toString());
                    I_CmsResourceType type = cms.getResourceType(res.getType());
                    String icon = getIcon(cms, type, config);
                    template.fastSetXmlData(C_FILELIST_ICON_VALUE, cms.getRequestContext().getRequest().getServletUrl() + config.getWpPicturePath() + icon);

                    // set the link, but only if the folder is not deleted
                    if(res.getState() != C_STATE_DELETED) {
                        template.fastSetXmlData(C_FILELIST_LINK_VALUE, res.getAbsolutePath());
                    }
                    else {
                        template.fastSetXmlData(C_FILELIST_LINK_VALUE, "#");
                    }

                    // set the lock icon if nescessary
                    template.fastSetXmlData(C_FILELIST_LOCK_VALUE, template.getProcessedDataValue(getLock(cms,
                            res, template, lang), callingObject));
                    if((filelist & C_FILELIST_NAME) != 0) {

                        // set the folder name
                        template.fastSetXmlData(C_FILELIST_NAME_VALUE, res.getName());
                    }
                    if((filelist & C_FILELIST_TITLE) != 0) {

                        // set the folder title
                        title = "";
                        try {
                            title = Encoder.escapeXml(cms.readProperty(res.getAbsolutePath(), C_PROPERTY_TITLE));
                        }
                        catch(CmsException e) {

                        }
                        if(title == null) {
                            title = "";
                        }
                        template.fastSetXmlData(C_FILELIST_TITLE_VALUE, title);
                    }
                    if((filelist & C_FILELIST_TYPE) != 0) {
                        String typename = type.getResourceTypeName();
                        typename = lang.getLanguageValue("fileicon." + typename);
                        template.fastSetXmlData(C_FILELIST_TYPE_VALUE, typename);
                    }
                    if((filelist & C_FILELIST_CHANGED) != 0) {

                        // get the folder date
                        long time = res.getDateLastModified();
                        template.fastSetXmlData(C_FILELIST_CHANGED_VALUE, getNiceDate(time));
                    }
                    if((filelist & C_FILELIST_SIZE) != 0) {

                        // get the folder size
                        template.fastSetXmlData(C_FILELIST_SIZE_VALUE, "");
                    }
                    if((filelist & C_FILELIST_STATE) != 0) {

                        // get the folder state
                        template.fastSetXmlData(C_FILELIST_STATE_VALUE, getState(cms, res, lang));
                    }
                    if((filelist & C_FILELIST_OWNER) != 0) {

                        // get the owner of the folder
                        CmsUser owner = cms.readOwner(res);
                        template.fastSetXmlData(C_FILELIST_OWNER_VALUE, owner.getName());
                    }
                    if((filelist & C_FILELIST_GROUP) != 0) {

                        // get the group of the folder
                        CmsGroup group = cms.readGroup(res);
                        template.fastSetXmlData(C_FILELIST_GROUP_VALUE, group.getName());
                    }
                    if((filelist & C_FILELIST_ACCESS) != 0) {

                        // get the access flags
                        int access = res.getAccessFlags();
                        template.fastSetXmlData(C_FILELIST_ACCESS_VALUE, getAccessFlags(access));
                    }
                    if((filelist & C_FILELIST_LOCKED) != 0) {

                        // get the locked by
                        int lockedby = res.isLockedBy();
                        if(lockedby == C_UNKNOWN_ID) {
                            template.fastSetXmlData(C_FILELIST_LOCKED_VALUE, "");
                        }
                        else {
                            template.fastSetXmlData(C_FILELIST_LOCKED_VALUE, cms.lockedBy(res).getName());
                        }
                    }

                    // Get all customized column values
                    callingObject.getCustomizedColumnValues(cms, template, res, lang);
                    template.fastSetXmlData(C_NAME_FILEFOLDER, template.getProcessedDataValue(getName(cms, res), this));
                }
                else {

                    // file=(CmsFile)res;
                    file = res;

                    // Set output style class according to the project and state of the file.
                    template.fastSetXmlData(C_FILELIST_CLASS_VALUE, getStyle(cms, file));

                    // set the icon
                    template.fastSetXmlData(C_CONTEXT_LINK, res.getAbsolutePath());
                    template.fastSetXmlData(C_CONTEXT_MENU, getContextMenue(cms, res, template));
                    template.fastSetXmlData(C_CONTEXT_NUMBER, new Integer(contextNumber++).toString());
                    I_CmsResourceType type = cms.getResourceType(file.getType());
                    String icon = getIcon(cms, type, config);
                    template.fastSetXmlData(C_FILELIST_ICON_VALUE, config.getWpPicturePath() + icon);

                    // set the link, but only if the resource is not deleted
                    if(res.getState() != C_STATE_DELETED) {
                        template.fastSetXmlData(C_FILELIST_LINK_VALUE, servlets + file.getAbsolutePath());
                    }
                    else {
                        template.fastSetXmlData(C_FILELIST_LINK_VALUE, "#");
                    }

                    // set the lock icon if nescessary
                    template.fastSetXmlData(C_FILELIST_LOCK_VALUE, template.getProcessedDataValue(getLock(cms, file, template, lang), callingObject));
                    if((filelist & C_FILELIST_NAME) != 0) {

                        // set the filename
                        template.fastSetXmlData(C_FILELIST_NAME_VALUE, file.getName());
                    }
                    if((filelist & C_FILELIST_TITLE) != 0) {

                        // set the file title
                        title = "";
                        try {
                            title = Encoder.escapeXml(cms.readProperty(file.getAbsolutePath(), C_PROPERTY_TITLE));
                        }
                        catch(CmsException e) {

                        }
                        if(title == null) {
                            title = "";
                        }
                        template.fastSetXmlData(C_FILELIST_TITLE_VALUE, title);
                    }
                    if((filelist & C_FILELIST_TYPE) != 0) {

⌨️ 快捷键说明

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