📄 cmsform.java
字号:
/*
* File : $Source: /usr/local/cvs/opencms/src-modules/org/opencms/frontend/templateone/form/CmsForm.java,v $
* Date : $Date: 2006/03/27 14:52:20 $
* Version: $Revision: 1.27 $
*
* This library is part of OpenCms -
* the Open Source Content Mananagement System
*
* Copyright (c) 2005 Alkacon Software GmbH (http://www.alkacon.com)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* For further information about Alkacon Software GmbH, please see the
* company website: http://www.alkacon.com
*
* For further information about OpenCms, please see the
* project website: http://www.opencms.org
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package org.opencms.frontend.templateone.form;
import org.opencms.configuration.CmsConfigurationException;
import org.opencms.file.CmsFile;
import org.opencms.file.CmsObject;
import org.opencms.i18n.CmsMessages;
import org.opencms.jsp.CmsJspActionElement;
import org.opencms.util.CmsMacroResolver;
import org.opencms.util.CmsStringUtil;
import org.opencms.xml.content.CmsXmlContent;
import org.opencms.xml.content.CmsXmlContentFactory;
import org.opencms.xml.types.CmsXmlHtmlValue;
import org.opencms.xml.types.I_CmsXmlContentValue;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.StringTokenizer;
import javax.servlet.http.HttpServletRequest;
/**
* Represents an input form with all configured fields and options.<p>
*
* Provides the necessary information to create an input form, email messages and confirmation outputs.<p>
*
* @author Andreas Zahner
* @author Thomas Weckert
* @author Jan Baudisch
*
* @version $Revision: 1.27 $
*
* @since 6.0.0
*/
public class CmsForm {
/** Mail type: html mail. */
public static final String MAILTYPE_HTML = "html";
/** Mail type: text mail. */
public static final String MAILTYPE_TEXT = "text";
/** Configuration node name for the optional captcha. */
public static final String NODE_CAPTCHA = "FormCaptcha";
/** Configuration node name for the confirmation mail checkbox label text. */
public static final String NODE_CONFIRMATIONMAILCHECKBOXLABEL = "ConfirmationCheckboxLabel";
/** Configuration node name for the confirmation mail enabled node. */
public static final String NODE_CONFIRMATIONMAILENABLED = "ConfirmationMailEnabled";
/** Configuration node name for the confirmation mail input field node. */
public static final String NODE_CONFIRMATIONMAILFIELD = "ConfirmationField";
/** Configuration node name for the confirmation mail optional flag node. */
public static final String NODE_CONFIRMATIONMAILOPTIONAL = "ConfirmationMailOptional";
/** Configuration node name for the confirmation mail subject node. */
public static final String NODE_CONFIRMATIONMAILSUBJECT = "ConfirmationMailSubject";
/** Configuration node name for the confirmation mail text node. */
public static final String NODE_CONFIRMATIONMAILTEXT = "ConfirmationMailText";
/** Configuration node name for the Email node. */
public static final String NODE_EMAIL = "Email";
/** Configuration node name for the field value node. */
public static final String NODE_FIELDDEFAULTVALUE = "FieldDefault";
/** Configuration node name for the field error message node. */
public static final String NODE_FIELDERRORMESSAGE = "FieldErrorMessage";
/** Configuration node name for the field item node. */
public static final String NODE_FIELDITEM = "FieldItem";
/** Configuration node name for the field description node. */
public static final String NODE_FIELDLABEL = "FieldLabel";
/** Configuration node name for the field mandatory node. */
public static final String NODE_FIELDMANDATORY = "FieldMandatory";
/** Configuration node name for the field type node. */
public static final String NODE_FIELDTYPE = "FieldType";
/** Configuration node name for the field validation node. */
public static final String NODE_FIELDVALIDATION = "FieldValidation";
/** Configuration node name for the form attributes node. */
public static final String NODE_FORMATTRIBUTES = "FormAttributes";
/** Configuration node name for the form check page text node. */
public static final String NODE_FORMCHECKTEXT = "CheckText";
/** Configuration node name for the form confirmation text node. */
public static final String NODE_FORMCONFIRMATION = "FormConfirmation";
/** Configuration node name for the form field attributes node. */
public static final String NODE_FORMFIELDATTRIBUTES = "FormFieldAttributes";
/** Configuration node name for the form text node. */
public static final String NODE_FORMTEXT = "FormText";
/** Configuration node name for the input field node. */
public static final String NODE_INPUTFIELD = "InputField";
/** Configuration node name for the item description node. */
public static final String NODE_ITEMDESCRIPTION = "ItemDescription";
/** Configuration node name for the item selected node. */
public static final String NODE_ITEMSELECTED = "ItemSelected";
/** Configuration node name for the item value node. */
public static final String NODE_ITEMVALUE = "ItemValue";
/** Configuration node name for the Email bcc recipient(s) node. */
public static final String NODE_MAILBCC = "MailBCC";
/** Configuration node name for the Email cc recipient(s) node. */
public static final String NODE_MAILCC = "MailCC";
/** Configuration node name for the Email sender address node. */
public static final String NODE_MAILFROM = "MailFrom";
/** Configuration node name for the Email subject node. */
public static final String NODE_MAILSUBJECT = "MailSubject";
/** Configuration node name for the Email text node. */
public static final String NODE_MAILTEXT = "MailText";
/** Configuration node name for the Email recipient(s) node. */
public static final String NODE_MAILTO = "MailTo";
/** Configuration node name for the Email type node. */
public static final String NODE_MAILTYPE = "MailType";
/** Configuration node name for the optional form configuration. */
public static final String NODE_OPTIONALCONFIGURATION = "OptionalFormConfiguration";
/** Configuration node name for the optional confirmation mail configuration. */
public static final String NODE_OPTIONALCONFIRMATION = "OptionalConfirmationMail";
/** Configuration node name for the Show check page node. */
public static final String NODE_SHOWCHECK = "ShowCheck";
/** Configuration node name for the optional target URI. */
public static final String NODE_TARGET_URI = "TargetUri";
/** Request parameter name for the optional send confirmation email checkbox. */
public static final String PARAM_SENDCONFIRMATION = "sendconfirmation";
/** Resource type ID of XML content forms. */
private static final String TYPE_NAME = "emailform";
private CmsCaptchaField m_captchaField;
private List m_configurationErrors;
private String m_confirmationMailCheckboxLabel;
private boolean m_confirmationMailEnabled;
private int m_confirmationMailField;
private boolean m_confirmationMailOptional;
private String m_confirmationMailSubject;
private String m_confirmationMailText;
private String m_confirmationMailTextPlain;
/** Stores the form input fields. */
private List m_fields;
/** Allows to access form fields internally by name. */
private Map m_fieldsByName;
private String m_formAction;
private String m_formAttributes;
private String m_formCheckText;
private String m_formConfirmationText;
private String m_formFieldAttributes;
private String m_formText;
private boolean m_hasMandatoryFields;
private String m_mailBCC;
private String m_mailCC;
private String m_mailFrom;
private String m_mailSubject;
private String m_mailSubjectPrefix;
private String m_mailText;
private String m_mailTextPlain;
private String m_mailTo;
private String m_mailType;
private boolean m_showCheck;
private String m_targetUri;
/** Configuration node name for the optional captcha. */
public static final String NODE_CAPTCHA_PRESET = "Preset";
/** Configuration node name for the optional captcha. */
public static final String NODE_CAPTCHA_CHARACTERS = "Characters";
/**
* Default constructor which parses the configuration file.<p>
*
* @param jsp the initialized CmsJspActionElement to access the OpenCms API
* @param messages the localized messages
* @param initial if true, field values are filled with values specified in the configuration file, otherwise from the request
* @throws Exception if parsing the configuration fails
*/
public CmsForm(CmsJspActionElement jsp, CmsMessages messages, boolean initial)
throws Exception {
init(jsp, messages, initial, null, null);
}
/**
* Constructor which parses the configuration file using a given configuration file URI.<p>
*
* @param jsp the initialized CmsJspActionElement to access the OpenCms API
* @param messages the localized messages
* @param initial if true, field values are filled with values specified in the configuration file, otherwise from the request
* @param formConfigUri URI of the form configuration file, if not provided, current URI is used for configuration
* @param formAction the desired action submiktted by the form
*
* @throws Exception if parsing the configuration fails
*/
public CmsForm(CmsJspActionElement jsp, CmsMessages messages, boolean initial, String formConfigUri, String formAction)
throws Exception {
init(jsp, messages, initial, formConfigUri, formAction);
}
/**
* Returns the resource type name of XML content forms.<p>
*
* @return the resource type name of XML content forms
*/
public static String getStaticType() {
return TYPE_NAME;
}
/**
* Tests, if the captcha field (if configured at all) should be displayed on the check page.<p>
*
* @return true, if the captcha field should be displayed on the check page
*/
public boolean captchaFieldIsOnCheckPage() {
return getShowCheck();
}
/**
* Tests, if the captcha field (if configured at all) should be displayed on the input page.<p>
*
* @return true, if the captcha field should be displayed on the input page
*/
public boolean captchaFieldIsOnInputPage() {
return !getShowCheck();
}
/**
* Returns the (opt.) captcha field of this form.<p>
*
* @return the (opt.) captcha field of this form
*/
public CmsCaptchaField getCaptchaField() {
return m_captchaField;
}
/**
* Returns the form configuration errors.<p>
*
* @return the form configuration errors
*/
public List getConfigurationErrors() {
return m_configurationErrors;
}
/**
* Returns the label for the optional confirmation mail checkbox on the input form.<p>
*
* @return the label for the optional confirmation mail checkbox on the input form
*/
public String getConfirmationMailCheckboxLabel() {
return m_confirmationMailCheckboxLabel;
}
/**
* Returns the index number of the input field containing the email address for the optional confirmation mail.<p>
*
* @return the index number of the input field containing the email address for the optional confirmation mail
*/
public int getConfirmationMailField() {
return m_confirmationMailField;
}
/**
* Returns the subject of the optional confirmation mail.<p>
*
* @return the subject of the optional confirmation mail
*/
public String getConfirmationMailSubject() {
return m_confirmationMailSubject;
}
/**
* Returns the text of the optional confirmation mail.<p>
*
* @return the text of the optional confirmation mail
*/
public String getConfirmationMailText() {
return m_confirmationMailText;
}
/**
* Returns the plain text of the optional confirmation mail.<p>
*
* @return the plain text of the optional confirmation mail
*/
public String getConfirmationMailTextPlain() {
return m_confirmationMailTextPlain;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -