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

📄 cmshistorylist.java

📁 OpenCms 是一个J2EE的产品
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    protected String defaultActionHtmlStart() {

        return getList().listJs(getLocale()) + dialogContentStart(getParamTitle());
    }
    
    /**
     * @see org.opencms.workplace.list.A_CmsListDialog#fillDetails(java.lang.String)
     */
    protected void fillDetails(String detailId) {

        // no-op
    }

    /**
     * @see org.opencms.workplace.list.A_CmsListDialog#getListItems()
     */
    protected List getListItems() throws CmsException {
        
        List result = new ArrayList();
        List backupFileHeaders = getCms().readAllBackupFileHeaders(getParamResource());           
        Iterator i = backupFileHeaders.iterator();
        while (i.hasNext()) {
            CmsBackupResource file = (CmsBackupResource)i.next();                
            // the tagId for the Backup project            
            int tagId = file.getTagId();
            //String version = .toString();
            CmsBackupProject project = getCms().readBackupProject(tagId);
            String versionId = new Integer(project.getVersionId()).toString();
            String filetype = String.valueOf(file.getTypeId());
            String dateLastModified = getMessages().getDateTime(file.getDateLastModified());             
            String datePublished = getMessages().getDateTime(project.getPublishingDate());
            CmsListItem item = getList().newItem(versionId);
            //version
            item.set(LIST_COLUMN_VERSION, new CmsVersionWrapper(new Integer(file.getVersionId())));
            // filename
            item.set(LIST_COLUMN_DATE_PUBLISHED, datePublished);
            // nicename
            item.set(LIST_COLUMN_DATE_LAST_MODIFIED, dateLastModified);
            // group           
            item.set(LIST_COLUMN_FILE_TYPE, filetype);
            // user           
            item.set(LIST_COLUMN_USER, readUserNameOfBackupFile(getCms(), file));
            // path           
            item.set(LIST_COLUMN_RESOURCE_PATH, file.getRootPath());
            // size 
            item.set(LIST_COLUMN_SIZE, new Integer(file.getLength()).toString());
            result.add(item);
        }
        CmsFile offlineFile = getCms().readFile(getParamResource(), CmsResourceFilter.IGNORE_EXPIRATION);
        
        // display offline version, if state is not unchanged
        if (offlineFile.getState() != CmsResource.STATE_UNCHANGED) {
            CmsListItem item = getList().newItem("-1");
            //version
            item.set(LIST_COLUMN_VERSION, new CmsVersionWrapper(OFFLINE_PROJECT));
            // filename
            item.set(LIST_COLUMN_DATE_PUBLISHED, "-");
            // nicename
            item.set(LIST_COLUMN_DATE_LAST_MODIFIED, getMessages().getDateTime(offlineFile.getDateLastModified()));
            // group           
            item.set(LIST_COLUMN_FILE_TYPE, String.valueOf(offlineFile.getTypeId()));
            // user           
            item.set(LIST_COLUMN_USER, getCms().readUser(offlineFile.getUserLastModified()).getName());
            // size 
            item.set(LIST_COLUMN_SIZE, new Integer(offlineFile.getLength()).toString());
            // path
            item.set(LIST_COLUMN_RESOURCE_PATH, offlineFile.getRootPath());
            result.add(item);
        }
        getList().getMetadata().getColumnDefinition(LIST_COLUMN_SEL1).setVisible(result.size() > 1);
        getList().getMetadata().getColumnDefinition(LIST_COLUMN_SEL2).setVisible(result.size() > 1);
        return result;
    }

    /** 
     * Returns the user last modified of a backup resource.<p>
     * 
     * @param cms the cms object
     * @param file the file to use
     * @return the user last modified of a backup resource
     * @throws CmsException if something goes wrong
     */
    public static String readUserNameOfBackupFile(CmsObject cms, CmsFile file) throws CmsException {
        String userName;
        try {
            userName = cms.readUser(file.getUserLastModified()).getName();
        } catch (CmsException e) {
            if (file instanceof CmsBackupResource) {
                userName = ((CmsBackupResource)file).getLastModifiedByName();
            } else {
                throw e;
            }
        }  
        return userName;
    }

    /**
     * Restores a backed up resource version.<p>
     * 
     * @throws CmsException if something goes wrong
     */
    protected void performRestoreOperation() throws CmsException {

        int tagId = Integer.parseInt(((CmsListItem)getSelectedItems().get(0)).getId());
        String resourcename = getCms().getSitePath(getCms().readResource(getParamResource()));
        checkLock(getParamResource());
        getCms().restoreResourceBackup(resourcename, tagId);
    }

    /**
     * @see org.opencms.workplace.list.A_CmsListDialog#setColumns(org.opencms.workplace.list.CmsListMetadata)
     */
    protected void setColumns(CmsListMetadata metadata) {
        
        CmsListColumnDefinition previewCol = new CmsListColumnDefinition(LIST_COLUMN_VIEW);
        previewCol.setName(Messages.get().container(Messages.GUI_HISTORY_COLS_VIEW_0));
        previewCol.setWidth("20");
        previewCol.setVisible(false);
        previewCol.setAlign(CmsListColumnAlignEnum.ALIGN_CENTER);
        previewCol.setSorteable(false);
        
        // create column for icon
        CmsListColumnDefinition restoreCol = new CmsListColumnDefinition(LIST_COLUMN_RESTORE);
        restoreCol.setName(Messages.get().container(Messages.GUI_HISTORY_COLS_RESTORE_0));
        restoreCol.setWidth("20");
        restoreCol.setAlign(CmsListColumnAlignEnum.ALIGN_CENTER);
        restoreCol.setListItemComparator(new CmsListItemActionIconComparator());
        restoreCol.setSorteable(false);

        // add icon action
        CmsListDirectAction restoreAction = new CmsListDirectAction(LIST_ACTION_RESTORE) {
            // do not show icon for offline version
            public boolean isVisible() {
                return !"-1".equals(getItem().getId().toString());
            }
        };
        restoreAction.setName(Messages.get().container(Messages.GUI_HISTORY_RESTORE_VERSION_0));
        restoreAction.setIconPath("tools/ex_history/buttons/restore.png");
        restoreAction.setConfirmationMessage(Messages.get().container(Messages.GUI_HISTORY_CONFIRMATION_0));
        restoreAction.setEnabled(true);
        
        restoreCol.addDirectAction(restoreAction);
        // add it to the list definition
        metadata.addColumn(restoreCol);
        
        // create column for icon
        CmsListColumnDefinition iconCol = new CmsListColumnDefinition(LIST_COLUMN_ICON);
        iconCol.setName(Messages.get().container(Messages.GUI_HISTORY_COLS_VIEW_0));
        iconCol.setWidth("20");
        iconCol.setAlign(CmsListColumnAlignEnum.ALIGN_CENTER);
        iconCol.setListItemComparator(new CmsListItemActionIconComparator());

        // add icon action
        CmsListDirectAction fileAction = new CmsListResourceIconAction(LIST_ACTION_VIEW, LIST_COLUMN_FILE_TYPE, getCms()) {
            public String defButtonHtml(CmsJspActionElement jsp, String id, String helpId, String name, String helpText,
                boolean enabled, String iconPath, String confirmationMessage, String onClick, boolean singleHelp) {
                StringBuffer jsCode = new StringBuffer(512);
                jsCode.append("window.open('");
                String versionId = getItem().getId().toString();
                if ("-1".equals(versionId)) {
                    // offline version
                    jsCode.append(jsp.link(jsp.getRequestContext().removeSiteRoot(getItem().get(LIST_COLUMN_RESOURCE_PATH).toString())));  
                } else {
                    jsCode.append(jsp.link(getBackupLink(getItem().get(LIST_COLUMN_RESOURCE_PATH).toString(), 
                        versionId)));
                }
                jsCode.append("','version','scrollbars=yes, resizable=yes, width=800, height=600')");
                return super.defButtonHtml(jsp, id, helpId, name, helpText, enabled,
                    iconPath, confirmationMessage, jsCode.toString(), singleHelp);
            }
        };
        fileAction.setName(Messages.get().container(Messages.GUI_HISTORY_PREVIEW_0));
        fileAction.setEnabled(true);
        iconCol.addDirectAction(fileAction);
        // add it to the list definition
        metadata.addColumn(iconCol);
        iconCol.setPrintable(false);
        
        // add column for version
        CmsListColumnDefinition versionCol = new CmsListColumnDefinition(LIST_COLUMN_VERSION);
        versionCol.setName(Messages.get().container(Messages.GUI_HISTORY_COLS_VERSION_0));
        versionCol.setWidth("5%");
        versionCol.setAlign(CmsListColumnAlignEnum.ALIGN_CENTER);
        metadata.addColumn(versionCol);

        // add column for file type
        CmsListColumnDefinition groupCol = new CmsListColumnDefinition(LIST_COLUMN_FILE_TYPE);
        groupCol.setVisible(false);
        metadata.addColumn(groupCol);
        
        // add column for resource path
        CmsListColumnDefinition pathCol = new CmsListColumnDefinition(LIST_COLUMN_RESOURCE_PATH);
        pathCol.setName(Messages.get().container(Messages.GUI_HISTORY_COLS_RESOURCE_PATH_0));
        pathCol.setAlign(CmsListColumnAlignEnum.ALIGN_LEFT);
        pathCol.setWidth("20%");
        metadata.addColumn(pathCol);
        
        // add column for date published
        CmsListColumnDefinition datePublishedCol = new CmsListColumnDefinition(LIST_COLUMN_DATE_PUBLISHED);
        datePublishedCol.setName(Messages.get().container(Messages.GUI_HISTORY_COLS_DATE_PUBLISHED_0));
        datePublishedCol.setWidth("20%");
        datePublishedCol.setAlign(CmsListColumnAlignEnum.ALIGN_LEFT);
        metadata.addColumn(datePublishedCol);

        // add column for date last modified
        CmsListColumnDefinition nicenameCol = new CmsListColumnDefinition(LIST_COLUMN_DATE_LAST_MODIFIED);
        nicenameCol.setName(Messages.get().container(Messages.GUI_HISTORY_COLS_DATE_LAST_MODIFIED_0));
        nicenameCol.setWidth("20%");
        nicenameCol.setAlign(CmsListColumnAlignEnum.ALIGN_LEFT);
        metadata.addColumn(nicenameCol);
        
        // add column for user modified
        CmsListColumnDefinition userCol = new CmsListColumnDefinition(LIST_COLUMN_USER);
        userCol.setName(Messages.get().container(Messages.GUI_HISTORY_COLS_USER_0));
        userCol.setWidth("12%");
        userCol.setAlign(CmsListColumnAlignEnum.ALIGN_LEFT);
        metadata.addColumn(userCol);
        
        // add column for date last modified
        CmsListColumnDefinition sizeCol = new CmsListColumnDefinition(LIST_COLUMN_SIZE);
        sizeCol.setName(Messages.get().container(Messages.GUI_HISTORY_COLS_SIZE_0));
        sizeCol.setWidth("13%");
        sizeCol.setAlign(CmsListColumnAlignEnum.ALIGN_LEFT);
        metadata.addColumn(sizeCol);

        // create column for radio button 1
        CmsListColumnDefinition radioSel1Col = new CmsListColumnDefinition(LIST_COLUMN_SEL1);
        radioSel1Col.setName(Messages.get().container(Messages.GUI_HISTORY_COLS_VERSION1_0));
        radioSel1Col.setWidth("20");
        radioSel1Col.setAlign(CmsListColumnAlignEnum.ALIGN_CENTER);
        radioSel1Col.setSorteable(false);
        // add item selection action
        CmsListItemSelectionAction sel1Action = new CmsListItemSelectionAction(LIST_RACTION_SEL1, LIST_MACTION_COMPARE);
        sel1Action.setName(Messages.get().container(Messages.GUI_HISTORY_FIRST_VERSION_0));
        sel1Action.setEnabled(true);
        radioSel1Col.addDirectAction(sel1Action);
        metadata.addColumn(radioSel1Col);

        // create column for radio button 2
        CmsListColumnDefinition radioSel2Col = new CmsListColumnDefinition(LIST_COLUMN_SEL2);
        radioSel2Col.setName(Messages.get().container(Messages.GUI_HISTORY_COLS_VERSION2_0));
        radioSel2Col.setWidth("20");
        radioSel2Col.setAlign(CmsListColumnAlignEnum.ALIGN_CENTER);
        radioSel2Col.setSorteable(false);
        
        // add item selection action
        CmsListItemSelectionAction sel2Action = new CmsListItemSelectionAction(LIST_RACTION_SEL2, LIST_MACTION_COMPARE);
        sel2Action.setName(Messages.get().container(Messages.GUI_HISTORY_SECOND_VERSION_0));
        sel2Action.setEnabled(true);
        radioSel2Col.addDirectAction(sel2Action);
        metadata.addColumn(radioSel2Col);
    }
    
    /**
     * Returns the link to a backup file.<p>
     * 
     * @param resourcePath the path of the file
     * @param versionId the version of the file
     * @return the link to a backup file
     */
    public static String getBackupLink(String resourcePath, String versionId) {
        StringBuffer link = new StringBuffer();
        link.append(CmsBackupResourceHandler.BACKUP_HANDLER);
        link.append(resourcePath);
        link.append('?');
        link.append(CmsBackupResourceHandler.PARAM_VERSIONID);
        link.append('=');
        link.append(versionId);
        return link.toString();
    }
    
    /**
     * @see org.opencms.workplace.list.A_CmsListDialog#setIndependentActions(org.opencms.workplace.list.CmsListMetadata)
     */
    protected void setIndependentActions(CmsListMetadata metadata) {

        // no-op
    }

    /**
     * @see org.opencms.workplace.list.A_CmsListDialog#setMultiActions(org.opencms.workplace.list.CmsListMetadata)
     */
    protected void setMultiActions(CmsListMetadata metadata) {

        // add compare action
        CmsListRadioMultiAction compareAction = new CmsListRadioMultiAction(
            LIST_MACTION_COMPARE,
            Arrays.asList(new String[] {LIST_RACTION_SEL1, LIST_RACTION_SEL2}));
        compareAction.setName(Messages.get().container(Messages.GUI_HISTORY_COMPARE_0));
        compareAction.setIconPath("tools/ex_history/buttons/compare.png");
        metadata.addMultiAction(compareAction);
    }
}

⌨️ 快捷键说明

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