Update of
/var/cvs/contributions/CMSContainer_Portlets/portlets-dynamicforms/src/java/com/finalist/portlets/responseform
In directory
james.mmbase.org:/tmp/cvs-serv8199/portlets-dynamicforms/src/java/com/finalist/portlets/responseform
Modified Files:
Tag: b1_4
ResponseFormPortlet.java
Log Message:
CMSC-816 solved
See also:
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer_Portlets/portlets-dynamicforms/src/java/com/finalist/portlets/responseform
See also: http://www.mmbase.org/jira/browse/CMSC-816
Index: ResponseFormPortlet.java
===================================================================
RCS file:
/var/cvs/contributions/CMSContainer_Portlets/portlets-dynamicforms/src/java/com/finalist/portlets/responseform/ResponseFormPortlet.java,v
retrieving revision 1.8.2.1
retrieving revision 1.8.2.2
diff -u -b -r1.8.2.1 -r1.8.2.2
--- ResponseFormPortlet.java 3 Mar 2008 10:40:59 -0000 1.8.2.1
+++ ResponseFormPortlet.java 17 Mar 2008 14:08:57 -0000 1.8.2.2
@@ -64,6 +64,7 @@
// Meg
private static final long MEGABYTE = 1024 * 1024; // 1 Meg
private static final String FIELD_PREFIX = "field_";
+ // TODO: use these constants (and clean up this mess)
private static final int TYPE_TEXTBOX = 1;
private static final int TYPE_TEXTAREA = 2;
private static final int TYPE_RADIO = 4;
@@ -78,71 +79,66 @@
public void processView(ActionRequest request, ActionResponse response)
throws PortletException, IOException {
- Map<String, String> errorMessages = new Hashtable<String, String>();
- Map<String, String> parameterMap = new HashMap<String, String>();
+
+ Map errorMessages = new Hashtable();
+ Map parameterMap = new HashMap();
DataSource attachment = processUserRequest(request, errorMessages,
parameterMap);
- String action = request.getParameter(ACTION_PARAM);
- Map<String, String> formfields = new HashMap<String, String>();
+ String action = request.getParameter("action");
+ Map formfields = new HashMap();
StringBuffer data = new StringBuffer();
- if (action == null) {
+ if (action == null)
response.setPortletMode(CmscPortletMode.EDIT_DEFAULTS);
- }
else if (action.equals("edit")) {
PortletPreferences preferences = request.getPreferences();
- String contentelement = preferences.getValue(CONTENTELEMENT, null);
-
+ String contentelement =
preferences.getValue("contentelement", null);
if (contentelement != null) {
if (parameterMap.size() > 0) {
CloudProvider cloudProvider =
CloudProviderFactory.getCloudProvider();
Cloud cloud = cloudProvider.getCloud();
Node responseForm = cloud.getNode(contentelement);
- NodeList formfieldList =
SearchUtil.findRelatedOrderedNodeList(responseForm, "formfield", "posrel",
- "posrel.pos");
+ NodeList formfieldList =
SearchUtil.findRelatedOrderedNodeList(responseForm, "formfield", "posrel",
"posrel.pos");
NodeIterator formfieldIterator = formfieldList.nodeIterator();
String userEmailAddress = null;
+ String number;
+ String textValue;
- while (formfieldIterator.hasNext()) {
+ while ( formfieldIterator.hasNext()) {
Node formfield = formfieldIterator.nextNode();
- String number = formfield.getStringValue("number");
+ number =
formfield.getStringValue("number");
String label = formfield.getStringValue("label");
int type = formfield.getIntValue("type");
String regex = formfield.getStringValue("regex");
boolean isMandatory = formfield.getBooleanValue("mandatory");
boolean sendEmail = formfield.getBooleanValue("sendemail");
- String fieldIdentifier = FIELD_PREFIX + number;
- String value = parameterMap.get(fieldIdentifier);
- String textValue = null;
+
+ String fieldIdentifier = (new
StringBuilder()).append("field_").append(number).toString();
+ String value = ((String)
parameterMap.get(fieldIdentifier)).trim();
+ textValue = null;
+
if (sendEmail) {
userEmailAddress = value;
}
- if (type == TYPE_TEXTAREA && value != null && value.length()
>= TEXTAREA_MAXLENGTH) {
- value = value.substring(0, TEXTAREA_MAXLENGTH - 1);
+ if (type == 2 && value != null
&& value.length() >= 1024) {
+ value =
value.substring(0, 1023);
}
- if (isMandatory
- && (((type == TYPE_RADIO || type == TYPE_CHECKBOX) &&
(value == null)) || (((type == TYPE_TEXTBOX)
- || (type == TYPE_TEXTAREA) || (type ==
TYPE_ATTACHEMENT)) && value.equals("")))) {
+ if (isMandatory && ((type == 4
|| type == 6) && value == null || (type == 1 || type == 2 || type == 7) &&
value.equals(""))) {
errorMessages.put(fieldIdentifier,
"view.formfield.empty");
}
- if (!regex.equals("")
- && (((type == TYPE_TEXTBOX) || (type ==
TYPE_TEXTAREA)) && !isEmailAddress(value))) {
- errorMessages.put(fieldIdentifier,
"view.formfield.invalid");
- }
-
- if ((type == TYPE_TEXTBOX) && sendEmail) { //If data is
used as email address, then it should be valid
- if (!isEmailAddress(userEmailAddress))
+ if (!regex.equals("") && (type
== 1 || type == 2) && !value.matches(regex)) {
errorMessages.put(fieldIdentifier,
"view.formfield.invalid");
}
- if (type == TYPE_CHECKBOX) {
- textValue = (value == null) ? CHECKBOX_NO : CHECKBOX_YES;
+ if (type == 6) {
+ textValue = value !=
null ? "ja" : "nee";
}
- else if (type == TYPE_RADIO) {
- textValue = (value == null) ? RADIO_EMPTY : value;
+ else if (type == 4) {
+ textValue = value !=
null ? value : "[niets gekozen]";
}
else {
- textValue = (StringUtil.isEmptyOrWhitespace(value)) ?
TEXTBOX_EMPTY : value;
+ textValue =
StringUtil.isEmptyOrWhitespace(value) ? "[niet ingevuld]" : value;
}
+
addFormFieldsData(data, label, textValue);
formfields.put(number, textValue);
}
@@ -158,34 +154,29 @@
errorMessages.put("sendemail", "view.error.sendemail");
}
else {
- // if the responseform email has been sent, send also
the email to the user
- sent = sendUserEmail(responseForm, userEmailAddress,
emailData, parameterMap);
- if (!sent) {
- errorMessages.put("sendemail",
"view.error.sendemail");
- }
+
sendUserEmail(responseForm, userEmailAddress, emailData, parameterMap);
}
}
}
+
request.getPortletSession().setAttribute("parameterMap", parameterMap);
+
if (errorMessages.size() > 0) {
- request.getPortletSession().setAttribute(ERRORMESSAGES,
errorMessages);
- request.getPortletSession().setAttribute(PARAMETER_MAP,
parameterMap);
- }
- else {
+
request.getPortletSession().setAttribute("errormessages", errorMessages);
+ } else {
request.getPortletSession().setAttribute("confirm", "confirm");
}
- }
- else {
+ } else {
getLogger().error("No contentelement");
}
- // switch to View mode
+
response.setPortletMode(PortletMode.VIEW);
- }
- else {
- getLogger().error("Unknown action: '" + action + "'");
+ } else {
+ getLogger().error((new StringBuilder()).append("Unknown
action: '").append(action).append("'").toString());
}
}
+
private void addFormFieldsData(StringBuffer data, String label, String
textValue) {
data.append(label);
data.append(": ");
@@ -194,6 +185,30 @@
}
+
+
+
+
+ public void processEdit(ActionRequest request, ActionResponse response)
throws PortletException, IOException {
+ super.processEdit(request, response);
+ String action = request.getParameter("action");
+ if (action == null) {
+ response.setPortletMode(PortletMode.EDIT);
+ }
+ else if (action.equals("delete")) {
+ String deleteNumber =
request.getParameter("deleteNumber");
+ CloudProvider cloudProvider =
CloudProviderFactory.getCloudProvider();
+ Cloud cloud = cloudProvider.getCloud();
+ Node element = cloud.getNode(deleteNumber);
+ element.delete(true);
+ }
+ }
+
+
+
+
+
+
private void saveResponseForm(Cloud cloud, Map<String, String> formfields,
Node responseForm) {
NodeManager savedFormMgr = cloud.getNodeManager("savedform");
@@ -226,7 +241,6 @@
if (ServerUtil.isLive()) {
PublishUtil.publishOrUpdateNode(savedFieldValue);
}
-
}
}
@@ -359,23 +373,6 @@
}
- public void processEdit(ActionRequest request, ActionResponse response)
throws PortletException, IOException {
- super.processEdit(request, response);
-
- String action = request.getParameter(ACTION_PARAM);
- if (action == null) {
- response.setPortletMode(PortletMode.EDIT);
- }
- else if (action.equals("delete")) {
- String deleteNumber = request.getParameter("deleteNumber");
- CloudProvider cloudProvider = CloudProviderFactory.getCloudProvider();
- Cloud cloud = cloudProvider.getCloud();
- Node element = cloud.getNode(deleteNumber);
- element.delete(true);
- }
- }
-
-
private DataSource processUserRequest(ActionRequest request, Map<String,
String> errorMessages,
Map<String, String> parameterMap) {
List<FileItem> fileItems = null;
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs