From d51e4a83242d6eb1652d9277f7315045a8322649 Mon Sep 17 00:00:00 2001 From: Jan Dolecek Date: Sat, 19 Mar 2011 03:07:51 +0000 Subject: [PATCH 1/4] fix: createRow returns instance of new row --- DynamicContainer.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DynamicContainer.php b/DynamicContainer.php index 18a9f28..a36cdb6 100644 --- a/DynamicContainer.php +++ b/DynamicContainer.php @@ -151,6 +151,8 @@ protected function createRow($name = null) { if ($this->useAjax) $button->getControlPrototype()->class($this->ajaxClass); } + + return $innerContainer; } /** From 6cccc2d634fc7da7bd7c3639ea299efd1b3358e0 Mon Sep 17 00:00:00 2001 From: Jan Dolecek Date: Sat, 19 Mar 2011 03:11:51 +0000 Subject: [PATCH 2/4] override setValue method to set-up existing data easily --- DynamicContainerCore.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/DynamicContainerCore.php b/DynamicContainerCore.php index 11e31bc..f3cd45a 100644 --- a/DynamicContainerCore.php +++ b/DynamicContainerCore.php @@ -270,6 +270,23 @@ protected function fireOnChange() { // + + /** + * Override: set values for this container while adding rows for it + * (needs https://github.com/nette/nette/pull/217 implemented in Nette) + * + * @param array $values + * @param bool $erase + * @return void + */ + public function setValues($values, $erase = FALSE) { + $this->clearRows(); + foreach($values as $key => $sub) { + $this->createRow($key)->setValues($sub, $erase); + } + } + + // public static function FormContainer_addDynamicContainerCore(FormContainer $_this, $name = null, $factoryCallback = null) { From fa4804a163249e27aa5a39853ededdbe4f57f2cb Mon Sep 17 00:00:00 2001 From: Jan Dolecek Date: Sat, 19 Mar 2011 03:13:13 +0000 Subject: [PATCH 3/4] added macro {pair control} --- FormMacros.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/FormMacros.php b/FormMacros.php index 6770497..19bad20 100644 --- a/FormMacros.php +++ b/FormMacros.php @@ -129,6 +129,17 @@ public static function input($name, $modifiers) { echo $input; } + public static function macroPair($content) { + list($name, $modifiers) = self::fetchNameAndModifiers($content); + return "Addons\Forms\FormMacros::pair($name, $modifiers)"; + } + public static function pair($name, $modifiers) { + $control = self::getControl($name); + echo self::getForm()->getRenderer()->renderPair($control); + } + + + // // @@ -178,6 +189,7 @@ public static function register() { LatteMacros::$defaultMacros["formErrors"] = ''; + LatteMacros::$defaultMacros["pair"] = ''; LatteMacros::$defaultMacros["input"] = ''; LatteMacros::$defaultMacros["label"] = ''; LatteMacros::$defaultMacros["inputValue"] = ''; From fc11134c7cbee162f893dfbe725805dccda592fc Mon Sep 17 00:00:00 2001 From: Jan Dolecek Date: Sat, 19 Mar 2011 03:15:22 +0000 Subject: [PATCH 4/4] little bit more pretty code --- FormMacros.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/FormMacros.php b/FormMacros.php index 19bad20..dc890e1 100644 --- a/FormMacros.php +++ b/FormMacros.php @@ -173,7 +173,11 @@ public static function inputValue($name, $modifiers = array()) { public static function macroBeginDynamicContainer($content) { list($name) = self::fetchNameAndModifiers($content); - return '$dynamicContainers = Addons\Forms\FormMacros::getControl('.$name.')->getComponents(); Addons\Forms\FormMacros::beginContainer('.$name.'); foreach($dynamicContainers as $dynamicContainerName => $dynamicContainer): Addons\Forms\FormMacros::beginContainer($dynamicContainerName);'; + return + '$dynamicContainers = Addons\Forms\FormMacros::getControl('.$name.')->getComponents(); + Addons\Forms\FormMacros::beginContainer('.$name.'); + foreach($dynamicContainers as $dynamicContainerName => $dynamicContainer): + Addons\Forms\FormMacros::beginContainer($dynamicContainerName);'; } public static function macroEndDynamicContainer($content) { return "Addons\Forms\FormMacros::endContainer(); endforeach; Addons\Forms\FormMacros::endContainer();";