cmsworkplaceconfiguration.java
来自「找了很久才找到到源代码」· Java 代码 · 共 1,324 行 · 第 1/5 页
JAVA
1,324 行
2);
digester.addCallParam("*/" + N_WORKPLACE + "/" + N_EDITORPRECONDITIONS + "/" + N_EDITORPRECONDITION, 0, A_NAME);
digester.addCallParam("*/" + N_WORKPLACE + "/" + N_EDITORPRECONDITIONS + "/" + N_EDITORPRECONDITION, 1, A_CLASS);
// add rules for direct edit provider
digester.addObjectCreate(
"*/" + N_WORKPLACE + "/" + N_DIRECTEDITPROVIDER,
A_CLASS,
CmsConfigurationException.class);
digester.addCallMethod(
"*/" + N_WORKPLACE + "/" + N_DIRECTEDITPROVIDER,
I_CmsConfigurationParameterHandler.INIT_CONFIGURATION_METHOD);
digester.addSetNext("*/" + N_WORKPLACE + "/" + N_DIRECTEDITPROVIDER, "setDirectEditProvider");
// add rules for the workplace export points
digester.addCallMethod("*/" + N_WORKPLACE + "/" + N_EXPORTPOINTS + "/" + N_EXPORTPOINT, "addExportPoint", 2);
digester.addCallParam("*/" + N_WORKPLACE + "/" + N_EXPORTPOINTS + "/" + N_EXPORTPOINT, 0, A_URI);
digester.addCallParam("*/" + N_WORKPLACE + "/" + N_EXPORTPOINTS + "/" + N_EXPORTPOINT, 1, A_DESTINATION);
// add autolock rule
digester.addCallMethod("*/" + N_WORKPLACE + "/" + N_AUTOLOCK, "setAutoLock", 0);
// add XML content auto correction rule
digester.addCallMethod("*/" + N_WORKPLACE + "/" + N_XMLCONTENTAUTOCORRECTION, "setXmlContentAutoCorrect", 0);
// add user management enabled rule
digester.addCallMethod("*/" + N_WORKPLACE + "/" + N_ENABLEUSERMGMT, "setUserManagementEnabled", 0);
// add max file upload size rule
digester.addCallMethod("*/" + N_WORKPLACE + "/" + N_MAXUPLOADSIZE, "setFileMaxUploadSize", 0);
// add labeled folders rule
digester.addCallMethod("*/" + N_WORKPLACE + "/" + N_LABELEDFOLDERS + "/" + N_RESOURCE, "addLabeledFolder", 1);
digester.addCallParam("*/" + N_WORKPLACE + "/" + N_LABELEDFOLDERS + "/" + N_RESOURCE, 0, A_URI);
// add localized folders rule
digester.addCallMethod(
"*/" + N_WORKPLACE + "/" + N_LOCALIZEDFOLDERS + "/" + N_RESOURCE,
"addLocalizedFolder",
1);
digester.addCallParam("*/" + N_WORKPLACE + "/" + N_LOCALIZEDFOLDERS + "/" + N_RESOURCE, 0, A_URI);
// add fileViewSettings rules
String xPathPrefix = "*/" + N_RFSFILEVIEWESETTINGS;
digester.addObjectCreate(xPathPrefix, CmsRfsFileViewer.class);
digester.addBeanPropertySetter(xPathPrefix + "/" + N_FILEPATH);
digester.addBeanPropertySetter(xPathPrefix + "/" + N_ENABLED);
digester.addBeanPropertySetter(xPathPrefix + "/" + N_FILEENCODING);
digester.addBeanPropertySetter(xPathPrefix + "/" + N_ISLOGFILE);
digester.addBeanPropertySetter(xPathPrefix + "/" + N_WINDOWSIZE);
// Cms specific rule similar to SetNextRule with implicit first CmsObject argument (remains null).
digester.addRule(xPathPrefix, new CmsSetNextRule("setFileViewSettings", CmsRfsFileViewer.class));
// add explorer type rules
addExplorerTypeXmlRules(digester);
addDefaultAccessControlRules(digester);
addMultiContextMenuRules(digester);
addContextMenuRules(digester);
addUserInfoRules(digester);
addDefaultPreferencesRules(digester);
// the customized workplace foot
xPathPrefix = "*/" + N_WORKPLACE + "/" + N_WORKPLACECUSTOMFOOT;
digester.addObjectCreate(xPathPrefix, CmsWorkplaceCustomFoot.class);
digester.addCallMethod(xPathPrefix + "/" + N_BACKGROUNDCOLOR, "setBackgroundColor", 0);
digester.addCallMethod(xPathPrefix + "/" + N_COLOR, "setColor", 0);
digester.addCallMethod(xPathPrefix + "/" + N_TEXT, "setText", 2);
digester.addCallParam(xPathPrefix + "/" + N_TEXT, 0);
digester.addCallParam(xPathPrefix + "/" + N_TEXT, 1, A_REPLACE);
digester.addSetNext(xPathPrefix, "setCustomFoot");
addToolManagerRules(digester);
}
/**
* @see org.opencms.configuration.I_CmsXmlConfiguration#generateXml(org.dom4j.Element)
*/
public Element generateXml(Element parent) {
// generate workplace node and subnodes
Element workplaceElement = parent.addElement(N_WORKPLACE);
Iterator i;
// add default locale
workplaceElement.addElement(N_DEFAULTLOCALE).setText(m_workplaceManager.getDefaultLocale().toString());
// add <localizedfolders> subnode
Element localizedElement = workplaceElement.addElement(N_LOCALIZEDFOLDERS);
Iterator localizedIterator = m_workplaceManager.getLocalizedFolders().iterator();
while (localizedIterator.hasNext()) {
// add <resource uri=""/> element(s)
localizedElement.addElement(N_RESOURCE).addAttribute(A_URI, (String)localizedIterator.next());
}
// add <dialoghandlers> subnode
Element dialogElement = workplaceElement.addElement(N_DIALOGHANDLERS);
Map dialogs = m_workplaceManager.getDialogHandler();
String[] keys = (String[])dialogs.keySet().toArray(new String[0]);
Arrays.sort(keys);
for (int j = 0; j < keys.length; j++) {
String name = keys[j];
dialogElement.addElement(N_DIALOGHANDLER).addAttribute(A_CLASS, dialogs.get(name).getClass().getName());
}
// add miscellaneous editor subnodes
workplaceElement.addElement(N_EDITORHANDLER).addAttribute(
A_CLASS,
m_workplaceManager.getEditorHandler().getClass().getName());
workplaceElement.addElement(N_EDITORACTION).addAttribute(
A_CLASS,
m_workplaceManager.getEditorActionHandler().getClass().getName());
if (m_workplaceManager.getEditorCssHandlers().size() > 0) {
Element editorCssHandlers = workplaceElement.addElement(N_EDITORCSSHANDLERS);
Iterator it = m_workplaceManager.getEditorCssHandlers().iterator();
while (it.hasNext()) {
I_CmsEditorCssHandler current = (I_CmsEditorCssHandler)it.next();
Element handler = editorCssHandlers.addElement(N_EDITORCSSHANDLER);
handler.addAttribute(A_CLASS, current.getClass().getName());
}
}
if (m_workplaceManager.getPreEditorConditionDefinitions().size() > 0) {
Element editorPreActions = workplaceElement.addElement(N_EDITORPRECONDITIONS);
Iterator it = m_workplaceManager.getPreEditorConditionDefinitions().iterator();
while (it.hasNext()) {
I_CmsPreEditorActionDefinition current = (I_CmsPreEditorActionDefinition)it.next();
Element action = editorPreActions.addElement(N_EDITORPRECONDITION);
action.addAttribute(A_NAME, current.getResourceTypeName());
action.addAttribute(A_CLASS, current.getClass().getName());
}
}
I_CmsConfigurationParameterHandler deProvider = m_workplaceManager.getDirectEditProvider();
Element deProviderNode = workplaceElement.addElement(N_DIRECTEDITPROVIDER).addAttribute(
A_CLASS,
deProvider.getClass().getName());
Map deProviderConfig = deProvider.getConfiguration();
if (deProviderConfig != null) {
Iterator it = deProviderConfig.entrySet().iterator();
while (it.hasNext()) {
Map.Entry entry = (Map.Entry)it.next();
String name = (String)entry.getKey();
String value = (String)entry.getValue();
Element paramNode = deProviderNode.addElement(N_PARAM);
paramNode.addAttribute(A_NAME, name);
paramNode.addText(value);
}
}
// add <exportpoints> subnode
Element resourceloadersElement = workplaceElement.addElement(N_EXPORTPOINTS);
Set points = m_workplaceManager.getExportPoints();
i = points.iterator();
while (i.hasNext()) {
CmsExportPoint point = (CmsExportPoint)i.next();
resourceloadersElement.addElement(N_EXPORTPOINT).addAttribute(A_URI, point.getUri()).addAttribute(
A_DESTINATION,
point.getConfiguredDestination());
}
// add miscellaneous configuration nodes
workplaceElement.addElement(N_AUTOLOCK).setText(String.valueOf(m_workplaceManager.autoLockResources()));
workplaceElement.addElement(N_XMLCONTENTAUTOCORRECTION).setText(
String.valueOf(m_workplaceManager.isXmlContentAutoCorrect()));
workplaceElement.addElement(N_ENABLEUSERMGMT).setText(String.valueOf(m_workplaceManager.showUserGroupIcon()));
workplaceElement.addElement(N_DEFAULTPROPERTIESONSTRUCTURE).setText(
String.valueOf(m_workplaceManager.isDefaultPropertiesOnStructure()));
workplaceElement.addElement(N_ENABLEADVANCEDPROPERTYTABS).setText(
String.valueOf(m_workplaceManager.isEnableAdvancedPropertyTabs()));
workplaceElement.addElement(N_MAXUPLOADSIZE).setText(String.valueOf(m_workplaceManager.getFileMaxUploadSize()));
// add <labeledfolders> resource list
Element labeledElement = workplaceElement.addElement(N_LABELEDFOLDERS);
i = m_workplaceManager.getLabelSiteFolders().iterator();
while (i.hasNext()) {
labeledElement.addElement(N_RESOURCE).addAttribute(A_URI, (String)i.next());
}
// add <rfsfileviewsettings> node
CmsRfsFileViewer viewSettings = m_workplaceManager.getFileViewSettings();
Element fileViewElement = workplaceElement.addElement(N_RFSFILEVIEWESETTINGS);
String filePath = viewSettings.getFilePath();
if (filePath != null) {
fileViewElement.addElement(N_FILEPATH).setText(filePath);
}
fileViewElement.addElement(N_ENABLED).setText(String.valueOf(viewSettings.isEnabled()));
fileViewElement.addElement(N_FILEENCODING).setText(viewSettings.getFileEncoding());
fileViewElement.addElement(N_ISLOGFILE).setText(String.valueOf(viewSettings.getIsLogfile()));
fileViewElement.addElement(N_WINDOWSIZE).setText(String.valueOf(viewSettings.getWindowSize()));
// add <explorertypes> node
Element explorerTypesElement = workplaceElement.addElement(N_EXPLORERTYPES);
List explorerTypes = m_workplaceManager.getExplorerTypeSettings();
generateExplorerTypesXml(explorerTypesElement, explorerTypes, false);
// add the <defaultaccesscontrol> node
Element defaultAccessControlElement = explorerTypesElement.addElement(N_DEFAULTACCESSCONTROL);
// create subnode <accesscontrol>
List accessEntries = new ArrayList();
// sort accessEntries
CmsExplorerTypeAccess access = m_workplaceManager.getDefaultAccess();
Iterator iter = access.getAccessEntries().keySet().iterator();
while (iter.hasNext()) {
accessEntries.add(iter.next());
}
Collections.sort(accessEntries);
if (accessEntries.size() > 0) {
Element accessControlElement = defaultAccessControlElement.addElement(N_ACCESSCONTROL);
Iterator k = accessEntries.iterator();
while (k.hasNext()) {
String key = (String)k.next();
String value = (String)m_workplaceManager.getDefaultAccess().getAccessEntries().get(key);
Element accessEntryElement = accessControlElement.addElement(N_ACCESSENTRY);
accessEntryElement.addAttribute(A_PRINCIPAL, key);
accessEntryElement.addAttribute(A_PERMISSIONS, value);
}
}
// add the <multicontextmenu> node
i = m_workplaceManager.getMultiContextMenu().getAllEntries().iterator();
if (i.hasNext()) {
// only generate the node if entries are defined
Element contextMenuElement = explorerTypesElement.addElement(N_MULTICONTEXTMENU);
// get the menu rule translator to eliminate eventual legacy menu rules
CmsMenuRuleTranslator menuRuleTranslator = new CmsMenuRuleTranslator();
while (i.hasNext()) {
CmsExplorerContextMenuItem item = (CmsExplorerContextMenuItem)i.next();
generateContextMenuItemXml(contextMenuElement, menuRuleTranslator, item);
}
}
// add <menurules> node and subnodes
if (m_workplaceManager.getMenuRules().size() > 0) {
Element rulesElement = explorerTypesElement.addElement(N_MENURULES);
i = m_workplaceManager.getMenuRules().iterator();
while (i.hasNext()) {
// create a <menurule> element for each rule set
CmsMenuRule rule = (CmsMenuRule)i.next();
Element ruleElement = rulesElement.addElement(N_MENURULE);
ruleElement.addAttribute(A_NAME, rule.getName());
Iterator it = rule.getMenuItemRules().iterator();
while (it.hasNext()) {
// create a <menuitemrule> element for each configured item rule
I_CmsMenuItemRule itemRule = (I_CmsMenuItemRule)it.next();
Element itemRuleElement = ruleElement.addElement(N_MENUITEMRULE);
itemRuleElement.addAttribute(A_CLASS, itemRule.getClass().getName());
}
}
}
// add the user-infos node
if (m_workplaceManager.getUserInfoManager() != null) {
Element userInfosElement = workplaceElement.addElement(N_USERINFOS);
i = m_workplaceManager.getUserInfoManager().getBlocks().iterator();
while (i.hasNext()) {
CmsWorkplaceUserInfoBlock block = (CmsWorkplaceUserInfoBlock)i.next();
Element infoBlockElement = userInfosElement.addElement(N_INFOBLOCK);
infoBlockElement.addAttribute(A_NAME, block.getTitle());
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?