📄 cmsfilelist.java
字号:
* @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() != CmsResource.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()))) {
|| (!cms.isInsideCurrentProject(cms.getSitePath(res)))) {
if(res.isFile()) {
contextMenu = C_DEFAULT_CONTEXTMENU;
}
else {
contextMenu = C_DEFAULT_CONTEXTMENUFOLDER;
}
}
else {
// get the type of the resource
I_CmsResourceType type = OpenCms.getResourceManager().getResourceType(res.getTypeId());
// get the context menu
contextMenu = type.getTypeName();
CmsLock lock = cms.getLock(res);
// test if this resource is locked
if(!lock.isNullLock()) {
contextMenu += C_CONTEXT_LOCK;
// is this resource locked by the current user
if(cms.getRequestContext().currentUser().getId().equals(lock.getUserId())) {
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(CmsUserSettings.ADDITIONAL_INFO_EXPLORERSETTINGS);
if(explorerSettings != null) {
filelist = new Integer(explorerSettings).intValue();
}
else {
filelist = CmsUserSettings.FILELIST_NAME + CmsUserSettings.FILELIST_TITLE + CmsUserSettings.FILELIST_TYPE + CmsUserSettings.FILELIST_DATE_LASTMODIFIED;
}
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, List 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, CmsWorkplaceDefault.C_FILELIST_ICON_VALUE,
CmsWorkplaceDefault.C_FILELIST_LINK_VALUE, CmsWorkplaceDefault.C_FILELIST_LOCK_VALUE, CmsWorkplaceDefault.C_FILELIST_NAME_VALUE,
CmsWorkplaceDefault.C_FILELIST_TITLE_VALUE, CmsWorkplaceDefault.C_FILELIST_TYPE_VALUE, CmsWorkplaceDefault.C_FILELIST_CHANGED_VALUE,
CmsWorkplaceDefault.C_FILELIST_SIZE_VALUE, CmsWorkplaceDefault.C_FILELIST_STATE_VALUE, CmsWorkplaceDefault.C_FILELIST_OWNER_VALUE,
CmsWorkplaceDefault.C_FILELIST_GROUP_VALUE, CmsWorkplaceDefault.C_FILELIST_ACCESS_VALUE, CmsWorkplaceDefault.C_FILELIST_LOCKED_VALUE,
C_NAME_FILEFOLDER, C_LOCKEDBY, CmsWorkplaceDefault.C_FILELIST_CLASS_VALUE
};
String servlets = CmsXmlTemplateLoader.getRequest(cms.getRequestContext()).getServletUrl();
// I_CmsSession session = CmsXmlTemplateLoader.getSession(cms.getRequestContext(), true);
// String currentFilelist = (String)session.getValue(C_PARA_FILELIST);
String currentFilelist = CmsWorkplaceAction.getCurrentFolder(CmsXmlTemplateLoader.getRequest(cms.getRequestContext()).getOriginalRequest());
if((currentFilelist == null) || (currentFilelist.length() == 0)) {
currentFilelist = "/";
}
//get the template
CmsXmlWpTemplateFile template = (CmsXmlWpTemplateFile)doc;
Iterator en = null;
// 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, CmsWorkplaceDefault.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
en = list.iterator();
while(en.hasNext()) {
res = (CmsResource)en.next();
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(CmsWorkplaceDefault.C_FILELIST_CLASS_VALUE, getStyle(cms, res));
// set the icon
template.fastSetXmlData(C_CONTEXT_LINK, cms.getSitePath(res));
template.fastSetXmlData(C_CONTEXT_MENU, getContextMenue(cms, res, template));
template.fastSetXmlData(C_CONTEXT_NUMBER, new Integer(contextNumber++).toString());
I_CmsResourceType type = OpenCms.getResourceManager().getResourceType(res.getTypeId());
String icon = getIcon(cms, type, config);
template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_ICON_VALUE, CmsXmlTemplateLoader.getRequest(cms.getRequestContext()).getServletUrl() + config.getWpPicturePath() + icon);
// set the link, but only if the folder is not deleted
if(res.getState() != CmsResource.STATE_DELETED) {
template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_LINK_VALUE, cms.getSitePath(res));
}
else {
template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_LINK_VALUE, "#");
}
// set the lock icon if nescessary
template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_LOCK_VALUE, template.getProcessedDataValue(getLock(cms,
res, template, lang), callingObject));
if((filelist & CmsUserSettings.FILELIST_NAME) != 0) {
// set the folder name
template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_NAME_VALUE, res.getName());
}
if((filelist & CmsUserSettings.FILELIST_TITLE) != 0) {
// set the folder title
title = "";
try {
title = CmsEncoder.escapeXml(cms.readProperty(cms.getSitePath(res), CmsPropertyDefinition.PROPERTY_TITLE));
}
catch(CmsException e) {
}
if(title == null) {
title = "";
}
template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_TITLE_VALUE, title);
}
if((filelist & CmsUserSettings.FILELIST_TYPE) != 0) {
String typename = type.getTypeName();
typename = lang.getLanguageValue("fileicon." + typename);
template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_TYPE_VALUE, typename);
}
if((filelist & CmsUserSettings.FILELIST_DATE_LASTMODIFIED) != 0) {
// get the folder date
long time = res.getDateLastModified();
template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_CHANGED_VALUE, getNiceDate(time));
}
if((filelist & CmsUserSettings.FILELIST_SIZE) != 0) {
// get the folder size
template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_SIZE_VALUE, "");
}
if((filelist & CmsUserSettings.FILELIST_STATE) != 0) {
// get the folder state
template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_STATE_VALUE, getState(cms, res, lang));
}
// TODO: Check if this is still needed
/*
if((filelist & C_FILELIST_USER_CREATED) != 0) {
// get the owner of the folder
CmsUser owner = cms.readOwner(res);
template.fastSetXmlData(C_FILELIST_OWNER_VALUE, owner.getName());
}
*/
// TODO: Check if this is still needed
/*
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());
}
*/
// TODO: remove later
/*
if((filelist & C_FILELIST_ACCESS) != 0) {
// get the access flags
// int access = res.getAccessFlags();
template.fastSetXmlData(C_FILELIST_ACCESS_VALUE, cms.getPermissionString(res.getName()));
}
*/
if((filelist & CmsUserSettings.FILELIST_LOCKEDBY) != 0) {
// get the locked by
CmsLock lock = cms.getLock(res);
if(lock.isNullLock()) {
template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_LOCKED_VALUE, "");
}
else {
template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_LOCKED_VALUE, cms.readUser(lock.getUserId()).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(CmsWorkplaceDefault.C_FILELIST_CLASS_VALUE, getStyle(cms, file));
// set the icon
template.fastSetXmlData(C_CONTEXT_LINK, cms.getSitePath(res));
template.fastSetXmlData(C_CONTEXT_MENU, getContextMenue(cms, res, template));
template.fastSetXmlData(C_CONTEXT_NUMBER, new Integer(contextNumber++).toString());
I_CmsResourceType type = OpenCms.getResourceManager().getResourceType(file.getTypeId());
String icon = getIcon(cms, type, config);
template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_ICON_VALUE, config.getWpPicturePath() + icon);
// set the link, but only if the resource is not deleted
if(res.getState() != CmsResource.STATE_DELETED) {
template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_LINK_VALUE, servlets + cms.getSitePath(file));
}
else {
template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_LINK_VALUE, "#");
}
// set the lock icon if nescessary
template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_LOCK_VALUE, template.getProcessedDataValue(getLock(cms, file, template, lang), callingObject));
if((filelist & CmsUserSettings.FILELIST_NAME) != 0) {
// set the filename
template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_NAME_VALUE, file.getName());
}
if((filelist & CmsUserSettings.FILELIST_TITLE) != 0) {
// set the file title
title = "";
try {
title = CmsEncoder.escapeXml(cms.readProperty(cms.getSitePath(file), CmsPropertyDefinition.PROPERTY_TITLE));
}
catch(CmsException e) {
}
if(title == null) {
title = "";
}
template.fastSetXmlData(CmsWorkplaceDefault.C_FILELIST_TITLE_VALUE, title);
}
if((filelist & CmsUserSettings.FILELIST_TYPE) != 0) {
// set the file type
String typename = type.getTypeName();
typename = lang.getLanguageValue("fileicon." + typename);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -