cmsxmlcontenteditor.java
来自「找了很久才找到到源代码」· Java 代码 · 共 1,609 行 · 第 1/5 页
JAVA
1,609 行
* Returns the current element locale.<p>
*
* @return the current element locale
*/
public Locale getElementLocale() {
if (m_elementLocale == null) {
if (CmsStringUtil.isNotEmpty(getParamElementlanguage()) && !"null".equals(getParamElementlanguage())) {
m_elementLocale = CmsLocaleManager.getLocale(getParamElementlanguage());
} else {
initElementLanguage();
m_elementLocale = CmsLocaleManager.getLocale(getParamElementlanguage());
}
}
return m_elementLocale;
}
/**
* @see org.opencms.widgets.I_CmsWidgetDialog#getHelpMessageIds()
*/
public Set getHelpMessageIds() {
if (m_helpMessageIds == null) {
m_helpMessageIds = new HashSet();
}
return m_helpMessageIds;
}
/**
* Returns the index of the element to add or remove.<p>
*
* @return the index of the element to add or remove
*/
public String getParamElementIndex() {
return m_paramElementIndex;
}
/**
* Returns the name of the element to add or remove.<p>
*
* @return the name of the element to add or remove
*/
public String getParamElementName() {
return m_paramElementName;
}
/**
* Returns the parameter that specifies the model file name.<p>
*
* @return the parameter that specifies the model file name
*/
public String getParamModelFile() {
return m_paramModelFile;
}
/**
* Returns the "new link" parameter.<p>
*
* @return the "new link" parameter
*/
public String getParamNewLink() {
return m_paramNewLink;
}
/**
* @see org.opencms.widgets.I_CmsWidgetDialog#getUserAgent()
*/
public String getUserAgent() {
return getJsp().getRequest().getHeader(CmsRequestUtil.HEADER_USER_AGENT);
}
/**
* Returns the different xml editor widgets used in the form to display.<p>
*
* @return the different xml editor widgets used in the form to display
*/
public CmsXmlContentWidgetVisitor getWidgetCollector() {
if (m_widgetCollector == null) {
// create an instance of the widget collector
m_widgetCollector = new CmsXmlContentWidgetVisitor(getElementLocale());
m_content.visitAllValuesWith(m_widgetCollector);
}
return m_widgetCollector;
}
/**
* Generates the HTML form for the XML content editor.<p>
*
* @return the HTML that generates the form for the XML editor
*/
public String getXmlEditorForm() {
// set "editor mode" attribute (required for link replacement in the root site)
getCms().getRequestContext().setAttribute(CmsRequestContext.ATTRIBUTE_EDITOR, Boolean.TRUE);
// add customized message bundle eventually specified in XSD of XML content
addMessages(m_content.getContentDefinition().getContentHandler().getMessages(getLocale()));
return getXmlEditorForm(m_content.getContentDefinition(), "", true).toString();
}
/**
* Generates the HTML for the end of the html editor form page.<p>
*
* @return the HTML for the end of the html editor form page
* @throws JspException if including the error page fails
*/
public String getXmlEditorHtmlEnd() throws JspException {
StringBuffer result = new StringBuffer(16384);
if (m_optionalElementPresent) {
// disabled optional element(s) present, reset widgets to show help bubbles on optional form entries
resetWidgetCollector();
}
try {
// get all widgets from collector
Iterator i = getWidgetCollector().getWidgets().keySet().iterator();
while (i.hasNext()) {
// get the value of the widget
String key = (String)i.next();
I_CmsXmlContentValue value = (I_CmsXmlContentValue)getWidgetCollector().getValues().get(key);
I_CmsWidget widget = (I_CmsWidget)getWidgetCollector().getWidgets().get(key);
result.append(widget.getDialogHtmlEnd(getCms(), this, (I_CmsWidgetParameter)value));
}
// add empty help text layer
result.append("<div class=\"help\" id=\"helpText\" ");
result.append("onmouseover=\"showHelpText();\" onmouseout=\"hideHelpText();\"></div>\n");
// add empty element button layer
result.append("<div class=\"xmlButtons\" id=\"xmlElementButtons\" ");
result.append("onmouseover=\"checkElementButtons(true);\" onmouseout=\"checkElementButtons(false);\"></div>\n");
// return the HTML
return result.toString();
} catch (Exception e) {
showErrorPage(e);
return "";
}
}
/**
* Generates the javascript includes for the used widgets in the editor form.<p>
*
* @return the javascript includes for the used widgets
* @throws JspException if including the error page fails
*/
public String getXmlEditorIncludes() throws JspException {
StringBuffer result = new StringBuffer(32);
try {
// iterate over unique widgets from collector
Iterator i = getWidgetCollector().getUniqueWidgets().iterator();
while (i.hasNext()) {
I_CmsWidget widget = (I_CmsWidget)i.next();
result.append(widget.getDialogIncludes(getCms(), this));
result.append("\n");
}
} catch (Exception e) {
showErrorPage(e);
}
return result.toString();
}
/**
* Generates the javascript initialization calls for the used widgets in the editor form.<p>
*
* @return the javascript initialization calls for the used widgets
* @throws JspException if including the error page fails
*/
public String getXmlEditorInitCalls() throws JspException {
StringBuffer result = new StringBuffer(32);
try {
// iterate over unique widgets from collector
Iterator i = getWidgetCollector().getUniqueWidgets().iterator();
while (i.hasNext()) {
I_CmsWidget widget = (I_CmsWidget)i.next();
result.append(widget.getDialogInitCall(getCms(), this));
}
} catch (Exception e) {
showErrorPage(e);
}
return result.toString();
}
/**
* Generates the JavaScript initialization methods for the used widgets.<p>
*
* @return the JavaScript initialization methods for the used widgets
*
* @throws JspException if an error occurs during JavaScript generation
*/
public String getXmlEditorInitMethods() throws JspException {
StringBuffer result = new StringBuffer(32);
try {
// iterate over unique widgets from collector
Iterator i = getWidgetCollector().getUniqueWidgets().iterator();
while (i.hasNext()) {
I_CmsWidget widget = (I_CmsWidget)i.next();
result.append(widget.getDialogInitMethod(getCms(), this));
result.append("\n");
}
} catch (Exception e) {
showErrorPage(e);
}
return result.toString();
}
/**
* Returns true if the edited content contains validation errors, otherwise false.<p>
*
* @return true if the edited content contains validation errors, otherwise false
*/
public boolean hasValidationErrors() {
return getValidationHandler().hasErrors();
}
/**
* Returns true if the preview is available for the edited xml content.<p>
*
* This method has to use the resource request parameter and read the file from vfs because the temporary file is
* not available in the upper button frame.<p>
*
* @return true if the preview is enabled, otherwise false
*/
public boolean isPreviewEnabled() {
try {
// read the original file because temporary file is not created when opening button frame
CmsFile file = getCms().readFile(getParamResource(), CmsResourceFilter.ALL);
CmsXmlContent content = CmsXmlContentFactory.unmarshal(getCloneCms(), file);
return content.getContentDefinition().getContentHandler().getPreview(
getCms(),
m_content,
getParamResource()) != null;
} catch (Exception e) {
// error reading or unmarshalling, no preview available
return false;
}
}
/**
* Sets the editor values for the locale with the parameters from the request.<p>
*
* Called before saving the xml content, redisplaying the input form,
* changing the language and adding or removing elements.<p>
*
* @param locale the locale of the content to save
* @throws CmsXmlException if something goes wrong
*/
public void setEditorValues(Locale locale) throws CmsXmlException {
List valueNames = getSimpleValueNames(m_content.getContentDefinition(), "", locale);
Iterator i = valueNames.iterator();
while (i.hasNext()) {
String valueName = (String)i.next();
I_CmsXmlContentValue value = m_content.getValue(valueName, locale);
I_CmsWidget widget = value.getContentDefinition().getContentHandler().getWidget(value);
widget.setEditorValue(getCms(), getJsp().getRequest().getParameterMap(), this, (I_CmsWidgetParameter)value);
}
}
/**
* Sets the index of the element to add or remove.<p>
*
* @param elementIndex the index of the element to add or remove
*/
public void setParamElementIndex(String elementIndex) {
m_paramElementIndex = elementIndex;
}
/**
* Sets the name of the element to add or remove.<p>
*
* @param elementName the name of the element to add or remove
*/
public void setParamElementName(String elementName) {
m_paramElementName = elementName;
}
/**
* Sets the parameter that specifies the model file name.<p>
*
* @param paramMasterFile the parameter that specifies the model file name
*/
public void setParamModelFile(String paramMasterFile) {
m_paramModelFile = paramMasterFile;
}
/**
* Sets the "new link" parameter.<p>
*
* @param paramNewLink the "new link" parameter to set
*/
public void setParamNewLink(String paramNewLink) {
m_paramNewLink = CmsEncoder.decode(paramNewLink);
}
/**
* Determines if the element language selector is shown dependent on the available Locales.<p>
*
* @return true, if more than one Locale is available, otherwise false
*/
public boolean showElementLanguageSelector() {
List locales = OpenCms.getLocaleManager().getAvailableLocales(getCms(), getParamResource());
if ((locales == null) || (locales.size() < 2)) {
// for less than two available locales, do not create language selector
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?