Author: mfang
Date: 2009-05-26 09:59:20 +0200 (Tue, 26 May 2009)
New Revision: 35431

Modified:
   
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/webapp/editors/repository/contentsearch.jsp
   
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/webapp/editors/repository/search.js
Log:
CMSC-1116 advanced search for dynamic form save answer gives 500 error

Modified: 
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/webapp/editors/repository/contentsearch.jsp
===================================================================
--- 
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/webapp/editors/repository/contentsearch.jsp
      2009-05-26 02:55:18 UTC (rev 35430)
+++ 
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/webapp/editors/repository/contentsearch.jsp
      2009-05-26 07:59:20 UTC (rev 35431)
@@ -8,6 +8,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";>
 <html:html xhtml="true">
 <cmscedit:head title="search.title">
+      <script src="../../mmbase/edit/wizard/javascript/validator.js" 
type="text/javascript"></script>
       <script src="content.js" type="text/javascript"></script>
       <script src="search.js" type="text/javascript"></script>
 <script type="text/javascript">
@@ -179,6 +180,7 @@
                      </td>
                      <td rowspan="5">
                         <c:set var="fields"/>
+                        <c:set var="fieldtypes"/>
                         <mm:compare referid="contenttypes" 
value="contentelement" inverse="true">
                            <table>
                               <mm:fieldlist nodetype="${contenttypes}">
@@ -197,16 +199,19 @@
                                     <tr rowspan="5">
                                        <td height="32">
                                           <mm:fieldinfo type="guiname"/>:
-                                          <mm:fieldinfo type="name" 
id="fieldName" write="false">
-                                          <c:choose>
-                                             <c:when test="${empty fields}">
-                                                <c:set 
var="fields">${contenttypes}.${fieldName}</c:set>
-                                             </c:when>
-                                             <c:otherwise>
-                                             <c:set 
var="fields">${fields},${contenttypes}.${fieldName}</c:set>
-                                             </c:otherwise>
-                                          </c:choose>
+                                          <mm:fieldinfo type="name" 
id="fieldname" write="false">
+                                             <c:choose>
+                                                <c:when test="${empty fields}">
+                                                   <c:set 
var="fields">${contenttypes}.${fieldname}</c:set>
+                                                   <c:set 
var="fieldtypes"><mm:fieldinfo type="typedescription"/></c:set>
+                                                </c:when>
+                                                <c:otherwise>
+                                                <c:set 
var="fields">${fields},${contenttypes}.${fieldname}</c:set>
+                                                <c:set 
var="fieldtypes">${fieldtypes},<mm:fieldinfo type="typedescription"/></c:set>
+                                                </c:otherwise>
+                                             </c:choose>
                                           </mm:fieldinfo>
+                                       </td>
                                     </tr>
                                   </c:if>
                               </mm:fieldlist>
@@ -216,12 +221,14 @@
                      <td rowspan="5">
                         <mm:compare referid="contenttypes" 
value="contentelement" inverse="true">
                            <table>
-                              <c:forTokens items="${fields}" var="field" 
delims=",">
+                              <c:forTokens items="${fields}" var="field" 
delims="," varStatus="status">
+                                 <c:forTokens items="${fieldtypes}" 
var="fieldtype" delims="," begin="${status.index}" end="${status.index}">
                                  <tr>
                                     <td height="32">
-                                       <input type="text" name="${field}" 
value="${param.field}" />
+                                       <input type="text" name="${field}" 
dttype="${fieldtype}" value="${param.field}" />
                                     </td>
                                  </tr>
+                                 </c:forTokens>
                               </c:forTokens>
                            </table>
                         </mm:compare>
@@ -330,7 +337,7 @@
                           <tr>
                      <td></td>
                      <td>
-                        <input type="submit" class="button" 
name="submitButton" onclick="setOffset(0);" value="<fmt:message 
key="searchform.submit" />"/>
+                        <input type="submit" class="button" 
name="submitButton" onclick="return validateInputs();" value="<fmt:message 
key="searchform.submit" />"/>
                      </td>
                   </tr>
             </table>

Modified: 
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/webapp/editors/repository/search.js
===================================================================
--- 
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/webapp/editors/repository/search.js
      2009-05-26 02:55:18 UTC (rev 35430)
+++ 
CMSContainer/trunk/CMSContainer/cmsc/contentrepository/src/webapp/editors/repository/search.js
      2009-05-26 07:59:20 UTC (rev 35431)
@@ -1,3 +1,65 @@
+//Refers to the function 'validateElement' in validator.js 
+ function validateInputs() {
+    var err = "";
+    var form = document.forms[0];
+    for (i=0;i<form.elements.length;i++){ 
+       var el = form.elements[i];
+       var dttype = el.getAttribute("dttype");
+       var v = el.value;
+       if(!isEmpty(dttype)&&!isEmpty(v)){
+          switch (dttype.toLowerCase()) {
+          case "long":
+              ;
+          case "integer":
+              err += validateInt(el, form, v);
+              break;
+          case "float":
+              ;
+          case "double":
+              err += validateFloat(el, form, v);
+              break;
+          case "enum":
+              //Maybe to be implemented in the future
+              //err += validateEnum(el, form, v);
+              break;
+          case "datetime":
+              //Maybe to be implemented in the future
+              //err += validateDatetime(el, form, v);
+              break;
+          case "boolean":
+              //Maybe to be implemented in the future
+              //err += validateBoolean(el, form, v);
+              break;
+          default :
+              break;
+          }
+       }
+       if(!isEmpty(err)){
+          alert(err);
+          el.style.borderColor = "#CC0000";
+          el.focus();
+          return false;
+       }
+    }
+    setOffset(0);
+ }
+
+//Refers to the function 'validateInt' in validator.js 
+ function validateInt(el, form, v) {
+    if (isNaN(v) || parseInt(v) == null) {
+       return "value '" + v + "' is not a valid integer number";
+    }
+    return "";
+ }
+
+//Refers to the function 'validateFloat' in validator.js 
+function validateFloat(el, form, v) {
+   if (isNaN(v) || parseFloat(v) == null) {
+      return "value '" + v + "' is not a valid float number";
+   }
+   return "";
+}
+
  function setOffset(offset) {
     document.forms[0].offset.value = offset;
     document.forms[0].submit();

_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to