← Back to team overview

anewt-developers team mailing list archive

[Branch ~uws/anewt/anewt.uws] Rev 1806: [form] Support any renderable value in AnewtForm::add_node()

 

------------------------------------------------------------
revno: 1806
committer: Wouter Bolsterlee <uws@xxxxxxxxx>
branch nick: anewt
timestamp: Fri 2010-11-05 14:33:07 +0100
message:
  [form] Support any renderable value in AnewtForm::add_node()
  
  ...instead of requiring an AnewtXMLDomNode instance. It's
  now also possible to add custom renderers as directly to
  AnewtForm instances.
modified:
  form/fieldset.lib.php
  form/form.lib.php
  form/renderer/default.lib.php


--
lp:anewt
https://code.launchpad.net/~uws/anewt/anewt.uws

Your team Anewt developers is subscribed to branch lp:anewt.
To unsubscribe from this branch go to https://code.launchpad.net/~uws/anewt/anewt.uws/+edit-subscription
=== modified file 'form/fieldset.lib.php'
--- form/fieldset.lib.php	2009-08-02 16:32:09 +0000
+++ form/fieldset.lib.php	2010-11-05 13:33:07 +0000
@@ -73,11 +73,10 @@
 	 * Add a custom node to this fieldset.
 	 *
 	 * \param $node
-	 *   An AnewtXMLDomNode to embed in the form.
+	 *   An AnewtXMLDomNode or other renderable object to embed in the form.
 	 */
 	function add_node($node)
 	{
-		assert('$node instanceof AnewtXMLDomNode;');
 		$this->_children[] = $node;
 	}
 }

=== modified file 'form/form.lib.php'
--- form/form.lib.php	2010-02-24 20:50:42 +0000
+++ form/form.lib.php	2010-11-05 13:33:07 +0000
@@ -458,11 +458,10 @@
 	 * This node is directly embedded in the rendered output by form renderers.
 	 *
 	 * \param $node
-	 *   An AnewtXMLDomNode to embed in the form.
+	 *   An AnewtXMLDomNode or other renderable object to embed in the form.
 	 */
 	function add_node($node)
 	{
-		assert('$node instanceof AnewtXMLDomNode;');
 		$this->_children[] = $node;
 	}
 

=== modified file 'form/renderer/default.lib.php'
--- form/renderer/default.lib.php	2010-10-02 18:45:11 +0000
+++ form/renderer/default.lib.php	2010-11-05 13:33:07 +0000
@@ -54,22 +54,25 @@
 	 *   A valid form child instance, e.g. AnewtFormControl or
 	 *   AnewtFormFieldset.
 	 */
-	protected function _build_child_node($node)
+	protected function _build_child_node($value)
 	{
-		if ($node instanceof AnewtFormFieldset)
-			$result_node = $this->_build_fieldset_node($node);
-		else if ($node instanceof AnewtFormControlChoice)
+		if ($value instanceof AnewtFormFieldset)
+			$node = $this->_build_fieldset_node($value);
+
+		else if ($value instanceof AnewtFormControlChoice)
 			/* TODO: Implement proper _build_form_control_choice_node() */
-			$result_node = $this->_build_form_control_node($node);
-		else if ($node instanceof AnewtFormControl)
-			$result_node = $this->_build_form_control_node($node);
-		else if ($node instanceof AnewtXMLDomNode)
-			$result_node = $node;
-		else {
-			assert('false; // not reached');
-		}
-
-		return $result_node;
+			$node = $this->_build_form_control_node($value);
+
+		else if ($value instanceof AnewtFormControl)
+			$node = $this->_build_form_control_node($value);
+
+		else if ($value instanceof AnewtXMLDomNode)
+			$node = $value;
+
+		else
+			$node = AnewtXMLDomNode::create_for_value($value);
+
+		return $node;
 	}
 
 	/**