📄 cmshistorylist.java
字号:
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 + -