📄 cmsexplorer.java
字号:
// position 19: name of project where the resource is locked in
int lockedInProject = CmsDbUtil.UNKNOWN_ID;
if (lock.isNullLock() && res.getState() != CmsResource.STATE_UNCHANGED) {
// resource is unlocked and modified
lockedInProject = res.getProjectLastModified();
} else {
if (res.getState() != CmsResource.STATE_UNCHANGED) {
// resource is locked and modified
lockedInProject = projectId;
} else {
// resource is locked and unchanged
lockedInProject = lock.getProjectId();
}
}
String lockedInProjectName;
try {
if (lockedInProject == CmsDbUtil.UNKNOWN_ID) {
// the resource is unlocked and unchanged
lockedInProjectName = "";
} else {
lockedInProjectName = getCms().readProject(lockedInProject).getName();
}
} catch (CmsException exc) {
// where did my project go?
if (LOG.isInfoEnabled()) {
LOG.info(exc);
}
lockedInProjectName = "";
}
content.append("\"");
content.append(lockedInProjectName);
content.append("\",");
// position 20: id of project where resource belongs to
content.append(lockedInProject);
content.append(",\"");
// position 21: project state, I=resource is inside current project, O=resource is outside current project
if (CmsProject.isInsideProject(projectResources, res)) {
content.append("I");
} else {
content.append("O");
}
content.append("\"");
content.append(");\n");
}
content.append("top.dU(document,");
content.append(numberOfPages);
content.append(",");
content.append(selectedPage);
content.append("); \n");
// display eventual error message
if (getSettings().getErrorMessage() != null) {
// display error message as JavaScript alert
content.append("alert(\"");
content.append(CmsStringUtil.escapeJavaScript(getSettings().getErrorMessage().key(getLocale())));
content.append("\");\n");
// delete error message container in settings
getSettings().setErrorMessage(null);
}
// display eventual broadcast message(s)
String message = getBroadcastMessageString();
if (CmsStringUtil.isNotEmpty(message)) {
// display broadcast as JavaScript alert
content.append("alert(decodeURIComponent(\"");
// the user has pending messages, display them all
content.append(CmsEncoder.escapeWBlanks(message, CmsEncoder.ENCODING_UTF_8));
content.append("\"));\n");
}
content.append("}\n");
return content.toString();
}
/**
* Determines the root folder of the current tree dependent on users setting of explorer view restriction.<p>
*
* @return the root folder resource name to display
*/
public String getRootFolder() {
String folder = "/";
if (getSettings().getUserSettings().getRestrictExplorerView()) {
folder = getSettings().getUserSettings().getStartFolder();
}
try {
getCms().readFolder(folder, CmsResourceFilter.IGNORE_EXPIRATION);
return folder;
} catch (CmsException e) {
// should usually never happen
if (LOG.isInfoEnabled()) {
LOG.info(e);
}
return "/";
}
}
/**
* @see org.opencms.workplace.CmsWorkplace#initWorkplaceRequestValues(org.opencms.workplace.CmsWorkplaceSettings, javax.servlet.http.HttpServletRequest)
*/
protected void initWorkplaceRequestValues(CmsWorkplaceSettings settings, HttpServletRequest request) {
String currentResource = request.getParameter(PARAMETER_RESOURCE);
String mode = request.getParameter(PARAMETER_MODE);
if (CmsStringUtil.isNotEmpty(mode)) {
settings.setExplorerMode(mode);
} else {
// null argument, use explorer view if no other view currently specified
if (!(VIEW_GALLERY.equals(settings.getExplorerMode()) || VIEW_LIST.equals(settings.getExplorerMode()))) {
settings.setExplorerMode(VIEW_EXPLORER);
}
}
boolean showLinks = Boolean.valueOf(request.getParameter(PARAMETER_SHOWLINKS)).booleanValue();
if (showLinks) {
// "showlinks" parameter found, set resource name
settings.setExplorerResource(currentResource);
} else {
// "showlinks" parameter not found
if (currentResource != null && currentResource.startsWith(LOCATION_SIBLING)) {
// given resource starts with "siblings:", list of siblings is shown
showLinks = true;
settings.setExplorerResource(currentResource.substring(LOCATION_SIBLING.length()));
} else {
if (CmsStringUtil.isNotEmpty(currentResource) && folderExists(getCms(), currentResource)) {
// resource is a folder, set resource name
settings.setExplorerResource(currentResource);
} else {
// other cases (resource null, no folder), first get the resource name from settings
showLinks = settings.getExplorerShowLinks();
currentResource = settings.getExplorerResource();
if (!resourceExists(getCms(), currentResource)) {
// resource does not exist, display root folder
settings.setExplorerResource("/");
showLinks = false;
}
}
}
}
settings.setExplorerShowLinks(showLinks);
String selectedPage = request.getParameter(PARAMETER_PAGE);
if (selectedPage != null) {
int page = 1;
try {
page = Integer.parseInt(selectedPage);
} catch (NumberFormatException e) {
// default is 1
if (LOG.isInfoEnabled()) {
LOG.info(e);
}
}
settings.setExplorerPage(page);
}
// the flaturl
settings.setExplorerFlaturl(request.getParameter(PARAMETER_FLATURL));
}
/**
* Checks if a folder with a given name exits in the VFS.<p>
*
* @param cms the current cms context
* @param folder the folder to check for
* @return true if the folder exists in the VFS
*/
private boolean folderExists(CmsObject cms, String folder) {
try {
CmsFolder test = cms.readFolder(folder, CmsResourceFilter.IGNORE_EXPIRATION);
if (test.isFile()) {
return false;
}
return true;
} catch (Exception e) {
return false;
}
}
/**
* Returns a list resources that should be displayed in the
* OpenCms Exlorer.<p>
*
* How the list is build depends on the current Workplace settings
* of the user.
*
* @param resource the resource to read the files from (usually a folder)
* @return a list of resources to display
*/
private List getResources(String resource) {
if (getSettings().getExplorerShowLinks()) {
// show all siblings of a resource
try {
// also return "invisible" siblings (the user might get confused if not all are returned)
return getCms().readSiblings(resource, CmsResourceFilter.ALL);
} catch (CmsException e) {
// should usually never happen
if (LOG.isInfoEnabled()) {
LOG.info(e);
}
return Collections.EMPTY_LIST;
}
} else if (VIEW_LIST.equals(getSettings().getExplorerMode())) {
// check if the list must show the list view or the check content view
I_CmsResourceCollector collector = getSettings().getCollector();
if (collector != null) {
// is this the collector for the list view
try {
return collector.getResults(getCms());
} catch (CmsException e) {
if (LOG.isInfoEnabled()) {
LOG.info(e);
}
}
}
return Collections.EMPTY_LIST;
} else if (VIEW_GALLERY.equals(getSettings().getExplorerMode())) {
// select galleries
A_CmsGallery gallery = A_CmsGallery.createInstance(getSettings().getGalleryType(), getJsp());
return gallery.getGalleries();
} else {
// default is to return a list of all files in the folder
try {
return getCms().getResourcesInFolder(resource, CmsResourceFilter.ONLY_VISIBLE);
} catch (CmsException e) {
// should usually never happen
if (LOG.isInfoEnabled()) {
LOG.info(e);
}
return Collections.EMPTY_LIST;
}
}
}
/**
* Sets the default preferences for the current user if those values are not available.<p>
*
* @return the int value of the default preferences
*/
private int getUserPreferences() {
CmsUserSettings settings = new CmsUserSettings(getCms());
return settings.getExplorerSettings();
}
/**
* Checks if a resource with a given name exits in the VFS.<p>
*
* @param cms the current cms context
* @param resource the resource to check for
* @return true if the resource exists in the VFS
*/
private boolean resourceExists(CmsObject cms, String resource) {
try {
cms.readResource(resource, CmsResourceFilter.ALL);
return true;
} catch (CmsException e) {
return false;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -