[rhmessaging-commits] rhmessaging commits: r2732 - mgmt/trunk/cumin/python/wooly.

rhmessaging-commits at lists.jboss.org rhmessaging-commits at lists.jboss.org
Tue Nov 4 14:37:02 EST 2008


Author: eallen
Date: 2008-11-04 14:37:02 -0500 (Tue, 04 Nov 2008)
New Revision: 2732

Modified:
   mgmt/trunk/cumin/python/wooly/forms.py
   mgmt/trunk/cumin/python/wooly/forms.strings
   mgmt/trunk/cumin/python/wooly/parameters.py
Log:
Resurrecting IntegerField class.
Adding MoreFormField and accompanying javascript to show and hide a list of fields on a form.

Modified: mgmt/trunk/cumin/python/wooly/forms.py
===================================================================
--- mgmt/trunk/cumin/python/wooly/forms.py	2008-11-03 18:37:19 UTC (rev 2731)
+++ mgmt/trunk/cumin/python/wooly/forms.py	2008-11-04 19:37:02 UTC (rev 2732)
@@ -208,12 +208,8 @@
     def __init__(self, app, name, param):
         super(RadioInput, self).__init__(app, name, param)
 
-        self.value = None
+        self.value = name
 
-    # XXX lose this
-    def set_value(self, value):
-        self.value = value
-
     def render_value(self, session, *args):
         return self.value
 
@@ -287,6 +283,9 @@
     def do_validate(self, session, errors):
         pass
 
+    def render_field_help(self, session):
+        pass
+    
 class ScalarField(FormField):
     def __init__(self, app, name, input):
         super(ScalarField, self).__init__(app, name)
@@ -324,11 +323,22 @@
         
 class IntegerField(ScalarField):
     def __init__(self, app, name):
-        super(IntegerInputField, self).__init__(app, name, None)
+        super(IntegerField, self).__init__(app, name, None)
 
-        self.input = PasswordInput(app, "input")
+        self.input = IntegerInput(app, "input")
         self.add_child(self.input)
 
+    def do_validate(self, session, errors):
+        val = self.get(session)
+        try:
+            val = int(val)
+        except:
+            if val:
+                error = FormError("A Numeric Value is Expected")
+                errors.append(error)
+            else:
+                self.set(session, self.input.param.get_default(session))
+            
 # XXX make this use a RadioInputSet instead?
 class RadioField(FormField):
     def __init__(self, app, name, param):
@@ -418,3 +428,13 @@
             writer.write(field.render(session))
 
         return writer.to_string()
+
+class MoreFieldSet(FieldForm, FormField):
+    def render_inputs(self, session, *args):
+        return self.render_fields(session, *args)
+
+    def render_more_text(self, session, *args):
+        return "Show Advanced Options..."
+    
+    def render_less_text(self, session, *args):
+        return "Hide Advanced Options..."

Modified: mgmt/trunk/cumin/python/wooly/forms.strings
===================================================================
--- mgmt/trunk/cumin/python/wooly/forms.strings	2008-11-03 18:37:19 UTC (rev 2731)
+++ mgmt/trunk/cumin/python/wooly/forms.strings	2008-11-04 19:37:02 UTC (rev 2732)
@@ -58,8 +58,13 @@
 div.field div.title {
   font-weight: bold;
   font-size: 0.9em;
-  margin: 0 0 1em 0;
+  float: left;
+  margin: 0 1em 1em 0;
 }
+div.field div.field_help {
+	font-size: 0.9em;
+	color: #222;
+}
 
 div.field div.inputs {
   margin: 0 0 1em 1em;
@@ -67,9 +72,9 @@
 
 [FormField.html]
 <div class="field">
-  <div class="title">{title}</div>
+  <div class="title">{title}</div> <div class="field_help">{field_help}</div><div style="clear:left;"><!-- --></div>
   {errors}
-  <div class="inputs">{inputs}</div>
+  <div class="inputs">{inputs}</div><div style="clear:left;"><!-- --></div>
 </div>
 
 [RadioFieldOption.html]
@@ -78,3 +83,43 @@
          tabindex="{tab_index}" {checked_attr} {disabled_attr}/>
   <label for="{id}">{title}</label>
 </div>
+
+
+[MoreFieldSet.css]
+div.more_inputs {
+	display: none;
+	margin-left: 0.5em;
+	padding: 0.5em;
+	border: 1px dashed #333;
+	background-color: #FCFCFC;
+}
+	
+div.more_field_set {
+	margin-bottom: 1em;
+}
+
+[MoreFieldSet.html]
+<div class="more_field_set">
+	<input type="button" id="button_{id}" onclick="toggle_more_fieldset(); return false;" value="{more_text}" />
+	<div id="{id}" class="more_inputs" style="display:none;">
+		{inputs}
+	</div>
+</div><!-- end of "more_field_set" -->
+<script type="text/javascript">
+function toggle_more_fieldset() {
+	var oDiv = document.getElementById("{id}");
+	var oButton = document.getElementById("button_{id}");
+	if (oDiv) {
+		if (oDiv.style.display == "none") {
+			oDiv.style.display = "block";
+			if (oButton)
+				oButton.value = "{less_text}";
+		} else {
+			oDiv.style.display = "none"
+			if (oButton)
+				oButton.value = "{more_text}";
+		}
+	}
+}
+</script>
+ 
\ No newline at end of file

Modified: mgmt/trunk/cumin/python/wooly/parameters.py
===================================================================
--- mgmt/trunk/cumin/python/wooly/parameters.py	2008-11-03 18:37:19 UTC (rev 2731)
+++ mgmt/trunk/cumin/python/wooly/parameters.py	2008-11-04 19:37:02 UTC (rev 2732)
@@ -78,7 +78,10 @@
 
 class IntegerParameter(Parameter):
     def do_unmarshal(self, string):
-        return int(string)
+        try:
+            return int(string)
+        except:
+            return string
 
 class BooleanParameter(Parameter):
     def __init__(self, model, name):




More information about the rhmessaging-commits mailing list