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